Páči sa mi za rýchlosť vývoja a vynikajúcu prenosnosť. Je to veľmi dobré, keď máte vrecku vždy nástroj pripravený na riešenie úloh.
Bolo dosť mrzuté, keď pri zoznamovaní sa s domácim blockchainom v jeho arzenále neexistoval žiadny hotový SDK pre PHP. Nuž, musel som ho napísať.
Na začiatku som musel použiť na podpisovanie transakcií. Takže na správu troch adries som musel spustiť tri uzly… Bolo to smutné divadlo, hoci to riešilo niektoré úlohy. Až kým neprišlo pochopenie, že spoliehať sa na uzly je slepá ulička. Po prvé, z dôvodu obmedzenej funkčnosti , po druhé, kvôli rýchlosti (vtedy boli uzly veľmi pomalé).
Začal som dve paralelné práce. Jedna bola vytvoriť blockchainový prehliadač, ktorý bude rýchly a úplne nezávislý od API uzlov. Druhá bola zhromaždiť všetky funkcie pre prácu s Waves Platform na jednom mieste. Tak sa objavili projekty a .
Prvým krokom za kulisy blockchainu Waves sa stal . Nebolo to jednoduché, ale aj tak sa mi podarilo napísať nezávislý výpočet všetkých zostatkov a dokonca nájsť chybu vo výpočtoch na originálnych uzloch ( , mimochodom, u nich funguje, za nájdené chyby platia). Môžete podrobne preskúmať funkčnosť prehliadača w8io v tejto téme:
Počas práce na w8io som mal už pochybnosti, ale keď sa práca priblížila k logickému záveru a začal som s vytváraním SDK, pochybnosti sa potvrdili. Nenašiel som niektoré funkcie nikde, vrátane tých najdôležitejších, kryptografických. Tak som začal s vytvorením svojich prvkov na základy. Tak vznikli: na kódovanie do base58 (v skutočnosti na kódovanie akéhokoľvek abecedy do akéhokoľvek), na vytvorenie a kontrolu kompatibilných podpisov (s variantmi ), na výpočet jedného z hashov (ktorý bol k dispozícii len od PHP 7.2) a tak ďalej.
Tu by som mal poďakovať za niekoľko cenných rád, ktoré ma nasmerovali k namiesto pre mňa zvyčajných, ale zastaraných include súborov.
Po pár mesiacoch , vyšiel z a teraz je pripravený na prácu so všetkým štandardným funkčným vybavením platformy Waves. Všetky dostupné v Transakcie môžu byť jednoducho vytvorené, podpísané a odoslané jediným balíkom, ktorý pracuje vo všetkých 64-bitových verziách PHP od verzie 5.6 a vyššie.
Pripojte WavesKit do svojho projektu:
composer require deemru/waveskitPouží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 );V príklade vyššie vytvárame objekt WavesKit, ktorý pracuje v testovacej sieti „T“. Nastavujeme seed frázu, z ktorej sa automaticky vypočítajú kľúče a adresa účtu na základe verejného kľúča. Potom vytvárame transakciu prevodu 0.00000001 Waves z automaticky vypočítanej adresy na adresu aliasu „test“, posielame ju na podpis súkromným kľúčom a odosielame do siete. Následne sa ubezpečíme, že transakcia bola úspešne potvrdená sieťou.
Práca s transakciami je sústredená v . Pre lepšie pochopenie práce s transakciami si môžete študovať alebo sa priamo obrátiť na názorné príklady v .
Keďže WavesKit sa vyvíjal v podmienkach reálneho použitia, už má pokročilé funkcie. Prvá killer funkcia — to je , ktorá kontroluje dosiahnutie požadovanej úrovne dôvery, že transakcia sa nestratila, ale naopak, bola potvrdená a dosiahla potrebný počet potvrdení v sieti.
Ďalší nepriestrelný mechanizmus — ako WavesKit komunikuje s uzlami. V optimálnych podmienkach rámec pracuje iba s hlavnou uzlom, udržujúc s ňou trvalé spojenie, ale pri chybách sa môže automaticky prepínať na záložné. Ak nastavíte pole záložných uzlov, môžete volať funkciu pre určenie najlepšej uzlu ako hlavnej na základe maximálnej hodnoty aktuálnej výšky a rýchlosti odpovede. Teraz pridajte k tomu vnútornú cache požiadaviek a postaráte sa o používateľov aj vlastníkov uzlov.
Jedným z posledných pokročilých mechanizmov — funkcia . Prišla ako reakcia na potrebu reagovať na prichádzajúce transakcie v reálnom čase. Táto funkcia úplne rieši všetky aspekty súvisiace s spracovaním transakcií v blockchaine. Žiadna bolesť, jednoducho nastavíte svoju callback funkciu s požadovanými možnosťami a čakáte na nové transakcie, ktoré spustia vaše procesy. Napríklad, ešte jeden môj projekt úplne postavený okolo tejto funkcie, môžete si v pokoji preskúmať, ako funguje priamo .
Páči sa mi open source, to je jedno z najväčších dosiahnutí ľudstva. Keďže som jediný vývojár a dosiahol som stav, v ktorom sú všetky moje potreby splnené, pozývam vás, aby ste používali a prispievali k .
Zdroj: habr.com
