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

Mulle meeldib see PHP arenduskiiruse ja suurepärase kaasaskantavuse jaoks. On väga hea, kui sul on alati taskus tööriist probleemide lahendamiseks valmis.

Kodumaise plokiahelaga tutvudes oli päris kahju Laineplatvorm tema arsenalis ei olnud valmis PHP SDK-d. No ma pidin selle kirjutama.

Algul pidin kasutama sõlmed tehingute allkirjastamiseks. Nii et kolme aadressi haldamiseks tuli käivitada kolm sõlme ... See oli haletsusväärne vaatepilt, kuigi see lahendas mõned probleemid. Kuni saabus arusaam, et sõlmedele lootmine on tupiktee. Esiteks piiratud funktsionaalsuse tõttu API, teiseks kiiruse tõttu (sõlmed olid neil päevil väga aeglased).

Alustasin kahe paralleelse tööga. Üks on teha plokiahela uurija, mis on kiire ja täiesti sõltumatu sõlme API-st. Teine on koguda kõik funktsioonid Waves Platformiga töötamiseks ühte kohta. Nii tekkisid projektid. w8io и WavesKit.

Esimene samm Waves'i plokiahela kulisside taga oli w8io brauser. See ei olnud lihtne, kuid siiski õnnestus kirjutada kõigi saldode sõltumatu arvutus ja isegi leida algsete sõlmede arvutustes viga (bug bounty programm Muide, see töötab nende jaoks, nad maksavad leitud vigade eest). Lisateavet w8io brauseri funktsioonide kohta leiate sellest lõimest: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

W8io kallal töötamise käigus tekkis mul juba kahtlus, kuid kui töö loogilise lõpuni jõudis ja SDK-d looma hakkasin, said mu kahtlused kinnitust. Ma ei leidnud kuskilt mõnda funktsiooni, sealhulgas kõige olulisemat krüptograafilist. Seejärel alustasin oma vundamendi telliste valmistamisega. Nii nad sündisid: ABCode kodeerimiseks base58-s (tegelikult mis tahes tähestiku kodeerimiseks mis tahes), Curve25519 ühilduvate allkirjade loomiseks ja kontrollimiseks (valikutega steroidide peal), Blake2b ühe räsi arvutamiseks (mis on saadaval alles alates PHP 7.2-st) jne.

Siin pean tänama Inala Kardanova mõne väärtusliku nõuande eest, mis mind suunas koostama minu jaoks tavapärase, kuid vananenud asemel, kaasata faile.

Paari kuu pärast WavesKit nägi ilmavalgust, tuli välja beetaversioonid ja on nüüd valmis töötama kõigi Waves platvormi standardfunktsioonidega. Kõik saadaval põhivõrk tehinguid saab hõlpsasti luua, allkirjastada ja saata ainult ühe paketiga, mis töötab kõigis PHP 64-bitistes versioonides alates versioonist 5.6 (kaasa arvatud).

Ühendame WavesKiti oma projektiga:

composer require deemru/waveskit

Me 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 WavesKiti objekti, mis töötab testvõrgus "T". Seadsime seemnefraasi, millest lähtuvalt avaliku võtme alusel automaatselt arvutatakse välja konto võtmed ja aadress. Järgmiseks loome algfraasist automaatselt arvutatud aadressilt ülekandetehingu 0.00000001 Waves "test" aliase aadressile, edastame selle privaatvõtmega allkirjastamiseks ja saadame võrku. Pärast seda veendume, et tehing on võrgu poolt edukalt kinnitatud.

Tehingud on keskendunud tx-ga algavad funktsioonid. Tehingutega töötamise paremaks mõistmiseks võite uurida WavesKiti dokumentatsioon või minge otse illustreerivate näidete juurde pidevad integratsioonitestid.

Kuna WavesKit on välja töötatud reaalses kasutuses, on sellel juba täiustatud funktsioonid. Esimene tapjafunktsioon on tagama funktsiooni, mis kontrollib nõutava kindlustunde saavutamist, et tehing ei läinud kaotsi, vaid, vastupidi, kinnitati ja saavutas võrgus vajaliku arvu kinnitusi.

Teine kuulikindel mehhanism on see, kuidas WavesKit suhtleb sõlmedega. Kasvuhoonetingimustes töötab raamistik ainult põhisõlmega, säilitades sellega pideva ühenduse, kuid tõrgete korral võib see automaatselt lülituda varusõlmedele. Kui seadistate ooterežiimi sõlmede massiivi, saate funktsiooni kutsuda setBestNode parima sõlme kui põhisõlme määramiseks praeguse kõrguse ja reageerimiskiiruse maksimumväärtuse järgi. Nüüd lisage sellele sisemine päringu vahemälu ja tundke nii kasutajate kui ka sõlmeomanike hoolt.

Üks uusimaid täiustatud mehhanisme on funktsioon txMonitor. See ilmnes seoses vajadusega reageerida sissetulevatele tehingutele reaalajas. See funktsioon lahendab täielikult kõik nüansid, mis on seotud plokiahelas tehingute töötlemisega. Pole enam valu, lihtsalt seadistage oma tagasihelistamise funktsioon soovitud valikutega ja oodake, kuni protsessid alustavad uusi tehinguid. Näiteks veel üks minu projekt VECRO täielikult selle funktsiooni ümber ehitatud, saate hõlpsalt teada, kuidas see õigesti töötab projekti koodis.

Ma armastan avatud lähtekoodi, see on inimkonna üks suurimaid saavutusi. Kuna olen ainuke arendaja ja jõudnud seisu, et kõik mu vajadused on lahendatud, kutsun teid üles kasutama ja panustama WavesKit.

Allikas: www.habr.com

Lisa kommentaar