WavesKit - PHP-kadro por labori kun la Waves-blokĉeno

Мне нравится PHP por rapideco de disvolviĝo kaj bonega porteblo. Estas tre bone kiam vi ĉiam havas ilon preta por solvi problemojn en via poŝo.

Estis sufiĉe domaĝe kiam, kiam oni konatiĝis kun la hejma blokĉeno Waves Platformo li ne havis pretan PHP SDK en sia arsenalo. Nu, mi devis skribi ĝin.

Komence mi devis uzi nodoj subskribi transakciojn. Do, por administri tri adresojn, oni devis ruli tri nodojn... Ĝi estis kompatinda vidaĵo, kvankam ĝi solvis kelkajn problemojn. Ĝis venis la kompreno, ke fidi je nodoj estas sakstrato. Unue, pro limigita funkcieco API, due, pro la rapideco (nodoj estis tre malrapidaj en tiuj tagoj).

Mi komencis du paralelajn laborojn. Unu estas fari blokĉenan esploriston kiu estas rapida kaj tute sendependa de la noda API. La dua estas kolekti ĉiujn funkciojn por labori kun la Waves Platformo en unu loko. Tiel aperis la projektoj. w8io и WavesKit.

La unua paŝo malantaŭ la scenoj de la blokĉeno Waves estis retumilo w8io. Ne estis facile, sed tamen sukcesis skribi sendependan kalkulon de ĉiuj ekvilibroj kaj eĉ trovi eraron en la kalkuloj sur la originaj nodoj (programo pri cimo-premio Cetere, ĝi funkcias por ili, ili pagas por la trovitaj eraroj). Vi povas lerni pli pri la funkcieco de la w8io-retumilo en ĉi tiu fadeno: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

En la procezo de laboro pri w8io, mi jam havis dubojn, sed kiam la laboro venis al logika fino kaj mi komencis krei la SDK, miaj duboj estis konfirmitaj. Mi ne povis trovi iujn funkciojn ie ajn, inkluzive de la plej gravaj kriptografiaj. Tiam mi komencis farante miajn fundamentajn brikojn. Jen kiel ili naskiĝis: ABKodo kodi en bazo58 (fakte por kodi ajnan alfabeton al iu ajn), Curve25519 krei kaj kontroli kongruajn subskribojn (kun opcioj sur steroidoj), Blake2b por kalkuli unu el la haŝoj (kiu nur estis disponebla ekde PHP 7.2), ktp.

Jen mi devas danki Inala Kardanova por iuj valoraj konsiloj, kiuj gvidis min al komponisto anstataŭ la kutima por mi, sed malmoderna, inkluzivas dosierojn.

Post kelkaj monatoj WavesKit vidis la lumon de la tago, eliris beta-versioj kaj nun pretas labori kun ĉiuj normaj funkcioj de la platformo Waves. Ĉiuj disponeblaj en ĉefa reto transakcioj povas esti facile kreitaj, subskribitaj kaj senditaj per nur unu pakaĵo, kiu funkcias per ĉiuj 64-bitaj versioj de PHP de 5.6 inkluzive.

Ni konektas WavesKit al nia projekto:

composer require deemru/waveskit

Ni uzas:

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

En la supra ekzemplo, ni kreas WavesKit-objekton, kiu funkcias per testreto "T". Ni fiksas la seman frazon, el kiu la ŝlosiloj kaj adreso de la konto estas aŭtomate kalkulitaj surbaze de la publika ŝlosilo. Poste, ni kreas transan transakcion 0.00000001 Ondoj de la adreso aŭtomate kalkulita de la sema frazo al la adreso de la "testo" alias, transdonas ĝin por subskribo per la privata ŝlosilo kaj sendu ĝin al la reto. Post tio, ni certigas, ke la transakcio estas sukcese konfirmita de la reto.

Transakcioj estas koncentritaj funkcioj komencante per tx. Por pli bona kompreno pri laboro kun transakcioj, vi povas studi WavesKit-dokumentado aŭ iru rekte al la ilustraj ekzemploj en kontinuaj integrigaj testoj.

Ĉar WavesKit estis evoluigita en reala uzo, ĝi jam havas altnivelajn funkciojn. La unua mortiga trajto estas certigi funkcion, kiu kontrolas la atingon de la bezonata nivelo de konfido, ke la transakcio ne estis perdita, sed, male, estis konfirmita kaj atingis la bezonatan nombron da konfirmoj en la reto.

Alia kuglorezista mekanismo estas kiel WavesKit komunikas kun nodoj. En forcejaj kondiĉoj, la kadro funkcias nur kun la ĉefa nodo, konservante konstantan ligon kun ĝi, sed en kazo de eraroj ĝi povas aŭtomate ŝanĝi al rezervaj. Se vi agordas tabelon de standby nodoj, vi povas voki la funkcion setBestNode determini la plej bonan nodon kiel la ĉefan nodon per la maksimuma valoro de la nuna alteco kaj respondrapideco. Nun aldonu internan demandan kaŝmemoron al ĉi tio kaj sentu la zorgon de ambaŭ uzantoj kaj nodposedantoj.

Unu el la plej novaj altnivelaj mekanismoj estas la funkcio txMonitor. Ĝi aperis lige kun la bezono respondi al venantaj transakcioj en reala tempo. Ĉi tiu funkcio tute solvas ĉiujn nuancojn asociitajn kun la prilaborado de transakcioj en la blokĉeno. Ne plu doloro, nur agordu vian revokfunkcion kun la ebloj, kiujn vi volas, kaj atendu, ke novaj transakcioj komencu viajn procezojn. Ekzemple, alia el miaj projektoj VEKRO tute konstruita ĉirkaŭ ĉi tiu funkcio, vi povas facile lerni kiel ĝi funkcias ĝuste en la projektkodo.

Mi amas malferman fonton, ĝi estas unu el la plej grandaj atingoj de la homaro. Ĉar mi estas la sola programisto kaj atingis la staton, ke ĉiuj miaj bezonoj estas solvitaj, mi invitas vin uzi kaj kontribui al WavesKit.

fonto: www.habr.com

Aldoni komenton