¿QUÉ ES PROVABLY FAIR?Rocketpot utiliza algoritmos ProvablyFair. Puede verificar el resultado del juego con el código fuente que se proporciona a continuación. El sistema Provably Fair es un método matemático que se utiliza para garantizar que nadie, ni los jugadores ni el operador del sitio, pueda conocer el resultado del juego antes de que comience y que nadie pueda manipular los números aleatorios del juego. |
¿CÓMO FUNCIONA?Hemos generado una cadena de 8.000 El hash del último elemento de la cadena es 5de24be2ba88f21070aca0b909a23ba8977a60e047e750dc6bd637aa3b4defc8 Cada juego se asigna a un hash en la cadena: El elemento 8.000 |
¿CÓMO SE VERIFICA?Para verificar que un hash pertenece a un juego #n, basta con hacer un hash n veces y comparar el resultado con el hash final. Para calcular el resultado de un juego a partir de su hash |
const CryptoJS = require("crypto-js"); function generateGameResultFromSeed(roundSeed, salt) { // Número de bits más significativos a utilizar const nBitsToUse = 52; // Paso 1. HMAC_SHA256(mensaje=semilla, clave=sal) const hmac = CryptoJS.HmacSHA256(roundSeed, salt); const roundHash = hmac.toString(CryptoJS.enc.Hex); // Paso 2. r = 52 bits más significativos const roundRandSource = roundHash.slice(0, nBitsToUse / 4); const r = parseInt(roundRandSource, 16); // Paso 3. Calcular el choque = r / 2^52, distribuido uniformemente en [0; 1) const twoPower52 = Math.pow(2, nBitsToUse); let crash = r / twoPower52; // Paso 4. Calcular el crash normalizado en el rango 100 - 100B crash = Math.floor(97 / crash); crash = Math.min(crash, 100000000000); crash = Math.max(crash, 100); // Paso 5. Tomar los siguientes 52 bits como semilla para la selección de jugadores en la ronda del Jackpot const jpPlayerRandSource = roundHash.slice(nBitsToUse / 4, 2 * nBitsToUse / 4); const jpPlayerRandom = parseInt(jpPlayerRandSource, 16); // Paso 6. Tomar los siguientes 52 bits como semilla para elegir el valor del Jackpot en la rueda const jpValueRandSource = roundHash.slice(2 * nBitsToUse / 4, 3 * nBitsToUse / 4); const jpValueRandom = parseInt(jpValueRandSource, 16); return {roundHash, jpPlayerRandom, jpValueRandom, crash, roundSeed};
}
Antes de ser utilizado para calcular el resultado correspondiente, cada hash del juego es salado con la representación en minúsculas y hexadecimal del hash de un bloque de bitcoin. El número del bloque a utilizar fue publicado en el foro de Bitcointalk (URL https://bitcointalk.org/index.php?topic=5178349) antes de ser minado, lo que demuestra que no hemos elegido deliberadamente una cadena desfavorable para los jugadores. Este bloque es #591433 Se puede comprobar que publicamos el número del bloque a utilizar antes de ser minado en las siguientes instantáneas del post del evento de siembra de bitcointalk: https://archive.is/Mwq4s , http://loyce.club/archive/posts/5224/52246534.html y https://archive.is/r8zCU (¡gracias LoyceV por raspar y archivar el post!) |
SELECCIÓN DE JUGADORES DEL BOTE Y POSICIONES DE LA RUEDALos resultados de la rueda del bote se pueden verificar con el siguiente código:https://jsfiddle.net/7uackeqo/ Pasos de preparación:
Comentario: El proceso de generación de un entero a partir del hash es similar al de cualquier juego de choque, sólo que generamos 3 enteros en lugar de 1. Pasos de la selección del jugador:
Comentario: Una forma intuitiva de explicar el proceso de selección de jugadores es que cada jugador recibe 1 boleto por cada satoshi de la apuesta. Y luego se elige un boleto basado en el valor de la cadena de hash. Dada la lista de jugadores (que consiste en los nombres de los jugadores y sus apuestas) y el hash de la ronda, cualquiera puede verificar el resultado de la selección de jugadores. Una vez que todas las apuestas están comprometidas, no hay forma de que el operador manipule la selección de jugadores. Pasos de la rueda:
Comentario: Dada la configuración de la rueda (índices de los sectores y sus valores) y el hash de la ronda, cualquiera puede verificar el resultado de la rueda y no hay forma de manipular el resultado de la rueda después de que el evento de la semilla haya ocurrido. Este texto ha sido editado el 24 de septiembre de 2019. |