Trước khi xổ số nhận một lượt tham gia thật nào, chúng tôi đã chạy trọn một lượt trên Ethereum mainnet bằng tiền của chính mình — USDC thật, số ngẫu nhiên Chainlink VRF thật, ở quy mô một phần năm mươi nghìn. Nó chạy được. Mọi giao dịch bên dưới đều nằm trên chain công khai và bạn mở được hết.
| Bước | Trên Etherscan |
|---|---|
| Vé đầu tiên được mua | 0xd6abe868…a90181 |
| …39 giao dịch mua nữa | 2.000 vé, tổng 20,00 USDC |
| Yêu cầu quay gửi tới Chainlink VRF | 0xa9065817…1d9f9a |
| Số ngẫu nhiên đã về và lượt được tất toán | 0xe027c234…3be700 |
Lượt này thu 20,00 USDC và trả ra 20,00 USDC. Vì đây là buổi chạy thử, cùng một địa chỉ vừa là nhà cái vừa là mọi người trúng, nên tất cả đều quay về — nhưng hợp đồng không biết điều đó, và đã chia đúng như nó sẽ chia trong một lượt thật.
Người trúng được quay bởi Chainlink VRF v2.5, thứ tạo ra một số ngẫu nhiên kèm bằng chứng mật mã rằng nó không bị can thiệp. Bằng chứng được kiểm tra on-chain trước khi hợp đồng của chúng tôi được phép dùng. Không ai — không phải chúng tôi, không phải thợ đào, không phải Chainlink — chọn được người trúng.
Chúng tôi cố ý không dùng dữ liệu block cho việc này. Người đề xuất block có thể thấy các giá trị như prevrandao trước khi công bố, và có thể lặng lẽ quay lại một lượt trị giá cả triệu đô. Chainlink VRF đắt hơn, và xứng đáng.
| Yêu cầu | 0xa9065817…1d9f9a |
| Hoàn tất | 0xe027c234…3be700 |
| Thời gian phản hồi | 84 giây |
| LINK thực sự bị tính | 0,017217 trên 50 giữ làm dự trữ |
Cả 100 vé đều khác nhau, đều nằm trong khoảng 0–1.999. Vé được quay đầu tiên (1501, màu đỏ) lấy đồng hồ; 99 vé còn lại lấy tiền mặt.
Theo đúng thứ tự hợp đồng đã trả. Vé 1501 không có trong bảng vì nó trúng đồng hồ — một vật thể được trao tay ngoài chain chứ không phải một giao dịch chuyển tiền.
| # | Vé trúng | USDC đã trả |
|---|---|---|
| 1 | 1097 | 0.08 |
| 2 | 56 | 0.08 |
| 3 | 1962 | 0.08 |
| 4 | 468 | 0.08 |
| 5 | 1576 | 0.08 |
| 6 | 75 | 0.08 |
| 7 | 251 | 0.08 |
| 8 | 998 | 0.08 |
| 9 | 731 | 0.08 |
| 10 | 1999 | 0.08 |
| 11 | 391 | 0.08 |
| 12 | 766 | 0.08 |
| 13 | 1672 | 0.08 |
| 14 | 1065 | 0.08 |
| 15 | 869 | 0.08 |
| 16 | 1547 | 0.08 |
| 17 | 146 | 0.08 |
| 18 | 1788 | 0.08 |
| 19 | 887 | 0.08 |
| 20 | 558 | 0.08 |
| 21 | 1040 | 0.08 |
| 22 | 395 | 0.08 |
| 23 | 1370 | 0.08 |
| 24 | 846 | 0.08 |
| 25 | 1631 | 0.08 |
| 26 | 1581 | 0.08 |
| 27 | 696 | 0.08 |
| 28 | 755 | 0.08 |
| 29 | 986 | 0.08 |
| 30 | 1652 | 0.08 |
| 31 | 1664 | 0.08 |
| 32 | 625 | 0.08 |
| 33 | 1123 | 0.08 |
| 34 | 847 | 0.08 |
| 35 | 52 | 0.08 |
| 36 | 1471 | 0.08 |
| 37 | 895 | 0.08 |
| 38 | 747 | 0.08 |
| 39 | 598 | 0.08 |
| 40 | 1092 | 0.08 |
| 41 | 1755 | 0.08 |
| 42 | 1585 | 0.08 |
| 43 | 1514 | 0.08 |
| 44 | 763 | 0.08 |
| 45 | 1235 | 0.08 |
| 46 | 179 | 0.08 |
| 47 | 1503 | 0.08 |
| 48 | 913 | 0.08 |
| 49 | 1003 | 0.08 |
| 50 | 245 | 0.08 |
| 51 | 555 | 0.08 |
| 52 | 1388 | 0.08 |
| 53 | 213 | 0.08 |
| 54 | 619 | 0.08 |
| 55 | 1485 | 0.08 |
| 56 | 935 | 0.08 |
| 57 | 610 | 0.08 |
| 58 | 715 | 0.08 |
| 59 | 107 | 0.08 |
| 60 | 1158 | 0.08 |
| 61 | 965 | 0.08 |
| 62 | 1764 | 0.08 |
| 63 | 660 | 0.08 |
| 64 | 1453 | 0.08 |
| 65 | 1175 | 0.08 |
| 66 | 1810 | 0.08 |
| 67 | 659 | 0.08 |
| 68 | 633 | 0.08 |
| 69 | 47 | 0.08 |
| 70 | 830 | 0.08 |
| 71 | 743 | 0.08 |
| 72 | 201 | 0.08 |
| 73 | 461 | 0.08 |
| 74 | 589 | 0.08 |
| 75 | 1510 | 0.08 |
| 76 | 1919 | 0.08 |
| 77 | 883 | 0.08 |
| 78 | 1297 | 0.08 |
| 79 | 478 | 0.08 |
| 80 | 121 | 0.08 |
| 81 | 1829 | 0.08 |
| 82 | 1634 | 0.08 |
| 83 | 1523 | 0.08 |
| 84 | 1749 | 0.08 |
| 85 | 989 | 0.08 |
| 86 | 1386 | 0.08 |
| 87 | 576 | 0.08 |
| 88 | 741 | 0.08 |
| 89 | 480 | 0.08 |
| 90 | 258 | 0.08 |
| 91 | 1371 | 0.08 |
| 92 | 1206 | 0.08 |
| 93 | 1941 | 0.08 |
| 94 | 1400 | 0.08 |
| 95 | 484 | 0.08 |
| 96 | 1410 | 0.08 |
| 97 | 686 | 0.08 |
| 98 | 108 | 0.08 |
| 99 | 812 | 0.08 |
USDC thật đã chuyển, số ngẫu nhiên thật đã về, phép tính khớp chính xác, và hợp đồng tự dốc sạch tới đồng cuối cùng mà không cần ai can thiệp.
Một buổi chạy thử thành công cho thấy hợp đồng làm đúng khi không ai tấn công nó. Đó là câu hỏi khác với việc nó có chống được một người có cả triệu đô để giành hay không, và chỉ một cuộc audit chuyên nghiệp mới trả lời được câu thứ hai.
| Vai trò | Địa chỉ |
|---|---|
| Xổ số chạy thử | 0x65B0A55B0d303381b4bf0aF95D9c1cb67E257a1D |
| Keeper (chạy tự động, không cần trông) | 0xFEA128525A0787FC512Cd815AA0c5Ab34B1c7e1e |
| USDC | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
| Chainlink VRF coordinator | 0xD7f86b4b8Cae7D942340FF628F82735b7a20893a |
Hợp đồng chạy thử này không phải là hợp đồng mà một lượt thật sẽ dùng. Nó được cấu hình ở quy mô một phần năm mươi nghìn, và địa chỉ nhà cái cùng guardian của nó là ví test. Hợp đồng production được deploy riêng và địa chỉ của nó sẽ được công bố ở đây và trên trang xổ số trước khi nó nhận một tấm vé nào.