SpyDota usa el algoritmo Provably Fair para que cualquier jugador pueda comprobar la imparcialidad de una partida. El resultado de una caja o de un upgrade lo determinan una seed del servidor fijada de antemano, tu seed del cliente y el número de partida, así que no se puede manipular una vez empezada la partida.

La seed del servidor es el valor secreto del que se calcula el resultado de la partida. Para recalcular una partida hay que revelar la seed: la tarjeta de la partida lo hace por ti.
Pulsa tu avatar en la cabecera, abre la pestaña «Historial» y elige «Cajas» o «Upgrades».
El botón está al final de la fila de la partida (en el móvil, desliza la tabla hacia la derecha). En la tarjeta que se abre, pulsa «Verificar» otra vez.
Para verificar la partida hay que revelar la seed del servidor. Crearemos un nuevo par de seeds: la seed actual se revelará y se incluirá en la verificación, y los números de partida empezarán de nuevo.
Si la seed aún es secreta, la tarjeta te ofrecerá «Cambiar seeds y verificar». La seed antigua se revelará y podrás verificar todas las partidas jugadas con ella. Las partidas nuevas empiezan a contar desde 1; las ya jugadas no cambian. Si la seed ya está revelada, este paso no aparece.
Tu navegador recalculó la partida con la seed revelada y el resultado coincide con el registro del servidor.
Se abrirá la página de verificación. «Coincide» significa que tu navegador recalculó la partida y obtuvo lo mismo que registró el servidor. Compara el objeto marcado como «salió» con la fila del historial; en un upgrade, mira «Victoria» o «Derrota».
Las partidas jugadas antes del lanzamiento de Provably Fair, los regalos y las entregas no tienen botón «Verificar». Si el objeto se sustituyó, la verificación se refiere al drop original. Si ves «No coincide», guarda la seed del servidor y escribe a soporte.
Antes de la partida ves el hash de la seed del servidor, así que el servidor ya no puede cambiar los datos de origen sin que se note.
Tu seed y el número de partida participan en el cálculo, así que el resultado no lo forma solo el servidor.
Introduce los datos de una partida. El cálculo se hace en tu navegador y no se envía nada al servidor.
Introduce los datos de la partida y pulsa «Verificar»: aquí aparecerán el número y el objeto.
Seed del servidor + Tu seed + Número de partida = Resultado justo
El servidor elige una seed del servidor aleatoria y muestra solo su hash SHA-256. Después no se puede cambiar la seed: el hash dejaría de coincidir.
Para cada partida se calcula un HMAC-SHA256. La clave es la seed del servidor como cadena hex de 64 caracteres, tal cual, sin decodificarla a bytes. El mensaje se forma con el tipo de juego, el juego, tu seed del cliente y el número de partida.
Los primeros 8 caracteres hex del hash dan un número de 0 a 4 294 967 295. De él sale el ticket de 1 a 100 000 000: floor(número × 100 000 000 / 2^32) + 1.
En la tabla de probabilidades del momento de la partida, cada objeto tiene su propio rango de tickets. Se obtiene el objeto en cuyo rango cae el ticket.
El umbral es floor(probabilidad × 100 000 000). El upgrade gana si el ticket no supera el umbral.
La seed del servidor se revela cuando cambias las seeds. Después puedes recalcular cualquier partida del par en tu navegador, en esta página, o con tu propio código.
La clave es la cadena hex de la seed del servidor tal cual (64 caracteres), no los bytes decodificados de ella. Aquí es donde fallan la mayoría de las comprobaciones hechas por cuenta propia.