Cập nhật lần cuối: 1 Tháng Mười 2024
Hướng dẫn nâng cao về Xáo bài Minh bạch trên CoinPoker
Cho đến nay, các phòng poker online vẫn giữ bí mật về phần mềm xáo bài của họ. Người chơi không thể xác minh rằng các hệ thống đóng này xáo bài một cách thực sự công bằng, và đó chính là điều Trình Xáo bài Minh bạch của CoinPoker được xây dựng để thay đổi. Sử dụng hàm băm mật mã một chiều, trình xáo bài mới của CoinPoker giúp bạn có thể tiết lộ thông tin về quá trình xáo bài một cách an toàn, đồng thời cho bạn khả năng: ... Hướng dẫn nâng cao về Xáo bài Minh bạch trên CoinPoker
UncategorizedCho đến nay, các phòng poker online vẫn giữ bí mật về phần mềm xáo bài của họ. Người chơi không thể xác minh rằng các hệ thống đóng này xáo bài một cách thực sự công bằng, và đó chính là điều Trình Xáo bài Minh bạch của CoinPoker được xây dựng để thay đổi.
Sử dụng hàm băm mật mã một chiều, trình xáo bài mới của CoinPoker giúp bạn có thể tiết lộ thông tin về quá trình xáo bài một cách an toàn, đồng thời cho bạn khả năng:
- Xem các lá bài chưa chia bằng Hand Hindsight
- Xác minh đóng góp của chính bạn với Công cụ Xác thực RNG
- Có được sự minh bạch vào hoạt động bên trong của RNG chúng tôi
Trước khi đi sâu vào công nghệ đằng sau xáo bài minh bạch, hãy xem hướng dẫn ngắn của chúng tôi để tự mình thử nghiệm!
Cách sử dụng Công cụ Xác thực để Chứng minh Sự tham gia
Nếu trình xáo bài minh bạch của chúng tôi hoàn toàn mới với bạn, chúng tôi khuyên bạn nên bắt đầu bằng cách xem hướng dẫn cơ bản có ảnh chụp màn hình tại đây.
Bước 1: Để chứng minh tính công bằng của ván bài, bạn sẽ cần truy cập các hàm băm một chiều đã đề cập trước đó. Bạn sẽ tìm thấy chúng bằng cách nhấp vào liên kết RNG Shuffle Order ở phía dưới trong Tab Lịch sử Ván bài.

Bước 2: Tại đây bạn sẽ tìm thấy một danh sách dài các chuỗi hash. Phần đầu tiên là cho mỗi lá bài trong thứ tự bộ bài ban đầu, tiếp theo là các seed đã mã hóa từ mỗi người chơi và CoinPoker, và cuối cùng là hash của mỗi lá bài trong thứ tự bộ bài cuối cùng.

Hãy nghĩ về các con số được liệt kê dưới bộ bài đã xáo được hash như vị trí của chúng trong bộ bài, và mỗi hash của người chơi như "hệ số lắc" đã mã hóa của họ được gửi khi bắt đầu ván bài.
Bước 6: Dữ liệu này vô dụng nếu không có Công cụ Xác thực, bạn có thể truy cập bằng cách nhấp vào liên kết ở đầu cửa sổ.

Bước 7: Bước tiếp theo là xác thực ván bài, có thể có một trong hai ý nghĩa tùy thuộc vào việc bạn muốn:
- Xác minh tính công bằng bằng cách chứng minh sự tham gia của bạn trong việc "lắc"
- Xác minh xem vị trí thực tế của một lá bài trong bộ bài cuối cùng có khớp với vị trí đã mã hóa mà bạn đã tham gia xác định trước khi xáo không
Cho Lựa chọn 1:
Nhập các seed đã mã hóa hay "hệ số lắc" như chúng tôi vẫn gọi vào Công cụ Xác thực. Chúng được đánh dấu bằng mũi tên xanh. Đầu ra sẽ là "hệ số lắc tập thể" hay hash kết hợp, và thứ tự bộ bài cuối cùng.

Nếu chúng khớp, thì bạn đã xác minh thành công sự tham gia của mình trong quá trình xáo bài!
Cho Lựa chọn 2:
Chọn một trong các lá bài đã chia (những lá này sẽ có cả hash bên trái và hàm băm đã mã hóa bên phải). Nhập hash vào bên trong hàm bên phải trong phần Xác thực Lá bài. Đầu ra phải là hash được liệt kê bên trái trong CoinPoker, cũng như giá trị lá bài chính xác.

Bước 8: Hãy vui vẻ khám phá các lá bài chưa chia và chứng minh sự tham gia của bạn trong hệ thống RNG phi tập trung đầu tiên của poker online!
Giải thích Nâng cao: Cách RNG Minh bạch của CoinPoker Hoạt động
Hãy tưởng tượng bộ bài chưa xáo như sau: 2c, Qd, Kh
Trong thực tế, sẽ có một hoán vị của 52 lá bài, nhưng để hiểu cách quy trình này hoạt động, chúng ta sẽ giới hạn số lượng ở ba lá. Sử dụng thứ tự bộ bài này, CoinPoker sẽ tạo bộ bài ban đầu và chia sẻ nó với tất cả người chơi tại bàn theo các bước sau.
Bước 1
CoinPoker chạy RNG của mình bằng một giá trị bí mật, chúng tôi sẽ gọi là seed. Giá trị này chỉ tồn tại tạm thời và chỉ được sử dụng để khởi động quy trình.
Bước 2
CoinPoker sử dụng seed ngẫu nhiên này để tạo một giá trị salt; dữ liệu ngẫu nhiên hoạt động như mật khẩu cho các hàm mật mã một chiều. Giá trị này được kết hợp với một lá bài để tạo hash cho mỗi lá bài trong bộ bài. Sử dụng ba lá bài đã đề cập trước đó, công thức sẽ trông như thế này:
- Hash(2c + salt1) = aa
- Hash(Qd + salt2) = bb
- Hash(Kh + salt3) = cc
Lưu ý: Các hash aa, bb và cc được đơn giản hóa cho mục đích minh họa. Trong thực tế, chúng là các chuỗi 256-bit và khó làm việc hơn một chút; ít nhất là với con người.
Bước 3
CoinPoker xáo bộ bài đã hash từ Bước 2 bằng seed ngẫu nhiên từ Bước 1.
- Bộ bài chưa xáo dạng hash là: aa (2c), bb (Qd), cc (Kh)
- Bộ bài đã xáo (bộ bài ban đầu) dạng hash bây giờ là: bb (Qd), cc (Kh), aa (2c)
Bước 4
CoinPoker gửi bộ bài đã hash này (dưới dạng vector bao gồm tất cả hash lá bài theo thứ tự bộ bài ban đầu) cho mỗi người chơi.
Mục đích của việc sử dụng hash là để có thể tiết lộ một số lá bài từ bộ bài và cho phép người chơi xác minh chúng, mà không làm lộ những lá khác cần được giữ ẩn (tức là các hand đã muck). Bây giờ tất cả người chơi đã có trong tay danh sách hash tiết lộ thứ tự bộ bài ban đầu.
Các bước tiếp theo trình bày cách bộ bài ban đầu được chuyển đổi thành bộ bài cuối cùng bằng cách sử dụng đầu vào từ người chơi, được kết hợp với đầu vào của CoinPoker để tạo thành đầu vào tập thể (hay còn gọi là aggregate seed).
Bước 5
Một lần nữa, để đơn giản hóa sự phức tạp của quy trình này, hãy tưởng tượng có hai người chơi tại bàn. Hãy gọi họ là Alice và Bob.
Bước 6
Alice và Bob bây giờ cần tính hash của seed của họ để gửi cho CoinPoker. Công thức sẽ trông như thế này:
- Hash(Alice's_seed) = XX
- Hash(Bob's_seed) = YY
Bước 7
CoinPoker tạo một seed mới, không phải seed từ Bước 1. Seed ngẫu nhiên này được dùng để tạo hash: Hash(CoinPoker's_seed) = ZZ
Bước 8
Hash seed của người chơi, cũng như của CoinPoker, sau đó được tổng hợp thành danh sách commitment seed: [XX, YY, ZZ].
Bước 9
CoinPoker gửi vector commitment seed cho Alice và Bob.
Bước 10
Sau khi nhận commitment seed, Alice và Bob gửi seed thật của họ từ Bước 5. Đây là seed đã được dùng để tạo hash. Vậy Hash(Alice's_seed) = XX và Hash(Bob's_seed) = YY.
Bước 11
Các seed thật sau đó được dùng để tạo aggregate seed. Seed mới này tính đến tất cả seed của người chơi cũng như của CoinPoker, tạo ra một giá trị mà toàn bộ bàn đã đóng góp vào.
Hash(Alice's_seed + Bob's_seed + CoinPoker's_seed) = aggregated_seed
Bước 12
CoinPoker sử dụng aggregate seed để xáo bộ bài ban đầu. Hash cho bộ bài cuối cùng sau đó được phân phối đến tất cả các bên. Lưu ý rằng đây là bộ bài cuối cùng được sử dụng cho đến khi ván bài kết thúc.
Bộ bài Ban đầu: Qd, Kh, 2c → RNG với aggregated_seed → Bộ bài Cuối cùng: Kh, 2c, Qd
(Hash: cc, aa, bb)
Cách Công cụ Xác thực RNG Hoạt động
Một trong những lợi thế chính của việc sử dụng hàm băm mật mã là chúng tôi có thể tiết lộ thông tin về quá trình xáo bài một cách an toàn, sau đó có thể được sử dụng để chứng minh liệu việc xáo bài có công bằng không. Chúng tôi gọi đây là Công cụ Xác thực RNG, và chúng tôi sẽ tiếp tục các bước để giúp bạn hiểu cách nó hoạt động.
Lưu ý rằng cả Bob và Alice đều không biết seed thật của nhau, và chỉ có quyền truy cập vào seed thật của chính mình. Những gì họ có quyền truy cập là tất cả hash seed của những người chơi khác và CoinPoker (nhớ Bước 8 và 9).
Sau khi ván bài kết thúc, người chơi nhận được seed thật của tất cả người tham gia, họ có thể sử dụng để xác minh sự tham gia của mình trong lần xáo bộ bài cuối cùng, cũng như tính ngẫu nhiên của các lá bài.
Bước 13-18: Xác minh Tác động của Người chơi lên Bộ bài Đã xáo
Bước 13
Đầu tiên, người chơi cần lấy từng seed thật và sử dụng nó để xác minh xem giá trị hash họ có có đúng không. Họ làm điều này bằng cách đưa seed thật vào công thức hash, kiểm tra xem kết quả có khớp với giá trị thực tế họ nhận được không.
Nếu Hash(Alice's_seed) thực sự bằng XX thì nó được xác minh là đúng
Bước 14
Khi tất cả seed thật từ người chơi và CoinPoker được dùng để xác minh hash, người chơi cũng có thể kiểm tra xem aggregated_seed có đúng không bằng cách đưa các giá trị còn thiếu vào hàm băm:
Hash(alice_seed + bob_seed + server_seed) = aggregated_seed
Bước 15
Bây giờ aggregate seed đã được từng người chơi xác minh là đúng, Alice hoặc Bob có thể đảo ngược hàm RNG. Bằng cách đưa hash bộ bài cuối cùng và aggregate seed để tính bộ bài ban đầu, người chơi có thể kiểm tra xem nó có cho ra cùng thứ tự bộ bài ban đầu mà họ nhận được ở Bước 4 không.
Bước 16
Nếu kết quả khớp với thứ tự hash bộ bài ban đầu, thì người chơi đã chứng minh thành công rằng họ đã tham gia vào việc xáo bộ bài cuối cùng.
Chứng minh sự tham gia chỉ là khởi đầu. Người chơi cũng có thể xác minh tính ngẫu nhiên của các lá bài trong bộ bài cuối cùng. Điều này có thể thực hiện cho tất cả community card và hand được tiết lộ bởi người chơi khác (không bao gồm hand đã Muck), nhưng để giải thích, chúng tôi sẽ chỉ cho bạn cách xác minh tính công bằng của hai lá bài đầu tiên:
Bước 17
Khi ván bài kết thúc, người chơi nhận được (ngoài tất cả seed thật) các salt và giá trị của hai lá bài đầu tiên được chia. Lưu ý rằng giá trị lá bài và salt đã được sử dụng trong hàm Hash từ Bước 2:
Hash(Kh+salt3) = cc
Bước 18
Bây giờ Alice và Bob đã có giá trị cho tất cả các biến trong hàm băm, họ có thể đảo ngược nó để xác nhận xem Kh có phải là lá bài đầu tiên trong lần xáo bộ bài cuối cùng nhận được ở Bước 12 không.
Nếu Hash(Kh+salt3) cho ra kết quả cc, thì người chơi xác nhận rằng hash bộ bài cuối cùng cc là đúng. Điều này có thể thực hiện cho bất kỳ lá bài nào đã được tiết lộ trên bàn.
Trong trường hợp lá bài chưa chia hoặc hand đã muck, người chơi sẽ không nhận được giá trị lá bài hoặc salt. Họ sẽ có quyền truy cập vào hash, nhưng không thể sử dụng phương pháp này để tiết lộ chúng.
Giải thích Chuyên sâu và Bug Bounty 1.000.000 CHP
Trong khi giải thích trên có thể đã đủ nâng cao với người chơi poker trung bình, nó chỉ mới chạm đến bề mặt đối với những người đam mê mật mã học. Dưới đây là liên kết đến mã nguồn mở trên GitHub:
Với tinh thần minh bạch, chúng tôi cũng trao 1.000.000 CHP cho bất kỳ ai có thể chứng minh hệ thống xáo bài minh bạch có lỗi. Để biết thêm chi tiết về điều kiện bounty và cách nhận, hãy xem trang Bug Bounty chính thức tại đây.