Bugün paylaşmak için heyecan verici haberlerimiz var: AppBase hazır ve herkesin testlere yardımcı olmasını istiyoruz. Bununla birlikte, üçüncü parti geliştiricilerin yeni platforma uyum sağlamak için bazı küçük değişiklikler yapmaları gerekebileceğini lütfen unutmayın.
AppBase sürümü adayı şimdi hazır
Ağustos ayında, Steem blockchain'e yAPİlan heyecan verici güncellemelerden bazılarını sizinle paylaşmıştık. Bu güncellemelerden biri, Steem'in ölçeklendirme yeteneğini önemli ölçüde artıracak farklı “modüller” yaratacak olan AppBase'dir.
AppBase, çok zincirli bir FABRIC oluşturmanın ilk adımıdır. AppBase, Steem blockchain'in birçok bileşeninin, özel eklentiler olarak anlaşmasız blokchain ler oluşturarak modüler olmasını sağlar. Bu eklentiler çok daha hızlı bir şekilde güncellenebilir, çünkü tüm blok zincirinin tekrar oynatılmasını gerektirmiyor.
Sonunda AppBase'i büyük ölçüde test etmeye hazırız!
Sadece sıradan bir steemit.com kullanıcısıysanız, yine de yardımcı olabilirsiniz. Steemitstage.com'a gidin ve siteyi normalde yaptığınız gibi kullanın.
Gösterim ortamımız, steemit.com için alınan aynı güvenlik önlemlerini içeriyor ve üretim öncesi olarak kabul ediliyor. yeni kodu yazmadan önce Steemit.com'a yönlendirebilmek için mümkün olduğunca 'gerçek' steemit.com'a yakın olacak şekilde tasarlanmıştır. Anahtarlarınızı kullanmakla ilgili hala endişeleriniz varsa, yalnızca posting key kullanarak da devam edebilirsiniz.Hiç giriş yapmasanız bile, yine de siteye göz atıp bize geri bildirim sağlamanız faydalı olacaktır.
Geliştiriciler için
Steem servisini çalıştırır veya kullanmaya devam ederseniz, servisinizin beklendiği gibi çalışmaya devam etmesini sağlamak için atmanız gereken birkaç adım vardır.Detaylar aşağıdaki bölümlerde yer almaktadır.
steemd node değişiklikleri
Bir steemd node uçalıştırırsanız, GitHub veya Docker Hub'dan v0.19.4rc1 etiketini kontrol edebilirsiniz.
APİ değişiklikleri
Gelecekte olacak iyileştirme ve bakımlar için daha fazla esneklik sağlamak amacıyla APİ'lerimizi yeniden yAPİlandırdık. APİ'ler artık tek bir nesneyi argüman olarak alır ve tek bir nesneyi dönüş tipi olarak döndürür. Mevcut tüm APİ'ler bu standarda uygun olarak güncellendi.
Artık C ++ stili parametreanlamlarına bağlı kalmaya ihtiyaç duymadığımız için, daha çeşitli varsayılan argüman türlerini ve aynı zamanda değişkenli parametreleri kullanabiliriz.Ayrıca, döndürülen nesneyi genişleterek mevcut uygulamaları etkilemeden bir çağrının işlevselliğini de genişletebiliriz.
Database_APİ, tüm ortak nesnelerin sorgulanmasının, steemd'in zaten kullandığı herhangi bir siparişle sorgulanmasına izin vermek için önemli değişiklikler geçirdi. Bu, ihtiyaç duydukları nesneleri bulmak amacıyla hizmetler için daha fazla esneklik sağlayacaktır.
Yeni condenser_APİ
Bu geçişe yardımcı olmak için, şu anda var olan tüm APİ yöntemlerini içeren ve mevcut argüman formatını kullanan condenser_APİ'yi oluşturduk. Uygulamanızı Appbase ile çalıştırmanın en kolay yolu, APİ'yi condenser_APİ'ye dönüştürmektir.
APİ'ler adalarına göre çağrılmalıdır.
Eğer APİ kimliğini kullanarak bir APİ'yi çağırıyorsanız, söz konusu çağrı yöntemi artık desteklenmez. Tüm APİ'ler artık isim olarak çağrılmalıdır.
login_APİ Kaldırıldı
Login_APİ, APİ isimlerini sayısal kimliğe eşlemek için bir yol olarak tasarlandı. Çünkü APİ'lar artık kimlik yoluyla çağırılamıyor, login_APİ'ye artık gerek kalmadı ve bu nedenle kaldırıldı.
APİ yöntemleri listesi
Jsonrpc.get_methods öğesini çağırırsanız, kullanılabilir tüm APİ yöntemlerinin bir listesi döndürülür.
Argümanlar ve dönüş nesnesi prototipleri
Bir APİ yöntem adı geçerek jsonrpc.get_signature'ı çağırırsanız, bağımsız değişken ve nesne prototiplerini döndürür.
Örnek olarak;
{"jsonrpc":"2.0", "method":"jsonrpc.get_signature", "params":{"method":"database_APİ.get_active_witnessess"}, "id":1}
Dönüş;
{"jsonrpc":"2.0","result":{"args":{},"ret":{"witnesses":[]}},"id":1}
{} boş bağımsız değişkendir ve witness alanında bir liste döndürür.
condenser_APİ kullanımı
Condenser_APİ'deki tüm çağrılar, argüman olarak [] argümanı olarak dönecektir, çünkü dizi argümanı geçişimonotondur ve APİ’nın kendisinde çağrılır.Mevcut argüman formatını takip ederler. Mevcut uygulamaların yalnızca login_APİ'yi kullanmayı atlamaları ve tüm çağrılarını Appbase'i kullanmak için gerekli herhangi bir değişiklik olmaksızın condenser_APİ'ye göndermesi gerekir.
Örneğin, condenser_APİ'ye karşı database_APİ ile get_dynamic_global_properties çağrısı:
{"jsonrpc":"2.0", "method":"condenser_APİ.get_dynamic_global_properties", "params":[], "id":1}
{"jsonrpc":"2.0", "method":"database_APİ.get_dynamic_global_properties", "id":1}
Metodun hiçbir argümanı olmadığından, consender_APİ kullanılmadığında değişken alanı yok sayılabilir. Fakat isteğe bağlı olarak boş gibi eklenebilir ama buna gerek yoktur. (örn:"params":{})
Modern söz dizimi
Önceki örneklerin APİ'yi çağırmak için farklı bir biçim kullandığını fark etmiş olabilirsiniz. Eskiden, böyle görünen modası geçmiş bir arama sözdizimi vardı:
{"jsonrpc":"2.0", "id":0, "method":"call", "params":["APİ","function",[ARGS]]}.
Ancak, şimdi daha modern çağrı sözdizimini destekliyoruz:
{"jsonrpc":"2.0", "id":0, "method":"APİ.function", "params":[ARGS]}
Her iki format da çalışır, ancak okunabilirlik için yeni format tercih edilir.
Geliştirilmiş JSON-RPC uyumluluğu
Steemd'nin yaygın olarak kullanılan JSON-RPC tanımlamaları ile daha uyumlu hale getirilmesi için başka değişiklikler yapılmıştır. Bu hala yenidir. Lütfen json-rpc uygulamasının tanımlamaları ile uyumlu olup olmadığını test etmemize yardımcı olun.
Geriye dönük uyumluluk
Bizim ters proxy servisimiz olan jussi, tercüme yöntemini kullanıyor. Bunun anlamı, Appbase'i üretim ortamımıza dağıttıktan sonra bile eski APİ çağrılarının hala çalışmasının gerektiğidir.
Gelecekte güncellemeler gerekli
Bu sürümde sunulan yeni APİ'lerin hala üzerinde çalışıldığını unutmayın.Onlara hala yapılmakta olan bir dizi serileştirme değişikliği vardır ve bundan dolayı çeşitli tamamlanma aşamalarındadırlar. Yakında bu değişikliklerin doğasını açıklayan bir yazı daha yayınlayacağız. Bu APİ'lerle çalışmaktan çekinmeyin, ancak bunların değişeceğini bilin. Bu APİ'leri tamamladıktan sonra, condenser_APİ'yi kullanımdan kaldıracağız ve yeni APİ'lere geçiş yapmaya başlayacağız.
Yapılandırma dosyası değişiklikleri
Günlüğe kaydetme yapılandırması, kullanılabilir seçeneklerin sayısı nedeniyle yapılandırma dosyasında her zaman hassas bir nokta olmuştur. Farklı bir ayrıştırıcı gerektirdiğinden çok karmaşıktı. Sadece bir ayrıştırıcı kullanmamıza izin veren bir json formatı kullanmaya başladık. Varsayılan günlüğe kaydetme yapılandırması şöyledir:
json konsol ekleme tanımı: {"appender", "stream"}
log-console-appender = {"appender":"stderr","stream":"std_error"}
json dosya ekleyici tanımı: {"appender", "file"}
log-file-appender = {"appender":"p2p","file":"logs/p2p/p2p.log"}
json Log tutma tanımı: {"name", "level", "appender"}
log-logger = {"name":"default","level":"debug","appender":"stderr"}
log-logger = {"name":"p2p","level":"debug","appender":"p2p"}
Eklentiler
Eklentiler eklenti seçeneği ile etkinleştirilir. Artık herkese açık bir APİ seçeneği yoktur ve şimdi tüm APİ'ler bile eklentiler aracılığıyla da etkinleştiriliyor.Çoğu yapılandırma seçeneği, ait oldukları eklenti tarafından isimlendirilir. İsim verilmeyen yapılandırma seçenekleri hala desteklenmektedir, ancak kullanıldığında artık bir kullanımdan kaldırma uyarısı kaydeder. contrib / config-for-docker.ini ve contrib / fullnode.config.ini, Docker görüntülerinde kullanılan örnek yapılandırmalardır. Bunları örnek yapılandırma dosyaları olarak kullanabilirsiniz. Her zaman olduğu gibi, node unuzu dağıtmak için Docker görüntülerini kullanmanızı şiddetle öneririz.
Sonuçlar
Bu değişiklikler uzun aylar boyunca yapılmış ve Steem için ileriye doğru atılmış büyük bir adımı temsil ediyor. AppBase, gelecekteki tüm ölçeklendirme gereksinimlerimizi karşılamak için sağlam bir temel sağlar ve aynı zamanda üçüncü taraf uygulama geliştiricileri, witness ları ve değişimleri ile birlikte büyümek için kaynak gereksinimlerini yönetirken platformun büyümesini sağlar.
Yazının orjinali için :AppBase: The next step forward for the Steem blockchain (let the testing begin)