Начинай зарабатывать!

Проверить результат розыгрыша совсем не сложно!

Нам потребуется:

  • Изначальный Server seed - становится публичных по окончанию розыгрыша
  • Client seed - доступен в любое время
  • Неподвластный внешний фактор (НВФ) - доступен в любом обозреватели блоков Bitcoin. Мы его публикуем, вам достаточно убедиться, что на момент розыгрыша это был именно последний блок (дата найденного следующего блока старше времени розыгрыша). Вы также можете найти его самостоятельно, например, по этой ссылке, пролистав список блоков на нужную дату (дату проведения розыгрыша).

Соединяем Client seed и НФВ символом двоеточия, подписываем полученную строку Server seed'ом, посредством криптографической функции HMAC_SHA512, берем первые 5 символов, и переводим в десятичную систему. Делим полученное число по модулю на кол-во участников, получаем порядковый номер победителя.

Давайте попробуем это сделать на примере. Предположим что у нас есть розыгрыш, где имеется всего пять участников, с ID 1, 2, 3, 4 и 5. При этом все участники, кроме участника с ID 1, имеют по два "билета" (это могут быть и не билеты, а например, машины в гараже, для простоты говорим "билеты").

  • Server seed: mems slatimea offire froat bruchas sympul upotemost toryth
  • Client seed: 1:2:2:3:3:4:4:5:5
    Повторяющиеся ID означают что участник имеет несколько билетов в розыгрыше.
  • НВФ: 0000000000000000001018a206100a0c81fd7b358373720a3f294ed7710c7cf9

Для начала формируем сообщение, которое будем подписывать:

1:2:2:3:3:4:4:5:5:0000000000000000001018a206100a0c81fd7b358373720a3f294ed7710c7cf9

Далее нам надо его подписать HMAC_SHA512, это можно сделать, например, тут (по этой ссылки данные уже предзаданы, но вы можете их вписать сами по-новой, для чистоты эксперимента).

Получаем хэш:

6b6819f9cf7b5d5c3a22bf005a8fd142fff363498c2d36348bfb6170feed2c1a0dc73e6c4879fcc5e4a4a25169715441a1ca552d3142bac0720031846083b2a1

Берем первые пять символов: 6b681

Переводим их в десятичную систему, сделать это можно по этой ссылке.

Получаем число: 439937

Делим по модулю на кол-во участников (у нас пять участников, но девять билетов):

439937 % 9 = 8 (деление по модулю можно сделать здесь)

Победителем является участник под порядковым номером 9 (т.к. счисление начинается не с единицы, а с нуля - 0 - 1 - 2 и т.д.).

1:2:2:3:3:4:4:5:5

В нашем случае, это участник с ID 5.


Акции
Время на сервере: 11:33