WavesKit — njĂ« kornizĂ« PHP pĂ«r punĂ«n me blockchain-in Waves

MĂ« pĂ«lqen PHP pĂ«r shpejtĂ«sinĂ« e zhvillimit dhe mundĂ«sinĂ« e shkĂ«lqyer pĂ«r tĂ« kaluar. ËshtĂ« shumĂ« mirĂ« kur nĂ« xhepin tuaj keni gjithmonĂ« njĂ« mjet tĂ« gatshĂ«m pĂ«r zgjidhjen e problemeve.

Ishte mjaft zhgĂ«njyese kur gjatĂ« njohjes me blockchain-in vendas Waves Platform nĂ« arsenalin e saj nuk kishte njĂ« SDK tĂ« gatshĂ«m nĂ« PHP. ÇfarĂ« tĂ« bĂ«j, duhej ta shkruaja vetĂ«.

Fillimisht, duhej të përdorja nodet për nënshkrimin e transaksioneve. Kështu, për të menaxhuar tre adresa, duhej të niste tre nodet... Ishte një pamje e mjerueshme, edhe pse zgjidhte disa probleme. Derisa mësova se mbështetja në nodet është një rruge e mbyllur. Për njëra, për shkak të funksionalitetit të kufizuar API, për tjetra, për shkak të shpejtësisë (në ato ditë nodet ishin shumë të ngadaltë).

Kështu fillova dy projekte paralel. Njëra ishte të krijoja një shikues të blockchain-it, i cili do të ishte i shpejtë dhe plotësisht i pavarur nga API e nodëve. Tjetra ishte të grumbulloja të gjitha funksionet për të punuar me Waves Platform në një vend. Kështu lindën projektet w8io dhe WavesKit.

Hapi i parë për pas behind-the-scenes të blockchain-it Waves ishte shikuesi w8io. Nuk ishte e lehtë, por megjithatë arrita të shkruaja një llogaritje të pavarur të të gjitha bilanceve dhe madje të gjeja një gabim në llogaritjet në nodet origjinale (programi bug-bounty ndërkohë punon atyre, paguhen për gabimet e gjetura). Mund të studioni funksionalitetin e shikuesit w8io në këtë temë: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Gjatë punës mbi w8io, tashmë kisha dyshime, por kur puna arriti në përfundimin logjik dhe fillova të krijoja SDK-në, dyshimet u konfirmuan. Nuk mund të gjeja disa funksione, përfshirë ato më të rëndësishme, ato kriptografike. Atëherë fillova të krijoja blloqet e mia për themelin. Kështu lindi: ABCode për kodimin në base58 (në të vërtetë për kodimin e çdo alfabeti në çdo), Curve25519 për krijimin dhe verifikimin e nënshkrimeve të përputhshme (me variante në steroid), Blake2b për llogaritjen e një nga hash-et (i cili ishte i disponueshëm vetëm që nga PHP 7.2) dhe kështu me radhë.

Këtu duhet t'i falënderoj Inal Kardanov për disa këshilla të vlefshme që më kanë drejtuar në drejtimin e composer në vend të skedarëve të përfshirjes që ishin të njohur për mua, por të vjetëruar.

Pas disa muajsh WavesKit e pa dritën, doli nga versioni beta dhe tani është gati për të punuar me të gjithë funksionalitetin standard të platformës Waves. Të gjitha transaksionet e disponueshme në rrjetin kryesor mund të krijohen lehtësisht, nënshkruhen dhe dërgohen nga një paketë e vetme, e cila punon në të gjitha versionet 64-bit të PHP nga 5.6 përfshirë.

Lidhni WavesKit në projektin tuaj:

composer require deemru/waveskit

Përdorni:

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 punon në rrjetin testues 'T'. Vendosim frazën e mbjelljes, nga e cila automatikisht llogariten çelësat dhe adresa e llogarisë në bazë të çelësit publik. Më pas krijojmë një transaksion transferimi të 0.00000001 Waves nga adresa e llogarisë që është llogaritur automatikisht nga fraza e mbjelljes në adresën e aliasit 'test', e nënshkruajmë me çelësin e mbyllur dhe e dërgojmë në rrjet. Pas kësaj, sigurohemi që transaksioni është konfirmuar me sukses nga rrjeti.

Puna me transaksionet është e përqendruar në funksionet që fillojnë me tx. Për një kuptim më të mirë të punës me transaksionet, mund të shqyrtoni dokumenatcionin WavesKit ose menjëherë të konsultoheni me shembuj të qartë në testet e integrimit të vazhdueshëm.

Duke qenĂ« se WavesKit Ă«shtĂ« zhvilluar nĂ« kushte tĂ« pĂ«rdorimit real, ai tashmĂ« ka marrĂ« disa veçori tĂ« avancuara. Veçoria e parĂ« e vrullshme — Ă«shtĂ« funksioni ensure, i cili kontrollon arritjen e nivelit tĂ« kĂ«rkuar tĂ« sigurisĂ«, qĂ« transaksioni nuk Ă«shtĂ« humbur, pĂ«rkundrazi, Ă«shtĂ« konfirmuar dhe ka arritur numrin e nevojshĂ«m tĂ« konfirmimeve nĂ« rrjet.

NjĂ« mekanizĂ«m i sigurt tjetĂ«r — si WavesKit komunikon me nodet. NĂ«n kushtet e mbrojtura, ky kornizĂ« punon vetĂ«m me nodĂ«n kryesore, duke mbajtur njĂ« lidhje tĂ« vazhdueshme me tĂ«, por nĂ« rast gabimesh mund tĂ« kalojĂ« automatikisht nĂ« ato rezervĂ«. NĂ«se vendosni njĂ« grup nodash rezervĂ«, atĂ«herĂ« mund tĂ« thĂ«rrisni funksionin setBestNode pĂ«r tĂ« pĂ«rcaktuar nodĂ«n mĂ« tĂ« mirĂ« si nodĂ« kryesore nĂ« bazĂ« tĂ« vlerĂ«s mĂ« tĂ« lartĂ« tĂ« lartĂ«sisĂ« aktuale dhe shpejtĂ«sisĂ« sĂ« pĂ«rgjigjes. Tani shtoni nĂ« kĂ«tĂ« njĂ« ndihmĂ«s pĂ«r brendshĂ«m pĂ«r kĂ«rkesat dhe perceptoni kujdesin ndaj pĂ«rdoruesve dhe pronarĂ«ve tĂ« nodĂ«ve.

NjĂ« nga mekanizmat e fundit tĂ« avancuar — funksioni txMonitor. Ajo u shfaq pĂ«r shkak tĂ« nevojĂ«s pĂ«r tĂ« reaguar ndaj transaksioneve qĂ« vijnĂ« nĂ« kohĂ« reale. Kjo funksionalitet plotĂ«sisht zgjidh tĂ« gjitha ngjarjet e lidhura me pĂ«rpunimin e transaksioneve nĂ« blockchain. AsnjĂ« dhimbje mĂ«, thjesht vendosni funksionin tuaj tĂ« callback me opsionet e dĂ«shiruara dhe prisni pĂ«r transaksionet e reja qĂ« do tĂ« nisin proceset tuaja. PĂ«r shembull, njĂ« projekt tjetĂ«r i imi VECRO Ă«shtĂ« ndĂ«rtuar plotĂ«sisht rreth kĂ«saj funksionaliteti, mund tĂ« eksploroni 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 programuesi i vetëm dhe kam arritur në një gjendje ku të gjitha nevojat e mia janë zgjidhur, ju ftoj ta përdorni dhe të kontribuoni në WavesKit.

Burimi: habr.com

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