Харесва ми за скоростта на разработката и отличната преносимост. Много добре е, когато в джоба винаги имаш готов инструмент за решаване на задачи.
Беше доста неприятно, когато, запознайки се с местния блокчейн в арсенала му нямаше готов SDK на PHP. Е, трябваше да го напиша.
Първоначално се налагаше да използвам за подписване на транзакции. Така, за управление на три адреса, трябваше да стартирам три възела… Това беше жалко зрелище, въпреки че решаваше някои задачи. Дотогава, докато не осъзнах, че разчитането на възли е задънена улица. Първо, заради ограничената функционалност , второ, заради скоростта (в онези дни възлите бяха много бавни).
Започнах две паралелни работи. Едната беше да създам блокчейн обозревател, който да бъде бърз и напълно независим от API на възлите. Втората — да събере всички функции за работа с Waves Platform на едно място. Така се появиха проектите и .
Първата стъпка зад кулисите на блокчейн Waves беше . Не беше просто, но все пак успях да напиша независимата структура за всички баланси и дори открих грешка в изчисленията на оригиналните възли ( между другото, при тях работи, за откритите грешки плащат). Можете по-подробно да проучите функционалността на обозревателя w8io в тази тема:
В процеса на работа по w8io, вече имах съмнения, но когато работата стигна до логичен завършек и започнах да създавам SDK, съмненията се потвърдиха. Не можах да намеря някои функции, включително и най-важните, криптографските. Тогава започнах създаването на собствените си блокчета за основата. Така се родиха: за кодиране на base58 (всъщност за кодиране на всяка азбука в произволна), за създаване и проверка на съвместими подписи (с вариантите ), за изчисляване на един от хешовете (който беше наличен само от PHP 7.2 нагоре) и т.н.
Тук трябва да благодаря на за няколко ценни съвета, които ме насочиха към вместо познатите ми, но остарели include файлове.
След няколко месеца , излезе от и сега е готов за работа с цялата стандартна функционалност на платформата 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“, подписваме я със закрития ключ и я изпращаме в мрежата. След това се уверяваме, че трансакцията е успешно потвърдена от мрежата.
Работата с транзакции е съсредоточена в . За по-добро разбиране на работата с транзакции можете да проучите или директно да се обърнете към нагледни примери в .
Тъй като WavesKit е развиван при реална употреба, той вече предлага напреднали функции. Първата важна функция е , която контролира достигането на необходимото ниво на сигурност, че трансакцията не е изгубена, а напротив, е била потвърдена и е достигнала нужното количество потвърждения в мрежата.
Друг ненадминат механизъм е начина, по който WavesKit комуникира с нодовете. В оптимални условия рамката работи само с основния нод, поддържайки постоянна свързаност, но при грешки може автоматично да превключи на резервни. Ако зададете масив от резервни нодове, можете да извикате функцията за определяне на най-добрия нод като основен на базата на максималната стойност на текущата височина и време за отговор. Сега добавете към това вътрешен кеш на заявките и почувствайте грижа както към потребителите, така и към собствениците на нодовете.
Един от последните напреднали механизми е функцията . Появила се поради необходимостта от реагиране на входящи транзакции в реално време. Тази функция напълно решава всички нюанси, свързани с обработката на транзакции в блокчейн. Никаква болка, просто задавате своя callback функция с желаните опции и чакате нови транзакции, които ще стартират вашите процеси. Например, един от моите проекти е напълно построен около тази функция, може да проучите как работи директно .
Обичам open source, това е едно от най-великите постижения на човечеството. Тъй като съм единственият разработчик и достигнах състояние, при което всички мои нужди са задоволени, ви каня да използвате и да допринасяте за .
Източник: habr.com
