WavesKit - Mfumo wa PHP wa kufanya kazi na blockchain ya Waves

Napenda PHP kwa kasi ya maendeleo na kubebeka bora. Ni nzuri sana wakati daima una chombo katika mfuko wako, tayari kutatua matatizo.

Ilikuwa ni aibu sana wakati, wakati wa kufahamiana na blockchain ya ndani Jukwaa la Mawimbi hakuwa na PHP SDK iliyotengenezwa tayari kwenye arsenal yake. Naam, ilibidi niandike.

Mwanzoni ilibidi nitumie nodi kusaini shughuli. Kwa hiyo, ili kusimamia anwani tatu ilikuwa ni lazima kuzindua nodi tatu... Ilikuwa ni jambo la kusikitisha, ingawa lilitatua matatizo fulani. Mpaka ufahamu ukaja kwamba kutegemea nodi ilikuwa mwisho mbaya. Kwanza, kwa sababu ya utendakazi mdogo API, pili, kwa sababu ya kasi (nodes walikuwa polepole sana katika siku hizo).

Nilianza kazi mbili sambamba. Moja ni kufanya kichunguzi cha blockchain ambacho kitakuwa haraka na huru kabisa na API ya nodi. Ya pili ni kukusanya kazi zote za kufanya kazi na Jukwaa la Mawimbi katika sehemu moja. Hivi ndivyo miradi ilionekana w8io ΠΈ WavesKit.

Hatua ya kwanza nyuma ya pazia la blockchain ya Waves ilikuwa kivinjari cha w8io. Haikuwa rahisi, lakini bado tuliweza kuandika hesabu huru ya mizani yote na hata kupata kosa katika mahesabu kwenye nodi za asili (programu ya fadhila ya mdudu Kwa njia, inawafanyia kazi, hulipa makosa yaliyopatikana). Unaweza kujifunza zaidi kuhusu utendakazi wa kivinjari cha w8io katika mada hii: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Wakati nikifanya kazi kwenye w8io, tayari nilikuwa na shaka, lakini kazi ilipofikia mwisho wake wa kimantiki na nikaanza kuunda SDK, mashaka yangu yalithibitishwa. Sikuweza kupata baadhi ya vipengele popote, ikiwa ni pamoja na zile muhimu zaidi, zile za kriptografia. Kisha nikaanza kwa kutengeneza matofali yangu kwa ajili ya msingi. Hivi ndivyo walivyozaliwa: ABCode kusimba kwa base58 (kwa kweli kusimba alfabeti yoyote kwa yoyote), Curve25519 kuunda na kuthibitisha saini zinazolingana (na chaguzi kwenye steroids), Blake2b kukokotoa moja ya heshi (ambayo ilikuwa inapatikana tu tangu PHP 7.2), nk.

Hapa ndipo ninapopaswa kushukuru Inala Kardanova kwa ushauri muhimu ambao ulinielekeza katika mwelekeo mtunzi badala ya kujumuisha faili ambazo ni kawaida kwangu, lakini zimepitwa na wakati.

Baada ya miezi michache WavesKit ilitolewa, akatoka matoleo ya beta na sasa iko tayari kufanya kazi na utendakazi wote wa kawaida wa jukwaa la Waves. Zote zinapatikana ndani mtandao mkuu miamala inaweza kuundwa kwa urahisi, kusainiwa na kutumwa kwa kutumia kifurushi kimoja tu, kinachoendeshwa kwenye matoleo yote ya 64-bit ya PHP kutoka 5.6 zikiwa zimejumuishwa.

Tunaunganisha WavesKit kwa mradi wetu:

composer require deemru/waveskit

Tunatumia:

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

Katika mfano hapo juu, tunaunda kitu cha WavesKit kinachoendesha kwenye testnet "T". Tunaweka maneno ya mbegu ambayo funguo na anwani ya akaunti huhesabiwa kiotomatiki kulingana na ufunguo wa umma. Ifuatayo, tunaunda shughuli ya uhamishaji 0.00000001 Mawimbi kutoka kwa anwani iliyohesabiwa kiatomati kwa kutumia kifungu cha mbegu kwa anwani ya pak "mtihani", uhamishe ili usainiwe na ufunguo wa kibinafsi na uitume kwenye mtandao. Baada ya hayo, tunahakikisha kwamba shughuli hiyo imethibitishwa kwa ufanisi na mtandao.

Kazi na miamala imejikita ndani kazi zinazoanza na tx. Kwa ufahamu bora wa kufanya kazi na miamala, unaweza kusoma Nyaraka za WavesKit au ugeuke mara moja kwa mifano ya kielelezo ndani majaribio ya ujumuishaji endelevu.

Kwa kuwa WavesKit imetengenezwa katika matumizi ya ulimwengu halisi, tayari ina vipengele vya juu. Kipengele cha kwanza cha muuaji ni hakikisha utendakazi, ambayo inadhibiti mafanikio ya kiwango kinachohitajika cha kujiamini kwamba shughuli hiyo haikupotea, lakini, kinyume chake, ilithibitishwa na kufikia idadi inayotakiwa ya uthibitisho katika mtandao.

Utaratibu mwingine wa kuzuia risasi ni jinsi WavesKit huwasiliana na nodi. Katika hali ya chafu, mfumo hufanya kazi tu na nodi kuu, kudumisha unganisho la mara kwa mara nayo, lakini ikiwa kuna makosa inaweza kubadili kiotomatiki kwa chelezo. Ikiwa utaweka safu ya nodi za chelezo, unaweza kuita kitendakazi setBestNode kuamua nodi bora kama kuu kulingana na thamani ya juu ya urefu wa sasa na kasi ya majibu. Sasa ongeza kwa hili akiba ya hoja ya ndani na uhisi kutunzwa kwa watumiaji na wamiliki wa nodi.

Moja ya mifumo ya hivi karibuni ya hali ya juu ni kazi txMonitor. Ilionekana kutokana na hitaji la kujibu miamala inayoingia kwa wakati halisi. Kazi hii hutatua kabisa nuances zote zinazohusiana na shughuli za usindikaji katika blockchain. Hakuna maumivu tena, weka tu chaguo lako la kupiga simu tena na chaguo unazotaka na usubiri shughuli mpya kuanza michakato yako. Kwa mfano, mradi wangu mwingine VECRO iliyojengwa kabisa kuzunguka kazi hii, unaweza kusoma kwa urahisi jinsi inavyofanya kazi moja kwa moja katika kanuni ya mradi.

Ninapenda chanzo huria, ni mojawapo ya mafanikio makubwa zaidi ya binadamu. Kwa kuwa mimi ndiye msanidi pekee na nimefikia hali ambapo mahitaji yangu yote yametatuliwa, ninakualika utumie na kuchangia WavesKit.

Chanzo: mapenzi.com

Kuongeza maoni