Mulle meeldib 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 ei olnud tema arsenalis valmis PHP SDK-d. Noh, tuli see ise kirjutada.
Alguses tuli kasutada 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, , 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 ja .
Esimene samm Waves plokiahela kaartide taha oli See polnud lihtne, kuid siiski õnnestus kirjutada sõltumatu kõigi saldode arvutamine ja isegi leida viga originaalnode arvutustes ( ühe sõnaga, nende juures töötab, makstakse leitud vigade eest). Saate tutvuda w8io vaatleja funktsioonidega sel teemal:
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: base58 kodeerimiseks (tegelikult igasuguste alfaviidide kodeerimiseks) ühtsete allkirjade loomise ja kontrollimise jaoks (variantidega ), ühe hash'i arvutamiseks (mis oli saadaval alles alates PHP 7.2-st) jne.
Siin pean ma tänama mitme väärtusliku nõuande eest, mis suunasid mind suunas, mitte minu harjumuspäraste, kuid aegunud include failide poole.
Mõne kuu pärast , väljus ja on nüüd valmis töötama kogu standardse Waves platvormi funktsionaalsusega. Kõik, mis on saadaval 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/waveskitKasutame:
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 . Tehingutega töötamise parema arusaama saamiseks võite tutvuda või pöörduda kohe näidiste poole .
Kuna WavesKit on arenenud reaalse kasutuse tõttu, on tal nüüd juba mitmeid edasijõudnud funktsioone. Esimene lööveelise funktsioon — see on , 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 , 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 . 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 on täielikult ehitatud selle funktsiooni ümber, saate rahulikult uurida, kuidas see töötab otse .
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 .
Allikas: habr.com
