Bethropic

Satu nonce, banyak angka: apa yang dihitung oleh cursor

winter_ledger700 dilihat
🌐 Originally written in English· AI translationView original

Input keempat

Setiap penjelasan tentang provably fair gaming, termasuk milik kami, menyebutkan tiga input: server seed yang dikomitmenkan oleh pihak kasino sebelumnya, client seed yang bisa kamu atur sendiri, dan nonce yang naik satu setiap kali bertaruh. Masukkan ketiganya ke dalam keyed hash dan keluarlah keacakan untuk ronde tersebut. Penjelasan ini lengkap untuk coin flip. Tapi tidak lengkap untuk hampir semua game lainnya, karena satu hash hanya menghasilkan satu angka, sementara kebanyakan game butuh beberapa angka.

Input keempat adalah cursor. Di situs ini, pesan yang di-hash bukan “client seed-nonce” tetapi “client seed-nonce-cursor”, dan cursor adalah penghitung di dalam ronde: 0 untuk angka acak pertama yang dibutuhkan game, 1 untuk yang kedua, dan seterusnya. Setiap nilai cursor menghasilkan digest 256-bit yang baru, tidak berhubungan dengan tetangganya dengan cara apa pun yang bisa kamu eksploitasi, dan engine membaca delapan byte pertama dari setiap digest sebagai angka antara 0 dan 1.

ENGINE-VERIFIED_shared/demoLocal.ts: uAt(pair, cursor) mengembalikan u64(HMAC-SHA256(serverSeed, `${clientSeed}-${nonce}-${cursor}`)), yang dijelaskan sesuai dengan RandomUtils.generateHash(“clientSeed-nonce-cursor”) milik server. _shared/rng.ts: u64 membaca delapan byte pertama dari digest sebagai hi/2^32 + lo/2^64, “konstruksi pembulatan tunggal yang sama” seperti konversi ULong→Double milik server. Nonce adalah satu stream per pasangan seed di semua game: setiap taruhan menggunakan nonce saat ini lalu menyimpan nonce + 1.

Jadi satu ronde bukanlah satu angka acak, melainkan daftar bernomor dari angka-angka tersebut, sepanjang yang dibutuhkan game, dan setiap entri dalam daftar itu sudah ditentukan sejak saat pasangan seed dan nonce ditetapkan. Game tidak menarik angka sambil berjalan. Game hanya membaca daftar yang sudah ada.

Apa yang dibaca oleh setiap game

Bagian menariknya adalah daftar ini berbeda untuk setiap game, dan setiap modul derivasi menyatakan susunannya di headernya. Berikut adalah cursor stream dari setiap game original yang mengambil dari pasangan seed, diambil dari source engine.

Penggunaan cursor per ronde, dari modul derivasi setiap game

GAMECURSOR YANG DIBACAMENJADI APA
Limbo0Satu angka melalui kurva 0.99 ÷ (1 − u)
Roulette0Pocket: floor(u × 37)
Fukubukuro0Item, berdasarkan tabel bobot tas
Sic Bo0, 1, 2Ketiga dadu
Chinchirosisi × 9 + percobaan × 3 + daduHingga 18: dealer lalu pemain, hingga tiga lemparan dari tiga dadu masing-masing; lemparan yang menghasilkan hand mengakhiri sisi tersebut
Koban Flipsatu per flipFlip i membaca kursor i; setiap sisi dari ride sudah ditetapkan saat koin pertama dibeli
Omikuji0, lalu 1–3, lalu 4 dan seterusnyaTingkat keberuntungan; tiga sel kemenangan saat menang; glyph pengisi untuk sisanya
Pagodasatu per lantaiUbin jebakan di setiap lantai: floor(u × tiles)
Video Poker5, ditambah satu per kartu yang digantiSatu urutan tanpa pengembalian dari 52 kartu; tahan semuanya dan tidak ada kursor lebih lanjut yang dibaca
Casino Hold’emhingga 9pemain 1, pemain 2, dealer 1, dealer 2, flop 1–3, turn, river; turn dan river hanya dibaca saat CALL
Blackjacksatu per kartuShoe tak terbatas, kartu = floor(u × 52), dalam urutan pembagian: pemain, dealer up, pemain, dealer hole, lalu setiap penarikan berikutnya
Andar Bahar0–4, lalu satu per kartu yang diaduDua bucket yang di-boost, besarannya, joker, lalu perlombaan hingga rank-nya berulang
Hanabi15 per putaranCell = reel × 3 + baris; free spin j membaca 15 + 15j dan seterusnya
Bingo0–24, lalu 25–62Kartunya, lima penarikan per kolom; lalu 38 bola

Keno dan Crash adalah pengecualian: putaran demo mereka menggunakan rantai hash per tiket, bukan nonce pasangan seed, seperti dijelaskan di bawah. Mines dan Plinko diselesaikan oleh layanan house; API mines mencatat bahwa seluruh layout berasal dari satu nonce.

TERVERIFIKASI MESINKomentar header di bingo/derive.ts (“Cursor stream: 0..24 — kartunya … 25..62 — 38 bola”), hanabi/engine.ts (“base spin = cells 0..14 … free spin j = cells 15+15j .. 29+15j”), blackjack/derive.ts (“card i = floor(u × 52) at cursor i … Deal order (cursor): player1, dealer-up, player2, dealer-hole”), vpoker/derive.ts (“five pertama adalah pembagian, penggantian melanjutkan urutan yang sama … Hold everything and no further cursor is read”), holdem/derive.ts (“player1, player2, dealer1, dealer2, flop1, flop2, flop3, turn, river. Cursor turn/river hanya dikonsumsi saat CALL”), andar/derive.ts (cursors 0–4 lalu “5.. satu cursor per kartu yang diadu”), koban/derive.ts (“flip i reads cursor i”), sicbo/derive.ts (“cursors 0/1/2 adalah tiga dadu”), roulette/derive.ts (“cursor 0 sendiri menentukan pocket: floor(u × 37)”), fuku/derive.ts (“cursor 0 sendiri menarik item”), omikuji/derive.ts (cursor 0 tier, 1..3 winning cells, 4.. fillers); demoLocal.ts rollSide (chinchiro cursor = side*9 + attempt*3 + d), trapAt (pagoda: nomor lantai adalah cursor), demoLimboBet (uAt(p, 0)); mines/minesApi.ts (“seluruh layout mine berasal dari satu nonce ini”).

Ada tiga hal yang menonjol dalam tabel itu. Pertama, game yang membagikan kartu membaca satu cursor per kartu dalam urutan tetap, itulah sebabnya tangan blackjack bisa direplay dari daftar aksinya: keputusan Anda untuk hit tidak menciptakan kartu, melainkan membuka kartu berikutnya dalam daftar yang sudah lengkap sebelum pembagian dimulai. Kedua, beberapa game berhenti membaca lebih awal. Tangan video poker di mana Anda hold kelima kartu tidak pernah menyentuh cursor 5; fold di Hold'em tidak pernah membaca turn atau river. Angka-angkanya sudah ada di sana; game hanya tidak membutuhkannya. Ketiga, dua bucket yang di-boost di Andar Bahar dan tier keberuntungan di Omikuji ditarik sebelum kartu dan cell, di awal stream, sehingga fitur spesial putaran ditentukan oleh komitmen yang sama seperti fitur biasanya.

Menarik tanpa pengembalian

Angka uniform antara 0 dan 1 mudah diubah menjadi pocket roulette: kalikan dengan 37 dan bulatkan ke bawah. Deck kartu lebih sulit, karena kartu kedua tidak boleh sama dengan kartu pertama lagi. Engine menanganinya dengan apa yang disebut komentarnya sebagai pool hop: simpan daftar kartu yang masih ada di pool, gunakan angka dari cursor untuk memilih posisi di dalamnya, lalu tukar kartu yang terpilih ke akhir daftar sehingga penarikan berikutnya memilih dari satu lebih sedikit. Video Poker, Casino Hold'em, Andar Bahar dan kartu Bingo semuanya menarik dengan cara ini, sehingga tidak ada kartu atau angka yang berulang dalam satu putaran.

Blackjack adalah pengecualian yang disengaja. Shoe-nya tak terbatas: setiap kartu adalah floor(u × 52) dari cursor-nya sendiri, dan kartu yang sama bisa muncul dua kali dalam satu tangan. Itu adalah pilihan desain dengan biaya yang telah dipublikasikan, dibahas di artikel payout blackjack, dan ini persis jenis hal yang diungkapkan oleh layout cursor namun tidak akan diungkapkan oleh halaman marketing.

TERVERIFIKASI MESINvpoker/derive.ts: “Kartu berasal dari SATU urutan tanpa pengembalian atas deck 52 kartu (pool-hop, cursor per penarikan)”. holdem/derive.ts: “SATU urutan pool-hop tanpa pengembalian (cursor per penarikan)”. bingo/derive.ts: “lima penarikan pool-hop per kolom” dan “38 bola, pool-hop atas 1..75”. blackjack/derive.ts: “Shoe tak terbatas: card i = floor(u × 52) at cursor i”.

Dua pengecualian

Keno dan Crash sama sekali tidak membaca nonce dari pasangan seed di mesin demo. Keno menggunakan skema per-tiket: tiket mendapatkan hash acak dan salt-nya sendiri, dan masing-masing dari sepuluh bola diambil dengan meng-hash ulang hash sebelumnya, mengambil bit-bit terdepan sebagai angka dan memilih dari kumpulan empat puluh yang terus menyusut. Panel fairness memverifikasi tiket keno dari kedua string tersebut, bukan dari pasangan seed. Crash mengikuti konvensi bustabit, sebuah rantai hash di mana titik crash setiap ronde dihitung dari link-nya sendiri dengan aritmetika integer yang eksak.

ENGINE-VERIFIEDdemoLocal.ts kenoDraws: “rantai randomHash per-bet + salt (dapat diverifikasi per tiket melalui modal fairness) … Tidak menyentuh nonce dari pasangan seed”; loop meng-hash HMAC-SHA256(salt, hash sebelumnya) sepuluh kali, membaca 52 bit terdepan dan memilih indeks floor(norm × sisa) dari kumpulan 40 angka dengan swap ke posisi akhir. rng.ts h52 dan komentar crash: “titik crash bustabit dalam perseratusan: floor((n·e − h)/(e − h)), e = 2^52, n = 100 … Matematika BigInt yang eksak agar sesuai dengan server”.

Tidak ada pengecualian yang lebih lemah dari skema cursor; keduanya justru lebih tua dan lebih dikenal. Yang penting bagi pemain hanyalah bahwa panel menunjukkan skema mana yang digunakan pada suatu ronde, dan bahwa masing-masing bisa dihitung ulang dari string yang ditampilkan.

Apa artinya ini di meja

  • Ronde sudah ada sebelum kamu bertindak. Setiap kartu, bola, dan simbol reel dari sebuah ronde adalah fungsi dari pasangan seed, nonce, dan posisi cursor-nya. Hit, call, atau hold hanya memilih entri mana yang dibaca, bukan menentukan isinya.
  • Pilihanmu tidak bisa mengubah daftar itu, begitu pula pihak kasino. Setelah server seed di-commit dan nonce ditetapkan, tidak ada pihak mana pun yang bisa mengubah entri ke-7 tanpa mengubah seed, yang akan merusak fingerprint yang sudah ditampilkan kepadamu.
  • Seorang verifikator harus membaca daftar yang sama dengan cara yang sama. Menghitung ulang ronde bingo berarti menurunkan semua 63 cursor sesuai urutan yang dipublikasikan; menghitung ulang fold Hold'em berarti menurunkan 7 cursor. Panel seed melakukan ini di browser kamu, dan tata letak pada tabel di atas adalah yang diikutinya.
  • Sebuah streak adalah daftar, bukan suasana hati. Dua ronde hanya berbagi pasangan seed; nonce-nya berbeda sehingga setiap digest juga berbeda. Ini adalah poin yang sama yang dibuat oleh artikel hot hand dari sudut pandang yang berbeda.
Tiga input menentukan ronde. Input keempat menentukan berapa lama ronde itu berlangsung. cursor, dalam satu kalimat

Tata letak cursor di atas dibaca dari modul derivasi sisi klien yang dibagikan oleh verifikator browser dan mesin demo. Layanan kasino adalah otoritas yang membayar; di mana komentar dalam source code mengatakan sebuah modul mencerminkan server, itu dikutip apa adanya, bukan disertifikasi oleh kami.

FAQ

Apa itu cursor dalam ronde provably fair?

Sebuah penghitung di dalam ronde. Pesan yang di-hash dengan server seed adalah “client seed-nonce-cursor”; cursor 0 memberikan angka acak pertama yang dibutuhkan game, cursor 1 yang kedua, dan seterusnya. Game yang hanya membutuhkan satu angka hanya membaca cursor 0.

Bagaimana cursor berbeda dari nonce?

Nonce menghitung ronde dan naik satu setiap kali bertaruh di setiap original. Cursor menghitung penarikan dalam satu ronde dan mulai lagi dari 0 setiap ronde. Bersama dengan pasangan seed, mereka mengidentifikasi setiap angka acak yang pernah dihasilkan situs.

Berapa banyak angka acak yang digunakan dalam satu ronde bingo?

Enam puluh tiga: cursor 0 hingga 24 menyusun 25 sel pada kartu dan cursor 25 hingga 62 menarik 38 bola, semuanya tanpa pengembalian dalam kumpulannya masing-masing.

Apakah hit di blackjack mengubah kartu berikutnya?

Tidak. Setiap kartu diturunkan dari cursor-nya sendiri sesuai urutan pembagian, dan seluruh daftar sudah ada begitu pasangan seed dan nonce ditetapkan. Hit membaca entri berikutnya; stand membiarkannya tidak terbaca.

Apakah semua game menggunakan skema cursor?

Keno dan Crash menggunakan hash chain sebagai gantinya: keno melakukan hash pada random hash dan salt per-tiket sebanyak sepuluh kali, dan crash mengikuti chain bustabit dengan aritmetika integer yang tepat. Panel fairness memverifikasi masing-masing dari string yang ditampilkannya.

SUMBER & REFERENSI

  • Sumber engine Betkyo: _shared/demoLocal.ts (uAt, rollSide, trapAt, kenoDraws), _shared/rng.ts (u64, h52, crash point), dan modul derivasi untuk bingo, hanabi, blackjack, vpoker, holdem, andar, koban, sicbo, roulette, fuku dan omikuji
  • RFC 2104 — HMAC: Keyed-Hashing for Message Authentication
  • Skema provably fair Bustabit (konstruksi crash-point yang ditiru oleh engine ini)

GAME-GAME DALAM ARTIKEL INI

Blackjack — aturan & main gratis →Bingo — aturan & main gratis →Sic Bo — aturan & main gratis →

Satu nonce, banyak angka: apa yang dihitung oleh cursor

Komentar (1)

  • winter_anchor36

    So the cursor is basically just tracking which random number you're on within a single round? That makes sense for games that need multiple values per bet.