FAQ
Strona Główna
Centrum Wsparcia
FAQ
Warunki użytkowania
Warunki użytkowania Binance
Zasady wyłaniania zwycięzców na podstawie wartości hash sieci blockchain TON

Zasady wyłaniania zwycięzców na podstawie wartości hash sieci blockchain TON

2024-10-29 02:11
Zastrzeżenie: Produkty i usługi, o których tutaj mowa, mogą nie być dostępne w Twoim regionie.

1. Jak określić zwycięską sekwencję?

Binance wybierze konkretną datę podczas wydarzenia i użyje ostatnich 9 cyfr ostatniego hasha bloku sieci blockchain TON o godz. 23:59 (UTC) danego dnia jako zwycięskiej sekwencji.
Przykładowo:
Jeżeli ostatni hash bloku sieci blockchain TON w dniu obliczania nagrody to: 0hVwGb09xU6rhZhs9JMHU29KuqYATsVwd+96R8X6wF4=
  • Binance usunie litery, uzyskując numer: 009692996864
  • Następnie wydzielimy ostatnie 9 cyfr jako zwycięską sekwencję: 692996864

2. Jak zastosować hashowanie multiplikatywne na adresie użytkownika?

Binance użyje multiplikatywnej formuły hasha (podobnej do `hashCode()` Java) „h = 31 × h + value[i]”, aby określić adres portfela zwycięskiego użytkownika (użytkowników).
Obliczenie:
1. Przekonwertuj ciąg „0x22eEC85ba6a5cD97eAd4728eA1c69e1D9c6fa778” na małe litery, aby uzyskać „0x22eec85ba6a5cd97ead4728ea1c69e1d9c6fa778”, a następnie oblicz kod hash.
2. Wartość każdego znaku jest określana na podstawie jego kodu ASCII:
  • „0” ma wartość 48;
  • „x” ma wartość 120;
  • „2” ma wartość 50;
  • „e” ma wartość 101;
  • „c” ma wartość 99;
  • „8” ma wartość 56;
  • „5” ma wartość 53;
  • „b” ma wartość 98;
  • „a” ma wartość 97;
  • „6” ma wartość 54;
  • „d” ma wartość 100;
  • „9” ma wartość 57;
  • „7” ma wartość 55.
3. Zainicjuj wartość hash: h = 0
4. Przetwórz pierwszy znak „0”:
  • h = 31 × h + 48
  • h = 31 × 0 + 48
  • h = 48
5. Przetwórz drugi znak „x”:
  • h = 31 × h + 120
  • h = 31 × 48 + 120
  • h = 1608
6. Przetwórz trzeci znak „2”:
  • h = 31 × h + 50
  • h = 31 × 1608 + 50
  • h = 49898
7. Przetwórz czwarty znak „2”:
  • h = 31 × h + 50
  • h = 31 × 49898 + 50
  • h = 1546888
8. Przetwórz piąty znak „e”:
  • h = 31 × h + 101
  • h = 31 × 1546888 + 101
  • h = 47953629
9. Przetwórz szósty znak „e”:
  • h = 31 × h + 101
  • h = 31 × 47953629 + 101
  • h = 1486562610
10. Przetwórz siódmy znak „c”:
  • h = 31 × h + 99
  • h = 31 × 1486562610 + 99
  • h = 46083441008
11. Uproszczone przetwarzanie pozostałych znaków  
Kontynuuj przetwarzanie pozostałych znaków zgodnie z krokami opisanymi powyżej, aż wszystkie znaki zostaną przetworzone. Końcowa wartość hash, h, będzie liczbą całkowitą.  
12. Aby upewnić się, że wartość hasha nie jest ujemna, stosujemy metodę bitową i z „0x7fffffff”: „h & 0x7fffffff”.  
13. Korzystając z tego algorytmu, wartość hash adresu TON będzie liczbą z zakresu od 0 do 2147483647. 

3. Jak wygenerować sekwencję użytkownika w loterii?

Adres portfela każdego użytkownika jest konwertowany na wartość hash, aby obliczyć jego sekwencję w loterii:
[zwycięska sekwencja – hash adresu] = sekwencja użytkownika w loterii

4. Jak wyłonić zwycięzców?  

Binance uszereguje sekwencję każdego użytkownika w loterii w porządku rosnącym i wybierze określoną liczbę sekwencji jako zwycięzców w zależności od zasad kampanii. 
W przypadku remisu (np. dwóch lub więcej użytkowników ma taką samą sekwencję w loterii), Binance ustali kolejność w rankingu na podstawie czasu wykonania zadania. Im wcześniej użytkownik wykona zadanie, tym wyższa jego pozycja w rankingu.
  • W przypadku adresów z hashem równym lub dłuższym niż 10 cyfr usuwana jest 10. cyfra.
  • Jeśli hash jest mniejszy niż 10 cyfr, nie są wprowadzane żadne zmiany.
Następnie obliczana jest bezwzględna różnica między hashem adresu użytkownika a zwycięską sekwencją. Binance uszereguje sekwencję każdego użytkownika w loterii w kolejności rosnącej, przy czym mniejsze sekwencje wygrywają.
Przykładowo:
  • Hash adresu użytkownika A składa się z 10 cyfr (1023456780). Po usunięciu 10 cyfry sekwencja w loterii to 102345678.
  • Hash adresu użytkownika B składa się z 9 cyfr (201154321). Nie ma konieczności wprowadzania żadnych zmian, aby dostosować jego sekwencję w loterii.
Wyłonienie zwycięzcy:
  • Zwycięska sekwencja = 692996864
  • Wynik w loterii użytkownika A = |692996864 – 102345678| = 590651186
  • Wynik w loterii użytkownika B = |692996864 – 201154321| = 491842543
Ponieważ sekwencja 491842543 jest mniejsza, wygrywa użytkownik B.