Tự kiểm tra tính công bằng
Mọi điều trang web nói về hợp đồng đều có thể đối chiếu trong dữ liệu mở của mạng. Dưới đây là các bước kiểm tra từ đơn giản nhất (hai phút) đến sâu nhất (build mã). Với phần lớn các bước, không cần biết lập trình.
Cách kiểm tra vận hành
Trang web có thể bị giả mạo hoặc có thể sai, còn bản ghi trong blockchain thì không. Vì vậy hãy kiểm tra không phải trên trang của dự án mà trong trình khám phá blockchain: một trang độc lập hiển thị nội dung của blockchain (Solscan, Solana Explorer, SolanaFM và những trang tương tự). Hãy tự mở một trong số đó, đừng đi theo liên kết trong tin nhắn của người khác.
Để kiểm tra cần hai địa chỉ: chương trình (hợp đồng) và token. Trang “Bảo mật” hiển thị chúng. Hãy đối chiếu chúng thêm ở ít nhất hai nơi độc lập (kho mã, các kênh chính thức): nếu các địa chỉ lệch nhau, đang có người tìm cách lừa bạn.
Kiểm tra nhanh (2–10 phút)
| Kiểm tra gì | Xem ở đâu | Phải như thế nào | Nếu khác |
|---|---|---|---|
| 1. Có thể in thêm token mới không | Trang của token trong trình khám phá, trường Mint Authority | Trống (đã thu hồi) | Người có địa chỉ ghi ở đó có thể phát hành bao nhiêu token tùy ý và làm token của bạn mất giá. |
| 2. Có thể đóng băng token không | Cùng trang đó, trường Freeze Authority | Trống | Chủ sở hữu có thể đóng băng bất kỳ ví nào, kể cả ví của bạn. |
| 3. Ai có thể thay đổi mã | Trang của chương trình, trường Upgrade Authority | Trống (mã bị đóng băng) hoặc địa chỉ multisig có độ trễ cập nhật | Một địa chỉ thường duy nhất nghĩa là chủ sở hữu có thể tải lên quy tắc khác bất cứ lúc nào. |
| 4. Tổng cung của token | Trang của token: Supply | Không quá 100.000.000.000 và chỉ giảm do đốt | Nhiều hơn nghĩa là nguồn cung đã bị tăng. |
| 5. Token có trùng khớp không | Địa chỉ token trong ví của bạn so với trang “Bảo mật” | Hai địa chỉ giống hệt nhau từng ký tự | Đây không phải FAIRDRUM thật. Đừng mua và đừng nạp. |
| 6. Trong kho có đủ token không | Địa chỉ kho từ trang “Bảo mật”, số dư token; các khoản trong hũ trên trang “Kinh tế” | Số dư của kho không ít hơn tổng các hũ (cộng thêm số dư trong game của người chơi) | Hợp đồng phải luôn được bảo chứng đủ bằng token. Lệch nhau là một tín hiệu nghiêm trọng. |
Bảng trên cùng của trang “Bảo mật” đọc đúng các trường này ngay từ mạng và đánh dấu ✔ hoặc ⚠, nhưng đừng chỉ dựa vào nó: hãy tự đối chiếu một lần.
Kiểm tra lượt quay của bạn
Mỗi lượt quay để lại một bản ghi trên mạng, và kết quả trên màn hình có thể đối chiếu với nó.
Tìm giao dịch
Sau lượt quay, dưới nút sẽ xuất hiện liên kết “Giao dịch”. Nó mở bản ghi trong trình khám phá. Hoặc hãy mở lịch sử ví của bạn trong trình khám phá và chọn giao dịch với chương trình FAIRDRUM.
Phải thấy: trạng thái Success và danh sách các lệnh.
Tìm hai cặp lời gọi
Trong giao dịch thứ nhất có lời gọi Switchboard (yêu cầu số ngẫu nhiên, commit) và lời gọi chương trình FAIRDRUM
spin_commit(đặt cược). Trong giao dịch thứ hai: lời gọi Switchboard (tiết lộ, reveal) vàspin_settle(tính kết quả). Tên hiển thị trong các trình khám phá hơi khác nhau (SpinCommit, spinCommit).So sánh thứ tự
Tiền cược được ghi trước khi con số được tiết lộ: giao dịch thứ nhất có số block (Slot) nhỏ hơn giao dịch thứ hai. Nghĩa là cả bạn lẫn dự án đều không biết kết quả tại thời điểm đặt cược.
Xem nhật ký (Logs) của giao dịch thứ hai
Ở đó ghi sự kiện
SpinSettledvới số lượt quay, các giải, các lần trúng mini jackpot, jackpot và siêu jackpot. Đó chính là những con số vòng quay đã hiển thị.Kiểm tra chủ sở hữu của số ngẫu nhiên
Tài khoản ngẫu nhiên nêu trong giao dịch phải thuộc về chương trình Switchboard. Hợp đồng tự từ chối mọi tài khoản khác, nhưng vẫn nên chắc chắn: hãy mở tài khoản đó và xem trường Owner.
Kiểm tra sâu
Build mã và so sánh hash
Lấy kho mã của dự án trên GitHub (liên kết sẽ xuất hiện sau khi công bố), build chương trình ở chế độ tái lập được (anchor build --verifiable) và so sánh hash với bản trên mạng (solana-verify). Trùng khớp nghĩa là trên mạng đang chạy đúng phần mã mở này.
Đọc các hằng số
Mọi con số của trò chơi gom trong một tệp consts.rs: các tỷ lệ, xác suất, thang giải thưởng, phí, thời hạn. Trang web vẽ các bảng của mình đúng từ tệp đó, nên giữa trang web và hợp đồng không được phép có sai lệch.
Chạy kiểm thử
Trong kho mã có kiểm thử cho quy tắc và các phép tính (cargo test) và cho ứng dụng khách (npm test). Chúng kiểm tra, chẳng hạn, rằng tổng mọi quỹ và số dư không vượt quá số token trong kho.
Mổ xẻ cách chọn kết quả
Từ 32 byte số ngẫu nhiên được tiết lộ, hợp đồng tạo các con số qua SHA-256. Với vòng quay chính là các khối SHA-256("FDRM-M" + số ngẫu nhiên + số block), từ đó lấy từng 4 byte (little-endian) thành một con số cho mỗi lượt quay được thực hiện. Với vòng quay vàng: SHA-256("FDRM-G" + số ngẫu nhiên + số thứ tự lượt quay được thực hiện). Con số được so với các ngưỡng tính theo phần của 232; bản thân các ngưỡng phụ thuộc vào khối lượng tuần và kích thước các hũ tại thời điểm tính, nên chỉ có thể tính lại trọn vẹn một lượt quay cũ cùng với trạng thái chương trình ở slot đó. Các công thức nằm trong math.rs và engine.rs.
Đọc nhật ký theo giai đoạn
Bất kỳ ai cũng có thể trích xuất từ mạng tất cả các sự kiện SpinSettled trong một giai đoạn và tự đếm tần suất ra vàng cùng kích thước các hũ. Hãy so sánh với “Xác suất”. Với số lượt quay ít, độ dao động là rất lớn: để thấy xác suất 1%, cần hàng nghìn lượt quay.
Những gì không kiểm tra được
- Tính trung thực của oracle. Số ngẫu nhiên đến từ mạng Switchboard. Hợp đồng kiểm tra rằng con số đến từ đúng tài khoản và được tiết lộ sau khi đặt cược, nhưng không thể kiểm tra việc các nút của oracle không thông đồng. Đây là phụ thuộc bên ngoài.
- Việc không có lỗi trong mã. Kiểm thử và mã mở tăng độ tin cậy, nhưng không thay thế được kiểm toán độc lập. Chừng nào liên kết tới kiểm toán chưa được đăng, tức là chưa có kiểm toán.
- Tương lai. Chừng nào quyền cập nhật chưa bị thu hồi, quy tắc có thể bị thay đổi bằng phiên bản mới. Hãy theo dõi các giao dịch cập nhật chương trình.
- Những gì quản trị viên làm ngoài hợp đồng. Việc bán token của họ, marketing, các quyết định niêm yết, hợp đồng không kiểm soát. Các khoản chi từ quỹ quảng bá công khai, nhưng chi “vào việc gì” thì hợp đồng không kiểm tra.