Здравствуйте. Была надобность внедрить открытый честный ГСЧ в один проект, и я начал искать разные решения. Нашёл https://github.com/gropox/randomblockchain. Очень этому рад, т.к. в этом ранее ничего не понимал.
Суть:
- Указывается 2 блока;
- При помощи api метода get_block берётся witness_signature у каждого из них;
- Создаётся хеш из их суммы;
- Он представляет собой большое шестнатиричное число. При помощи bidInteger сообщается языку программирования, что это так.
- В результате получаем большое число, которое делим по модулю на 3.
Остаток является этим случайным числом.
В репозитории был пример страницы, которая позволяет проверить честность ГСЧ, т.е. производит те же вычисления и выводит результат.
Я её загрузил на сервер и сделал так, чтобы можно было сообщать блокчейн, номера блоков и количество участников.
Пример: https://dpos.space/randomblockchain/?chain=golos&participants=3&block1=31442759&block2=31443430
При загрузке она локально подключается к выбранному блокчейну и при помощи get_block получает witness_signature,
После нажатия по кнопке "Вычислить счастливое число" производит вычисления и выводит результат.
Всё ок работает. Правда доступны не все блоки, поскольку производится подключение к публичной Ноде @lex, которая хранит лишь историю за 7 дней.
В Steem и, вроде бы, Viz всё впорядке.
Доступные блокчейны
- steem
- viz
- golos
(пишутся буквами в нижнем регистре).
Где это может быть полезно:
- В проектах с ГСЧ;
- В конкурсах, где определяется победитель или победители случайным образом. Например, можно взять блок с постом анонса конкурса и постом о результатах.
- Где-то ещё... Лень сейчас всё вспоминать.
Всё
Удачи во всём.
С уважением, незрячий программист, автор и делегат @denis-skripnik.
@denis-skripnik, через
get_block
можно получить за всё время и на моей ноде, это плагинdatabase_api
, он есть даже на делегатских нодах (не обязательно полную ноду).Неделя только для контента (в рамках активного окна выплат) + тяжелые запросы
get_account_history
иget_ops_in_block
.@lex Понятно. Благодарю за информацию.
Hello, @denis-skripnik. You received 90% upvote from Flotilia.
Здравствуйте, @denis-skripnik. Вы получили 90% апвот от Флотилии.
Hello, @denis-skripnik. You received 78.76% upvote from UPRomo for burned GBG. Promoted this post in the queue: @denis-skripnik.
Possible profit of like -51.54% (may vary greatly due to fluctuations in the pool).
The instruction for burning, for promotion or a drop of posts.
Invest in UPRomo and promote increase in number of the burned GBG.
Agreement on the use of service UPRomo.
Здравствуйте, @denis-skripnik. Вы получили 78.76% апвот от UPRomo за сожженные GBG. Продвигали этот пост в очереди: @denis-skripnik.
Возможная доходность апа -51.54% (может сильно отличаться из-за колебаний пула).
Инструкция по сжиганию для продвижения или задвигания постов.
Инвестируйте в UPRomo и способствуйте увеличению количества сжигаемых GBG.
Соглашение об использовании UPRomo.
@denis-skripnik, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующей категории:
@denis-skripnik гениально денис
@zimaolga Благодарю.
@denis-skripnik но ты эту идею сразу и предложил. А потом еще и обдумал и видимо разработал. Очень хорошо!
@flotilia Ну изначально хотел другое реализовать. Вот только нашёл решение от Георгия @ropox и решил использовать его, а не делать велосипед. Лишь страницу для проверки честности улучшил, добавив получение witness_signature из блоков и ссылки на них.
@denis-skripnik ты молодец!
@denis-skripnik молодец!)))
@flotilia Благодарю.