WavesKit - Çarçoveya PHP-ê ji bo xebata bi bloka Waves re

Ez dixwazim PHP ji bo leza pêşkeftinê û veguheztina hêja. Pir baş e gava ku hûn her gav amûrek di berîka xwe de hebe, amade ye ku pirsgirêkan çareser bike.

Dema ku, gava ku bi bloka navxweyî re nas kir, pir şerm bû Platforma pêlan di cebilxaneya wî de PHP SDK-ya amade nebû. Belê, diviyabû ez binivîsim.

Di destpêkê de ez neçar bûm ku bikar bînim nodes danûstendinan îmze bikin. Ji ber vê yekê, ji bo birêvebirina sê navnîşanan hewce bû ku sê girêk werin avêtin... Ew dîmenek xemgîn bû, her çend hin pirsgirêk çareser kirin. Heya ku têgihîştin ku xwe spartina ser girêkan bendek mirî ye. Ya yekem, ji ber fonksiyonek tixûbdar API, ya duyemîn, ji ber lezê (girêdan di wan rojan de pir hêdî bûn).

Min dest bi du karên paralel kir. Yek ev e ku meriv lêgerek blokek çêbike ku dê ji API-ya girêk zû û bi tevahî serbixwe be. Ya duyemîn ev e ku meriv hemî fonksiyonên ji bo xebata bi Platforma Waves re li yek cîhek berhev bike. Bi vî rengî proje derketin holê w8io и WavesKit.

Pêngava yekem li pişt perdeya bloka Waves bû geroka w8io. Ew ne hêsan bû, lê dîsa jî me karî ku hesabek serbixwe ya hemî hevsengiyan binivîsin û tewra di hesabên li ser girêkên orîjînal de xeletiyek jî bibînin (bernameya bug-bounty Bi awayê, ew ji wan re dixebite, ew ji bo xeletiyên ku hatine dîtin didin). Hûn dikarin di vê mijarê de li ser fonksiyona geroka w8io bêtir fêr bibin: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Dema ku ez li ser w8io dixebitim, jixwe gumanên min hebûn, lê dema ku kar bi dawî hat û min dest bi çêkirina SDK kir, gumanên min piştrast bûn. Min nekarî li her derê hin fonksiyonan bibînim, di nav de yên herî girîng, yên krîptografî. Dûv re min dest bi çêkirina tuxleyên xwe yên ji bo bingehê kir. Bi vî awayî çêbûn: ABCode ji bo base58 şîfre bike (bi rastî ji her alfabeyê re şîfre bike), Curve25519 ji bo afirandina û verastkirina îmzeyên lihevhatî (bi vebijarkan li ser steroids), Blake2b ji bo hesabkirina yek ji heşeyan (ya ku tenê ji PHP 7.2 ve peyda bû), hwd.

Li vir divê ez spasiya xwe bikim Inala Kardanova ji bo hin şîretên hêja yên ku ez di rê de destnîşan kirim bestekarê li şûna pelên ku ji min re nas in, lê kevnar in.

Piştî çend mehan WavesKit hat berdan, derket guhertoyên beta û naha amade ye ku bi hemî fonksiyonên standard ên platforma Waves re bixebite. Hemî di nav de hene tora sereke danûstendin bi hêsanî bi karanîna yek pakêtê ve têne çêkirin, îmzekirin û şandin, ku li ser hemî guhertoyên 64-bit ên PHP-ê ji 5.6-ê ve tête xebitandin.

Em WavesKit bi projeya xwe ve girêdidin:

composer require deemru/waveskit

Em bikar tînin:

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

Di mînaka li jor de, em hêmanek WavesKit diafirînin ku li ser tora testê "T" dimeşe. Em hevokek tov saz dikin ku jê mift û navnîşana hesabê bixweber li ser bingeha mifteya giştî têne hesibandin. Dûv re, em danûstendinek veguheztinê 0.00000001 Waves ji navnîşana ku bixweber bi karanîna hevoka tovê tê hesibandin ji navnîşana nasnav "test" re çêdikin, wê veguhezînin da ku bi mifteyek taybetî were îmze kirin û bişînin torê. Piştî vê yekê, em piştrast dikin ku danûstendin bi serfirazî ji hêla torê ve hatî pejirandin.

Karê bi danûstendinan re di nav de ye fonksiyonên ku bi tx dest pê dikin. Ji bo têgihiştinek çêtir a xebata bi danûstendinan re, hûn dikarin bixwînin Belgekirina WavesKit an jî yekser berê xwe bidin mînakên diyarker testên entegrasyonê berdewam.

Ji ber ku WavesKit di karanîna cîhana rastîn de hatî pêşve xistin, ew berê xwedan taybetmendiyên pêşkeftî ye. Taybetmendiya yekem kujer e fonksiyonê misoger bike, ku bi destxistina asta pêbaweriya pêwîst kontrol dike ku danûstendin winda nebûye, lê, berevajî, hate pejirandin û gihîştiye hejmara pêwîst a pejirandinên di torê de.

Mekanîzmayek din a gulebaran ev e ku WavesKit çawa bi girêkan re danûstendinê dike. Di şert û mercên serayê de, çarçove tenê bi girêka sereke re dixebite, pêwendiyek domdar bi wê re digire, lê di rewşên xeletiyan de ew dikare bixweber veguhezîne yên paşverû. Ger hûn komek girêkên paşvekêşanê saz bikin, hûn dikarin fonksiyonê bang bikin setBestNode ji bo destnîşankirina girêka çêtirîn wekî ya sereke li ser bingeha nirxa herî zêde ya bilindahiya heyî û leza bersivê. Naha li vê yekê kaşek pirsê ya hundurîn zêde bikin û hem ji bikarhêner û hem jî ji xwediyên nodê re eleqedar bibin.

Yek ji mekanîzmayên pêşkeftî yên herî dawî fonksiyon e txMonitor. Ew ji ber hewcedariya bersivdana danûstendinên hatinê di wextê rast de xuya bû. Vê fonksiyonê bi tevahî hûrgelên ku bi danûstendinên pêvajoyê yên di zincîra blokê de ve girêdayî ne çareser dike. Zêde êş tune, tenê fonksiyona vegerandina banga xwe bi vebijarkên xwestî saz bikin û li benda danûstendinên nû bisekinin ku pêvajoyên xwe bidin destpêkirin. Mînak projeyek min a din VECRO bi tevahî li dora vê fonksiyonê hatî çêkirin, hûn dikarin bi hêsanî bixwînin ka ew çawa rasterast dixebite di koda projeyê de.

Ez ji çavkaniya vekirî hez dikim, ew yek ji mezintirîn destkeftiyên mirovahiyê ye. Ji ber ku ez tekane pêşdebir im û gihîştim rewşek ku hemî hewcedariyên min çareser dibin, ez we vedixwînim ku hûn bikar bînin û beşdarî WavesKit.

Source: www.habr.com

Add a comment