Điều gì diễn ra on-chain trong một ván Crash?
Mỗi ván Crash được tạo thành từ ba giao dịch on-chain, theo thứ tự sau:- Cam kết: trước khi mở cược, backend tạo ngẫu nhiên một giá trị bí mật 32 byte và công bố hash SHA-256 của nó on-chain (chỉ lệnh
start_new_round). Đây là bản cam kết: kể từ lúc này, chỉ đúng giá trị bí mật đó mới có thể thanh toán ván. Bản cam kết được công khai trong sự kiệnCrashRoundPreparedcủa giao dịch. - Đặt cược: người chơi đặt cược. Giá trị bí mật vẫn được giữ kín; bản cam kết đảm bảo nó không thể bị đánh tráo.
- Bắt đầu ván / ghi nhận entropy: khi ván bắt đầu (chỉ lệnh
start_game), chương trình đọc slot hash gần nhất từ sysvarSlotHashescủa Solana và lưu vào ván. Ứng dụng gọi giá trị này là block hash của ván. Lúc này điểm nổ đã được xác định hoàn toàn (nó là một hàm thuần của slot hash đã lưu và giá trị bí mật đã cam kết), nhưng ai không biết giá trị bí mật thì chưa thể tính ra. Giá trị này được công khai trong sự kiệnCrashGameStarted. - Ván diễn ra: hệ số nhân tăng dần và người chơi chốt lời.
- Tiết lộ: backend gửi giá trị bí mật (chỉ lệnh
crash). Chương trình xác minh on-chain rằngsha256(secret)bằng bản cam kết (không khớp thì giao dịch thất bại), sau đó tự tính điểm nổ và hoàn tất ván. Sự kiệnCrashRoundFinalizedcông bố giá trị bí mật, slot hash và điểm nổ cuối cùng.
Công thức chính xác của điểm nổ là gì?
Điểm nổ được suy ra chính xác như sau (đây là phép tính mà chương trình on-chain thực hiện: toán số nguyên, không có bất ngờ do làm tròn):- Thứ tự nối là blockhash trước, rồi đến secret.
Xđược đọc theo big-endian từ 4 byte đầu của đầu ra SHA-256.- Các phép chia đều là phép chia lấy phần nguyên (floor).
- Ngưỡng dưới
max(10000, …)nghĩa là hệ số nhân không bao giờ thấp hơn 1.00x, và giới hạn trên củaXngăn mẫu số nhỏ tới mức phi lý.
Ví dụ tính toán
VớiX = 0xABCD1234 (2,882,343,476) và lợi thế hiện tại 1.5% (edge_bps = 150):
Phân phối trông như thế nào
Công thức ánh xạ mộtX phân phối đều thành đường cong crash kinh điển. Xác suất một ván đạt ít nhất hệ số nhân m xấp xỉ:
Điều gì được đảm bảo, điều gì không
Được chương trình thực thi:- Sau khi bản cam kết đã lên chuỗi, nhà vận hành không thể thay đổi giá trị bí mật của ván: giao dịch tiết lộ sẽ thất bại với bất kỳ giá trị bí mật nào có hash không khớp.
- Một khi ván đã bắt đầu (slot hash đã được lưu), điểm nổ đã được cố định. Chốt lời sớm, muộn hay với số lượng lớn đều không thay đổi gì: kết quả đã được xác định trước khi hệ số nhân bắt đầu tăng.
- Điểm nổ do chương trình tính, không phải do backend báo cáo. Một giá trị sai không thể được ghi lên chuỗi.
- Mọi thứ cần để xác minh (bản cam kết, slot hash, giá trị bí mật, điểm nổ cuối cùng) đều được công bố vĩnh viễn trong các sự kiện on-chain.
- Thời điểm bắt đầu. Nhà vận hành biết giá trị bí mật trước khi ván bắt đầu, và backend của họ quyết định khi nào gửi giao dịch bắt đầu ván. Vì các slot hash gần đây là công khai, về nguyên tắc họ có thể tính trước hệ số nhân tiềm năng cho các slot ứng viên và canh thời điểm bắt đầu để tác động tới slot hash nào được ghi nhận. Cơ chế không ngăn được điều này; nó khiến điều này có thể quan sát được: thời điểm bắt đầu ván là công khai, và mọi sai lệch có hệ thống sẽ lộ ra trong thống kê các điểm nổ đã công bố, mà ai cũng có thể tính lại hàng loạt.
- Hủy ván. Sau khi ván bắt đầu, nhà vận hành biết kết quả trước người chơi, và họ có thể hủy một ván bất lợi thay vì tiết lộ. Có hai giới hạn cứng: việc hủy hoàn lại toàn bộ mọi khoản tiền cược (chương trình không có đường tịch thu nào), và mọi lần hủy đều phát ra một sự kiện công khai; tần suất hủy là dấu hiệu nhận biết on-chain. Việc hủy tồn tại như một đường khôi phục khi mất giá trị bí mật (ví dụ backend gặp sự cố giữa lúc cam kết và lúc tiết lộ) và dự kiến gần như không bao giờ được dùng.