Vše mi to vyhovuje 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 , v jehož arsenálu chyběl hotový SDK pro PHP. Nu což, musel jsem ho napsat.
Zpočátku jsem musel používat 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 , 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 in .
Prvním krokem do zákulisí blockchainu Waves byl . 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 ( , ostatně u nich funguje, za nalezené chyby platí). Můžete si podrobně prozkoumat funkčnost prohlížeče w8io v tomto tématu:
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: pro kódování do base58 (ve skutečnosti pro kódování jakéhokoli abecedního slova do jakéhokoli), pro vytváření a ověřování kompatibilních podpisů (s variantami ), pro výpočet jednoho z hashů (který byl k dispozici až od PHP 7.2) atd.
Zde bych měl poděkovat za několik cenných rad, které mě nasměrovaly k namísto pro mě obvyklých, ale zastaralých, include souborů.
Po několika měsících , opustil a nyní je připraven k práci se všemi standardními funkcemi platformy Waves. Vše dostupné v 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/waveskitUporabljamo:
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 . Za boljše razumevanje dela s transakcijami lahko preučite ali se takoj sklicujete na jasne primere v .
Ker se je WavesKit razvijal v razmerah realne uporabe, je že dobil napredne funkcije. Prva killer funkcija je , 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 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 . 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 popolnoma zgrajen okoli te funkcije, lahko mirno preučite, kako deluje neposredno .
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 .
Izvor: habr.com
