Cơ chế ” Provably fair ” của những game gambling online

Tram Ho

Đối với những game gambling người chơi luôn lo sợ rằng mình sẽ bị lừa hết tiền . Điều này là vô cùng dễ hiểu vì khi chơi casino online mọi kết quả đều có vẻ dễ dàng thay đổi được bằng công nghệ .Chính vì những rủi ro cơ bản như vậy cộng đồng Bitcoin gambling đã có một giải pháp nó gọi là Provably fair . Cũng giống như những gì Bitcoin giải quyết , phương thức này không yêu cầu bên thứ ba , nó làm trò chơi trở nên hoàn toàn minh bạch bằng cách sử dụng các phương thức mã hóa nâng cao để đảm bảo rằng kết quả trò chơi hông bị giả mạo . Các dễ dàng nhất để sử dụng là dùng các công cụ Provably fair verifiers cho phép người chơi có thể verify kết quả sau mỗi roll để đảm bảo rằng mình không bị lừa trong quá trình chơi bằng cách nhập các thông tin mà trang web cung cấp và check phần roll results
nói một cách ngắn gọn đây là một cách cho phép người chơi kiểm tra xem một số được tạo có thực sự ngẫu nhiên hay mà ko bị chỉnh sửa theo bất kỳ cách nào.
Các trang Verifiers đc khuyến nghị

Tuy nhiên chúng ta vẫn cảm thấy có gì đấy sai sai . Để chắc chắn thì chúng ta nên hiểu rõ Provably fair hoạt động như thế nào. Bài viết này mình sẽ cố gắng giải thích một cách rõ ràng nhất về cách thức hoạt động của nó .

Provably fair hoạt động như thế nào?

Mặc dù có một số cách để triển khai Provablu fair và mình sẽ cố gắng giải thích một cách phổ biến nhất. Với phương pháp này mỗi roll-result sẽ được tính dựa theo các biến sau :

  • Serverseed : Được cung cấp bởi gambling site
  • Clientseed : Được cung cấp bởi browser của người dùng hoặc có thể điều chỉnh được bởi người dùng
  • Nonce : Một con số tăng với mỗi lần đặt cược

Người chơi sẽ nhận được encrypted hash của serverseed trước khi người chơi bắt đầu gambling và vì thế trang web sẽ ko thể thay đổi nó .Tuy nhiên nó đã được mã hóa bản thân người chơi cũng không thể tính trước được kết quả roll của mình .

Browser của người chơi sẽ tạo ra một clientseed ngẫu nhiên hoặc người chơi có thể tự sửa nó . Bằng cách này chắc chắn trang web sẽ không thể biết clientseed của ng chơi được

Tiếp theo là Nonce được bắt đầu từ 0 hoặc 1 tùy vào trang web và sau mỗi lần đặt cược số Nonce sẽ tăng thêm 1

Tính toán roll result

Giả sử ta có

PrimeDice trước hết sử dụng HMAC hash với giá trị theo công thức :

Chúng ta sẽ sử dụng một tool online freeformatter.com/hmac-generator.html để tính

Tóm lại là chúng ta kí clientseed + nonce bằng key của serverseed theo HMAC-SHA512

Kết quả

Bây giờ chọn 5 ký tự đầu tiên (aa671) và chuyển đổi từ giá trị hex thành số thập phân. Bạn cũng có thể sử dụng công cụ trực tuyến như statman.info/conversions/hexadecimal.html để tính toán .

Nếu kết quả là một số > 999.999 thì chúng ta sẽ lấy 5 kí tự tiếp theo là (aad5e) trong trường hợp của chúng ta thì 697969 thỏa mãn . Bây h chúng ta sẽ lấy số đấy module của số đấy với 10000 rồi chia cho 100

Đối với lần đặt cược tiếp theo trang web sẽ thực hiện đúng như vậy chỉ thay đổi Nonce tăng dần theo mỗi roll và vì thế kết quả cuối là ngẫu nhiên .

Verifying your roll results

Step 1

Trước tiên kiểm tra serverseed hashed xem có phải nó được hash từ serverseed không . Chúng ta sử dụng một tool online khác để kiểm tra ( xorbin.com/tools/sha256-hash-calculator ) để tạo SHA256 từ serverseed. Bạn sẽ so sánh mã này với mã đã hash của server trả về nếu nó giống nhau thì chính tỏ serverseed đã được sử dụng cho kết quả roll .

Step 2

Lặp lại việc tính và so sánh nó với kết quả cả roll server trả về

Sử dụng các tool probably fair

Bởi vì bạn có thể thực hiện hàng chục , hàng trăm hoặc thậm trí hàng nghìn lần đặt cược sẽ thật là vất vả nới mỗi lần chúng ta đặt cược rồi lại phải tính toán bằng tay. Vì vậy cộng đồng Bitcoin Gambling đã hỗ trợ rất nhiều tool để mọi người có thể xác nhận kết quả roll của mình xem có thực sự ko bị thay đổi hay không

ví dụ sử dụng Primedice bạn chỉ cần nhập các thông số trang web yêu cầu

Nếu kết quả giống nhau thì chúng ta biết rằng chúng ta ko bị cheated khi chơi gambling ?)))

Development

Lý thuyết dừng ở đây là được rồi bh đến thực hành .

Mỗi kết quả được sinh ra đều sẽ dựa theo client-seed , server-seednonce

Tạo số ngẫu nhiên

Đầu tiên chúng ta sẽ tạo ngẫu nhiên clientserver seed

Client seed:

Chúng ta dễ dàng lấy được các giá trị ngẫu nhiên từ hàm trên ví dụ :

Server seed
Mã này được tạo ở phía server và chúng ta có thể sử dụng hàm mã hóa

Kết hợp tất cả sau đó tính theo SHA-512 hash

Bây giờ chúng ta có thể gửi cho client kết quả rồi

Bài viết được dịch từ : https://dicesites.com/provably-fair

https://medium.com/@alexcambose/provably-fair-system-in-javascript-6457e028d2aa

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo