WavesKit - Korniza PHP për të punuar me zinxhirin e valëve

Мне нравится PHP për shpejtësinë e zhvillimit dhe transportueshmëri të shkëlqyer. Është shumë mirë kur keni gjithmonë një mjet në xhep, gati për të zgjidhur problemet.

Ishte një turp kur, kur u njohëm me blloqet e brendshme Platforma e valëve ai nuk kishte një PHP SDK të gatshme në arsenalin e tij. Epo, duhej ta shkruaja.

Në fillim më duhej të përdorja nyjet për të nënshkruar transaksione. Pra, për të menaxhuar tre adresa ishte e nevojshme të hapeshin tre nyje... Ishte një pamje për të ardhur keq, megjithëse zgjidhte disa probleme. Derisa erdhi mirëkuptimi se mbështetja në nyje ishte një rrugë pa krye. Së pari, për shkak të funksionalitetit të kufizuar API, së dyti, për shkak të shpejtësisë (nyjet ishin shumë të ngadalta në ato ditë).

Fillova dy punë paralele. Njëra është të krijoni një eksplorues blockchain që do të jetë i shpejtë dhe plotësisht i pavarur nga API i nyjeve. E dyta është mbledhja e të gjitha funksioneve për të punuar me platformën e valëve në një vend. Kështu u shfaqën projektet w8io и WavesKit.

Hapi i parë prapa skenave të blockchain Waves ishte shfletuesi w8io. Nuk ishte e lehtë, por ne gjithsesi arritëm të shkruanim një llogaritje të pavarur të të gjitha balancave dhe madje të gjenim një gabim në llogaritjet në nyjet origjinale (program bug-bounty Nga rruga, funksionon për ta, ata paguajnë për gabimet e gjetura). Mund të mësoni më shumë rreth funksionalitetit të shfletuesit w8io në këtë temë: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Gjatë punës në w8io, unë tashmë kisha dyshime, por kur puna mori fundin e saj logjik dhe fillova të krijoj SDK, dyshimet e mia u konfirmuan. Nuk gjeta askund disa funksione, përfshirë ato më të rëndësishmet, ato kriptografike. Më pas fillova duke bërë tullat e mia për themelin. Kështu kanë lindur: ABCode për të koduar në bazën58 (në fakt për të koduar çdo alfabet në ndonjë), Curve25519 për të krijuar dhe verifikuar nënshkrime të pajtueshme (me opsione në steroid), Blake2b për të llogaritur një nga hash-et (i cili ishte i disponueshëm vetëm që nga PHP 7.2), etj.

Këtu duhet të falënderoj Inala Kardanova për disa këshilla të vlefshme që më drejtuan në drejtim kompozoj në vend të përfshirjes së skedarëve që janë të njohur për mua, por të vjetëruar.

Pas nja dy muajsh WavesKit u lëshua, doli versionet beta dhe tani është gati për të punuar me të gjithë funksionalitetin standard të platformës Waves. Të gjitha të disponueshme në rrjeti kryesor transaksionet mund të krijohen, nënshkruhen dhe dërgohen lehtësisht duke përdorur vetëm një paketë, që funksionon në të gjitha versionet 64-bit të PHP nga 5.6 përfshirëse.

Ne lidhim WavesKit me projektin tonë:

composer require deemru/waveskit

Ne 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, ne krijojmë një objekt WavesKit që funksionon në rrjetin testues "T". Ne instalojmë një frazë fillestare nga e cila çelësat dhe adresa e llogarisë llogariten automatikisht bazuar në çelësin publik. Më pas, ne krijojmë një transaksion transferimi 0.00000001 Valët nga adresa e llogaritur automatikisht duke përdorur frazën e farës në adresën e pseudonimit "test", e transferojmë atë për t'u nënshkruar me një çelës privat dhe e dërgojmë në rrjet. Pas kësaj, ne sigurohemi që transaksioni të konfirmohet me sukses nga rrjeti.

Puna me transaksione është e përqendruar në funksionet që fillojnë me tx. Për një kuptim më të mirë të punës me transaksione, mund të studioni Dokumentacioni i WavesKit ose drejtohuni menjëherë te shembujt ilustrues në testet e integrimit të vazhdueshëm.

Meqenëse WavesKit është zhvilluar në përdorim në botën reale, ai tashmë ka veçori të avancuara. Karakteristika e parë vrasëse është sigurojnë funksionin, i cili kontrollon arritjen e nivelit të kërkuar të besimit se transaksioni nuk ka humbur, por, përkundrazi, është konfirmuar dhe ka arritur numrin e kërkuar të konfirmimeve në rrjet.

Një mekanizëm tjetër antiplumb është mënyra se si WavesKit komunikon me nyjet. Në kushtet e serrës, korniza funksionon vetëm me nyjen kryesore, duke mbajtur një lidhje të vazhdueshme me të, por në rast gabimesh mund të kalojë automatikisht në ato rezervë. Nëse konfiguroni një grup nyjesh rezervë, mund ta telefononi funksionin setBestNode për të përcaktuar nyjen më të mirë si kryesore në bazë të vlerës maksimale të lartësisë aktuale dhe shpejtësisë së përgjigjes. Tani shtoni kësaj një cache të brendshme të pyetjeve dhe ndjehuni të kujdesshëm si për përdoruesit ashtu edhe për pronarët e nyjeve.

Një nga mekanizmat më të fundit të avancuar është funksioni txMonitor. U shfaq për shkak të nevojës për t'iu përgjigjur transaksioneve hyrëse në kohë reale. Ky funksion zgjidh plotësisht të gjitha nuancat që lidhen me përpunimin e transaksioneve në blockchain. Nuk ka më dhimbje, thjesht konfiguroni funksionin tuaj të kthimit të thirrjes me opsionet e dëshiruara dhe prisni që transaksionet e reja të fillojnë proceset tuaja. Për shembull, një projekt tjetër i imi VECRO i ndërtuar plotësisht rreth këtij funksioni, mund të studioni lehtësisht se si funksionon drejtpërdrejt në kodin e projektit.

Më pëlqen burimi i hapur, është një nga arritjet më të mëdha të njerëzimit. Meqenëse unë jam i vetmi zhvillues dhe kam arritur një gjendje ku të gjitha nevojat e mia janë zgjidhur, ju ftoj të përdorni dhe të kontribuoni në WavesKit.

Burimi: www.habr.com

Shto një koment