WavesKit - PHP sistēma darbam ar Waves blokķēdi

ŠœŠ½Šµ Š½Ń€Š°Š²Šøтся PHP attÄ«stÄ«bas ātrumam un lieliskai pārnesamÄ«bai. Ir ļoti labi, ja kabatā vienmēr ir gatavs rÄ«ks problēmu risināŔanai.

Bija diezgan žēl, kad, iepazÄ«stoties ar paÅ”māju blokķēdi Viļņu platforma viņam arsenālā nebija gatava PHP SDK. Nu, man tas bija jāuzraksta.

Sākumā man bija jāizmanto mezgli parakstÄ«t darÄ«jumus. Tātad, lai pārvaldÄ«tu trÄ«s adreses, jums bija jāpalaiž trÄ«s mezgli ... Tas bija nožēlojams skats, lai gan tas atrisināja dažas problēmas. LÄ«dz atnāca sapratne, ka paļauÅ”anās uz mezgliem ir strupceļŔ. Pirmkārt, ierobežotas funkcionalitātes dēļ API, otrkārt, ātruma dēļ (tajos laikos mezgli bija ļoti lēni).

Sāku strādāt divus paralēlus darbus. Viens no tiem ir izveidot blokķēdes pārlÅ«ku, kas ir ātrs un pilnÄ«gi neatkarÄ«gs no mezgla API. Otrais ir apkopot visas funkcijas darbam ar Waves Platform vienuviet. Tā radās projekti. w8io Šø WavesKit.

Pirmais solis Waves blokķēdes aizkulisēs bija w8io pārlÅ«kprogramma. Tas nebija viegli, bet tomēr izdevās uzrakstÄ«t neatkarÄ«gu visu atlikumu aprēķinu un pat atrast kļūdu sākotnējo mezglu aprēķinos (kļūdu atlÄ«dzÄ«bas programma Starp citu, tas viņiem strādā, viņi maksā par atrastajām kļūdām). Vairāk par w8io pārlÅ«kprogrammas funkcionalitāti varat uzzināt Å”ajā pavedienā: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Strādājot pie w8io, man jau bija Å”aubas, bet, kad darbs pienāca loÄ£iskām beigām un sāku veidot SDK, manas Å”aubas apstiprinājās. Dažas funkcijas nekur nevarēju atrast, arÄ« svarÄ«gākās kriptogrāfiskās. Tad es sāku ar savu pamatu Ä·ieÄ£eļu izgatavoÅ”anu. LÅ«k, kā viņi piedzima: ABkods kodēt base58 (faktiski kodēt jebkuru alfabētu uz jebkuru), Curve25519 lai izveidotu un pārbaudÄ«tu saderÄ«gus parakstus (ar opcijām uz steroÄ«diem), Bleiks2b lai aprēķinātu vienu no hashiem (kas ir pieejams tikai kopÅ” PHP 7.2) utt.

Å eit man jāpateicas Inala Kardanova par dažiem vērtÄ«giem padomiem, kas mani virzÄ«ja uz to sacerēt nevis man ierasto, bet novecojuÅ”o, iekļaut failus.

Pēc pāris mēneÅ”iem WavesKit ieraudzÄ«ja dienas gaismu, iznāca beta versijas un tagad ir gatavs darbam ar visu Waves platformas standarta funkcionalitāti. Viss pieejams galvenais tÄ«kls darÄ«jumus var viegli izveidot, parakstÄ«t un nosÅ«tÄ«t, izmantojot tikai vienu pakotni, kas darbojas visās PHP 64 bitu versijās no 5.6 ieskaitot.

Mēs savienojam WavesKit ar mūsu projektu:

composer require deemru/waveskit

Mēs izmantojam:

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

IepriekÅ” minētajā piemērā mēs izveidojam WavesKit objektu, kas darbojas testtÄ«klā "T". Mēs iestatām sākuma frāzi, no kuras, pamatojoties uz publisko atslēgu, automātiski tiek aprēķinātas konta atslēgas un adrese. Tālāk mēs izveidojam pārsÅ«tÄ«Å”anas transakciju 0.00000001 Waves no adreses, kas automātiski aprēķināta no sākuma frāzes uz "testa" aizstājvārda adresi, nododam to parakstÄ«Å”anai ar privāto atslēgu un nosÅ«tām uz tÄ«klu. Pēc tam mēs pārliecināmies, ka darÄ«jums ir veiksmÄ«gi apstiprināts tÄ«klā.

DarÄ«jumi ir vērsti uz funkcijas, sākot ar tx. Lai labāk izprastu darbu ar darÄ«jumiem, varat studēt WavesKit dokumentācija vai dodieties tieÅ”i uz ilustratÄ«viem piemēriem sadaļā nepārtrauktas integrācijas pārbaudes.

Tā kā WavesKit ir izstrādāts reālā lietoÅ”anā, tam jau ir uzlabotas funkcijas. Pirmā killer iezÄ«me ir nodroÅ”ināt funkciju, kas kontrolē vajadzÄ«gā pārliecÄ«bas lÄ«meņa sasniegÅ”anu, ka darÄ«jums nav zaudēts, bet, gluži pretēji, tika apstiprināts un sasniedza nepiecieÅ”amo apstiprinājumu skaitu tÄ«klā.

Vēl viens ložu necaurlaidÄ«gs mehānisms ir veids, kā WavesKit sazinās ar mezgliem. SiltumnÄ«cas apstākļos karkass strādā tikai ar galveno mezglu, uzturot ar to pastāvÄ«gu savienojumu, bet kļūdu gadÄ«jumā var automātiski pārslēgties uz rezerves. Ja iestatāt gaidstāves mezglu masÄ«vu, varat izsaukt funkciju setBestNode lai noteiktu labāko mezglu kā galveno mezglu pēc paÅ”reizējā augstuma un reakcijas ātruma maksimālās vērtÄ«bas. Tagad pievienojiet tai iekŔējo vaicājumu keÅ”atmiņu un sajÅ«tiet gan lietotāju, gan mezglu Ä«paÅ”nieku rÅ«pes.

Viens no jaunākajiem uzlabotajiem mehānismiem ir funkcija txMonitor. Tas parādÄ«jās saistÄ«bā ar nepiecieÅ”amÄ«bu reaģēt uz ienākoÅ”ajiem darÄ«jumiem reāllaikā. Å Ä« funkcija pilnÄ«bā atrisina visas nianses, kas saistÄ«tas ar darÄ«jumu apstrādi blokķēdē. Vairs nav sāpju, vienkārÅ”i iestatiet atzvanÄ«Å”anas funkciju ar vēlamajām opcijām un gaidiet, lÄ«dz tiks sākti jauni darÄ«jumi. Piemēram, vēl viens no maniem projektiem VECRO pilnÄ«bā balstÄ«ta uz Å”o funkciju, varat viegli uzzināt, kā tā darbojas pareizi projekta kodā.

Man patīk atvērtais avots, tas ir viens no lielākajiem cilvēces sasniegumiem. Tā kā esmu vienīgais izstrādātājs un esmu sasniedzis stāvokli, ka visas manas vajadzības ir atrisinātas, aicinu jūs izmantot un dot savu ieguldījumu WavesKit.

Avots: www.habr.com

Pievieno komentāru