Мне нравится за скорость разработки и отличную переносимость. Это очень хорошо, когда в кармане всегда имеется готовый к решению задач инструмент.
Было довольно обидно, когда при знакомстве с отечественным блокчейном в его арсенале не оказалось готового 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
