Все верно - транзакции на PHP!
В релизн
- broadcast (пример для голосования)
- тулзы для broadcast
- фикс багов для команд broadcast
Установка
рид онли, без транзакций
composer require t3ran13/php-graphene-node-client
с транзакциями
(детали и dockerfile тут)
установка компонентов
- automake
- libtool
- libgmp-dev
установка расширений
- secp256k1 (как установить (secp256k1-php)[https://github.com/Bit-Wasp/secp256k1-php])
- gmp
broadcast_api темплейты операций
- vote
<?php
use GrapheneNodeClient\Tools\ChainOperations\OpVote;
use GrapheneNodeClient\Tools\Transaction;
$answer = OpVote::doSynchronous(
Transaction::CHAIN_STEEM, //Transaction::CHAIN_GOLOS
'guest123',
'5JRaypasxMx1L97ZUX7YuC5Psb5EAbF821kkAGtBj7xCJFQcbLg',
'firepower',
'steemit-veni-vidi-vici-steemfest-2016-together-we-made-it-happen-thank-you-steemians',
10000
);
//пример ответа
//Array
//(
// [id] => 5
// [result] => Array
// (
// [id] => a2c52988ea870e446480782ff046994de2666e0d
// [block_num] => 17852337
// [trx_num] => 1
// [expired] =>
// )
//
//)
Tools: Transaction для блокчейна (broadcast)
<?php
use GrapheneNodeClient\Tools\Transaction;
/** @var CommandQueryData $tx */
$tx = Transaction::init($chainName);
$tx->setParamByKey(
'0:operations:0',
[
'vote',
[
'voter' => $voter,
'author' => $author,
'permlink' => $permlink,
'weight' => $weight
]
]
);
if (Transaction::CHAIN_GOLOS === $chainName) {
$connector = new GolosWSConnector();
} elseif (Transaction::CHAIN_STEEM === $chainName) {
$connector = new SteemitWSConnector();
}
$command = new BroadcastTransactionSynchronousCommand($connector);
Transaction::sign($chainName, $tx, ['posting' => $publicWif]);
$answer = $command->execute(
$tx
);
WARNING
Транзакции подписываются spec256k1-php функцией secp256k1_ecdsa_sign_recoverable($context, $signatureRec, $msg32, $privateKey) и если подпись не каноничная с первого раза, вы должны создать транзакцию для другого блока. Для поиска канонической подписи функция должна поддерживать еще два параметра, но они не реализованы в либе spec256k1-php.
Код доступен на Github или packagist под MIT лицензией. Автор @t3ran13
С каждым коммитом мир становится лучше!
Уважуха. В полку библиотек прибыло. Так держать.
Былоб круто если бвсе стали ее юзать и развивать)
Все впереди. Думаю это не за горами если не бросать.
@php-node-client @t3ran13 Ваше приложение добавлено в ChainStore.io - магазин и каталог для медиаблокчейна Голос:
http://chainstore.io/product/php-graphene-node-client/
Спасибо!
@php-node-client, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующей категории:
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
t3ran13, ianboil, strecoza, mishka, sergiy, damm, chiliec, gildar, fetta, andrvik, max-max, eduard, radomir, oleg257, midnight, lumia, dreamer, harhor, vasyl73, vik, tristamoff, vadbars, maksina, dr-boo, zlata777, nefer, oceanotechnic, semasping, lira, arystarch, zivchakh, ovtretya, maxiandr, arturio777, retoldname, boltyn, on1x, vika-teplo, amelina.elena, del137, bammbuss, graff0x, brika, bombo, dimk0, kertar, lengalenga, lokkie, dim447, now, ifingramota, liseykina, abloud, ksantoprotein, process, chugoi, leminger, gbot, firestarter, gogirotsky, onur1s, cryptovisitor, zelivsky, makcl, alexko, olka, funt33, kalter, maryatekun, lordarhont, anykeycheg, sweta-sowa
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас:
Вы получили 39.14 % голосов от @Booster. Работает на @Coinbank
You have received 39.14 % vote from @Booster. Powered by @Coinbank
Вы получили 20.83 % апвоут от @uplift. Проект @whalepunk
You have received a 20.83 % vote from @uplift. Powered by @whalepunk
Мы все отзывчивые люди
придём и апнем от души
ты главное не сомневайся
пиши.
Твоё заветное желанье
о профите осуществим
ну что ж ты медлишь в самом деле
зови.
Знак доллара пробел и ссылку
и плюс немного золотых
и всем составом апит двинет
на ты.
Не спишь ночами липнешь в бустер
тебя спасёт upit проект
нас позови получишь вау
эффект.
А если силой не обижен
и ап готов отдать постам
то не раздумывая долго
go к нам.
Used MGESTS: 2830.
Изменение pending_payout_value: 261.611.
Создавать каноничные подписи не так трудно как может показаться, там строк 10 кода дописать надо. Или трясти sipa чтобы он добавил код..
Я не уверен что с использованием
spec256k1-php
Это реализуемо. Если юзать другие либы - то вполне)
Опять же, тут вопрос не в создании самой каноничной подписи, а в том как добится каноничности, если с первого раза не вышло. Поскольку secp256k1_ecdsa_sign_recoverable для одного и тогоже приватника и меседжа всегда одинакова, изза нехватки 2 параметров
Потому нужно в либу апдейтить, она имлементит либу spec256k1 от блокчейна, в которой все параметры есть)
Ох ты ж...
Теперь, условно, можно обойтись без NodeJS.
Для единичных запросов это конечно круто, но js всё-же более производительней будет работать с большими объёмами, имхо.
Не уверен, к томуже если правильно докрутить то можно будет все операции в одной транзакции отправлять)
Опять же, nodejs - это лишний контейнер или прилажуха. Если вместо одного юзать два приложения, тут производительность уже сама по себе будет страдать)
Если для подписании операций необходимо разные ключи то в одну транзакцию их по идее засунуть нельзя.
можно, скорее всего
фишка в том что каждая подпись - это подпись 1 операции. например вота
У меня не получилось.
Возможно проблемы в моей библиотеке.
И вроде как про это я на STEEM видел писали.
@asuleymanov
вполне возможно ты прав, но технически мы можем такое сделать, есть фундамент)
другой вопрос непонятно как это все готовить)
Вот мне тоже интересно, особенно для бота. Надо будет на событие сделать 500 лайков - сейчас ведь 500 раз api для этого дёрнуть надо?
Как бы не хотелось меньше но все равно придется 500 раз дергать API.
@t3ran13
Если операции апа будут от одного человека то не получиться. Ограничение БЧ 3 секунды между апами.
нет, далеко не факт. можно затолкать до 256 операций в одну транзакцию)
ну максимально можно 256 операций за раз, если я правильно понню. но зато это все в 1 транзакции)
@vp-webdev
у вика каждый бот и читает отдельно,но за счет кеша все шутсро работает)
Вот это было бы реально круто.
@vik, а у тебя боты на каждое действие запрос посылают?
Наконец-то!
Давай пилить полноценный плагин к WP уже.
Наверняка сейчас этим многие и займутся) я с ним не знаком)