Commitment Scheme là gì?
Commitment Scheme là một hàm cho phép cả người chơi và nền tảng (nhà cái) cùng cam kết trước một giá trị bí mật, trong khi giữ bí mật giá trị đó cho đến thời điểm cần công bố.
Khi kết thúc trò chơi, các giá trị này sẽ được tiết lộ (reveal) để bất kỳ bên thứ ba nào cũng có thể kiểm tra và xác minh rằng kết quả trò chơi được tạo ra một cách công bằng, không bị gian lận.
Commitment Scheme có hai giai đoạn chính:
Giai đoạn Cam kết (Commit)
Giai đoạn Tiết lộ (Reveal)
Giai đoạn Cam kết (Commit Phase)
Mục tiêu là khóa lại các giá trị do người chơi và hệ thống tạo ra để sử dụng trong việc xác định kết quả trò chơi.
Ba giá trị được cam kết:
Client Seed (thuộc người chơi)
Server Seed (thuộc nhà cái – được băm)
Nonce (số lần cược hiện tại)
Công thức đầu ra:
Kết quả = Commit(Client Seed, Server Seed, Nonce)
Chi tiết từng thành phần:
Client Seed (không băm):
Được tạo ngẫu nhiên bởi trình duyệt của người chơi, nhưng người chơi có thể tự đặt lại để đảm bảo có ảnh hưởng vào kết quả.Server Seed (không băm):
Là một chuỗi do hệ thống tạo ngẫu nhiên và được giữ bí mật. Trước khi game bắt đầu, giá trị này sẽ được băm (hash) để bảo mật. Chỉ giá trị đã băm được hiển thị, không thể đảo ngược để tránh gian lận.Nonce:
Là một con số đại diện cho số lần cược.Bắt đầu từ 0
Tăng thêm 1 sau mỗi lần đặt cược
Đảm bảo rằng kết hợp seed luôn khác nhau ở mỗi lượt chơi
Giai đoạn Tiết lộ (Reveal Phase):
Trong giai đoạn tiết lộ, mục tiêu là hiển thị server seed chưa băm. Với các giá trị server seed chưa băm và nonce đã biết, người chơi có thể xác minh kết quả của mình.
Nếu người chơi muốn xác minh kết quả, người chơi cần xoay cặp client seed và server seed.
Khi điều này được thực hiện, nền tảng sẽ hiển thị server seed trước đó (đã được unhash). Lúc này, người chơi, nhà cái và bất kỳ bên thứ ba nào đều có thể biết đầy đủ 3 giá trị: client seed, server seed và nonce.
Bằng cách nhập client seed, server seed và nonce cho vòng chơi đó, bạn luôn có thể kiểm chứng được kết quả của trò chơi/ván cược đó.
Server Seed
Server seed được tạo bởi hệ thống của bạn dưới dạng chuỗi hexa 64 ký tự ngẫu nhiên. Chuỗi này sẽ trải qua quá trình băm bằng thuật toán SHA-256. Chỉ giá trị đã băm được hiển thị.
Việc băm có hai mục đích:
Ngăn người chơi gian lận: Không thể tính ngược lại server seed gốc từ giá trị đã băm (nhờ đặc tính pre-image resistance), từ đó ngăn người chơi gian lận.
Ngăn nhà cái gian lận: Không thể tạo hai giá trị khác nhau cho cùng một hash (nhờ đặc tính collision resistance của SHA-256), từ đó ngăn nhà cái sửa đổi kết quả.
Chỉ khi trò chơi kết thúc và người chơi thay đổi client seed, server seed cũ mới được unhash để xác minh.
Client Seed
Client seed là thuộc về bạn – người chơi, nhằm đảm bảo bạn có ảnh hưởng đến tính ngẫu nhiên của kết quả trò chơi.
Ban đầu, client seed sẽ được trình duyệt tạo ngẫu nhiên cho bạn, tuy nhiên, bạn được khuyến khích chỉnh sửa seed này theo ý muốn. Điều này giúp bạn có quyền kiểm soát và xác minh kết quả cuối cùng.
Nonce
Trong mật mã học, Nonce là viết tắt của “number once” – một con số được tăng dần mỗi khi người chơi đặt cược bằng cùng một cặp server seed và client seed.
Điều này đảm bảo rằng mỗi trò chơi có sự kết hợp đầu vào khác nhau, và đầu ra của cơ chế cam kết luôn khác biệt.