WavesKit — PHP okvir za rad s blockchainom Waves

Sviđa mi se PHP zbog brzine razvoja i odlične prenosivosti. Odlično je kada imate alat spreman za rješavanje problema uvijek pri ruci.

Bilo je prilično obeshrabrujuće kada sam se upoznao s domaćim blockchainom Waves Platform i kada nije bilo spremnog SDK-a na PHP-u. Pa, morao sam ga napisati.

Isprva sam morao koristiti nodi za potpisivanje transakcija. Tako sam, za upravljanje tri adrese, morao pokrenuti tri čvora... To je bio žalosan prizor, iako je rješavao neka pitanja. Do trenutka kada je došlo do spoznaje da se oslanjanje na čvorove - to je slijepa ulica. Prvo, zbog ograničene funkcionalnosti API, drugo, zbog brzine (u to su doba čvorovi bili vrlo spori).

Započeo sam dva paralelna projekta. Jedan - napraviti blockchain preglednik koji će biti brz i potpuno neovisan o API-ju čvorova. Drugi - skupiti sve funkcije za rad s Waves Platform na jednom mjestu. Tako su nastali projekti w8io i WavesKit.

Prvi korak iza kulisa blockchaina Waves bio je preglednik w8io. Nije bilo lako, ali ipak je uspjelo stvoriti neovisnu kalkulaciju svih balansa i čak pronaći grešku u proračunima na izvornim čvorovima (bug-bounty program inače kod njih radi, plaćaju za pronađene greške). Možete detaljnije proučiti funkcionalnost preglednika w8io u ovoj temi: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

U procesu rada na w8io već sam imao sumnje, ali kada je rad došao do logičnog kraja i započeo sam s izradom SDK-a, sumnje su se potvrdile. Nigdje nisam mogao pronaći neke funkcije, uključujući i najvažnije, kriptografske. Tada sam počeo s izradom svojih temelja. Tako su nastali: ABCode za kodiranje u base58 (zapravo za kodiranje bilo kojeg alfabeta u bilo koji), Curve25519 za stvaranje i provjeru kompatibilnih potpisa (s varijantama na steroidima), Blake2b za izračun jednog od hashova (koji je bio dostupan tek od PHP 7.2) i sl.

Ovdje bih trebao zahvaliti Inalu Kardanovu za nekoliko dragocjenih savjeta koji su me usmjerili prema composer umjesto uobičajenih, ali zastarjelih, include datoteka.

Nakon nekoliko mjeseci WavesKit je ugledao svjetlost dana, izašao iz beta verzije i sada je spreman za rad sa svim standardnim funkcionalnostima Waves platforme. Sve dostupne u glavnoj mreži Transakcije se mogu lako kreirati, potpisivati i slati putem jednog paketa koji radi na svim 64-bitnim verzijama PHP od 5.6 pa na dalje.

Dodajte WavesKit u svoj projekt:

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 objekt WavesKit koji radi u testnoj mreži 'T'. Postavljamo sjeme, iz kojeg se automatski izračunavaju ključevi i adresa računa na temelju javnog ključa. Zatim kreiramo transakciju transfera 0.00000001 Waves s automatski izračunate adrese prema sjemu na adresu aliasa 'test', potpisujemo je privatnim ključem i šaljemo u mrežu. Nakon toga osiguravamo da je transakcija uspješno potvrđena od strane mreže.

Rad s transakcijama je usredotočen na funkcije koje počinju s tx. Za bolje razumijevanje rada s transakcijama možete proučiti dokumentaciju WavesKit ili odmah pogledati jasne primjere u testovima kontinuirane integracije.

Budući da je WavesKit razvijan u uvjetima stvarne upotrebe, već je dobio napredne funkcije. Prva killer značajka je funkcija ensure, koja nadzire postizanje potrebnog nivoa sigurnosti, da transakcija nije izgubljena, već je potvrđena i dostigla potreban broj potvrda u mreži.

Drugi neprobojni mehanizam je način na koji WavesKit komunicira s čvorovima. U idealnim uvjetima framework radi samo s glavnim čvorom, održavajući stalnu vezu s njim, ali u slučaju grešaka može se automatski prebaciti na rezervne. Ako postavite niz rezervnih čvorova, možete pozvati funkciju setBestNode za određivanje najboljeg čvora kao glavnog prema maksimalnom aktu posnovoj i brzini odgovora. Sada dodajte unutarnji cache zahtjeva i osjetite brigu i za korisnike i za vlasnike čvorova.

Jedan od najnovijih naprednih mehanizama je funkcija txMonitor. Pojavila se kao odgovor na potrebu za reagiranjem na dolazne transakcije u stvarnom vremenu. Ova funkcija u potpunosti rješava sve aspekte vezane uz obradu transakcija u blockchainu. Više nema boli, jednostavno postavite svoju callback funkciju s željenim opcijama i čekajte nove transakcije koje će pokrenuti vaše procese. Na primjer, još jedan moj projekt VECRO potpuno je izgrađen oko ove funkcije, možete bezbrižno istraživati kako ona funkcionira direktno u kodu projekta.

Sviđa mi se open source, to je jedno od najvećih dostignuća čovječanstva. Budući da sam jedini programer i dostigao sam stanje u kojem su sve moje potrebe zadovoljene, pozivam vas da koristite i doprinosite WavesKit.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster