Правила выбора победителя на основе последнего значения хеша в блокчейне TON

2024-10-29 02:11

Предупреждение: упомянутые продукты и услуги могут быть недоступны в вашем регионе.

1. Как определить выигрышную последовательность?

Binance выберет определенную дату во время мероприятия и использует последние 9 цифр хеша последнего блока в блокчейне TON в 23:59 (UTC) в этот день в качестве выигрышной последовательности.

Примеры:

Предположим, хеш последнего блока в блокчейне TON в день расчета вознаграждения равен 0hVwGb09xU6rhZhs9JMHU29KuqYATsVwd+96R8X6wF4=

  • Binance удалит буквы и получит 009692996864
  • После этого мы возьмем последние 9 цифр в качестве выигрышной последовательности: 692996864

2. Как применить мультипликативное хеширование к адресу пользователя?

Для определения адреса кошелька победившего пользователя или пользователей Binance применит формулу мультипликативного хеширования (аналогичную функции hashCode() в Java): h = 31 * h + value[i].

Расчет:

1. Преобразуйте строку 0x22eEC85ba6a5cD97eAd4728eA1c69e1D9c6fa778 в нижний регистр, получив 0x22eec85ba6a5cd97ead4728ea1c69e1d9c6fa778, а затем вычислите хеш-код.

2. Значение каждого символа определяется его кодом ASCII:

  • «0» имеет значение 48;
  • «x» имеет значение 120;
  • «2» имеет значение 50;
  • «e» имеет значение 101;
  • «c» имеет значение 99;
  • «8» имеет значение 56;
  • «5» имеет значение 53;
  • «b» имеет значение 98;
  • «a» имеет значение 97;
  • «6» имеет значение 54;
  • «d» имеет значение 100;
  • «9» имеет значение 57;
  • «7» имеет значение 55.

3. Инициализируйте значение хеша: h = 0

4. Обработайте первый символ «0»:

  • h = 31 * h + 48
  • h = 31 * 0 + 48
  • h = 48

5. Обработайте второй символ «x»:

  • h = 31 * h + 120
  • h = 31 * 48 + 120
  • h = 1608

6. Обработайте третий символ «2»:

  • h = 31 * h + 50
  • h = 31 * 1608 + 50
  • h = 49898

7. Обработайте четвертый символ «2»:

  • h = 31 * h + 50
  • h = 31 * 49898 + 50
  • h = 1546888

8. Обработайте пятый символ «e»:

  • h = 31 * h + 101
  • h = 31 * 1546888 + 101
  • h = 47953629

9. Обработайте шестой символ «e»:

  • h = 31 * h + 101
  • h = 31 * 47953629 + 101
  • h = 1486562610

10. Обработайте седьмой символ «c»:

  • h = 31 * h + 99
  • h = 31 * 1486562610 + 99
  • h = 46083441008

11. Упрощенная обработка оставшихся символов  

Продолжайте обработку оставшихся символов, выполняя описанные выше действия, пока все они не будут обработаны. Конечное значение хеша h будет целым числом.  

12. Чтобы гарантировать, что значение хеша неотрицательно, мы применяем операцию побитового «и» со значением 0x7fffffff: h & 0x7fffffff.  

13. При использовании этого алгоритма хеш-значение адреса TON будет представлять собой число от 0 до 2147483647. 

3. Как генерируется лотерейная последовательность пользователя?

Для расчета лотерейной последовательности адрес кошелька пользователя преобразуется в хеш-значение:

[выигрышная последовательность – хеш адреса] = лотерейная последовательность пользователя

4. Как определяются победители?  

Binance отсортирует лотерейные последовательности всех пользователей в порядке возрастания и выберет определенное количество последовательностей в качестве победителей в зависимости от правил кампании. 

В случае ничьей (например, если у двух или нескольких пользователей одинаковая лотерейная последовательность) для определения их рейтинга Binance будет использовать время выполнения задания. Чем раньше пользователь выполнит задание, тем выше его рейтинг.

  • Для адресов с хешем длиной 10 цифр и более 10-я цифра удаляется.
  • Если хеш содержит меньше 10 цифр, он не изменяется.

Затем рассчитывается абсолютная разница между хешем адреса пользователя и выигрышной последовательностью. Binance отсортирует лотерейные последовательности всех пользователей в порядке возрастания, и выигрышными будут считаться меньшие последовательности.

Примеры:

  • хеш адреса пользователя А состоит из 10 цифр (1023456780). После удаления 10-й цифры лотерейная последовательность равна 102345678.
  • хеш адреса пользователя B состоит из 9 цифр (201154321). Никакие изменения для корректировки лотерейной последовательности не требуется.

Как определяется победитель:

  • Выигрышная последовательность = 692996864
  • Результат лотереи пользователя A = |692996864 − 102345678| = 590651186
  • Результат лотереи пользователя B = |692996864 − 201154321| = 491842543

Поскольку число 491842543 меньше, выигрывает Пользователь B.

Зарегистрируйтесь сейчас — получите скидку до 100 USDT на торговую комиссию (для верифицированных пользователей)