Verificación pública del sorteo
No tenés que confiar en nosotros: los ganadores se derivan de la blockchain de Bitcoin y de una lista de tickets publicada de antemano. Todo lo necesario para auditarlo está en esta página.
Datos del sorteo
01 · LISTA CONGELADA
Antes del sorteo publicamos la lista de los 0 tickets y su huella digital (SHA-256). No se puede cambiar sin que se note.
02 · AZAR DE BITCOIN
El azar sale del bloque objetivo de Bitcoin — nadie (ni nosotros) puede predecirlo ni manipularlo.
03 · UN ROLL POR PREMIO
La fórmula ids[sha256(hash:k) mod N] se repite con k=0,1,2… Cada roll válido asigna el siguiente premio; inválidos o repetidos se saltan y queda registrado.
Huella del snapshot: se publica al congelar la lista
Hash del bloque objetivo: todavía no minado
El verificador se habilita cuando el snapshot esté congelado y el bloque objetivo minado.
O a mano, con Python
Verifica el checksum del snapshot y que CADA iteración k publicada salga del hash del bloque. Los saltos (ticket invalidado o participante ya premiado) están declarados con su motivo en la misma API.
import hashlib, json, urllib.request
data = json.load(urllib.request.urlopen("https://sorteos.holy.gg/api/public/verificacion"))
ids, bh = data["snapshot"]["entryIds"], data["giveaway"]["btcBlockHash"]
# 1) el checksum publicado coincide con la lista congelada
canon = json.dumps(ids, separators=(",", ":")).encode()
assert hashlib.sha256(canon).hexdigest() == data["snapshot"]["checksumSha256"]
# 2) cada iteración k publicada sale de la fórmula ids[sha256(hash:k) mod N]
for r in data["rolls"]:
d = hashlib.sha256(f"{bh}:{r['k']}".encode()).hexdigest()
assert ids[int(d, 16) % len(ids)] == r["entryId"], f"k={r['k']} no coincide"
print("OK — la secuencia completa sale del bloque de Bitcoin")
for r in data["rolls"]:
print(r["k"], r["entryId"], r["status"], r.get("prizeRank") or "", r.get("reason") or "")¿Dudas sobre el proceso? Escribinos en el Discord de HolyHosting · Volver al sorteo