Regler for udvælgelse af tildeling baseret på hashværdien for TON-blockchainen

Udgivet den 2024-10-29 02:11

Ansvarsfraskrivelse: Produkter og tjenester, der refereres til her, er muligvis ikke tilgængelige i din region.

1. Hvordan bestemmer man vinderrækkefølgen?

Binance vælger en bestemt dato under begivenheden og bruger de sidste 9 cifre den sidste blokhash på TON-blockchainen kl. 23:59 (UTC) på den pågældende dato som den vindende sekvens.

For eksempel:

Hvis den sidste blokhash på TON-blockchainen på på dagen for beregning af belønningen er: 0hVwGb09xU6rhZhs9JMHU29KuqYATsVwd+96R8X6wF4=

  • Binance fjerner bogstaverne for at få: 009692996864
  • Så tager vi bagefter de sidste 9 cifre som den vindende sekvens: 692996864

2. Hvordan anvender man multiplikativ hashing på en brugers adresse?

Binance bruger multiplikativ hashformel (svarende til Javas `hashCode()`) "h = 31 * h + value[i]" til at fastslå wallet-adressen for den eller de vindende bruger(e).

Beregning:

1. Konverter strengen "0x22eEC85ba6a5cD97eAd4728eA1c69e1D9c6fa778" til små bogstaver for at få "0x22eec85ba6a5cd97ead4728ea1c69e1d9c6fa778", og beregn derefter hashkoden.

2. Hvert tegns værdi bestemmes af dets ASCII-kode:

  • "0" har en værdi på 48
  • "x" har en værdi på 120
  • "2" har en værdi på 50
  • "e" har en værdi på 101
  • "c" har en værdi på 99
  • "8" har en værdi på 56
  • "5" har en værdi på 53
  • "b" har en værdi på 98
  • "a" har en værdi på 97
  • "6" har en værdi på 54
  • "d" har en værdi på 100
  • "9" har en værdi på 57
  • "7" har en værdi på 55.

3. Initialiser hashværdien: h = 0

4. Behandl det første tegn "0":

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

5. Det andet tegn "x" behandles:

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

6. Behandl det tredje tegn "2":

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

7. Behandl det fjerde tegn "2":

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

8. Det femte tegn "e" behandles:

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

9. Det sjette tegn "e" behandles:

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

10. Behandl det syvende tegn "c":

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

11. Simplificeret behandling af de resterende tegn  

Fortsæt behandling af de resterende tegn ved at følge ovenstående trin, indtil alle tegn er behandlet. Den endelige hashværdi, h, vil være et heltal.  

12. For at sikre, at hashværdien er ikke-negativ, anvender vi en bitvis og med "0x7fffffff": "h & 0x7fffffff".  

13. Ved hjælp af denne algoritme vil TON-adressens hashværdi være et tal mellem 0 og 2147483647. 

3. Hvordan genererer man en brugers lotterisekvens?

Hver brugers wallet-adresse konverteres til en hashværdi for at beregne deres lotterisekvens:

[Vindende sekvens - adressehash] = Brugers lotterisekvens

4. Hvordan finder man vinderne?  

Binance sorterer hver brugers lotterisekvens i stigende rækkefølge og vælger et bestemt antal sekvenser som vindere afhængigt af kampagnereglerne. 

I tilfælde af uafgjort (f.eks. hvis to eller flere brugere har samme lotterirækkefølge), bruger Binance opgavens fuldførelsestid til at bestemme brugernes placeringer. Jo tidligere en bruger fuldfører opgaven, jo højere er vedkommendes placering.

  • For adresser med en hash, der er lig med eller længere end 10 cifre, fjernes det 10. ciffer.
  • Hvis hashen er under 10 cifre, foretages der ingen ændringer.

Derefter beregnes den absolutte forskel mellem brugernes adressehash og den vindende sekvens. Binance sorterer hver brugers lotterisekvens i stigende rækkefølge, og den eller de mindre lotterisekvenser vinder.

For eksempel:

  • Bruger A's adressehash har 10 cifre (1023456780). Efter fjernelse af det 10. ciffer er vedkommendes lotterisekvens 102345678.
  • Bruger B's adressehash har 9 cifre (201154321). Ingen ændringer er nødvendige for at justere dennes lotterisekvens.

Sådan bestemmer du vinderen:

  • Vindende sekvens = 692996864
  • Bruger A's lotteriresultat = |692996864 - 102345678| = 590651186
  • Bruger B's lotteriresultat = |692996864 - 201154321| = 491842543

Eftersom 491842543 er mindre, vinder bruger B.

 

Registrer dig nu – få op til 100 USDT i rabat på handelsgebyr (for verificerede brugere)