QU'EST-CE QUE L'ÉQUITÉ PROUVÉE ?

Rocketpot utilise des algorithmes"Provably Fair". Vous pouvez vérifier le résultat du jeu à l'aide du code source fourni ci-dessous.

Le système Provably Fair est une méthode mathématique utilisée pour garantir que personne, ni les joueurs ni l'opérateur du site, ne peut connaître le résultat du jeu avant qu'il ne commence et que personne ne peut altérer les nombres aléatoires du jeu.


COMMENT CELA FONCTIONNE-T-IL ?

Nous avons généré une chaîne de8 000 000 de hachages SHA256. Chaque élément est le hachage de la représentation de la chaîne minuscule et hexadécimale du hachage précédent.

Le hachage du dernier élément de la chaîne est5de24be2ba88f21070aca0b909a23ba8977a60e047e750dc6bd637aa3b4defc8.

Chaque jeu correspond à un hachage dans la chaîne : Le8 000 000ème élément de la chaîne est le hash du jeu #1 et le premier élément de la chaîne est le hash du jeu#8 000 000.


COMMENT LE VÉRIFIER ?

Pour vérifier qu'un hachage appartient à un jeu #n, il suffit de le hacher n fois et de comparer le résultat avec le hachage final.

Pour calculer le résultat d'un jeu à partir de son hachage :

const CryptoJS = require("crypto-js") ;

function generateGameResultFromSeed(roundSeed, salt) {

  // Nombre de bits les plus significatifs à utiliser
  const nBitsToUse = 52 ;

  // Etape 1. HMAC_SHA256(message=seed, key=salt)
  const hmac = CryptoJS.HmacSHA256(roundSeed, salt) ;
  const roundHash = hmac.toString(CryptoJS.enc.Hex) ;

  // Etape 2. r = 52 bits les plus significatifs
  const roundRandSource = roundHash.slice(0, nBitsToUse / 4) ;
  const r = parseInt(roundRandSource, 16) ;

  // Etape 3. Calculer le crash = r / 2^52, uniformément distribué dans [0 ; 1)
  const twoPower52 = Math.pow(2, nBitsToUse) ;
  let crash = r / twoPower52 ;

  // Étape 4. Calcul du crash normalisé dans la plage 100 - 100B
  crash = Math.floor(97 / crash) ;
  crash = Math.min(crash, 100000000000) ;
  crash = Math.max(crash, 100) ;

  // Étape 5. Prenez les 52 bits suivants comme graines pour la sélection des joueurs dans le tour du Jackpot.
  const jpPlayerRandSource = roundHash.slice(nBitsToUse / 4, 2 * nBitsToUse / 4) ;
  const jpPlayerRandom = parseInt(jpPlayerRandSource, 16) ;

  // Etape 6. Prenez les 52 bits suivants comme graine pour choisir la valeur du Jackpot sur la roue
  const jpValueRandSource = roundHash.slice(2 * nBitsToUse / 4, 3 * nBitsToUse / 4) ;
  const jpValueRandom = parseInt(jpValueRandSource, 16) ;

  return {roundHash, jpPlayerRandom, jpValueRandom, crash, roundSeed} ;
}

Avant d'être utilisé pour calculer le résultat correspondant, chaque hachage de jeu est salé avec la représentation en chaîne hexadécimale minuscule du hachage d'un bloc de bitcoins.

Le numéro du bloc à utiliser a été publié sur le forum Bitcointalk (URL https://bitcointalk.org/index.php?topic=5178349) avant qu'il ne soit miné, ce qui prouve que nous n'avons pas délibérément choisi une chaîne défavorable aux joueurs.

Ce bloc est le#591433 avec le hash0000000000000014ccc7303b1be1fd8c6b2cb5e961d57fbdc57f661db418.

Il est possible de vérifier que nous avons affiché le numéro du bloc à utiliser avant qu'il ne soit miné dans les instantanés suivants du post de l'événement d'ensemencement de bitcointalk : https://archive.is/Mwq4s , http://loyce.club/archive/posts/5224/52246534.html et https://archive.is/r8zCU (merci à LoyceV d'avoir récupéré et archivé le post !)


SÉLECTION DES JOUEURS DU JACKPOT ET POSITIONS DE LA ROUE

Les résultats de la roue du jackpot peuvent être vérifiés avec le code suivant: https://jsfiddle.net/7uackeqo/

Étapes de préparation :

  • 1. Divisez le hachage du tour en 3 parties (52 bits chacune).
  • 2. Générer des entiers à partir de chaque partie.
  • 3. La 1ère partie est pour le multiplicateur (crash point).
  • 4. La 2ème partie sert à sélectionner le joueur du jackpot.
  • 5. La 3ème partie sert à déterminer le résultat du tour de roue du jackpot.

Commentaire : Le processus de génération d'un nombre entier à partir du hachage est similaire à celui de n'importe quel jeu de hasard, nous générons simplement 3 nombres entiers au lieu de 1.

Étapes de sélection du joueur :

  • 1. Ordonner la liste des joueurs par nom d'utilisateur (en minuscules, nous n'autorisons pas les noms en double qui ne diffèrent que par la casse).
  • 2. Additionner les paris de tous les joueurs pour obtenir la valeur totale des paris.
  • 3. Vérifier s'il y a un joueur dont la mise est supérieure à 90% de la valeur totale de la mise.
    a. Si ce n'est pas le cas, passer à l'étape 4.
    b. Sinon - normaliser les mises en limitant la chance de ce joueur à 90%.
  • 4. Assignez chaque joueur à la gamme de valeurs basée sur le montant de sa mise, son nom d'utilisateur (après classement) et sa mise totale (après normalisation, si celle-ci a eu lieu).
  • 5. Utiliser la valeur de l'étape de préparation n°4 comme graine pour la séquence PRNG de mersenne twister.
  • 6. Prendre la prochaine valeur non biaisée de la séquence Mersenne Twister PRNG qui est inférieure à la mise totale (valeur de l'étape #2).
  • 7. Choisissez un joueur qui se trouve dans l'intervalle de la valeur sélectionnée.

Commentaire : Une façon intuitive d'expliquer le processus de sélection des joueurs est que chaque joueur reçoit 1 ticket pour chaque satoshi de la mise. Ensuite, un ticket est choisi en fonction de la valeur de la chaîne de hachage. Étant donné la liste des joueurs (qui se compose des noms des joueurs et de leurs paris) et le hash rond, n'importe qui peut vérifier le résultat de la sélection des joueurs. Une fois que tous les paris sont engagés, il n'y a aucun moyen pour l'opérateur de manipuler la sélection des joueurs.

Étapes du tour de roue :

  • 1. Utiliser la valeur de l'étape de préparation n°5 comme graine pour la séquence PRNG du mersenne twister.
  • 2. Prenez la prochaine valeur non biaisée de la séquence Mersenne Twister PRNG qui est inférieure au nombre de secteurs de la roue du jackpot.
  • 3. Si la valeur sélectionnée est un secteur de respin, prenez la valeur suivante non biaisée de la séquence Mersenne Twister PRNG et répétez jusqu'à ce qu'un secteur non respin soit choisi.

Commentaire : Compte tenu de la configuration de la roue (indices des secteurs et leurs valeurs) et du hachage du tour, n'importe qui peut vérifier le résultat de la rotation de la roue et il n'y a aucun moyen de manipuler le résultat de la rotation après que l'événement de semence se soit produit.

Ce texte a été modifié le 24 septembre 2019.