Sprache
(Klicken Sie, um zu ändern)
Deutsch
*Automatisch übersetzt
Währung
(Klicken Sie, um zu ändern)
$
Teilt es:
Teilen Sie diese Seite auf Facebook Teilen Sie diese Seite auf Twitter
3 Dec 2022 16:50:05 UTC

LOTTERIE-VALIDIERUNG

Wie wird die Gewinnzahl generiert?

Lottocryptos verwendet für seine Lotterien ein "Provably Fair"-System, um Transparenz bei der Erzeugung der Gewinnzahlen zu erreichen.

Der Seed der Gewinnzahlengenerierung setzt sich aus vier Teilen zusammen:

  • A - Zufallszahl mit bis zu 128 Ziffern. Sie wird wöchentlich zu Beginn der Lotterie generiert und ist für jede Kryptowährung unterschiedlich.
  • B - Die Transaktions-ID des letzten Spielers. Die Transaktions-ID des letzten verifizierten Spielers der Lotterie.
  • C - Die Gesamtzahl der in der Lotterie verkauften Lose.
  • D - Die Anzahl der verifizierten Spieler in der Lotterie.
  • Um den Samen für die Zufallsgenerierung der Gewinnzahl zu erhalten, wird folgender Prozess befolgt.

    Jeder Teil wird mit SHA512 verschlüsselt und konkateniert. Dann wird er erneut mit SHA512 verschlüsselt und seine Zeichen werden in ihren entsprechenden ASCII-Wert umgewandelt. Dieser Wert wird als Seed für die Generierung der Zufallszahl verwendet.

    Um alle für sinnvoll erachteten Überprüfungen durchführen zu können, stellen wir den Benutzern den Quellcode zur Verfügung, mit dem die Zufallszahl erzeugt wird, sowie die Werkzeuge zur Durchführung eines Zufallstests.

    QUELLCODE
    Datei: classes/class.Random.php
    PHP-Version: 8.0.18
    Letztes Update: 17-September-2022 10:57:44 UTC
    Größe: 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 
    */
    ?>
    ZUFALLSTEST
    03-Dezember-2022 16:50:05 UTC
    Werte Anzahl der Läufe Wahrscheinlichkeit
    1 200 20.000 %
    2 178 17.800 %
    3 213 21.300 %
    4 199 19.900 %
    5 210 21.000 %
    5 1000 100 %