WavesKit — PHP raamistik Waves plokiahela jaoks

Mulle meeldib PHP arenduse kiirus ja suurepärane ülekantavus. See on tõeliselt hea, kui taskus on alati valmisolekuga tööriist probleemide lahendamiseks.

Oli päris pettumust valmistav, kui tutvudes kohaliku plokiahela Waves Platform arsenalis ei olnud valmis SDK-d PHP jaoks. Mis teha, tuli see ise kirjutada.

Alguses tuli kasutada nodid tehingute allkirjastamiseks. Seega, kolme konto haldamiseks tuli käivitada kolm node't... See oli hale vaatepilt, kuigi see lahendas mõned probleemid. Kuni sain aru, et node'ide najale toetumine on ummiktee. Esiteks, funktsionaalsuse piirangute tõttu API, teiseks kiirusest (tol ajal olid node'd väga aeglased).

Alustasin kahte paralleelset projekti. Üks neist - luua plokiahela brauser, mis oleks kiire ja täiesti sõltumatu node'ite API-st. Teine - koguda kõik funktsioonid Waves Platformiga töötamiseks ühte kohta. Nii tekkisid projektid w8io ja WavesKit.

Waves plokiahela backstage’i esimeseks sammuks oli w8io brauser. See polnud lihtne, kuid ikkagi õnnestus kirjutada sõltumatu kõigi saldode arvutamine ja isegi leida viga originaalnode'ite arvutustes (bug-bounty programm Üldiselt toimib see, nad maksavad leitud vigade eest). Saate põhjalikumalt tutvuda w8io brauseri funktsioonidega selles teemas: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

W8io kallal töötades kahtlesin juba alguses, kuid kui töö jõudis loogiliselt lõpule ja asusin SDK loomise juurde, siis kahtlused kinnitust said. Ma ei suutnud leida teatud funktsioone, sealhulgas kõige olulisemaid, krüptograafilisi. Siis hakkasin oma elemente ehitama aluseks. Nii sündisid: ABCode base58 kodeerimiseks (tegelikult igasuguste tähestike kodeerimiseks igasugustes), Curve25519 ühtsete allkirjade loomise ja kontrollimise jaoks (variantidega steroididel), Blake2b ühe hash'i arvutamiseks (mis oli saadaval alates PHP 7.2) jne.

Siin pean tänama Inala Kardanovi mitme väärtusliku nõuande eest, mis suunasid mind composer'i suunal, selle asemel, et kasutada harjumuspäraseid, kuid aegunud include faile.

Mõne kuu pärast WavesKit nägi ilmavalgust, tuli välja beetaversioon ja on nüüd valmis töötama koos kogu Waves platvormi standardfunktsiooniga. Kõik, mis on saadaval põhivõrgus tehingud on lihtsasti loodud, allkirjastatud ja saadetud ühe paketi abil, mis töötab kõigis 64-bitistes PHP versioonides alates 5.6.

Kuidas ühendada WavesKit oma projektiga:

composer require deemru/waveskit

Kasutame:

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

Ülaltoodud näites loome objekti WavesKit, mis töötab testvõrgus «T». Seame seemnefraasi, mille põhjal arvutatakse automaatselt võtmed ja konto aadress avatud võtme alusel. Seejärel loome ülekandetehingu 0.00000001 Waves automaatsete võtmete põhjal, suunates selle «test» alias-aadressile, allkirjastame selle privaatvõtmega ja saadame võrku. Pärast seda veendume, et tehing on võrgu poolt edukalt kinnitatud.

Tehingutega töötamine keskendub funktsioonidele, mis algavad tx. Tehingute lähemaks mõistmiseks võite tutvuda WavesKit dokumentatsiooniga või minna otse visuaalsete näidete juurde aatritestide pideva integreerimise kaudu.

Kuna WavesKit on arenenud reaalse kasutamise tingimustes, on tal juba välja kujunenud arenenud funktsioone. Esimene peamine funktsioon on funktsioon ensure, mis kontrollib nõutud usaldusväärsuse taseme saavutamist, et tehingut ei kadunud, vaid vastupidi, see on kinnitatud ja saavutanud vajalikud kinnitused võrgus.

Teine löögikindel mehhanism on see, kuidas WavesKit suhtleb sõlmedega. Kasvuhoone tingimustes töötab raamistik ainult peamise sõlmega, hoides selle pidevat ühendust, kuid tõrgete korral võib automaatselt vahetada varusõlmede peale. Kui seadistate hulga varusõlmi, saate kutsuda funktsiooni setBestNode , et määrata parim sõlm peamise sõlmena vastavalt hetke kõrguse ja vastamise kiirusenäitajale. Nüüd lisage sellele sisemine päringute vahemälu ja hoolitsete nii kasutajate kui ka sõlmade omanike eest.

Üks viimaseid arenenud mehhanisme on funktsioon txMonitor. See tuli vajadusest reageerida sissetulevatele tehingutele reaalajas. See funktsioon lahendab täielikult kõik blockchaini tehingute töötlemisega seotud nüansid. Ei mingit valu, lihtsalt seadistage oma callback-funktsioon soovitud valikutega ja oodake uusi tehinguid, mis käivitavad teie protsessid. Näiteks, veel üks minu projekt VECRO või täielikult ehitatud selle funktsiooni ümber, saate rahulikult uurida, kuidas see töötab otse projekti koodis.

Mulle meeldib avatud lähtekood, see on üks inimkonna suurimaid saavutusi. Kuna ma olen ainus arendaja ja olen saavutanud seisundi, kus kõik minu vajadused on rahuldatud, kutsun teid üles kasutama ja panustama WavesKit.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster