Prueba de imparcialidad

Guía de prueba de imparcialidad

Cada sorteo de FairPicker usa hash criptográfico SHA-256 y barajado Fisher-Yates. Todos los datos de entrada se divulgan públicamente para que cualquiera pueda verificar el sorteo de forma independiente.

Manipulación previa imposible

Una marca de tiempo del servidor con precisión de nanosegundos se incluye en la semilla al momento del sorteo, haciendo imposible predecir o manipular el resultado de antemano.

Transparencia total

Todos los datos (ID de proyecto, marca de tiempo, Client Seed) y el hash final se publican en el certificado.

Verificación independiente

Cualquier persona puede calcular el mismo hash SHA-256 a partir de los valores publicados para verificar matemáticamente el resultado.

Cómo se forma la semilla

El hash SHA-256 final se genera a partir de tres valores combinados.

Project ID

Identificador único del sorteo

proj_demo_20260226

+

Server Timestamp

Marca de tiempo en nanosegundos al momento del sorteo

1740534312193847623

+

Client Seed

Ingresado por el organizador

Event-2026ABCD7F3E

SHA-256 해시 적용

Final Hash (예시)

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Algoritmo de sorteo (Pseudocódigo)

Se realiza un Fisher-Yates Shuffle usando el hash final como semilla. El hash se recalcula en cada paso para maximizar la impredecibilidad.

// 1. 시드 생성
seed_string = project_id + "-" + server_timestamp_ns + "-" + client_seed
final_hash  = SHA256(seed_string)

// 2. 시드 숫자화 (BigInt)
seed_number = BigInt("0x" + final_hash)

// 3. Fisher-Yates Shuffle
participants = [p1, p2, p3, ..., pN]   // 중복 제거 후 정렬
for i from N-1 down to 1:
    j = seed_number % (i + 1)
    swap(participants[i], participants[j])
    seed_number = SHA256(seed_number)   // 매 스텝마다 해시 갱신

// 4. 당첨자 선정
winners = participants[0 .. winnerCount-1]

* La implementación real sigue esta lógica. Se está considerando publicarlo como código abierto.

¿Qué es el Client Seed?

El Client Seed es una cadena ingresada directamente por el organizador antes del sorteo. Al incluirlo en la semilla,el servidor no puede manipular el resultado por sí solo.

FairPicker genera automáticamente un Client Seed (16 caracteres aleatorios), pero los organizadores pueden ingresar cualquier cadena significativa que prefieran.

⚠️ Importante: El Client Seed se publica en el certificado después del sorteo. Revelarlo antes podría teóricamente permitir la predicción de resultados, por lo que recomendamos mantenerlo privado hasta el sorteo.

Preguntas frecuentes

¿Se puede cambiar el resultado o re-sortear después?

Quiero verificar el hash yo mismo.

¿No puede FairPicker manipular la marca de tiempo del servidor?

¿Por qué Fisher-Yates Shuffle es justo?