Правила вибору переможців на основі хеш-значення блокчейну TON

2024-10-29 02:11

Відмова від відповідальності: продукти й послуги, згадані тут, можуть бути недоступні у вашому регіоні.

1. Як визначити виграшну послідовність?

Binance вибере конкретну дату під час події і використає останні 9 цифр останнього хешу блоку TON о 23:59 (UTC) на таку дату як виграшну послідовність.

Наприклад:

Якщо останній хеш блоку TON у день розрахунку винагороди 0hVwGb09xU6rhZhs9JMHU29KuqYATsVwd+96R8X6wF4=

  • Binance видалить літери, щоб отримати: 009692996864
  • Після цього ми візьмемо останні 9 цифр як виграшну послідовність: 692996864

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

Binance буде використовувати формулу мультиплікативного хешу (схожу на Java – `hashCode()`) "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.
  • Хеш адреси користувача Б складається з 9 цифр (201154321). Не потрібно робити жодних змін.

Як визначити переможця:

  • Виграшна послідовність = 692996864
  • Результат лотереї користувача A = |692996864 − 102345678| = 590651186
  • Результат лотереї користувача Б = |692996864 − 201154321| = 491842543

Оскільки 491842543 менше, виграє користувач Б.

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