WavesKit - framework PHP per travaglià cù u blockchain Waves

Mi piaciunu PHP per a rapidità di sviluppu è una portabilità eccellente. Hè assai bonu quandu avete sempre un strumentu prontu per risolve i prublemi in a vostra sacchetta.

Era una vergogna quandu, quandu si cunniscite cù u blockchain domesticu Piattaforma Onde ùn hà micca avutu un SDK PHP prontu in u so arsenale. Ebbè, aghju avutu à scrive.

In prima aghju avutu aduprà nodi per firmà transazzione. Allora, per gestisce trè indirizzi, duverebbe curriri trè nodi ... Era una vista pietosa, ancu s'ellu risolviu certi prublemi. Finu à a cunniscenza chì s'appoghjanu à i nodi hè una strada morta. Prima, per via di funziunalità limitata API, in segundu, per via di a veloce (nodi eranu assai lenti in quelli ghjorni).

Aghju cuminciatu dui travaglii paralleli. Unu hè di fà un espluratore blockchain chì hè veloce è completamente indipendente di l'API di node. U sicondu hè di cullà tutte e funzioni per travaglià cù a piattaforma Waves in un locu. Hè cusì chì i prughjetti sò ghjunti. w8io и WavesKit.

U primu passu daretu à e scene di u blockchain Waves era navigatore w8io. Ùn era micca faciule, ma hà ancu riesciutu à scrive un calculu indipendente di tutti i saldi è ancu truvà un errore in i calculi nantu à i nodi originali (prugramma bug bounty In modu, travaglia per elli, paganu per l'errori truvati). Pudete amparà più nantu à e funziunalità di u navigatore w8io in questu thread: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

In u prucessu di travaglià nantu à w8io, aghju digià avutu dubbitu, ma quandu u travagliu hè ghjuntu à una fine logica è aghju cuminciatu à creà u SDK, i mo dubbi sò cunfirmati. Ùn pudia truvà alcune funzioni in ogni locu, cumprese i più impurtanti criptografichi. Allora aghju cuminciatu à fà i mo mattoni di fundazione. Eccu cumu sò nati: ABCode per codificà in base58 (in realtà per codificà qualsiasi alfabetu à qualsiasi), Curve25519 per creà è verificà firme cumpatibili (cù opzioni nantu à i steroidi), Blake2b per calculà unu di i hashes (chì hè solu dispunibule da PHP 7.2), etc.

Quì aghju da ringrazià Inala Kardanova per qualchì preziosu cunsigliu chì m'hà guidatu versu cumpusitori invece di u solitu per mè, ma anticu, include i schedari.

Dopu un paru di mesi WavesKit hà vistu a luce di u ghjornu, esce versioni beta è hè avà prontu à travaglià cù tutte e funziunalità standard di a piattaforma Waves. Tuttu dispunibule in rete principale e transazzione ponu esse facilmente create, firmate è mandate cù un solu pacchettu chì funziona in tutte e versioni di PHP 64-bit da 5.6 inclusive.

Cunnetteremu WavesKit à u nostru prughjettu:

composer require deemru/waveskit

Avemu aduprà:

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

In l'esempiu di sopra, creamu un oggettu WavesKit chì corre in testnet "T". Avemu stabilitu a frasa di sementa, da quale e chjave è l'indirizzu di u contu sò automaticamente calculati nantu à a chjave publica. Next, avemu crià una transazzione trasferimentu 0.00000001 Waves da l 'indirizzu automaticamente calculata da a frasa di sumente à l'indirizzu di l'alias "test", trasfiriri lu per a firma cù a chjave privata è mandà lu à a reta. Dopu à quessa, facemu sicuru chì a transazzione hè cunfirmata bè da a reta.

E transacciones sò focalizati funzioni chì cumincianu cù tx. Per un megliu capiscenu di travaglià cù e transazzione, pudete studià Documentazione di WavesKit o vai direttamente à l'esempii illustrativi in testi di integrazione cuntinuu.

Siccomu WavesKit hè statu sviluppatu in usu veru, hà digià funzioni avanzate. A prima funzione assassina hè assicurà a funzione, chì cuntrolla a realizazione di u livellu necessariu di cunfidenza chì a transazzione ùn hè micca persa, ma, à u cuntrariu, hè stata cunfirmata è hà righjuntu u numeru necessariu di cunferma in a reta.

Un altru mecanismu di bulletproof hè cumu WavesKit cumunicà cù i nodi. In i cundizioni di serra, u quadru travaglia solu cù u node principale, mantenendu una cunnessione constante cun ellu, ma in casu d'errore pò automaticamente cambià à quelli di salvezza. Sè vo site un array di nodi standby, pudete chjamà a funzione setBestNode per determinà u megliu node cum'è u node principale da u valore massimu di l'altezza attuale è a velocità di risposta. Avà aghjunghje una cache di query interna à questu è sentite a cura di l'utilizatori è di i pruprietarii di nodi.

Unu di l'ultimi miccanismi avanzati hè a funzione txMonitor. Hè apparsu in cunnessione cù a necessità di risponde à e transazzioni entranti in tempu reale. Sta funzione risolve cumplettamente tutti i sfumaturi assuciati cù u prucessu di transazzione in u blockchain. Ùn ci hè più dolore, basta à cunfigurà a vostra funzione di callback cù l'opzioni chì vulete è aspittà per e novi transazzione per inizià i vostri prucessi. Per esempiu, un altru di i mo prughjetti VECRU cumplettamente custruitu intornu à sta funzione, vi ponu facirmenti amparà cumu si travaglia dritta in u codice di u prugettu.

Amu a fonte aperta, hè unu di i più grandi successi di l'umanità. Siccomu sò l'unicu sviluppatore è aghju ghjuntu à u statu chì tutti i mo bisogni sò risolti, vi invitu à aduprà è cuntribuisce à WavesKit.

Source: www.habr.com

Add a comment