SorteoJustoInicio
Auditoría abierta

No confíes en nuestra palabra. Pregúntale a tu IA.

Todo este sorteo es público y se puede recalcular. Copia el enlace del expediente, pégalo en la inteligencia artificial que tú prefieras —ChatGPT, Claude, Gemini— y pídele que lo audite. Te dirá, por su cuenta y sin que nosotros intervengamos, si el sorteo fue limpio.

Audítalo con tu IA

Copiamos por ti un texto listo con las instrucciones de verificación. Pégalo en tu IA y deja que ella saque sus propias conclusiones.

Ver el expediente público (JSON)

Verificado

Pasó 5 de 5 pruebas independientes.

  • La semilla no se cambió después de sellarla

    El sha256 de la semilla revelada coincide con el hash que se publicó antes de vender el primer ticket.

  • La lista de participantes es la que se selló antes del sorteo

    El árbol Merkle de los 50 participantes reproduce exactamente la raíz publicada en el compromiso.

  • Son los que son: sin duplicados ni participantes fantasma

    Cada número y cada comprobante de pago es único, nadie entró después del cierre, y el total declarado coincide con la lista.

  • La aleatoriedad la fija drand, una fuente pública independiente

    Reconsultando el round 29583412 de drand se obtiene el mismo valor que usó el sorteo.

  • El ganador se deriva del algoritmo público, paso por paso

    Recomputando HMAC + muestreo sin sesgo se obtiene el índice 7 (número 0), idéntico al resultado publicado.

Esta misma verificación corre aquí en vivo y la puede repetir cualquiera: el algoritmo es público (más abajo) y los datos también.

Premio

iPhone 15 Pro Max

Participantes

50

Número ganador

000

Ticket RL-008-000

Las pruebas

Hash de la semilla (sellado antes de vender)b7b320d2e3c61f6d91e06374cd46…
Raíz de la lista (Merkle)2589c9ba62ac4b7e859fec5fd139…
Aleatoriedad pública (drand)round 29583412
Valor aleatorioda3453e8876dd87c493d81c376d8…
Semilla revelada (tras el sorteo)4b1d2c3a5f6e7081929394a5b6c7…
Reconsultar la aleatoriedad en drand

El algoritmo, abierto

El ganador no se elige a dedo: se calcula con una fórmula fija a partir de tres datos públicos que nadie puede cambiar a su antojo — la semilla sellada antes de vender, la aleatoriedad pública de drand fijada después de cerrar ventas, y la lista sellada de participantes.

semilla_maestra = HMAC_SHA256(clave = server_seed, mensaje = randomness + ':' + lista_merkle_root). Para i = 0,1,2,...: x = primeros 8 bytes de SHA256(semilla_maestra + uint32_be(i)) como entero de 64 bits; limite = floor(2^64 / N) * N (N = total de participantes); si x < limite entonces ganador_indice = x mod N y termina (muestreo por rechazo, sin sesgo). El ganador es el participante en esa posición de la lista sellada.

Versión v1-hmac-sha256-rejection

La fórmula exacta (reproducible)

El detalle preciso para que tú —o una IA— recalculen el resultado sin adivinar nada. Es el mismo método para los ganadores de un sorteo y para el orden de las 75 bolas del bingo.

Semilla maestra. semilla_maestra = HMAC-SHA256(clave, mensaje) → 32 bytes. clave = los 32 BYTES del server_seed (se decodifica su hex de 64 caracteres a bytes; el server_seed se publica como su sha256 ANTES de cerrar y se revela DESPUÉS). mensaje = utf8( randomness + ':' + lista_merkle_root ): el hex del randomness de drand y el hex de la raíz Merkle, unidos por un único carácter ':' (dos puntos), sin espacios.

Flujo aleatorio. Existe UN contador entero que empieza en 0 y se incrementa en CADA intento (también en los rechazos), compartido a lo largo de TODAS las extracciones. En cada intento: bloque = SHA-256( semilla_maestra (32 bytes) ‖ uint32_be(contador) ), donde uint32_be son los 4 bytes big-endian del contador. x = los primeros 8 bytes del bloque leídos como entero sin signo big-endian de 64 bits.

Muestreo. Muestreo por rechazo SIN reemplazo, sin sesgo de módulo. Se parte de restantes = [0,1,…,n-1] (para el bingo n=75; la bola = indice+1). Para sacar cada elemento: m = cantidad en 'restantes'; limite = floor(2^64 / m) * m. Se piden bloques (avanzando el contador) hasta obtener x < limite; entonces pos = x mod m, se toma restantes[pos] y se elimina de la lista. Se repite hasta agotar los puestos pedidos (75 para la permutación completa de bolas).

Resultado. Bingo: el orden de las 75 bolas es esa permutación (bola = indice+1). Gana la PRIMERA cartilla que completa el patrón recorriendo el orden — 'linea' = una fila de 5 (el centro [col 2][fila 2] cuenta como marcado/libre); 'lleno' = las 25 casillas (centro libre). Empate en la misma bola = co-ganadoras. Para premios consuelo se siguen tomando las siguientes cartillas que completan, una por puesto, sin repetir cartilla.

# 1) Semilla maestra (32 bytes)
semilla_maestra = HMAC_SHA256(
    clave   = bytes(server_seed_hex),          # los 32 bytes del seed revelado
    mensaje = utf8(randomness + ":" + lista_merkle_root)
)

# 2) Permutacion sin reemplazo
#    n = participantes (sorteo)  |  n = 75 (bingo)
contador  = 0                                  # compartido por TODAS las extracciones
restantes = [0, 1, ..., n-1]
orden     = []
while restantes:
    m      = len(restantes)
    limite = floor(2**64 / m) * m              # rechazo: elimina el sesgo de modulo
    while True:
        bloque = SHA256( semilla_maestra + uint32_be(contador) )
        contador += 1
        x = int_big_endian(bloque[0:8])        # 64 bits
        if x < limite:
            pos = x % m
            orden.append(restantes.pop(pos))
            break

# Sorteo:  ganadores = primeros K de 'orden'.
# Bingo:   orden de bolas = indice+1; gana la 1a cartilla que completa el patron.

Árbol Merkle. Las hojas van en el mismo orden que la lista 'participantes' (indice ascendente). Se sube por niveles: el padre de cada par = sha256_hex( bytes(izquierda) ++ bytes(derecha) ), donde bytes(x) decodifica el hash hexadecimal de 64 caracteres a sus 32 bytes; se concatenan los 64 bytes y se aplica sha256. Si un nivel tiene una cantidad impar de nodos, el último se empareja consigo mismo. Se repite hasta quedar un solo nodo: esa es la lista_merkle_root.

Reconsulta el azar público en https://api.drand.sh/<chain_hash>/public/<round>. Versión del algoritmo: v1-permutacion-sin-reemplazo.

Los 50 participantes

La lista completa, sellada antes del sorteo. Son los que son.

#NúmeroTicketPagoRegistrado
0041RL-001-04184bcdd433043…2026-06-08 10:00
1178RL-002-178d72ea8db577d…2026-06-08 11:00
2315RL-003-3156eb8564373a6…2026-06-08 12:00
3452RL-004-452337329cd9b3c…2026-06-08 13:00
4589RL-005-5895a4dbf3b39ef…2026-06-08 14:00
5726RL-006-7264cacfd601d14…2026-06-08 15:00
6863RL-007-863de452ac9aa29…2026-06-08 16:00
7000RL-008-0001985048c4b22…2026-06-08 17:00
8137RL-009-137b160fad5f9f3…2026-06-08 18:00
9274RL-00A-274abf1a58d63c5…2026-06-08 19:00
10411RL-00B-41139702a237107…2026-06-08 20:00
11548RL-00C-5488d1064a6390b…2026-06-08 21:00
12685RL-00D-6851bbdcad214d8…2026-06-08 22:00
13822RL-00E-82269bd464b7ae6…2026-06-08 23:00
14959RL-00F-9590c4ea8033390…2026-06-09 00:00
15096RL-00G-096441ca9a15131…2026-06-09 01:00
16233RL-00H-233074856c7f89a…2026-06-09 02:00
17370RL-00I-3706207b26ef2b6…2026-06-09 03:00
18507RL-00J-507b27b70b327fb…2026-06-09 04:00
19644RL-00K-6443209d911fe82…2026-06-09 05:00
20781RL-00L-7817b84faeea95b…2026-06-09 06:00
21918RL-00M-918a499f9078339…2026-06-09 07:00
22055RL-00N-0558bd8d464bccf…2026-06-09 08:00
23192RL-00O-192cfc442d314ec…2026-06-09 09:00
24329RL-00P-3298be8675c4375…2026-06-09 10:00
25466RL-00Q-466cd54447b4302…2026-06-09 11:00
26603RL-00R-603ae93d9c65bf7…2026-06-09 12:00
27740RL-00S-740385ed98d33b5…2026-06-09 13:00
28877RL-00T-8770d9ee49e1224…2026-06-09 14:00
29014RL-00U-014eb37511f3ac7…2026-06-09 15:00
30151RL-00V-1512fe0a9ff7898…2026-06-09 16:00
31288RL-00W-288d485514375e2…2026-06-09 17:00
32425RL-00X-42514987eea6386…2026-06-09 18:00
33562RL-00Y-562ef10f624dacf…2026-06-09 19:00
34699RL-00Z-6990218dbdd90c4…2026-06-09 20:00
35836RL-010-836fa19278c9c2a…2026-06-09 21:00
36973RL-011-973edff792cffc5…2026-06-09 22:00
37110RL-012-1106e5721de81c6…2026-06-09 23:00
38247RL-013-2474af826850f56…2026-06-10 00:00
39384RL-014-38475d7d3c0ccea…2026-06-10 01:00
40521RL-015-521a3efd0e52727…2026-06-10 02:00
41658RL-016-6584049ddd0b731…2026-06-10 03:00
42795RL-017-795f9ce727ca58d…2026-06-10 04:00
43932RL-018-932242c33e01c08…2026-06-10 05:00
44069RL-019-0697564e82e7e1f…2026-06-10 06:00
45206RL-01A-20635405b405f7b…2026-06-10 07:00
46343RL-01B-343e86e05d21893…2026-06-10 08:00
47480RL-01C-480c0f550008993…2026-06-10 09:00
48617RL-01D-617a9a8609ac913…2026-06-10 10:00
49754RL-01E-75445fc6b909897…2026-06-10 11:00
Sorteo de demostración. Los datos son de ejemplo, pero la verificación y la aleatoriedad de drand son reales.