WavesKit - PHP okvir za delo z verigo blokov Waves

Všeč mi je PHP za hitrost razvoja in odlično prenosljivost. Zelo dobro je, če imate vedno v žepu orodje, pripravljeno za reševanje težav.

Bilo je kar škoda, ko sem se seznanil z domačim blockchainom Platforma valov v svojem arzenalu ni imel pripravljenega PHP SDK. No, moral sem napisati.

Sprva sem moral uporabiti vozlišča za podpis transakcij. Torej, za upravljanje treh naslovov je bilo potrebno zagnati tri vozlišča ... To je bil žalosten prizor, čeprav je rešil nekaj težav. Dokler ni prišlo do razumevanja, da je zanašanje na vozlišča slepa ulica. Prvič, zaradi omejene funkcionalnosti API, drugič, zaradi hitrosti (vozlišča so bila v tistih časih zelo počasna).

Začel sem z dvema vzporednima službama. Ena je izdelava blockchain raziskovalca, ki bo hiter in popolnoma neodvisen od node API-ja. Drugi je zbiranje vseh funkcij za delo s platformo Waves na enem mestu. Tako so se pojavili projekti w8io и WavesKit.

Prvi korak v zakulisju verige blokov Waves je bil brskalnik w8io. Ni bilo lahko, a nam je vseeno uspelo napisati neodvisen izračun vseh bilanc in celo najti napako v izračunih na originalnih vozliščih (bug-bounty program Mimogrede, za njih deluje, plačajo za ugotovljene napake). Več o funkcionalnosti brskalnika w8io lahko izveste v tej temi: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Že med delom na w8io sem imel pomisleke, a ko je delo prišlo do logičnega konca in sem začel ustvarjati SDK, so se moji dvomi potrdili. Nekaterih funkcij nisem našel nikjer, tudi tistih najpomembnejših, kriptografskih. Potem sem začel z izdelavo lastnih zidakov za temelj. Takole so se rodili: ABCode za kodiranje v base58 (pravzaprav za kodiranje katere koli abecede v katero koli), Curve25519 za ustvarjanje in preverjanje združljivih podpisov (z možnostmi na steroidih), Blake2b za izračun enega od zgoščenih vrednosti (ki je bil na voljo šele od PHP 7.2) itd.

Tukaj se moram zahvaliti Inala Kardanova za nekaj dragocenih nasvetov, ki so me usmerili v pravo smer skladatelj namesto vključujočih datotek, ki so mi znane, a zastarele.

Po nekaj mesecih WavesKit je bil izdan, prišel ven beta različice in je zdaj pripravljen za delo z vsemi standardnimi funkcijami platforme Waves. Vse na voljo v glavno omrežje transakcije je mogoče preprosto ustvariti, podpisati in poslati z uporabo samo enega paketa, ki deluje na vseh 64-bitnih različicah PHP od 5.6 naprej.

WavesKit povezujemo z našim projektom:

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 ustvarimo objekt WavesKit, ki se izvaja na testnem omrežju »T«. Namestimo semensko frazo, iz katere se na podlagi javnega ključa samodejno izračunajo ključi in naslov računa. Nato ustvarimo transakcijo prenosa 0.00000001 Waves iz naslova, ki je samodejno izračunan z uporabo semenske fraze, na vzdevek naslova »test«, ga prenesemo, da se podpiše z zasebnim ključem, in pošljemo v omrežje. Po tem se prepričamo, da je transakcija uspešno potrjena s strani omrežja.

Delo s transakcijami je skoncentrirano v funkcije, ki se začnejo s tx. Za boljše razumevanje dela s transakcijami se lahko učite Dokumentacija WavesKit ali se takoj obrnite na ilustrativne primere v stalni integracijski testi.

Ker je bil WavesKit razvit za uporabo v realnem svetu, že ima napredne funkcije. Prva ubijalska funkcija je zagotoviti delovanje, ki nadzoruje doseganje zahtevane stopnje zaupanja, da transakcija ni bila izgubljena, ampak, nasprotno, potrjena in dosegla zahtevano število potrditev v omrežju.

Drugi neprebojni mehanizem je, kako WavesKit komunicira z vozlišči. V pogojih rastlinjaka ogrodje deluje samo z glavnim vozliščem in ohranja stalno povezavo z njim, v primeru napak pa lahko samodejno preklopi na rezervno. Če nastavite niz rezervnih vozlišč, lahko pokličete funkcijo setBestNode določiti najboljše vozlišče kot glavno na podlagi največje vrednosti trenutne višine in hitrosti odziva. Zdaj temu dodajte notranji predpomnilnik poizvedb in občutite skrb za uporabnike in lastnike vozlišč.

Eden najnovejših naprednih mehanizmov je funkcija txMonitor. Pojavil se je zaradi potrebe po odzivu na dohodne transakcije v realnem času. Ta funkcija v celoti rešuje vse nianse, povezane z obdelavo transakcij v verigi blokov. Nič več bolečine, samo nastavite funkcijo povratnega klica z želenimi možnostmi in počakajte na nove transakcije, da začnete svoje procese. Na primer, še en moj projekt VECRO popolnoma zgrajen okoli te funkcije, lahko preprosto neposredno preučite, kako deluje v kodi projekta.

Obožujem odprto kodo, to je eden največjih dosežkov človeštva. Ker sem edini razvijalec in sem dosegel stanje, ko so rešene vse moje potrebe, vas vabim, da uporabite in prispevate k WavesKit.

Vir: www.habr.com

Dodaj komentar