WavesKit — kuadri PHP pĂ«r punĂ« me blockchain-in Waves

Më pëlqen PHP për shpejtësinë e zhvillimit dhe portabilitetin e shkëlqyer. Kjo është shumë mirë kur një mjet i gatshëm për zgjidhjen e problemeve është gjithmonë në xhep.

Ishte mjaft e sikletshme kur, gjatĂ« njohjes me bllokadĂ«n kombĂ«tare Waves Platform nĂ« arsenalin e tij nuk kishte njĂ« SDK tĂ« gatshĂ«m pĂ«r PHP. ÇfarĂ« tĂ« bĂ«jmĂ«, duhej ta shkruaja vetĂ«.

Në fillim, duhej të përdorja noda për nënshkrimin e transaksioneve. Kështu, për të menaxhuar tre adresa, duhej të niste tre nodë... Ishte një pamje e mjerueshme, megjithatë zgjidhte disa probleme. Derisa kuptova se mbështetja te nodet ishte një ngërç. Së pari, për shkak të funksionalitetit të kufizuar API, së dyti, për shkak të shpejtësisë (në ato ditë, nodet ishin shumë të ngadalta).

Kam filluar dy projekte paralele. NjĂ«ri — tĂ« krijoja njĂ« shfletues bllokadash, i cili do tĂ« ishte i shpejtĂ« dhe krejtĂ«sisht i pavarur nga API-nĂ« e nodĂ«ve. Tjetri — tĂ« bashkoja tĂ« gjitha funksionet pĂ«r tĂ« punuar me Waves Platform nĂ« njĂ« vend. KĂ«shtu lindi projektet w8io dhe WavesKit.

Hapi i parë pas skenave të bllokadës Waves ishte shfletuesi w8io. Nuk ishte e lehtë, por megjithatë arrita të shkruaja një llogaritje të pavarur të të gjitha bilancit dhe madje të gjeja një gabim në llogaritjet në nodet origjinale (programi bug-bounty për më tepër, aty punon, për gabimet e gjetura paguhet). Ju mund të studioni më në detaje funksionalitetin e shfletuesit w8io në këtë temë: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Në procesin e punës mbi w8io, isha tashmë i dyshimtë, por kur puna arriti në përfundim logjik dhe fillova krijimin e SDK-së, dyshimet u konfirmuan. Nuk arrita të gjej disa funksione, përfshirë ato më të rëndësishmet, ato kriptografike. Atëherë fillova me krijimin e blloqeve të mia për themelin. Kështu lindi: ABCode për kodimin në base58 (në të vërtetë për kodimin e çdo alfabete në çdo), Curve25519 për krijimin dhe verifikimin e nënshkrimeve të përputhshme (me variante në steroide), Blake2b për llogaritjen e një nga hash-ëve (i cili ishte i disponueshëm vetëm që nga PHP 7.2) etj.

Këtu duhet të falënderohem Inal Kardanov për disa këshilla të çmuara që më udhëhoqën drejt composer në vend të skedarëve të përfshirjes që ishin të njohur për mua, por që ishin të vjetëruar.

Pas disa muajve WavesKit pa dritën e ditës, doli jashtë versioni beta dhe tani është gati të punojë me të gjithë funksionalitetin standard të platformës Waves. Të gjitha të disponueshme në rrjetin kryesor Transaksionet mund të krijohen, nënshkruhen dhe dërgohen lehtësisht nga një paketë, e cila funksionon në të gjitha versionet 64-bit të PHP nga 5.6 e tutje.

Lidhni WavesKit në projektin tuaj:

composer require deemru/waveskit

Përdorim:

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

Në shembullin e mësipërm krijojmë një objekt WavesKit, i cili funksionon në rrjetin testues "T". Vendosim frazën e sigurimit, nga e cila llogariten automatikisht çelësat dhe adresa e llogarisë në bazë të çelësit publik. Më pas krijojmë një transaksion për transferim 0.00000001 Waves nga adresa e llogarisë e llogaritur automatikisht, drejtuar adresës së aliasit "test", e nënshkruajmë me çelësin privat dhe e dërgojmë në rrjet. Pasi bëjmë këto, sigurohemi që transaksioni të jetë konfirmuar me sukses nga rrjeti.

Puna me transaksionet është përqendruar në funksionet që fillojnë me tx. Për ta kuptuar më mirë punën me transaksionet, mund të studioni dokumentacionin e WavesKit ose menjëherë të referoheni në shembujt vizualë në provimet e integrimit të vazhdueshëm..

Duke qenĂ« se WavesKit Ă«shtĂ« zhvilluar nĂ« kushte tĂ« pĂ«rdorimit real, ajo tashmĂ« ka karakteristika tĂ« avancuara. Karakteristika e parĂ« vrastare — Ă«shtĂ« funksioni ensure, i cili kontrollon arritjen e nivelit tĂ« kĂ«rkuar tĂ« sigurisĂ«, qĂ« transaksioni nuk Ă«shtĂ« humbur, por pĂ«rkundrazi, Ă«shtĂ« konfirmuar dhe ka arritur numrin e nevojshĂ«m tĂ« konfirmimeve nĂ« rrjet.

NjĂ« mekanizĂ«m tjetĂ«r i pakalueshĂ«m — Ă«shtĂ« si WavesKit komunikon me nodet. NĂ« kushte serĂ«, korniza punon vetĂ«m me nodin kryesor, duke mbajtur njĂ« lidhje tĂ« vazhdueshme me tĂ«, por nĂ« raste gabimi mund tĂ« kalojĂ« automatikisht nĂ« rezerva. NĂ«se vendosni njĂ« masiv nodash rezervĂ«, mund tĂ« thĂ«rrisni funksionin setBestNode pĂ«r tĂ« pĂ«rcaktuar nodin mĂ« tĂ« mirĂ« si kryesor nĂ« bazĂ« tĂ« vlerĂ«s maksimale tĂ« lartĂ«sisĂ« aktuale dhe shpejtĂ«sisĂ« sĂ« pĂ«rgjigjes. Tani shtoni kĂ«tĂ« njĂ« memorje tĂ« brendshme tĂ« kĂ«rkesave dhe ndjeni kujdesin pĂ«r pĂ«rdoruesit dhe pronarĂ«t e nodave.

NjĂ« nga mekanizmat e fundit tĂ« avancuar — funksioni txMonitorAjo ajo nĂ« lidhje me nevojĂ«n pĂ«r tĂ« reaguar ndaj transaksioneve tĂ« ardhshme nĂ« kohĂ« reale. Kjo funksionalitet zgjidh plotĂ«sisht tĂ« gjitha çështjet qĂ« lidhen me pĂ«rpunimin e transaksioneve nĂ« blockchain. AsnjĂ« dhimbje mĂ«, thjesht vendosni funksionin tuaj tĂ« kthimit me opsionet e dĂ«shiruara dhe prisni transaksionet e reja qĂ« do tĂ« nisin proceset tuaja. PĂ«r shembull, njĂ« tjetĂ«r projekt im VECRO Ă«shtĂ« ndĂ«rtuar plotĂ«sisht rreth kĂ«saj funksionaliteti, mund ta studioni lehtĂ«sisht se si funksionon drejtpĂ«rdrejt nĂ« kodin e projektit.

Më pëlqen open source, është një nga arritjet më të mëdha të njerëzimit. Duke qenë se jam zhvilluesi i vetëm dhe kam arritur një gjendje ku të gjitha nevojat e mia janë zgjidhur, ju ftoj të përdorni dhe të kontriboni në WavesKit.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster