Quy tắc trao thưởng dựa trên giá trị hàm băm TON Blockchain

2024-10-29 02:11

Tuyên bố miễn trừ trách nhiệm: Các sản phẩm và dịch vụ được đề cập ở đây có thể không áp dụng ở khu vực của bạn.

1. Làm cách nào để xác định chuỗi giành giải thưởng?

Binance sẽ chọn một ngày cụ thể trong thời gian diễn ra sự kiện và sử dụng 9 chữ số cuối của hàm băm block TON Blockchain gần nhất vào lúc 06:59 (Giờ Việt Nam) ngày đó làm chuỗi giành giải thưởng.

Ví dụ:

Nếu hàm băm block TON Blockchain gần nhất trong ngày tính phần thưởng là: 0hVwGb09xU6rhZhs9JMHU29KuqYATsVwd+96R8X6wF4=

  • Binance sẽ xóa các chữ cái để lấy: 009692996864
  • Sau đó, chúng tôi sẽ lấy 9 chữ số cuối làm chuỗi giành giải thưởng: 692996864

2. Làm cách nào để áp dụng phép băm nhân cho địa chỉ của người dùng?

Binance sẽ sử dụng công thức băm nhân (tương tự như `hashCode()` của Java) “h = 31 * h + value[i]” để xác định địa chỉ ví của (những) người dùng giành giải thưởng.

Cách tính:

1. Chuyển đổi chuỗi “0x22eEC85ba6a5cD97eAd4728eA1c69e1D9c6fa778” thành chữ cái thường để thu được “0x22eec85ba6a5cd97ead4728ea1c69e1d9c6fa778”, sau đó tính mã băm.

2. Giá trị của mỗi ký tự được xác định theo mã ASCII:

  • "0" có giá trị là 48;
  • "x" có giá trị là 120;
  • "2" có giá trị là 50;
  • "e" có giá trị là 101;
  • "c" có giá trị là 99;
  • "8" có giá trị là 56;
  • "5" có giá trị là 53;
  • "b" có giá trị là 98;
  • "a" có giá trị là 97;
  • "6" có giá trị là 54;
  • "d" có giá trị là 100;
  • "9" có giá trị là 57;
  • "7" có giá trị là 55.

3. Khởi tạo giá trị băm: h = 0

4. Xử lý ký tự đầu tiên "0":

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

5. Xử lý ký tự thứ hai "x":

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

6. Xử lý ký tự thứ ba "2":

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

7. Xử lý ký tự thứ tư "2":

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

8. Xử lý ký tự thứ năm "e":

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

9. Xử lý ký tự thứ sáu "e":

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

10. Xử lý ký tự thứ bảy "c":

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

11. Xử lý đơn giản các ký tự còn lại  

Tiếp tục xử lý các ký tự còn lại theo các bước đã nêu ở trên, cho đến khi tất cả các ký tự được xử lý. Giá trị băm cuối cùng (h) sẽ là một số nguyên.  

12. Để đảm bảo giá trị băm không âm, chúng tôi áp dụng bitwise và kết hợp với “0x7fffffff”: “h & 0x7fffffff”.  

13. Bằng cách sử dụng thuật toán này, giá trị băm địa chỉ TON sẽ là một số từ 0 đến 2147483647. 

3. Làm cách nào để tạo chuỗi xổ số cho người dùng?

Địa chỉ ví của mỗi người dùng được chuyển đổi thành giá trị băm để tính chuỗi xổ số của họ:

[Chuỗi giành giải thưởng - Hàm băm địa chỉ] = Chuỗi xổ số của người dùng

4. Làm cách nào để xác định người giành giải thưởng?  

Binance sẽ sắp xếp chuỗi xổ số của từng người dùng theo thứ tự tăng dần và chọn một số chuỗi nhất định là người giành giải thưởng tùy thuộc vào quy tắc của chương trình. 

Trong trường hợp hòa nhau (ví dụ: hai hoặc nhiều người dùng có cùng một chuỗi xổ số), Binance sẽ sử dụng thời gian hoàn thành nhiệm vụ để xác định thứ hạng cho người dùng. Người dùng hoàn thành nhiệm vụ càng sớm, thứ hạng của họ càng cao.

  • Đối với các địa chỉ có hàm băm bằng hoặc dài hơn 10 chữ số, chữ số thứ 10 sẽ bị xóa.
  • Nếu chuỗi băm dưới 10 chữ số, sẽ không có thay đổi nào được áp dụng.

Sau đó, hệ thống sẽ tính chênh lệch tuyệt đối giữa hàm băm địa chỉ của người dùng và chuỗi giành giải thưởng. Binance sẽ sắp xếp chuỗi xổ số của từng người dùng theo thứ tự tăng dần và (các) chuỗi xổ số nhỏ hơn sẽ giành giải thưởng.

Ví dụ:

  • Hàm băm địa chỉ của người dùng A có 10 chữ số (1023456780). Sau khi xóa chữ số thứ 10, chuỗi xổ số của họ là 102345678.
  • Hàm băm địa chỉ của người dùng B có 9 chữ số (201154321). Không cần thay đổi để điều chỉnh chuỗi xổ số của họ.

Cách xác định người giành giải thưởng:

  • Chuỗi giành giải thưởng = 692996864
  • Kết quả xổ số của người dùng A = |692996864 − 102345678| = 590651186
  • Kết quả xổ số của người dùng B = |692996864 − 201154321| = 491842543

Vì 491842543 nhỏ hơn, người dùng B sẽ giành giải thưởng.

Đăng ký ngay - Nhận khoản hoàn phí giao dịch lên tới 100 USDT (dành cho người dùng đã xác minh)