WavesKit - PHP рамка за работа со блокчејн Waves

Мне нравится PHP за брзина на развој и одлична преносливост. Многу е добро кога секогаш имате алатка во џебот, подготвена да решава проблеми.

Беше прилично срам кога, кога се запознав со домашниот блокчејн Платформа за бранови тој немаше готов PHP SDK во неговиот арсенал. Па, морав да го напишам.

Отпрвин морав да користам јазли да потпишуваат трансакции. Значи, за управување со три адреси беше неопходно да се лансираат три јазли... Тоа беше жална глетка, иако реши некои проблеми. Се додека не дојде разбирањето дека потпирањето на јазли е ќорсокак. Прво, поради ограничената функционалност API, второ, поради брзината (јазлите беа многу бавни во тие денови).

Почнав две паралелни работи. Една од нив е да се направи истражувач на блокчејн кој ќе биде брз и целосно независен од API на јазолот. Втората е да се соберат сите функции за работа со платформата Waves на едно место. Вака се појавија проектите w8io и WavesKit.

Првиот чекор зад сцената на блокчејнот Waves беше w8io прелистувач. Не беше лесно, но сепак успеавме да напишеме независна пресметка на сите салда, па дури и да најдеме грешка во пресметките на оригиналните јазли (програма за бубачки Патем, тоа им функционира, тие плаќаат за пронајдените грешки). Можете да дознаете повеќе за функционалноста на прелистувачот w8io во оваа тема: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Додека работев на w8io веќе се сомневав, но кога работата дојде до својот логичен крај и почнав да го креирам SDK, моите сомнежи се потврдија. Не можев да најдам некои функции никаде, вклучувајќи ги и најважните, криптографските. Потоа почнав со правење мои тули за основата. Вака се родени: ABC код за кодирање на база58 (всушност за кодирање на која било азбука на која било), Curve25519 да креирате и потврдите компатибилни потписи (со опции на стероиди), Блејк2б да се пресмета еден од хашовите (кој беше достапен само од PHP 7.2), итн.

Ова е местото каде што треба да се заблагодарам Инала Карданова за некои вредни совети што ми укажаа во насока компонира наместо да вклучи датотеки што ми се познати, но застарени.

После неколку месеци WavesKit беше објавен, излезе бета верзии и сега е подготвен да работи со сите стандардни функционалности на платформата Waves. Сите достапни во главната мрежа трансакциите може лесно да се креираат, потпишуваат и испраќаат користејќи само еден пакет, кој работи на сите 64-битни верзии на PHP од 5.6 инклузивна.

Ние го поврзуваме WavesKit со нашиот проект:

composer require deemru/waveskit

Ние користиме:

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

Во горниот пример, создаваме објект WavesKit што работи на тест мрежата „T“. Инсталираме семе фраза од која автоматски се пресметуваат клучевите и адресата на сметката врз основа на јавниот клуч. Следно, создаваме трансакција за пренос 0.00000001 Бранови од адресата што автоматски се пресметува со користење на семената фраза до алијас адресата „тест“, ја пренесуваме да биде потпишана со приватен клуч и ја испраќаме до мрежата. По ова, ние се уверуваме дека трансакцијата е успешно потврдена од мрежата.

Работата со трансакциите е концентрирана во функции кои почнуваат со tx. За подобро разбирање на работата со трансакции, можете да студирате Документација WavesKit или веднаш да се свртиме кон илустративни примери во тестови за континуирана интеграција.

Бидејќи WavesKit е развиен во реална употреба, тој веќе има напредни функции. Првата убиствена карактеристика е обезбеди функција, кој го контролира постигнувањето на потребното ниво на доверба дека трансакцијата не е изгубена, туку, напротив, е потврдена и достигнала потребниот број на потврди во мрежата.

Друг механизам отпорен на куршуми е како WavesKit комуницира со јазли. Во услови на стаклена градина, рамката работи само со главниот јазол, одржувајќи постојана врска со него, но во случај на грешки може автоматски да се префрли на резервни. Ако поставите низа резервни јазли, можете да ја повикате функцијата setBestNode да се одреди најдобриот јазол како главен врз основа на максималната вредност на тековната висина и брзината на одговор. Сега додадете на ова внатрешен кеш за пребарување и чувствувајте се грижа и за корисниците и за сопствениците на јазли.

Еден од најновите напредни механизми е функцијата txМонитор. Се појави поради потребата да се одговори на дојдовните трансакции во реално време. Оваа функција целосно ги решава сите нијанси поврзани со обработката на трансакциите во блокчејнот. Нема повеќе болка, само поставете ја функцијата за повратен повик со саканите опции и почекајте нови трансакции да започнат со вашите процеси. На пример, друг мој проект ВЕКРО целосно изградена околу оваа функција, можете лесно да проучите како таа работи директно во кодот на проектот.

Го сакам софтверот со отворен код, тоа е едно од најголемите достигнувања на човештвото. Бидејќи јас сум единствениот развивач и достигнав состојба каде што сите мои потреби се решени, ве повикувам да користите и да придонесете за WavesKit.

Извор: www.habr.com

Додадете коментар