WavesKit - PHP framework pro práci s Waves blockchainem

jako PHP pro rychlost vývoje a vynikající přenositelnost. Je velmi dobré, když máte v kapse vždy připravený nástroj na řešení problémů.

Byla to docela škoda, když, při seznamování s tuzemským blockchainem Waves Platform neměl ve svém arzenálu hotové PHP SDK. No musel jsem to napsat.

Nejprve jsem musel použít uzly podepisovat transakce. Takže, abyste mohli spravovat tři adresy, museli jste spustit tři uzly... Byl to žalostný pohled, i když některé problémy vyřešil. Dokud nepřišlo pochopení, že spoléhat se na uzly je slepá ulička. Za prvé kvůli omezené funkčnosti API, za druhé, kvůli rychlosti (uzly byly v té době velmi pomalé).

Nastoupil jsem do dvou paralelních zaměstnání. Jedním z nich je vytvořit blockchainový průzkumník, který je rychlý a zcela nezávislý na node API. Druhým je shromáždit všechny funkce pro práci s platformou Waves na jednom místě. Tak vznikly projekty. w8io и WavesKit.

Prvním krokem v zákulisí blockchainu Waves byl prohlížeč w8io. Nebylo to snadné, ale přesto se podařilo napsat nezávislý výpočet všech zůstatků a dokonce najít chybu ve výpočtech na původních uzlech (bug bounty program Mimochodem jim to funguje, platí za nalezené chyby). Více o funkčnosti prohlížeče w8io se můžete dozvědět v tomto vláknu: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

V procesu práce na w8io jsem měl již pochybnosti, ale když práce dospěla k logickému konci a začal jsem vytvářet SDK, mé pochybnosti se potvrdily. Nikde jsem nenašel některé funkce, včetně těch nejdůležitějších kryptografických. Pak jsem začal výrobou základových cihel. Takto se narodili: ABCode zakódovat v base58 (ve skutečnosti zakódovat libovolnou abecedu do libovolné), Curve25519 k vytváření a ověřování kompatibilních podpisů (s možnostmi na steroidech), Blake2b pro výpočet jednoho z hashů (který je k dispozici teprve od PHP 7.2) atd.

Zde musím poděkovat Inala Kardanová za cenné rady, které mě nasměrovaly komponovat místo pro mě obvyklého, ale zastaralého, zahrnout soubory.

Po pár měsících WavesKit spatřil světlo světa, vyjít beta verze a je nyní připraven pracovat se všemi standardními funkcemi platformy Waves. Vše dostupné v hlavní síť transakce lze snadno vytvářet, podepisovat a odesílat pomocí jediného balíčku, který běží na všech 64bitových verzích PHP od 5.6 včetně.

Připojujeme WavesKit k našemu projektu:

composer require deemru/waveskit

Používáme:

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 );

Ve výše uvedeném příkladu vytvoříme objekt WavesKit, který běží na testovací síti "T". Nastavíme seed frázi, ze které se na základě veřejného klíče automaticky vypočítávají klíče a adresa účtu. Dále vytvoříme přenosovou transakci 0.00000001 Waves z adresy automaticky vypočítané z počáteční fráze na adresu „testovacího“ aliasu, převedeme ji k podpisu pomocí privátního klíče a odešleme do sítě. Poté se ujistíme, že transakce je sítí úspěšně potvrzena.

Transakce jsou zaměřeny na funkce začínající tx. Pro lepší pochopení práce s transakcemi můžete studovat Dokumentace WavesKit nebo přejděte rovnou na ilustrativní příklady v průběžné integrační testy.

Protože byl WavesKit vyvinut v reálném provozu, má již pokročilé funkce. První zabijácká vlastnost je zajistit funkci, která kontroluje dosažení požadované úrovně důvěry, že se transakce neztratila, ale naopak byla potvrzena a dosáhla požadovaného počtu potvrzení v síti.

Dalším neprůstřelným mechanismem je způsob, jakým WavesKit komunikuje s uzly. Ve skleníkových podmínkách framework pracuje pouze s hlavním uzlem, udržuje s ním neustálé spojení, ale v případě chyb se může automaticky přepnout na záložní. Pokud nastavujete pole pohotovostních uzlů, můžete funkci zavolat setBestNode určit nejlepší uzel jako hlavní uzel maximální hodnotou aktuální výšky a rychlosti odezvy. Nyní k tomu přidejte interní mezipaměť dotazů a pociťte péči uživatelů i vlastníků uzlů.

Jedním z nejnovějších pokročilých mechanismů je funkce txMonitor. Objevil se v souvislosti s nutností reagovat na příchozí transakce v reálném čase. Tato funkce kompletně řeší všechny nuance spojené se zpracováním transakcí v blockchainu. Už žádná bolest, stačí nastavit funkci zpětného volání s požadovanými možnostmi a čekat na nové transakce, které spustí vaše procesy. Například další z mých projektů VECRO Tato funkce je kompletně postavena a můžete se snadno naučit, jak správně funguje v kódu projektu.

Miluji open source, je to jeden z největších úspěchů lidstva. Protože jsem jediný vývojář a dosáhl jsem stavu, že všechny mé potřeby jsou vyřešeny, zvu vás k používání a přispívání WavesKit.

Zdroj: www.habr.com

Přidat komentář