WavesKit - PHP ramt foar wurkjen mei de Waves blockchain

Ik fyn it PHP foar snelheid fan ûntwikkeling en poerbêste portabiliteit. It is heul goed as jo altyd in ark yn jo bûse hawwe, klear om problemen op te lossen.

It wie nochal in skande doe't, doe't yn 'e kunde komme mei de ynlânske blockchain Waves Platfoarm hy hie gjin klearmakke PHP SDK yn syn arsenaal. No, ik moast it skriuwe.

Earst moast ik brûke knopen om transaksjes te tekenjen. Dus, om trije adressen te behearjen, wie it nedich om trije knopen te lansearjen ... It wie in jammerdearlik sicht, hoewol it wat problemen oploste. Oant it begryp kaam dat it fertrouwen op knopen in deade ein wie. As earste, fanwege beheinde funksjonaliteit API, twadde, fanwege de snelheid (knooppunten wiene tige stadich yn dy dagen).

Ik begon twa parallelle banen. Ien is om in blockchain-ûntdekker te meitsjen dy't fluch en folslein ûnôfhinklik sil wêze fan 'e node API. De twadde is om alle funksjes te sammeljen foar it wurkjen mei it Waves Platform op ien plak. Dit is hoe't projekten ferskynden w8 jo и WavesKit.

De earste stap efter de skermen fan 'e Waves blockchain wie w8io browser. It wie net maklik, mar wy binne dochs slagge om in ûnôfhinklike berekkening fan alle saldo's te skriuwen en sels in flater te finen yn 'e berekkeningen op' e orizjinele knopen (bug-bounty programma Trouwens, it wurket foar har, se betelje foar de fûnen flaters). Jo kinne mear leare oer de funksjonaliteit fan 'e w8io-blêder yn dit ûnderwerp: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Wylst ik wurke oan w8io, hie ik al twifels, mar doe't it wurk oan syn logyske ein kaam en ik begon de SDK te meitsjen, waarden myn twifels befêstige. Ik koe guon funksjes oeral net fine, ynklusyf de wichtichste, kryptografyske. Doe begûn ik mei it meitsjen fan myn eigen bakstiennen foar de stifting. Dit is hoe't se berne binne: ABCode kodearje nei base58 (eins om elk alfabet nei elk te kodearjen), Kromme25519 om kompatibele hantekeningen te meitsjen en te ferifiearjen (mei opsjes op steroïden), Blake 2b om ien fan 'e hashes te berekkenjen (dy't allinich beskikber wie sûnt PHP 7.2), ensfh.

Dit is wêr't ik tankje moat Inala Kardanova foar wat weardefol advys dat my yn 'e rjochting wiisde komponist ynstee fan de befetsje triemmen dy't my bekend, mar ferâldere.

Nei in pear moanne WavesKit waard útbrocht, kaam út beta ferzjes en is no klear om te wurkjen mei alle standertfunksjonaliteit fan it Waves-platfoarm. Alle beskikber yn wichtichste netwurk transaksjes kinne maklik oanmakke, ûndertekene en ferstjoerd wurde mei mar ien pakket, rinnend op alle 64-bit ferzjes fan PHP fanôf 5.6 ynklusyf.

Wy ferbine WavesKit oan ús projekt:

composer require deemru/waveskit

Wy brûke:

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

Yn it foarbyld hjirboppe meitsje wy in WavesKit-objekt dat rint op it "T" testnet. Wy ynstallearje in siedfrase wêrfan de kaaien en akkountadres automatysk wurde berekkene op basis fan de iepenbiere kaai. Folgjende, wy meitsje in oerdracht transaksje 0.00000001 Wellen fan it adres automatysk berekkene mei help fan de sied phrase nei it alias adres "test", oerdrage it te wurde ûndertekene mei in privee kaai en stjoer it nei it netwurk. Hjirnei soargje wy derfoar dat de transaksje mei sukses befêstige wurdt troch it netwurk.

Wurk mei transaksjes is konsintrearre yn funksjes begjinnend mei tx. Foar in better begryp fan wurkjen mei transaksjes, kinne jo studearje WavesKit dokumintaasje of gean fuortendaliks nei yllustrative foarbylden yn trochgeande yntegraasjetests.

Sûnt WavesKit is ûntwikkele yn echte wrâld gebrûk, hat it al avansearre funksjes. De earste killer funksje is soargje funksje, dy't it ferwêzentlikjen fan it fereaske nivo fan fertrouwen kontrolearret dat de transaksje net ferlern gie, mar, krekt oarsom, waard befêstige en berikte it fereaske oantal befêstigings yn it netwurk.

In oar kûgelfrij meganisme is hoe't WavesKit kommunisearret mei knopen. Yn kasbetingsten wurket it ramt allinich mei de haadknoop, behâldt der in konstante ferbining mei, mar yn gefal fan flaters kin it automatysk oerskeakelje nei reservekopyen. As jo ​​​​in array fan reservekopyknooppunten ynstelle, kinne jo de funksje neame setBestNode om de bêste knooppunt te bepalen as de wichtichste basearre op 'e maksimale wearde fan' e hjoeddeistige hichte en antwurdsnelheid. Foegje no in ynterne query-cache ta en fiel jo fersoarge foar sawol brûkers as knooppunteigners.

Ien fan 'e lêste avansearre meganismen is de funksje txMonitor. It ferskynde fanwege de needsaak om te reagearjen op ynkommende transaksjes yn echte tiid. Dizze funksje lost alle nuânses folslein op dy't ferbûn binne mei it ferwurkjen fan transaksjes yn 'e blockchain. Gjin pine mear, set gewoan jo werombelfunksje yn mei de winske opsjes en wachtsje op nije transaksjes om jo prosessen te begjinnen. Bygelyks in oar projekt fan my VECRO folslein boud om dizze funksje, kinne jo maklik studearje hoe't it wurket direkt yn it projekt koade.

Ik hâld fan iepen boarne, it is ien fan 'e grutste prestaasjes fan 'e minskheid. Om't ik de ienige ûntwikkelder bin en in steat haw berikt wêr't al myn behoeften binne oplost, noegje ik jo út om te brûken en by te dragen oan WavesKit.

Boarne: www.habr.com

Add a comment