Idioma
(Haga clic para cambiar)
Español
*Auto Traducido
Divisa
(Haga clic para cambiar)
$
Compártelo:
Comparte esta Página en Facebook Comparte esta Página en Twitter
12 Dec 2024 21:30:16 UTC

VALIDACIóN DE LOTERíA

¿Cómo se genera el número ganador?

Lottocryptos utiliza un sistema "Provably Fair" para sus loterías con el fin de lograr la transparencia en la generación de los números ganadores.

La semilla de la generación de números aleatorios ganadores se compone de cuatro partes:

  • A - Número aleatorio de hasta 128 dígitos. Se genera semanalmente cuando se inicia la lotería y es diferente para cada criptomoneda.
  • Se trata de un número aleatorio de hasta 128 dígitos
  • B - El ID de la transacción del último jugador. El ID de la transacción del último jugador verificado de la lotería.
  • Los jugadores de la lotería son los que más se benefician de la lotería
  • C - El número total de boletos de lotería vendidos en la lotería.
  • D - El número de jugadores verificados en la lotería.
  • Para obtener la semilla para la generación aleatoria del número ganador, se sigue el siguiente proceso.

    [

    Cada parte se cifra con SHA512 y se concatena. Después se vuelve a encriptar con SHA512 y se convierten sus caracteres a su correspondiente valor ASCII. La semilla utilizada para la generación del número aleatorio es este valor.

    Para poder realizar todas las comprobaciones que se consideren oportunas, ponemos a disposición de los usuarios el código fuente utilizado para obtener el número aleatorio y las herramientas para realizar una prueba de aleatoriedad.

    CóDIGO FUENTE
    Archivo: classes/class.Random.php
    Versión PHP: 7.4.33
    Última Actualización: 17-Sept-2022 10:57:44 UTC
    Tamaño: 3231 Bytes
    <?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 ALEATORIEDAD
    12-Dic-2024 21:30:16 UTC
    Valores Número de Rondas Probabilidad
    1 194 19.400 %
    2 207 20.700 %
    3 192 19.200 %
    4 205 20.500 %
    5 202 20.200 %
    5 1000 100 %