Langue
(Cliquez pour changer)
Français
*Traduit automatiquement
Devise
(Cliquez pour changer)
$
Partagez-le:
Partager cette page sur Facebook Partager cette page sur Twitter
29 Jan 2023 19:48:37 UTC

VALIDATION DE LA LOTERIE

Comment le numéro gagnant est-il généré ?

Lottocryptos utilise un système " Provably Fair " pour ses loteries afin d'obtenir une transparence dans la génération des numéros gagnants.

La graine de la génération de numéros aléatoires gagnants est composée de quatre parties :

  • A - Numéro aléatoire allant jusqu'à 128 chiffres. Il est généré chaque semaine lorsque la loterie commence et est différent pour chaque crypto-monnaie.
  • B - L'identifiant de transaction du dernier joueur. L'ID de transaction du dernier joueur vérifié de la loterie.
  • C - Le nombre total de billets de loterie vendus dans la loterie.
  • D - Le nombre de joueurs vérifiés de la loterie.
  • Pour obtenir la graine pour la génération aléatoire du numéro gagnant, le processus suivant est suivi.

    Chaque partie est chiffrée avec SHA512 et concaténée. Puis elle est à nouveau cryptée avec SHA512 et ses caractères sont convertis en leur valeur ASCII correspondante. La graine utilisée pour la génération du nombre aléatoire est cette valeur.

    La graine est utilisée pour la génération du nombre aléatoire

    Afin de pouvoir effectuer toutes les vérifications jugées appropriées, nous fournissons aux utilisateurs le code source utilisé pour obtenir le nombre aléatoire et les outils permettant d'effectuer un test d'aléa.

    CODE SOURCE
    Dossier: classes/class.Random.php
    VersionPHP: 8.0.18
    Dernière mise à jour: 17-Septembre-2022 10:57:44 UTC
    Taille: 3231 Octets
    <?php
    function Random_number($length){
        
    $result '';
        
    //Generate random number.    
        
    for($i=0;$i<$length;$i++){
            
    $result $result.random_int(0,9);
        }
        
        
    //Remove leading zeros.    
        
    $result ltrim($result,'0');
        if(
    $result == ''){
            
    $result 0;
        }
    return 
    $result;    
    }

    function 
    Random_string_to_int($string){
        
    $result '';
        
    //Count characters.
        
    $length strlen($string);
        
        
    //Ord ->Convert a character to its ASCII decimal value.
        
    for($i=0;$i<$length;$i++){
            
    $result $result.ord($string[$i]); 
        }
    return 
    $result;    
    }

    function 
    Random_int_to_string($number){
        
    //Convert integer to string.    
        
    $result number_format($number,0,'','');
    return 
    $result;    
    }

    function 
    Random_hash($data,$algo){
        
    //Hash string with an algo.    
        
    $result hash($algo,$data);
    return 
    $result;    
    }

    function 
    Random_basic_seed(){
        
    $result Random_number(128);
    return 
    $result;
    }

    function 
    Random_gmp_winner_number($basic_seed,$player_seed,$n_tickets,$n_players){
        
    $result '';
        
    //Convert integer to string.
        
    $n_tickets Random_int_to_string($n_tickets);
        
        
    //Hash all the parts
        
    $basic_seed Random_hash($basic_seed,'sha512');
        
    $player_seed Random_hash($player_seed,'sha512');
        
    $n_tickets_seed Random_hash($n_tickets,'sha512');
        
    $n_players_seed Random_hash($n_players,'sha512');        
        
        
    //Join all parts and hash
        
    $seed Random_hash($basic_seed.$player_seed.$n_tickets_seed.$n_players_seed,'sha512');
        
        
    //Convert letters to numbers.
        
    $seed Random_string_to_int($seed);
        
        
    //Insert seed into number generator. Only integers.
        
    gmp_random_seed($seed);
        
        
    //Generate random number.
        
    $value gmp_random_range(1,$n_tickets);
        
        
    //Convert GMP integer to string.    
        
    $result gmp_strval($value);
    return 
    $result;
    }
    /*
    //WINNER NUMBER
    $basic_seed = Random_basic_seed();
    $player_seed = 'f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16';//Transaction ID
    $n_players = 1;
    $n_tickets = 100000000;
    echo Random_gmp_winner_number($basic_seed,$player_seed,$n_tickets,$n_players);

    //RANDOMNESS TEST (Can be CPU intensive with more cycles / rounds)
    $cycles = 1;
    $runs = 1000;
    $tickets = 5;
    $player_seed = 'f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16';//Transaction ID
    $players = 5;

    $n_runs = 0;
    $probs = 0;
    $results = array();
    $results_prob = array();
    for($i=0;$i<$cycles;$i++){
        for($k=0;$k<$runs;$k++){
            $basic_seed = Random_basic_seed();
            $number = Random_gmp_winner_number($basic_seed,$player_seed,$tickets,$players);
            if(array_key_exists($number,$results)){
                $results[$number]++;
            }
            else{
                $results[$number] = 1;
            }
        }
    }
    ksort($results);?>

    <table>
        <thead>
            <td>Number</td>
            <td>Number of Times</td>
            <td>Probability</td>            
        </thead><?php 
    foreach($results as $key => $value){ 
        $n_runs += $value;
        $x = number_format((($value * 100)/($cycles * $runs)),3);
        $probs += $x;?>
        <tr>
            <td><?php echo $key;?></td>
            <td><?php echo $value;?></td>
            <td><?php echo $x.' %';?></td>
        </tr><?php 
    } ?>
        <tfoot>
            <td>Total Numbers: <?php echo count($results);?></td>
            <td>Total Runs: <?php echo $n_runs;?></td>
            <td>Total Prob: <?php echo $probs.' %';?></td>            
        <tfoot>
    </table><?php 
    */
    ?>
    TEST DE HASARD
    29-Janvier-2023 19:48:37 UTC
    Valeurs Nombre d&#39;exécutions Probabilité
    1 183 18.300 %
    2 203 20.300 %
    3 217 21.700 %
    4 203 20.300 %
    5 194 19.400 %
    5 1000 100 %