Antes de que el sorteo aceptara una sola participación real, ejecutamos una ronda completa en la mainnet de Ethereum con nuestro propio dinero: USDC real, aleatoriedad real de Chainlink VRF, a una cincuentamilésima parte del tamaño. Funcionó. Cada transacción de abajo está en la cadena pública y puedes abrirlas todas.
| Paso | En Etherscan |
|---|---|
| Primer boleto comprado | 0xd6abe868…a90181 |
| …39 transacciones de compra más | 2.000 boletos, 20,00 USDC en total |
| Sorteo solicitado a Chainlink VRF | 0xa9065817…1d9f9a |
| Aleatoriedad entregada y ronda liquidada | 0xe027c234…3be700 |
La ronda recaudó 20,00 USDC y pagó 20,00 USDC. Como era un ensayo, la misma dirección era la casa y todos los ganadores, así que todo volvió; pero el contrato no lo sabía, y lo repartió exactamente como lo hará en una ronda real.
Los ganadores los sortea Chainlink VRF v2.5, que produce un número aleatorio junto con una prueba criptográfica de que no fue manipulado. La prueba se verifica on-chain antes de que nuestro contrato pueda usarla. Nadie —ni nosotros, ni un minero, ni Chainlink— puede elegir a los ganadores.
Deliberadamente no usamos datos del bloque para esto. Un proponente de bloque puede ver valores como prevrandao antes de publicar, y podría volver a tirar en silencio un sorteo que vale un millón de dólares. Chainlink VRF cuesta más y lo vale.
| Solicitud | 0xa9065817…1d9f9a |
| Cumplimiento | 0xe027c234…3be700 |
| Tiempo de respuesta | 84 segundos |
| LINK realmente cobrado | 0,017217 de 50 en reserva |
Los 100 distintos, todos dentro del rango 0–1.999. El primer boleto sorteado (1501, en rojo) se lleva el reloj; los otros 99 se llevan efectivo.
En el orden en que el contrato los entregó. El boleto 1501 no aparece porque ganó el reloj, un objeto físico que se entrega fuera de la cadena en lugar de transferirse.
| # | Boleto ganador | USDC pagados |
|---|---|---|
| 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 |
Se movió USDC real, llegó aleatoriedad real, la aritmética cuadró exacta, y el contrato se vació hasta el último céntimo sin que nadie interviniera.
Un ensayo que funciona demuestra que el contrato hace lo correcto cuando nadie lo está atacando. Eso es otra cosa que saber si aguanta a alguien con un millón de dólares por ganar, y a eso solo responde una auditoría profesional.
| Qué | Dirección |
|---|---|
| Sorteo de ensayo | 0x65B0A55B0d303381b4bf0aF95D9c1cb67E257a1D |
| Keeper (lo ejecuta sin supervisión) | 0xFEA128525A0787FC512Cd815AA0c5Ab34B1c7e1e |
| USDC | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
| Coordinador de Chainlink VRF | 0xD7f86b4b8Cae7D942340FF628F82735b7a20893a |
Este contrato de ensayo no es el que usará una ronda real. Está configurado a una cincuentamilésima parte de la escala, y sus direcciones de casa y de guardián son la cartera de pruebas. El contrato de producción se despliega aparte y su dirección se publicará aquí y en la página del sorteo antes de que acepte un solo boleto.