WavesKit - Waves blok zinciriyle çalışmak için PHP çerçevesi

Мне нравится PHP 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 Dalgalar Platformu cephaneliğinde hazır bir PHP SDK'sı yoktu. Neyse bunu yazmam gerekiyordu.

İlk başta kullanmak zorunda kaldım düğümler 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 APIikincisi, 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ı w8io и Dalgalar Kiti.

Waves blockchain'in perde arkasındaki ilk adım şuydu: w8io tarayıcısı. 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 (hata ödül programı 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: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

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: ABC Kodu base58'i kodlamak için (aslında herhangi bir alfabeyi herhangi bir alfabeye kodlamak için), Eğri25519 Uyumlu imzalar oluşturmak ve doğrulamak için (seçeneklerle) steroidler üzerinde), Blake2b karmalardan birini hesaplamak için (yalnızca PHP 7.2'den beri mevcuttu), vb.

Teşekkür etmem gereken yer burası İnala Kardanova beni doğru yöne yönlendiren bazı değerli tavsiyeler için besteci bana tanıdık gelen ancak güncel olmayan içerme dosyaları yerine.

Birkaç ay sonra WavesKit piyasaya sürüldü, ortaya çıktı beta sürümleri ve artık Waves platformunun tüm standart işlevleriyle çalışmaya hazır. Hepsi mevcut ana ağ 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/waveskit

Kullanı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 tx ile başlayan işlevler. İşlemlerle çalışmayı daha iyi anlamak için şunları inceleyebilirsiniz: WavesKit belgeleri veya hemen açıklayıcı örneklere dönün sürekli entegrasyon testleri.

WavesKit gerçek dünya kullanımında geliştirildiğinden zaten gelişmiş özelliklere sahiptir. İlk öldürücü özellik işlevi sağlamakİş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. setBestNode 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. txMonitor. 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 VECRO tamamen bu fonksiyon etrafında inşa edilmiş olduğundan, nasıl çalıştığını doğrudan kolayca inceleyebilirsiniz. proje kodunda.

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. Dalgalar Kiti.

Kaynak: habr.com

Yorum ekle