Provably fair là gì và nó hoạt động như thế nào?

Sử dụng máy tính provably fair bên dưới để xác minh mọi kết quả và hiểu cách Cloudbet Originals giữ tỷ lệ cược trung thực.
Above are two provably fair tools: a Game Verification Tool — paste your Server Seed, Client Seed, and Nonce from any round to reconstruct and confirm the outcome — and a Server Seed Verification Tool — verify that a revealed server seed matches the hash Cloudbet published before you played.

Khi bạn đặt cược ở Cloudbet Originals, mọi kết quả đều có thể được bạn tự kiểm chứng. Không phỏng đoán, không mánh khóe — chỉ có sự ngẫu nhiên thuần túy, có thể xác minh được.

"Provably fair" nghĩa là gì?

Provably fair (công bằng có thể kiểm chứng) là một hệ thống được các casino trực tuyến sử dụng để đảm bảo mọi kết quả trò chơi đều trung thực và có thể được người chơi tự kiểm chứng độc lập. Thay vì chỉ tin tưởng vào casino, bạn có bằng chứng toán học rằng kết quả không bị dàn xếp hay can thiệp trong quá trình chơi.

Ưu điểm Provably Fair của Cloudbet:

  1. Cloudbet Originals vận hành trên các giao thức provably fair mới nhất, nên mọi kết quả đều không thể bị can thiệp, có thể kiểm chứng độc lập và công bằng về mặt toán học.
  2. Sau khi một ván kết thúc và các seed được công bố, bất kỳ ai cũng có thể xác minh với độ chắc chắn tuyệt đối rằng kết quả được tạo ra một cách trung thực.
  3. Giống như việc bạn được trao bản thiết kế của từng ván chơi — không chiêu trò giấu kín, không lời bào chữa sau khi kết thúc.

Làm thế nào để công bằng có thể kiểm chứng

Provably fair nghĩa là chứng minh được hai điều:

  1. Mỗi trò chơi đều có quyền truy cập vào một chuỗi số ngẫu nhiên thực sự, không thể bị can thiệp — trang này nói về phần đó.
  2. Chuỗi số ngẫu nhiên đó quyết định kết quả trò chơi theo một cách cố định, minh bạch — cùng một chuỗi số luôn cho ra cùng một kết quả. Phần này tùy thuộc vào từng trò chơi — xem cách nó hoạt động với Mines và các Originals khác của chúng tôi.

Để đảm bảo tính ngẫu nhiên thực sự, cả người chơi và Cloudbet đều đóng góp vào quá trình tạo số — nên không bên nào có thể một mình kiểm soát kết quả, và Cloudbet phải chứng minh rằng mình không thay đổi phần đóng góp của mình sau khi sự việc đã xảy ra.

Thuật ngữ chính

  1. Bit: Đơn vị cơ bản của thông tin số — "1" hoặc "0." Các chuỗi bit biểu diễn số ở dạng nhị phân.
  2. Byte: 8 bit, biểu diễn tối đa 256 giá trị. Các seed của chúng tôi sử dụng số 32 byte (256 bit).
  3. Seed: Giá trị đầu vào khởi tạo cho một bộ tạo số ngẫu nhiên. Cùng một seed luôn cho ra cùng một kết quả.
  4. Server seed: Mã bí mật của Cloudbet — một chuỗi ngẫu nhiên mật mã 32 byte được tạo ra trước khi chơi, khóa lại và công bố sau đó.
  5. Client seed: Mã của bạn — tự đặt, hoặc để trình duyệt của bạn tạo ra (tối đa 255 ký tự).
  6. Nonce: Bộ đếm vòng chơi, tăng lên mỗi khi bạn chơi với cùng một cặp seed, để mỗi ván đều là duy nhất.
  7. Hash / Commitment: Dấu vân tay bảo mật của server seed, được chia sẻ với bạn trước khi chơi. Nó không thể đảo ngược — không ai có thể suy ngược lại để đoán ra seed, nhưng khi seed được công bố, việc bạn tự hash nó sẽ cho ra đúng Commitment ban đầu.
  8. Round Signature: Server seed, client seed và nonce được kết hợp và hash lại với nhau — chính là đầu vào thực sự quyết định kết quả của ván chơi.
  9. SHA3-256: Thuật toán hash dùng để tạo Commitment và Round Signature. Cùng một đầu vào luôn cho ra cùng một đầu ra có độ dài cố định; quá trình này không thể đảo ngược.
  10. SHAKE256: Một thuật toán linh hoạt thuộc họ SHA-3, biến Round Signature thành chuỗi số ngẫu nhiên mà kết quả trò chơi của bạn được xây dựng từ đó — cùng đầu vào, cùng đầu ra, mỗi lần đều vậy, đó là điều giúp việc kiểm chứng trở nên khả thi.
  11. Modulo: Phần dư sau khi chia một số cho một số khác (ví dụ: 16 % 5 = 1) — dùng để chuyển một số ngẫu nhiên thành một trong số các kết quả khả dĩ đã được cố định.
  12. Rotate seeds (làm mới seed): Làm mới cả hai seed để có một cặp ngẫu nhiên mới.

Chuẩn bị cho một ván chơi

Trước khi mỗi ván bắt đầu, hai con số được tạo ra: Server Seed và Client Seed.

Máy chủ trò chơi của Cloudbet tạo ra Server Seed bằng hàm randomBytes mật mã học của Node.js — một con số 32 byte (256 bit), về bản chất là một lần tung đồng xu kỹ thuật số an toàn được lặp lại 256 lần. Nó được giữ bí mật cho đến khi cặp seed được làm mới. Để chứng minh rằng nó sẽ không bị thay đổi về sau, máy chủ cũng hash nó ngay lập tức (bằng SHA3-256) thành một Commitment, được chia sẻ với bạn trước khi chơi — nên khi seed được công bố, bạn có thể tự hash nó và xác nhận rằng nó vẫn khớp.

Client Seed được trình duyệt của bạn tạo ra theo mặc định, hoặc bạn có thể tự đặt seed của riêng mình.

Sơ đồ giải thích hệ thống công bằng có thể chứng minh của Cloudbet: Server Seed được băm bằng SHA3-256 để tạo ra Commitment hiển thị trước khi chơi, trong khi Client Seed được trình duyệt của người chơi tạo ra.

Trong khi chơi

Server Seed, Client Seed và Nonce của bạn được ghép lại và hash bằng SHA3-256 thành một Round Signature duy nhất — hãy hình dung như hai người mỗi người bí mật đóng góp một nửa của một cái tên, nên không ai biết trước kết quả đầy đủ.

Sơ đồ cho thấy hệ thống công bằng có thể chứng minh của Cloudbet kết hợp Server Seed, Client Seed và Nonce, sau đó băm chúng bằng SHA3-256 thành một Round Signature duy nhất.

Round Signature đó sau đó được đưa vào SHAKE256, tạo ra chuỗi số ngẫu nhiên quyết định kết quả trò chơi của bạn. Vì SHAKE256 luôn tạo ra cùng một đầu ra từ cùng một đầu vào, bất kỳ ai có các seed đã công bố và nonce đều có thể tái tạo chính xác kết quả của bạn — đó chính là điều giúp việc kiểm chứng trở nên khả thi. Việc chuyển chuỗi số ngẫu nhiên đó thành kết quả trò chơi thực tế (ví dụ: mìn nằm ở đâu, xúc xắc hiện số gì) hoạt động khác nhau tùy theo từng trò chơi — xem cách nó hoạt động với Mines và các Originals khác của chúng tôi.

Sơ đồ cho thấy Round Signature được đưa vào SHAKE256 để tạo ra chuỗi số ngẫu nhiên đằng sau mỗi kết quả trò chơi công bằng có thể chứng minh.

Kết quả trò chơi công bằng cũng dựa vào rejection sampling (lấy mẫu loại trừ) — một phương pháp đảm bảo một số được tạo ngẫu nhiên chọn ra trong số tất cả các kết quả khả dĩ với xác suất thực sự bằng nhau, thay vì ưu ái một số kết quả hơn do việc chia không đều.

Để có một ví dụ chi tiết về Rejection Sampling, chúng tôi đã viết một ví dụ ngắn về việc tung một con xúc xắc 10 mặt, trong đó, vì chúng ta có 10 kết quả khả dĩ, P bằng 10.

Tung một con xúc xắc 10 mặt thông thường được thực hiện bằng cách tạo ngẫu nhiên một số "X" và tính X modulo 10, vì, giống như một lần tung xúc xắc, phép toán này có 10 kết quả khả dĩ. Tuy nhiên, nếu làm theo cách này mà không thực hiện Rejection Sampling trước, bạn sẽ vô tình ưu ái các kết quả nhỏ hơn một cách không công bằng. Giả sử X là một số ngẫu nhiên 4 bit, nên nó có 2⁴=16 giá trị khả dĩ: từ 0 đến 15. Khi đó, tất cả các kết quả khả dĩ của X modulo 10 (X % 10) là:

  1. Nếu X nằm trong khoảng 0 đến 9: 0 … 9
  2. Nếu X nằm trong khoảng 10 đến 15: 0 … 5

Điều này được minh họa ở đây:

Bảng minh họa lý do các hệ thống công bằng có thể chứng minh cần lấy mẫu loại trừ (rejection sampling): nếu không có nó, kết quả xúc xắc sẽ phân bố không đều và bị lệch.

Mỗi kết quả xúc xắc từ 0 đến 5 có thể xảy ra thông qua việc tạo ra hai giá trị X khác nhau, trong khi các kết quả 6-9 chỉ xảy ra thông qua một giá trị duy nhất. Điều này có nghĩa là các kết quả xúc xắc 0 đến 5 có xác suất xảy ra cao gấp đôi so với các kết quả 6-9, điều này không công bằng:

Bảng làm nổi bật các kết quả xúc xắc cụ thể bị xuất hiện quá nhiều khi bộ tạo số ngẫu nhiên công bằng có thể chứng minh bỏ qua bước lấy mẫu loại trừ.

Điều này xảy ra vì 16 không chia hết đều cho 10. Đó là lý do vì sao với Rejection Sampling, chúng ta tìm số lớn nhất CHIA HẾT đều cho 10. Với 4 bit, giá trị lớn nhất của X có thể là 15, và bội số lớn nhất của 10 nằm trong phạm vi giá trị này là 10, nên chúng ta loại bỏ tất cả các số được tạo ngẫu nhiên lớn hơn hoặc bằng 10. Điều này có nghĩa là chỉ có 0 … 9 là các giá trị khả dĩ cho X. Lưu ý: nếu một số bị loại bỏ thì một số mới sẽ được lấy mẫu.

Bảng cho thấy cách lấy mẫu loại trừ giúp hệ thống công bằng có thể chứng minh của Cloudbet không bị thiên lệch, mang lại xác suất bằng nhau cho mọi kết quả xúc xắc.

Sau bước loại bỏ, chúng ta tính X modulo P để có được một số từ 0 đến P. Số này sau đó quyết định chúng ta chọn kết quả nào trong số các kết quả có xác suất 1 trên P.

Cách kiểm chứng kết quả trò chơi của bạn

  1. Trước khi chơi, ghi lại Commitment và Client Seed của bạn.
  2. Sau ván chơi, làm mới các seed của bạn để Server Seed đã sử dụng được công bố.
  3. Hash Server Seed đã công bố bằng SHA3-256 — nó phải khớp với Commitment bạn đã ghi lại. Điều này xác nhận rằng seed không bị thay đổi trong lúc chơi.
  4. Dán Server Seed, Client Seed và Nonce của bạn vào công cụ kiểm chứng bên dưới — công cụ sẽ tái tạo lại kết quả từ đầu.
  5. So sánh kết quả đó với những gì bạn thấy trong trò chơi. Nếu khớp, xác nhận ván chơi công bằng; nếu không khớp, đó là dấu hiệu của sự can thiệp (điều mà, với Cloudbet, sẽ không xảy ra).

Câu hỏi thường gặp: giải đáp các thắc mắc về provably fair

1. Vì sao các seed lại dài và trông ngẫu nhiên như vậy?

Vì tính ngẫu nhiên là cốt lõi của sự công bằng. Các chuỗi ký tự dài ngăn cả Cloudbet lẫn người chơi dự đoán hoặc can thiệp vào kết quả. Càng nhiều entropy (độ hỗn loạn) = càng nhiều sự tin cậy.

2. Tôi có thể thay đổi client seed của mình không?

Có. Vào phần cài đặt fairness trong trò chơi và nhập client seed của riêng bạn bất cứ lúc nào. Bạn có thể làm mới nó thường xuyên tùy ý.

3. Điều gì xảy ra nếu server seed không khớp với hash ban đầu?

Khi đó có điều gì đó không ổn. Toàn bộ mục đích của việc hash là để chứng minh seed đã được khóa lại trước khi ván chơi của bạn bắt đầu. Sự không khớp sẽ là dấu hiệu của sự can thiệp — nhưng với Cloudbet, điều đó sẽ không xảy ra.

4. Tôi có cần hiểu về mật mã học để sử dụng công cụ này không?

Không. Công cụ sẽ làm hết mọi việc nặng nhọc. Bạn chỉ cần sao chép, dán và kiểm chứng.

5. Hash chính xác là gì?

Hãy hình dung nó như một chữ ký số. Nó được tạo ra bằng cách xáo trộn server seed bằng một thuật toán mật mã học. Nếu ai đó cố gắng thay đổi seed sau đó, hash sẽ khác đi — và bạn sẽ phát hiện ra sự gian lận.

6. Tôi có thể sử dụng công cụ của bên thứ ba để kiểm chứng kết quả không?

Có. Hệ thống của Cloudbet tương thích với các công cụ kiểm chứng độc lập, vì vậy bạn có thể tự kiểm tra lại kết quả ngay cả bên ngoài nền tảng của chúng tôi.

7. Tại sao điều này lại quan trọng nếu các trò chơi vốn đã vui rồi?

Vì sự công bằng không phải là một tính năng bổ sung — mà là một yêu cầu bắt buộc. Khi bạn đặt cược bằng crypto, bạn xứng đáng có toàn quyền kiểm soát và không phải phỏng đoán. Provably fair biến điều đó thành tiêu chuẩn mặc định.

Các bài giải thích về provably fair:

  1. Provably fair Mines
  2. Provably fair Pump
  3. Provably fair Plinko
  4. Provably fair Dice
  5. Provably fair Dice: Golden Ticket
  6. Provably fair Limbo
  7. Provably fair Roulette