Dil
(Değiştirmek için tıklayın)
Türkçe
*Otomatik Çeviri
Para birimi
(Değiştirmek için tıklayın)
$
Paylaş:
Bu Sayfayı Facebook'ta Paylaş Bu Sayfayı Twitter'da Paylaşın
3 Dec 2022 16:55:18 UTC

PIYANGO DOğRULAMA

Kazanan Numara Nasıl Oluşturulur?

Lottocryptos, kazanan numaraların oluşturulmasında şeffaflık sağlamak için piyangolarında "Provably Fair" sistemini kullanmaktadır.

Kazanan rastgele sayı üretiminin tohumu dört bölümden oluşur:

  • A - 128 haneye kadar rastgele sayı. Piyango başladığında haftalık olarak oluşturulur ve her kripto para birimi için farklıdır.
  • B - Son oyuncunun işlem kimliği. Piyangonun doğrulanmış son oyuncusunun işlem kimliği.
  • C - Piyangoda satılan toplam piyango bileti sayısı.
  • D - Piyangodaki doğrulanmış oyuncu sayısı.
  • Kazanan numaranın rastgele oluşturulması için tohumun elde edilmesi için aşağıdaki süreç takip edilir.

    Her parça SHA512 ile şifrelenir ve birleştirilir. Daha sonra tekrar SHA512 ile şifrelenir ve karakterleri karşılık gelen ASCII değerine dönüştürülür. Rastgele sayı üretimi için kullanılan tohum bu değerdir.

    Uygun görülen tüm kontrolleri yapabilmek için, kullanıcılara rastgele sayı elde etmek için kullanılan kaynak kodu ve rastgelelik testi yapmak için araçlar sağlıyoruz.

    KAYNAK KODU
    Dosya: classes/class.Random.php
    PHP Sürümü: 8.0.18
    Son Güncelleme: 17-Eylül-2022 10:57:44 UTC
    Boyut: 3231 bayt
    <?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 
    */
    ?>
    RASTGELELIK TESTI
    03-Aralık-2022 16:55:18 UTC
    değerler Çalıştırma Sayısı olasılık
    1 194 19.400 %
    2 195 19.500 %
    3 187 18.700 %
    4 213 21.300 %
    5 211 21.100 %
    5 1000 100 %