WavesKit — PHP raamistik töötamiseks Waves'i plokiahelaga

Mulle meeldib PHP arenduse kiirus ja suurepĂ€rane ĂŒhilduvus. On tĂ”eliselt hea, kui taskus on alati valmis tööriist probleemide lahendamiseks.

Oli ĂŒsna kurb, kui tutvudes kodumaise plokiahelaga Waves Platform ei olnud tema arsenalis valmis PHP SDK-d. Noh, tuli see ise kirjutada.

Alguses tuli kasutada noodide tehingute allkirjastamiseks. Nii et kolme aadressi haldamiseks tuli kĂ€ivitada kolm node
 See oli kahetsusvÀÀrne vaatepilt, kuigi lahendas teatud ĂŒlesandeid. Kuni ma sain aru, et nodedele toetumine on ummiktee. Esiteks, piiratud funktsionaalsuse tĂ”ttu, API, teiseks, kiirusest (toona olid noded vĂ€ga aeglased).

Alustasin kahte paralleelset projekti. Üks — luua plokiahela vaatleja, mis oleks kiire ja tĂ€iesti iseseisev nodede API-st. Teine — koguda kĂ”ik Waves Platformi funktsioonid ĂŒhte kohta. Nii sĂŒndisid projektid w8io ja WavesKit.

Esimene samm Waves plokiahela kaartide taha oli vaatleja w8io.See polnud lihtne, kuid siiski Ă”nnestus kirjutada sĂ”ltumatu kĂ”igi saldode arvutamine ja isegi leida viga originaalnode arvutustes (bug-bounty programm ĂŒhe sĂ”naga, nende juures töötab, makstakse leitud vigade eest). Saate tutvuda w8io vaatleja funktsioonidega sel teemal: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

W8io töötamise kĂ€igus oli mul juba kahtlusi, kuid kui töö jĂ”udis loogilise lĂ”puni ja alustasin SDK loomist, Ă”igustasid kahtlused enesetunnet. Ma ei suutnud leida mĂ”ningaid funktsioone, sealhulgas kĂ”ige olulisemaid, krĂŒptograafilisi. Siis hakkasin looma oma telliseid alusteks. Nii sĂŒndisid: ABCode base58 kodeerimiseks (tegelikult igasuguste alfaviidide kodeerimiseks) Curve25519 ĂŒhtsete allkirjade loomise ja kontrollimise jaoks (variantidega steroididel), Blake2b ĂŒhe hash'i arvutamiseks (mis oli saadaval alles alates PHP 7.2-st) jne.

Siin pean ma tÀnama Inala Kardanova mitme vÀÀrtusliku nÔuande eest, mis suunasid mind composer suunas, mitte minu harjumuspÀraste, kuid aegunud include failide poole.

MĂ”ne kuu pĂ€rast sai WavesKit loodud, vĂ€ljus beta-versioonist ja on nĂŒĂŒd valmis töötama kogu standardse Waves platvormi funktsionaalsusega. KĂ”ik, mis on saadaval peavĂ”rgus Tehingud on lihtsasti loodud, allkirjastatud ja saadetud ĂŒhe paketi abil, mis töötab kĂ”igis 64-bitistes PHPç‰ˆæœŹites alates 5.6.

Lisame WavesKiti oma projekti:

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 seemne fraasi, mille alusel arvutatakse automaatselt vĂ”tmed ja konto aadress avatud vĂ”tme pĂ”hjal. SeejĂ€rel loome 0.00000001 Waves edastamise tehingu automaatselt arvutatud aadressilt seemne fraasi pĂ”hjal aadressile alias «test», edastame selle allkirjastamiseks privaatse vĂ”tmega ja saadame vĂ”rku. PĂ€rast seda veendume, et tehing on vĂ”rgu poolt edukalt kinnitatud.

Tehingute haldamine keskendub funktsioonidele, mis algavad tx. Tehingutega töötamise parema arusaama saamiseks vÔite tutvuda WavesKiti dokumentatsiooniga vÔi pöörduda kohe nÀidiste poole pideva integreerimise testides.

Kuna WavesKit on arenenud reaalse kasutuse tĂ”ttu, on tal nĂŒĂŒd juba mitmeid edasijĂ”udnud funktsioone. Esimene lööveelise funktsioon — see on funktsioon ensure, mis kontrollib, kas vajalik kindlustunne on saavutatud, et tehing ei oleks kadunud, vaid vastupidi, oleks kinnitatud ja saavutanud vĂ”rgu vajaliku kinnituste arvu.

Teine pĂŒstoliuuringu mehhanism — kuidas WavesKit suhtleb sĂ”lmedega. Kasvuhoone tingimustes töötab raamistik ainult peamise sĂ”lmega, hoidmas pidevat ĂŒhendust, kuid vigade korral vĂ”ib automaatselt vahetada varusĂ”lmede juurde. Kui seadistate reservsĂ”lmede massiivi, vĂ”ite kutsuda funktsiooni setBestNode , et mÀÀrata parim sĂ”lm peamise sĂ”lmena maksimaalse praeguse kĂ”rguse ja vastamise kiirusenime pĂ”hjal. NĂŒĂŒd lisage sellele sisemine pĂ€ringute vahemĂ€lu ja tunnetage muret nii kasutajate kui ka sĂ”lmede omanike ĂŒle.

Üks viimaseid edasijĂ”udnud mehhanisme — funktsioon txMonitor. See ilmnes sissetulevatele tehingutele reaalajas reageerimise vajadusest. See funktsioon lahendab tĂ€ielikult kĂ”ik probleemid, mis on seotud tehingute töötlemisega plokiahelas. 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 on tĂ€ielikult ehitatud selle funktsiooni ĂŒmber, saate rahulikult uurida, kuidas see töötab otse projekti koodis.

Mulle meeldib open source, see on ĂŒks inimkonna suurimaid saavutusi. Kuna olen ainus arendaja ja olen saavutanud oleku, kus kĂ”ik mu vajadused on rahuldatud, kutsun teid ĂŒles seda kasutama ja sellesse panustama WavesKit.

Allikas: habr.com

Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster