WavesKit - PHP okvir za rad sa Waves blockchainom

Svidja mi se PHP za brzinu razvoja i odličnu prenosivost. Vrlo je dobro kada u džepu uvijek imate spreman alat za rješavanje problema.

Bila je prava šteta kada se, prilikom upoznavanja sa domaćim blockchainom Waves Platform nije imao gotov PHP SDK u svom arsenalu. Pa, morao sam to napisati.

U početku sam morao da koristim čvorovi za potpisivanje transakcija. Dakle, da biste upravljali sa tri adrese, morali ste pokrenuti tri čvora... Bio je to jadan prizor, iako je riješio neke probleme. Sve dok nije došlo do razumijevanja da je oslanjanje na čvorove ćorsokak. Prvo, zbog ograničene funkcionalnosti API, drugo, zbog brzine (čvorovi su u to vrijeme bili vrlo spori).

Započeo sam dva paralelna posla. Jedan je napraviti blockchain explorer koji je brz i potpuno neovisan o node API-ju. Drugi je da prikupite sve funkcije za rad sa Waves Platformom na jednom mjestu. Tako su nastali projekti. w8io и WavesKit.

Prvi korak iza kulisa Waves blockchaina je bio w8io pretraživač. Nije bilo lako, ali je ipak uspio napisati nezavisan izračun svih bilansa, pa čak i pronaći grešku u proračunima na originalnim čvorovima (bug bounty program Uzgred, radi za njih, oni plaćaju za pronađene greške). Možete saznati više o funkcionalnosti w8io pretraživača u ovoj temi: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

U procesu rada na w8io, već sam imao nedoumice, ali kada je posao došao do logičnog kraja i počeo sam kreirati SDK, moje sumnje su se potvrdile. Nigdje nisam mogao pronaći neke funkcije, uključujući i one najvažnije kriptografske. Onda sam počeo da pravim cigle za temelj. Ovako su rođeni: ABCode za kodiranje u base58 (zapravo za kodiranje bilo koje abecede u bilo koju), Curve25519 za kreiranje i provjeru kompatibilnih potpisa (sa opcijama na steroidima), Blake2b za izračunavanje jednog od hešova (koji je dostupan tek od PHP 7.2), itd.

Evo da se zahvalim Inala Kardanova za neke vrijedne savjete koji su me usmjerili kompozitor umjesto uobičajenih za mene, ali zastarjelih, uključi datoteke.

Posle par meseci WavesKit je ugledao svjetlo dana, izašao beta verzije i sada je spreman za rad sa svim standardnim funkcionalnostima Waves platforme. Sve dostupno u glavna mreža transakcije se mogu lako kreirati, potpisati i poslati sa samo jednim paketom koji radi na svim 64-bitnim verzijama PHP-a od 5.6.

Povezujemo WavesKit sa našim projektom:

composer require deemru/waveskit

Koristimo:

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

U gornjem primjeru kreiramo WavesKit objekat koji radi na testnetu "T". Postavljamo početnu frazu iz koje se automatski izračunavaju ključevi i adresa naloga na osnovu javnog ključa. Zatim kreiramo transakciju prijenosa 0.00000001 Waves sa adrese automatski izračunate iz seed fraze na adresu “testnog” aliasa, prenosimo je na potpis privatnim ključem i šaljemo u mrežu. Nakon toga, uvjeravamo se da je transakcija uspješno potvrđena od strane mreže.

Transakcije su fokusirane na funkcije koje počinju sa tx. Za bolje razumijevanje rada s transakcijama, možete proučiti WavesKit dokumentacija ili idite direktno na ilustrativne primjere u kontinuirani testovi integracije.

Pošto je WavesKit razvijen za stvarnu upotrebu, već ima napredne funkcije. Prva ubilačka karakteristika je osigurati funkciju, koji kontroliše postizanje potrebnog nivoa pouzdanosti da transakcija nije izgubljena, već je, naprotiv, potvrđena i dostigla potreban broj potvrda u mreži.

Još jedan mehanizam otporan na metke je način na koji WavesKit komunicira sa čvorovima. U uslovima staklene bašte, okvir radi samo sa glavnim čvorom, održavajući stalnu vezu s njim, ali u slučaju grešaka može se automatski prebaciti na rezervne. Ako postavljate niz standby čvorova, možete pozvati funkciju setBestNode da se odredi najbolji čvor kao glavni čvor po maksimalnoj vrijednosti trenutne visine i brzine odziva. Sada tome dodajte internu predmemoriju upita i osjetite brigu i korisnika i vlasnika čvorova.

Jedan od najnovijih naprednih mehanizama je funkcija txMonitor. Pojavio se u vezi sa potrebom da se odgovori na dolazne transakcije u realnom vremenu. Ova funkcija u potpunosti rješava sve nijanse povezane s obradom transakcija u blockchainu. Nema više muke, samo postavite svoju funkciju povratnog poziva sa opcijama koje želite i pričekajte da nove transakcije pokrenu vaše procese. Na primjer, još jedan moj projekat VECRO potpuno izgrađen oko ove funkcije, lako možete naučiti kako ispravno funkcionira u kodu projekta.

Volim open source, to je jedno od najvećih dostignuća čovječanstva. Pošto sam ja jedini programer i došao sam do stanja da su sve moje potrebe riješene, pozivam vas da iskoristite i doprinesete WavesKit.

izvor: www.habr.com

Dodajte komentar