Мне нравится geliştirme hızı ve mükemmel taşınabilirlik için. Cebinizde her zaman sorunları çözmeye hazır bir aletin olması çok iyidir.
Yerli blockchain ile tanıştığımda oldukça utanç vericiydi cephaneliğinde hazır bir PHP SDK'sı yoktu. Neyse bunu yazmam gerekiyordu.
İlk başta kullanmak zorunda kaldım işlemleri imzalamak için. Yani, üç adresi yönetmek için üç düğüm başlatmak gerekiyordu... Her ne kadar bazı sorunları çözse de acınası bir manzaraydı. Ta ki düğümlere güvenmenin çıkmaz sokak olduğu anlaşılana kadar. İlk olarak, sınırlı işlevsellik nedeniyle ikincisi, hız nedeniyle (o günlerde düğümler çok yavaştı).
İki paralel işe başladım. Bunlardan biri, hızlı ve düğüm API'sinden tamamen bağımsız olacak bir blockchain gezgini yapmaktır. İkincisi ise Waves Platformu ile çalışmaya yönelik tüm fonksiyonları tek bir yerde toplamaktır. Projeler böyle ortaya çıktı и .
Waves blockchain'in perde arkasındaki ilk adım şuydu: . Kolay olmadı ama yine de tüm bakiyelerin bağımsız bir hesaplamasını yazmayı ve hatta orijinal düğümlerdeki hesaplamalarda bir hata bulmayı başardık ( Bu arada, bu onların işine yarıyor, bulunan hataların bedelini ödüyorlar). Bu konuda w8io tarayıcısının işlevselliği hakkında daha fazla bilgi edinebilirsiniz:
W8io üzerinde çalışırken zaten şüphelerim vardı, ancak iş mantıksal olarak sona erdiğinde ve SDK'yı oluşturmaya başladığımda şüphelerim doğrulandı. En önemlileri olan kriptografik olanlar da dahil olmak üzere bazı işlevleri hiçbir yerde bulamadım. Daha sonra temel için kendi tuğlalarımı yapmaya başladım. İşte böyle doğdular: base58'i kodlamak için (aslında herhangi bir alfabeyi herhangi bir alfabeye kodlamak için), Uyumlu imzalar oluşturmak ve doğrulamak için (seçeneklerle) ), karmalardan birini hesaplamak için (yalnızca PHP 7.2'den beri mevcuttu), vb.
Teşekkür etmem gereken yer burası beni doğru yöne yönlendiren bazı değerli tavsiyeler için bana tanıdık gelen ancak güncel olmayan içerme dosyaları yerine.
Birkaç ay sonra , ortaya çıktı ve artık Waves platformunun tüm standart işlevleriyle çalışmaya hazır. Hepsi mevcut işlemler, PHP'nin 64 dahil olmak üzere tüm 5.6 bit sürümlerinde çalışan tek bir paket kullanılarak kolayca oluşturulabilir, imzalanabilir ve gönderilebilir.
WavesKit'i projemize bağlıyoruz:
composer require deemru/waveskitKullanırız:
use deemruWavesKit;
$wk = new WavesKit( 'T' );
$wk->setSeed( 'manage manual recall harvest series desert melt police rose hollow moral pledge kitten position add' );
$tx = $wk->txBroadcast( $wk->txSign( $wk->txTransfer( 'test', 1 ) ) );
$tx = $wk->ensure( $tx );Yukarıdaki örnekte “T” test ağında çalışan bir WavesKit nesnesi oluşturuyoruz. Anahtarların ve hesap adresinin genel anahtara göre otomatik olarak hesaplandığı bir tohum cümlesi yüklüyoruz. Daha sonra, tohum cümlesi kullanılarak otomatik olarak hesaplanan adresten “test” takma adı olan adrese 0.00000001 Waves transfer işlemi oluşturuyoruz, bunu özel bir anahtarla imzalanacak şekilde aktarıp ağa gönderiyoruz. Bundan sonra işlemin ağ tarafından başarıyla onaylandığından emin oluyoruz.
İşlemlerle çalışma yoğunlaşmıştır . İşlemlerle çalışmayı daha iyi anlamak için şunları inceleyebilirsiniz: veya hemen açıklayıcı örneklere dönün .
WavesKit gerçek dünya kullanımında geliştirildiğinden zaten gelişmiş özelliklere sahiptir. İlk öldürücü özellik İşlemin kaybolmadığına, aksine onaylandığına ve ağda gerekli sayıda onaya ulaştığına dair gerekli güven düzeyinin elde edilmesini kontrol eden.
Başka bir kurşun geçirmez mekanizma, WavesKit'in düğümlerle nasıl iletişim kurduğudur. Sera koşullarında, çerçeve yalnızca ana düğümle çalışır ve onunla sürekli bağlantıyı sürdürür, ancak hata durumunda otomatik olarak yedek olanlara geçebilir. Bir dizi yedek düğüm ayarlarsanız işlevi çağırabilirsiniz. Mevcut yükseklik ve tepki hızının maksimum değerine göre en iyi düğümü ana düğüm olarak belirlemek. Şimdi buna bir dahili sorgu önbelleği ekleyin ve hem kullanıcılar hem de düğüm sahipleri için önemsendiğini hissedin.
En son gelişmiş mekanizmalardan biri fonksiyondur. . Gelen işlemlere gerçek zamanlı olarak yanıt verme ihtiyacı nedeniyle ortaya çıktı. Bu işlev, blok zincirindeki işlemlerin işlenmesiyle ilgili tüm nüansları tamamen çözer. Artık acı yok, istediğiniz seçeneklerle geri arama fonksiyonunuzu kurun ve yeni işlemlerin süreçlerinizi başlatmasını bekleyin. Mesela başka bir projem tamamen bu fonksiyon etrafında inşa edilmiş olduğundan, nasıl çalıştığını doğrudan kolayca inceleyebilirsiniz. .
Açık kaynağı seviyorum, insanlığın en büyük başarılarından biri. Tek geliştirici olduğum ve tüm ihtiyaçlarımın çözüldüğü bir duruma ulaştığım için sizleri kullanmaya ve katkıda bulunmaya davet ediyorum. .
Kaynak: habr.com
