ข้ามไปยังเนื้อหา
KAKALOT

ความโปร่งใสของ KAKALOT Originals: ตรวจผลทุกรอบได้เอง

เกม KAKALOT Originals ทุกเกมออกแบบให้ผู้เล่นตรวจได้ว่าผลของแต่ละรอบถูกกำหนดก่อนเล่นและไม่ถูกแก้ไขภายหลัง หน้านี้อธิบายหลักการและขั้นตอนตรวจ โดยไม่ต้องเชื่อคำพูดของเว็บ

แนวคิด: ล็อกก่อน เปิดทีหลัง

ก่อนคุณเริ่มเล่น ระบบสร้างค่าลับที่เรียกว่า server seed แล้วแสดงเฉพาะรหัสยืนยัน (SHA-256 ของ server seed) ให้คุณเห็นก่อน รหัสนี้เหมือนการปิดผนึกซองคำตอบ เว็บเปลี่ยนค่าลับภายหลังไม่ได้โดยที่รหัสไม่ตรง

ผลของแต่ละรอบคำนวณจาก server seed, client seed (ค่าฝั่งผู้เล่น) และเลขรอบ (nonce) ผ่านฟังก์ชัน HMAC-SHA256 เมื่อคุณกด "เปลี่ยนชุดสุ่ม" ระบบเปิดเผย server seed เดิม คุณจึงคำนวณผลทุกรอบที่เล่นด้วยชุดนั้นซ้ำเองได้

ขั้นตอนตรวจผลของรอบ

  1. ก่อนเล่น จดรหัสยืนยันของชุดสุ่มปัจจุบัน (server seed hash), client seed และเลขรอบ
  2. เล่นตามปกติ ทุกรอบมีรหัสตาและอยู่ในประวัติการเดิมพัน
  3. กด "เปลี่ยนชุดสุ่ม และเปิดเผยชุดเดิม" ระบบแสดง server seed ของชุดที่ผ่านมา
  4. ตรวจว่า SHA-256 ของ server seed ที่เปิดเผย เท่ากับรหัสยืนยันที่คุณเห็นก่อนเล่น ถ้าตรงกัน แปลว่าเว็บไม่ได้เปลี่ยนค่าหลังคุณเริ่มเล่น
  5. คำนวณ HMAC-SHA256 โดยใช้ server seed เป็นกุญแจ และข้อความตามรูปแบบของเกมนั้น (ตารางด้านล่าง) แล้วนำผลมาเทียบกับผลที่ได้ในรอบนั้น
  6. หรือกดปุ่ม "ตรวจ" ในหน้าเกม เบราว์เซอร์ของคุณจะคำนวณซ้ำทั้งหมดให้ โดยไม่ต้องเชื่อผลจากเซิร์ฟเวอร์

รูปแบบข้อความที่ใช้คำนวณในแต่ละเกม

ตัวอย่างใช้ client seed ว่า clientSeed และ nonce เท่ากับ 7 ค่าจริงของคุณแสดงในหน้าเกม การนับรอบในเกมที่ใช้หลายชุดเริ่มจาก 0

รูปแบบข้อความ HMAC-SHA256 ของแต่ละเกม
เกมข้อความ (message)
HEADS OR TAILSclientSeed:7
DRAGON'S VAULTclientSeed:7:vault:0 , clientSeed:7:vault:1
DROP CHAINclientSeed:7:drop:0 , clientSeed:7:drop:1 , ...
COIN FOXclientSeed:7:reels:0 , clientSeed:7:reels:1 , ...
ROYAL INGOTSclientSeed:7:ingot:0 , clientSeed:7:ingot:1 , ...
GOLDEN KICKclientSeed:7:kick:0 , ... , clientSeed:7:kick:3
FOXBALLclientSeed:7:fb:0 , ... , clientSeed:7:fb:7

รอบที่ลุ้น Royal Jackpot ใช้ข้อความเพิ่มเติม ตัวอย่างของ HEADS OR TAILS คือ clientSeed:7:jackpot และ 6 ไบต์แรกของผลลัพธ์ใช้เป็นตัวเลขตัดสินแจ็กพอต

กุญแจของ HMAC คือไบต์ของ server seed (ฐาน 16, 64 ตัวอักษร) แต่ละเกมมีกติกาแปลงผลลัพธ์เป็นเหรียญ ไพ่ หรือกระดานต่างกัน ดูรายละเอียดในคู่มือของแต่ละเกม

ตัวอย่างโค้ดตรวจ HEADS OR TAILS

โค้ดด้านล่างรันได้ในคอนโซลของเบราว์เซอร์ ตรวจรหัสยืนยันและผลโยนเหรียญของหนึ่งรอบ (ใช้ข้อความ clientSeed:nonce)

const hex = (s) => Uint8Array.from(s.match(/../g).map((h) => parseInt(h, 16)));
const toHex = (b) => [...new Uint8Array(b)].map((x) => x.toString(16).padStart(2, '0')).join('');
async function verifyCoin(serverSeed, serverHash, clientSeed, nonce, coins) {
  const seed = hex(serverSeed);
  const hashOk = toHex(await crypto.subtle.digest('SHA-256', seed)) === serverHash;
  const key = await crypto.subtle.importKey('raw', seed, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
  const digest = new Uint8Array(await crypto.subtle.sign('HMAC', key, new TextEncoder().encode(clientSeed + ':' + nonce)));
  let result = '';
  for (let i = 0; i < coins; i++) result += digest[i] & 1 ? 'T' : 'H';
  return { hashOk, result };
}

รหัสตาและห่วงโซ่แฮช

ทุกรอบมีรหัสตาเรียงต่อกันไม่ซ้ำ เช่น RI-0000001 สำหรับ ROYAL INGOTS เงินจริง และ DI- สำหรับเดโม แต่ละเกมมีตัวย่อของตัวเอง รหัสตาแสดงในหน้าเกมและประวัติการเดิมพัน

ฐานข้อมูลคำนวณห่วงโซ่แฮชของรอบต่อเนื่อง: แฮชของแต่ละรอบรวมแฮชของรอบก่อนหน้า รหัสตา รหัสยืนยันชุดสุ่ม client seed เลขรอบ และผลของรอบ ถ้ามีการแก้หรือแทรกรอบย้อนหลัง โซ่จะขาดและไม่ตรงกับรอบถัดไปทั้งหมด

ROYAL BACCARAT: ล็อกไพ่รายใบ

บาคาร่าใช้การล็อกไพ่ทั้งขอน เมื่อเปิดขอน ไพ่ 416 ใบ (8 สำรับ) ถูกสับและล็อกแต่ละใบด้วยรหัส SHA-512 ของข้อความ "ลำดับ:ไพ่:salt" เมื่อแจกใบใด ระบบเปิดเผย salt ของใบนั้นเพื่อให้ตรวจ ผู้เล่นจึงตรวจได้ว่าไพ่ที่แจกตรงกับที่ล็อกไว้ก่อนตาแรก เมื่อจบขอนระบบเปิดเผยชุดสุ่มของขอนเพื่อตรวจการสับไพ่ทั้งหมด ดูรายละเอียดใน คู่มือ ROYAL BACCARAT

ข้อจำกัดที่ควรรู้

การตรวจแบบนี้พิสูจน์ได้ว่าผลไม่ถูกแก้ไขหลังคุณเริ่มเล่น และคำนวณตามกติกาที่เปิดเผย แต่ไม่ได้ทำให้ผลของรอบถัดไปคาดเดาได้ และไม่ทำให้โอกาสชนะดีขึ้น ผลของทุกรอบยังเป็นการสุ่ม

โหมดเดโมที่ผู้เยี่ยมชมเล่นโดยไม่สมัคร สร้างชุดสุ่มและคำนวณผลในเบราว์เซอร์ของคุณเอง ใช้เอนจินและตารางเดียวกับเกมจริง แต่เป็นการฝึกด้วยแต้มฟรี ไม่มีบัญชีเงินและไม่มีแจ็กพอต

คำถามที่พบบ่อย

Provably Fair คืออะไร

คือวิธีให้ผู้เล่นตรวจได้ว่าผลของแต่ละรอบถูกกำหนดด้วยค่าที่ล็อกไว้ก่อนเล่น โดยเว็บแสดงรหัสยืนยันของค่าลับก่อน แล้วเปิดเผยค่าลับทีหลังเพื่อให้ตรวจซ้ำได้

ต้องเขียนโปรแกรมเองเพื่อตรวจไหม

ไม่จำเป็น กดปุ่ม "ตรวจ" ในหน้าเกม เบราว์เซอร์จะคำนวณให้ แต่ผู้ที่ต้องการตรวจเองสามารถใช้ขั้นตอนและตัวอย่างโค้ดในหน้านี้

ทำไมต้องเปลี่ยนชุดสุ่มก่อนตรวจ

server seed เป็นค่าลับ ถ้าเปิดเผยระหว่างที่ยังใช้อยู่ ผู้อื่นจะรู้ผลรอบต่อไปล่วงหน้า ระบบจึงเปิดเผยเมื่อคุณเปลี่ยนชุดเท่านั้น