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

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

Беше доста жалко, когато се запознах с вътрешния блокчейн Платформа Waves той нямаше готов PHP SDK в арсенала си. Е, трябваше да го напиша.

Отначало трябваше да използвам възли за подписване на сделки. И така, за да управлявате три адреса, беше необходимо да стартирате три възела... Беше жалка гледка, въпреки че реши някои проблеми. Докато не дойде разбирането, че разчитането на възли е задънена улица. Първо, поради ограничената функционалност API, второ, поради скоростта (в онези дни възлите бяха много бавни).

Започнах две паралелни работни места. Едната е да се направи блокчейн изследовател, който ще бъде бърз и напълно независим от API на възела. Второто е да съберем на едно място всички функции за работа с Waves Platform. Така се появиха проектите w8io и WavesKit.

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

Докато работех върху w8io, вече имах съмнения, но когато работата стигна до логичния си край и започнах да създавам SDK, съмненията ми се потвърдиха. Никъде не можах да намеря някои функции, включително най-важните, криптографските. След това започнах да правя собствени тухли за основата. Ето как се родиха: ABCode за кодиране на base58 (всъщност за кодиране на всяка азбука на всяка), 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 Waves от адреса, автоматично изчислен с помощта на началната фраза, до адреса на псевдонима „test“, прехвърляме я, за да бъде подписана с частен ключ и я изпращаме в мрежата. След това се уверяваме, че транзакцията е успешно потвърдена от мрежата.

Работата с транзакциите е съсредоточена в функции, започващи с tx. За по-добро разбиране на работата с транзакции можете да изучавате WavesKit документация или веднага се обърнете към илюстративни примери в непрекъснати интеграционни тестове.

Тъй като WavesKit е разработен за използване в реалния свят, той вече има разширени функции. Първата убийствена функция е осигурете функция, който контролира постигането на необходимото ниво на увереност, че транзакцията не е загубена, а напротив, е потвърдена и е достигнала необходимия брой потвърждения в мрежата.

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

Един от най-новите усъвършенствани механизми е функцията txMonitor. Появи се поради необходимостта да се отговори на входящи транзакции в реално време. Тази функция напълно решава всички нюанси, свързани с обработката на транзакции в блокчейна. Край на болката, просто настройте функцията си за обратно извикване с желаните опции и изчакайте нови транзакции, за да стартирате вашите процеси. Например друг мой проект ВЕКРО изцяло изграден около тази функция, можете лесно да проучите директно как работи в кода на проекта.

Обичам отворен код, това е едно от най-големите постижения на човечеството. Тъй като аз съм единственият разработчик и съм достигнал състояние, в което всичките ми нужди са разрешени, каня ви да използвате и да допринесете за WavesKit.

Източник: www.habr.com

Добавяне на нов коментар