WavesKit - PHP framework pre prácu s Waves blockchainom

Páči sa mi PHP pre rýchlosť vývoja a vynikajúcu prenosnosť. Je skvelé mať vždy po ruke nástroj na zvládnutie akejkoľvek úlohy vo vrecku.

Bolo dosť sklamaním, keď som sa po zoznámení s domácim blockchainom... Platforma Waves Nemal vo svojom arzenáli hotové PHP SDK. Takže si musel jedno napísať.

Najprv som musel použiť uzly podpisovať transakcie. Takže na správu troch adries ste museli spustiť tri uzly... Bol to žalostný pohľad, hoci to vyriešilo niektoré problémy. Až kým sa neukázalo, že spoliehanie sa na uzly je slepá ulička. Po prvé, kvôli ich obmedzenej funkčnosti. API, po druhé, kvôli rýchlosti (uzly boli v tých časoch veľmi pomalé).

Začal som dva paralelné projekty. Jedným bolo vytvoriť blockchain explorer, ktorý by bol rýchly a úplne nezávislý od node API. Druhým bolo zhromaždiť všetky funkcie pre prácu s platformou Waves na jednom mieste. Takto vznikli tieto projekty. w8io и WavesKit.

Prvým krokom v zákulisí blockchainu Waves bolo prehliadač w8ioNebolo to jednoduché, ale aj tak sa nám podarilo napísať nezávislý výpočet všetkých zostatkov a dokonca nájsť chybu vo výpočtoch na pôvodných uzloch (program odmien za chyby Mimochodom, funguje im to; platia za nájdené chyby. Funkcie prehliadača w8io si môžete podrobnejšie preštudovať v tomto vlákne: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Počas práce na w8io som už mal pochybnosti, ale keď práca dospela k logickému záveru a začal som vytvárať SDK, moje pochybnosti sa potvrdili. Niektoré funkcie som nikde nenašiel, vrátane tých najdôležitejších, kryptografických. Tak som začal vytvárať vlastné základné tehly. Takto vznikli nasledujúce: ABCód pre kódovanie v base58 (vlastne pre kódovanie ľubovoľnej abecedy v ľubovoľnom), Curve25519 vytvárať a overovať kompatibilné podpisy (s možnosťami na steroidoch), Blake2b na výpočet jedného z hashov (ktorý bol dostupný až od PHP 7.2) atď.

Tu musím poďakovať Inala Kardanová za cenné rady, ktoré ma nasmerovali správnym smerom skladateľ namiesto zahrnutých súborov, ktoré sú mi známe, ale zastarané.

O pár mesiacov neskôr WavesKit je vydaný, vyšiel z beta verzie a teraz je pripravený pracovať so všetkými štandardnými funkciami platformy Waves. Všetko je k dispozícii v hlavná sieť Transakcie je možné jednoducho vytvárať, podpisovať a odosielať pomocou jediného balíka, ktorý beží na všetkých 64-bitových verziách PHP od verzie 5.6 a vyššie.

Pripojte WavesKit k vášmu projektu:

composer require deemru/waveskit

Používame:

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

Vo vyššie uvedenom príklade vytvoríme objekt WavesKit bežiaci na testovacej sieti „T“. Nastavíme počiatočnú frázu, z ktorej sa na základe verejného kľúča automaticky vypočítajú kľúče a adresa účtu. Ďalej vytvoríme transakciu prevodu 0.00000001 Waves z adresy automaticky vypočítanej pomocou počiatočnej frázy na aliasovú adresu „test“, odošleme ju na podpis so súkromným kľúčom a odošleme do siete. Následne overíme, či bola transakcia úspešne potvrdená sieťou.

Práca s transakciami je sústredená v funkcie začínajúce na txPre lepšie pochopenie fungovania transakcií si môžete preštudovať Dokumentácia k WavesKitu alebo prejdite priamo na ilustratívne príklady v testy kontinuálnej integrácie.

Odkedy sa WavesKit vyvíjal v reálnom svete, už získal pokročilé funkcie. Prvou kľúčovou funkciou je zabezpečiť funkciu, ktorý kontroluje dosiahnutie požadovanej úrovne istoty, že transakcia nebola stratená, ale naopak, bola potvrdená a dosiahla požadovaný počet potvrdení v sieti.

Ďalším neprekonateľným mechanizmom je spôsob, akým WavesKit komunikuje s uzlami. Za ideálnych podmienok framework pracuje iba s primárnym uzlom a udržiava s ním neustále spojenie, ale v prípade chýb dokáže automaticky prepnúť na záložné uzly. Ak nastavíte pole záložných uzlov, môžete zavolať funkciu setBestNode určiť najlepší uzol, ktorý bude fungovať ako primárny, na základe maximálnej aktuálnej nadmorskej výšky a rýchlosti odozvy. Teraz k tomu pridajte internú vyrovnávaciu pamäť dotazov a zažite starostlivosť o používateľov aj vlastníkov uzlov.

Jedným z najnovších pokročilých mechanizmov je funkcia txMonitorBol vytvorený tak, aby reagoval na prichádzajúce transakcie v reálnom čase. Táto funkcia úplne rieši všetky nuansy spojené so spracovaním transakcií na blockchaine. Už žiadne starosti, stačí nastaviť funkciu spätného volania s požadovanými možnosťami a čakať na nové transakcie, ktoré spustia vaše procesy. Napríklad ďalší môj projekt VECROVÁ Je úplne postavený na tejto funkcii, takže sa môžete ľahko a okamžite naučiť, ako funguje. v kóde projektu.

Milujem open source, je to jeden z najväčších úspechov ľudstva. Keďže som jediný vývojár a dosiahol som bod, kedy sú všetky moje potreby vyriešené, pozývam vás, aby ste ho používali a prispievali k nemu. WavesKit.

Zdroj: hab.com

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster