WavesKit — PHP okvir za delo s blokchainom Waves

Vše mi to vyhovuje PHP za rychlost vývoje a skvělou přenosnost. Je skvělé mít vždy po ruce nástroj připravený k řešení úloh.

Bylo mi docela líto, když jsem se seznámil s domácím blockchainem Waves Platform , v jehož arsenálu chyběl hotový SDK pro PHP. Nu což, musel jsem ho napsat.

Zpočátku jsem musel používat nodovi pro podepisování transakcí. Tak jsem musel spustit tři uzly pro správu tří adres… Bylo to žalostné, i když to řešilo některé problémy. 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 (v těch dnech byly uzly velmi pomalé).

Zahájil jsem dvě paralelní práce. Jedna byla vytvořit prohlížeč blockchainu, který bude rychlý a zcela nezávislý na API uzlů. Druhá byla shromáždit všechny funkce pro práci s Waves Platform na jednom místě. Tak vznikly projekty w8io in WavesKit.

Prvním krokem do 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 originálních uzlech (program bug-bounty , ostatně u nich funguje, za nalezené chyby platí). Můžete si podrobně prozkoumat funkčnost prohlížeče w8io v tomto tématu: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Během práce na w8io jsem měl už pochybnosti, ale když práce dospěla do logického konce a já začal vytvářet SDK, pochybnosti se potvrdily. Nikde jsem nemohl najít některé funkce, včetně těch nejdůležitějších, kryptografických. Tak jsem začal vytvářet své vlastní bloky pro základ. Tak se zrodily: ABCode pro kódování do base58 (ve skutečnosti pro kódování jakéhokoli abecedního slova do jakéhokoli), Curve25519 pro vytváření a ověřování kompatibilních podpisů (s variantami na steroidech), Blake2b pro výpočet jednoho z hashů (který byl k dispozici až od PHP 7.2) atd.

Zde bych měl poděkovat Inalu Kardanovi za několik cenných rad, které mě nasměrovaly k composer namísto pro mě obvyklých, ale zastaralých, include souborů.

Po několika měsících WavesKit spatřil světlo světa, opustil beta verzi a nyní je připraven k práci se všemi standardními funkcemi platformy Waves. Vše dostupné v hlavní síti Transakcije lahko enostavno ustvarimo, podpišemo in pošljemo z močjo enega samega paketa, ki deluje na vseh 64-bitnih različicah PHP od vključno 5.6.

Povezujemo WavesKit v svoj projekt:

composer require deemru/waveskit

Uporabljamo:

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 zgornjem primeru ustvarjamo objekt WavesKit, ki deluje v testni mreži 'T'. Nastavimo seed frazo, iz katere se samodejno izračunajo ključi in naslov računa na podlagi javnega ključa. Potem ustvarimo transakcijo prenosa 0.00000001 Waves z samodejno izračunanim naslovom na podlagi seed fraze na naslov ali 'test', jo predamo v podpis z zasebnim ključem in pošljemo v omrežje. Po tem zagotovimo, da je bila transakcija uspešno potrjena v omrežju.

Delo s transakcijami je osredotočeno na funkcije, ki se začnejo s tx. Za boljše razumevanje dela s transakcijami lahko preučite dokumentacijo WavesKit ali se takoj sklicujete na jasne primere v testih neprekinjenega integriranja.

Ker se je WavesKit razvijal v razmerah realne uporabe, je že dobil napredne funkcije. Prva killer funkcija je funkcija ensure, ki nadzira dosego potrebne stopnje zaupanja, da transakcija ni izginila, temveč je bila potrjena in dosegla potrebno število potrditev v omrežju.

Drugi neprebojni mehanizem je, kako WavesKit komunicira z vozli. V idealnih pogojih okvir deluje le z glavnim vozlom, s katerim ohranja stalno povezavo, vendar se ob napakah lahko samodejno preklopi na rezervna. Če nastavite niz rezervnih vozlov, lahko pokličete funkcijo setBestNode za določitev najboljšega vozla kot glavnega glede na najvišjo trenutno višino in hitrost odgovora. Zdaj dodajte k temu notranji predpomnilnik zahtevkov in poskrbite za skrb tako za uporabnike kot za lastnike vozlov.

Eden od zadnjih naprednih mehanizmov je funkcija txMonitor. Pojavila se je zaradi potrebe po reagiranju na prihajajoče transakcije v realnem času. Ta funkcija popolnoma rešuje vse vidike povezane z obdelavo transakcij v blockchainu. Ni več bolečine, preprosto nastavite svojo callback funkcijo z željenimi možnostmi in čakate na nove transakcije, ki zaženejo vaše procese. Na primer, še en moj projekt VECRO popolnoma zgrajen okoli te funkcije, lahko mirno preučite, kako deluje neposredno v kodi projekta.

Všeč mi je odprtokodna programska oprema, to je ena največjih dosežkov človeštva. Ker sem edini razvijalec in sem dosegel stanje, da so vse moje potrebe rešene, vas vabim, da uporabite in prispevate k WavesKit.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster