Многие любят попытать удачу, поучаствовав в розыгрыше, посоревноваться с другими и получить шанс увеличить свои средства в несколько раз. Тем неменее, людей отталкивают подозрения в нечестности игры – путем присвоения приза заранее выбранным игрокам. К сожалению, зачастую эти подозрения оправданы. Но теперь о подобном не стоит волноваться, ведь есть Trianglerooms.io!
В нашем проекте все иначе. Победитель определяется по прозрачному алгоритму, посмотреть который может любой пользователь, а повлиять на результат не может никто из нас. Заинтересованы? Читайте ниже, как проходит выбор победителя.
Любой билет покупается путем транзакции в Ethereum.
Это значит, что каждый билет привязан к определенной транзакции, к конкретному переводу средств.
В Ethereum транзакции группируются в блоки с порядковыми номерами.
Это значит, что каждому билету соответствует номер блока, в котором хранится транзакция, благодаря которой был куплет билет. У каждого блока есть число NONCE. Это число генерируется майнерами для закрытия блока.
На базе всех данных в блоке (сумма перевода, от кого, кому и т.д.) и вышеупомянутого числа NONCE формируется новое число — HASH. Это формирование производится самим блокчейном Ethereum. Каким будет число HASH у будущего блока — никто не знает и никто не может предсказать. Однако известно, что данное число является случайным и подлежит равномерному распределению.
Это означает, что определяя победителя на базе данного числа — у всех игроков будет равная вероятность победить.
Победитель раунда определяется в течение одной минуты после покупки последнего билета в раунде. В течение одной минуты ожидается формирование следующего, пока еще несуществующего, блока. Как только блок будет доступен, происходит определение победителя по следующей формуле:
Будущий Блок = Номер блока последнего купленного билета в раунде + 1.
Победитель = Остаток от ( HASH Будущего Блока ÷ Кол-во билетов в раунде ) + 1
В раунде R*** куплено 9 билетов из 10 необходимых.
Вы переводите необходимое для покупки билета количество ETH на соответствующий кошелек.
Билетов становится 10/10. Раунд закрывается и происходит вычисление номера победителя на основе числа HASH будущего блока.
Допустим, последний билет был куплен в транзакции 0x2d2e3a4c9c8afaeb9910ce6f3a0c15cda3a66fa586cb1780c1a940933946f37d.
Перейдя по ссылке, можно увидеть, что номер блока у транзакции = 9383337. Согласно алгоритму, добавляем 1 к числу 9383337. Получаем 9383338. Смотрим HASH у блока 9383338.
Чтобы посмотреть HASH, нажмите на сайте "(Click to see more)". HASH будет отображен сразу после Ether Price.
У этого блока число HASH = 0xee7d5544c688601c9b765f21628f76d245d38c0acefcfc46eb59622413de45f3. Это обычное число в шестнадцатеричном формате. Переведем его в более привычную десятичную систему, используя любой калькулятор или онлайн-сервис, например rapidtables.com. (Hexadecimal -> Decimal).
В результате получается число: 107871902348538484389160768418450620132094221376595759871729010630818875196915. Делим его на количество билетов в раунде (10). Получается: 10787190234853848438916076841845062013209422137659575987172901063081887519691 и 5 в остатке.
Нас интересует остаток. Поскольку в нем может получиться только число от 0 до 9, а номера билетов у нас от 1 до 10, необходимо произвести коррекцию, добавив 1.
5 + 1 = 6.
Это означает, что победителем в этом раунде стал билет под номером 6 .
После ознакомления с алгоритмом становится понятно, что в его корне лежит число, генерируемое случайным образом и которое существует отдельно от наших розыгрышей, поэтому оно никаким образом не может выбрать заранее определенного победителя – кроме того, на результат не может повлиять никто, даже мы, trianglerooms.io. Алгоритм выбора победителя прозрачен для всех, и вы сами можете в этом убедиться, вручную пересчитав любой раунд по формулам.