เกมในคาสิโนดูเหมือนจะสร้างผลลัพธ์ได้ทันที แต่เบื้องหลังผลลัพธ์นั้นอาจมีการคำนวณทางคริปโตกราฟีเพื่อตรวจสอบความถูกต้อง ตัวอย่างเช่น ในกรณีของเกมที่พิสูจน์ได้ว่ายุติธรรม การสร้างเลขสุ่มจะประกอบด้วยองค์ประกอบต่างๆ เช่น ซีดของเซิร์ฟเวอร์ ซีดของไคลเอนต์ นอนซ์ การแฮชแบบคริปโตกราฟี และวิธีการแปลงข้อมูลที่สร้างขึ้นเป็นผลลัพธ์ของเกม กระบวนการดังกล่าวช่วยให้ผู้ใช้ตรวจสอบผลลัพธ์ของเกมได้อย่างอิสระโดยการจำลองการคำนวณตามอัลกอริทึมที่กำหนดไว้
จำเป็นต้องกล่าวถึงว่าความรู้ดังกล่าวมีความจำเป็น เนื่องจากคำว่า "สุ่ม" ไม่ได้ให้คำตอบว่าเกมดิจิทัลสร้างผลลัพธ์ได้อย่างไร
ระบบเลขสุ่มที่ยุติธรรมอย่างแท้จริงคืออะไร?
ระบบที่พิสูจน์ได้ว่ายุติธรรม คือวิธีการเข้ารหัสลับที่อนุญาตให้ตรวจสอบผลลัพธ์ของเกมได้หลังจากที่ได้สร้างผลลัพธ์นั้นแล้ว แทนที่จะอาศัยเพียงแค่คำกล่าวอ้างที่ว่าผลลัพธ์นั้นเป็นแบบสุ่ม ระบบนี้จะให้ข้อมูลป้อนเข้าและการคำนวณที่สามารถทำซ้ำได้อย่างอิสระ
วิธีการใช้งานจริงอาจแตกต่างกันไปในแต่ละแพลตฟอร์ม ระบบบางระบบที่มีการบันทึกไว้ใช้ HMAC-SHA256 ในขณะที่ระบบอื่นๆ อาจใช้โครงสร้างการเข้ารหัสหรือวิธีการแฮชแบบอื่น ดังนั้นจึงไม่มีสูตรสำเร็จสากลเพียงสูตรเดียวที่ใช้ได้กับทุกระบบที่อธิบายว่าเป็นระบบที่ยุติธรรมอย่างแท้จริง
โดยทั่วไปแล้ว กระบวนการพื้นฐานประกอบด้วยองค์ประกอบดังต่อไปนี้:
รหัสเริ่มต้นเซิร์ฟเวอร์:ค่าลับที่สร้างขึ้นโดยผู้ดำเนินการ
แฮชของเซิร์ฟเวอร์ซีด:ค่าแฮชเข้ารหัสลับของค่าเริ่มต้นของเซิร์ฟเวอร์ ซึ่งสามารถแสดงให้เห็นก่อนเริ่มเล่นได้
ข้อมูลลูกค้าเริ่มต้น:ค่าที่ผู้เล่นป้อนหรือควบคุม ขึ้นอยู่กับการใช้งานในแต่ละระบบ
นอนซ์:ตัวนับที่ใช้แยกแยะผลลัพธ์ที่เกิดขึ้นต่อเนื่องกันจากชุดค่าเริ่มต้นเดียวกัน
อัลกอริทึมผลลัพธ์:ขั้นตอนการคำนวณที่บันทึกไว้ซึ่งแปลงผลลัพธ์การเข้ารหัสลับให้เป็นผลลัพธ์ที่เกมต้องการ
ทำไมรหัส Seed ของเซิร์ฟเวอร์ถึงถูกซ่อนไว้?
โดยปกติแล้ว รหัสเริ่มต้นของเซิร์ฟเวอร์จะถูกเก็บเป็นความลับในระหว่างการใช้งาน หากรหัสเริ่มต้นของเซิร์ฟเวอร์ทั้งหมดถูกเปิดเผยก่อนที่จะมีการสร้างผลลัพธ์ บุคคลอื่นอาจนำข้อมูลดังกล่าวไปใช้ในการคำนวณผลลัพธ์ในอนาคตได้ ขึ้นอยู่กับการใช้งานนั้นๆ
แทนที่จะเป็นเช่นนั้น ระบบสามารถเผยแพร่แฮชเข้ารหัสลับของซีดเซิร์ฟเวอร์ก่อนการเล่นได้ แฮชจะสร้างการแสดงผลของอินพุตที่มีความยาวคงที่ ในทางปฏิบัติแล้ว ซีดดั้งเดิมจะไม่สามารถกู้คืนได้จากแฮชเข้ารหัสลับที่ใช้อย่างถูกต้อง
หลังจากช่วงเวลาของ seed ที่เกี่ยวข้องสิ้นสุดลง seed ของเซิร์ฟเวอร์จะปรากฏขึ้น จากนั้นผู้เล่นสามารถนำค่าที่ปรากฏขึ้นมาคำนวณแฮชและเปรียบเทียบกับค่าแฮชที่เผยแพร่ก่อนหน้านี้ได้
หากค่าตรงกัน แสดงว่า seed ของเซิร์ฟเวอร์ที่เปิดเผยนั้นสอดคล้องกับการยืนยันก่อนหน้านี้ นี่เป็นส่วนสำคัญของกระบวนการยืนยันและเปิดเผยที่ใช้โดยระบบที่พิสูจน์ได้ว่ายุติธรรม
Server Seed, Client Seed และ Nonce ทำงานร่วมกันอย่างไร?
ค่าทั้งสามมีจุดประสงค์ที่แตกต่างกัน
เดอะเซิร์ฟเวอร์ซีดป้อนข้อมูลลับที่ควบคุมโดยระบบเมล็ดพันธุ์ลูกค้าให้ข้อมูลเพิ่มเติมที่เกี่ยวข้องกับผู้เล่นโนนซ์ทำหน้าที่เป็นตัวนับเพื่อให้การทำซ้ำหลายรอบโดยใช้คู่เมล็ดพันธุ์เดียวกันยังคงให้ผลลัพธ์ที่แตกต่างกันได้
ตัวอย่างเช่น ระบบอาจประมวลผลข้อมูลในเชิงแนวคิดตามลำดับดังนี้:
ซีดเซิร์ฟเวอร์ + ซีดไคลเอ็นต์ + นอนซ์ → ฟังก์ชันการเข้ารหัส → ข้อมูลสุ่ม → ผลลัพธ์ของเกม
ในการใช้งาน HMAC-SHA256 นั้น seed ของเซิร์ฟเวอร์อาจถูกใช้เป็นคีย์ HMAC ในขณะที่ seed และ nonce ของไคลเอนต์เป็นส่วนหนึ่งของข้อความ จากนั้นผลลัพธ์เลขฐานสิบหกที่ได้จะถูกแปลงเป็นข้อมูลตัวเลขตามกฎที่ระบุไว้ของเกม ตัวอย่างเช่น การใช้งานที่เผยแพร่ของ Stake ระบุ seed ของเซิร์ฟเวอร์ seed ของไคลเอนต์ nonce และ cursor เป็นอินพุตสำหรับฟังก์ชันการสร้างเลขสุ่ม และใช้ HMAC-SHA256
สูตรที่แน่นอนมีความสำคัญ เพราะการตรวจสอบความถูกต้องขึ้นอยู่กับการคำนวณซ้ำแบบเดียวกัน ผู้เล่นไม่สามารถตรวจสอบได้ง่ายๆ ว่ามี seed อยู่หรือไม่ พวกเขาจำเป็นต้องมีอัลกอริทึมและข้อมูลป้อนเข้าที่เกี่ยวข้องเพื่อสร้างผลลัพธ์ซ้ำ
บทบาทของการแฮชในการตรวจสอบ
การแฮชเป็นหัวใจสำคัญของขั้นตอนการสร้างความมุ่งมั่น
พิจารณาลำดับที่ลดรูปแล้ว:
ระบบจะสร้างรหัสลับสำหรับเซิร์ฟเวอร์ขึ้นมา
มันคำนวณค่าแฮชเข้ารหัสลับของค่าเริ่มต้นนั้น
ค่าแฮชจะพร้อมใช้งานก่อนเริ่มกิจกรรมในเกมที่เกี่ยวข้อง
รหัสประจำตัวเซิร์ฟเวอร์ยังคงถูกซ่อนไว้
หลังจากเปิดเผยรหัสเริ่มต้นแล้ว ผู้เล่นจะทำการแฮชรหัสเริ่มต้นนั้นด้วยตนเอง
ค่าแฮชใหม่จะถูกนำไปเปรียบเทียบกับค่าแฮชเดิม
แฮชที่ตรงกันแสดงให้เห็นว่าซีดที่เปิดเผยออกมานั้นตรงกับซีดที่ถูกกำหนดไว้ก่อนหน้านี้ ดังนั้นจึงเป็นหลักฐานที่แสดงว่าซีดไม่ได้ถูกเปลี่ยนใหม่หลังจากทราบผลลัพธ์แล้ว
ด้วยเหตุนี้ กระบวนการนี้จึงมักถูกอธิบายว่าเป็น การยืนยัน → การเล่น → การเปิดเผย → การตรวจสอบ
ข้อมูลสุ่มกลายเป็นผลลัพธ์ของเกมได้อย่างไร
ผลลัพธ์จากการเข้ารหัสลับนั้นไม่ได้เป็นตัวเลขลูกเต๋า ตำแหน่งไพ่ หรือตัวคูณโดยอัตโนมัติ เกมจำเป็นต้องมีวิธีการแปลงที่กำหนดไว้
ตัวอย่างเช่น ระบบสามารถรับไบต์ที่ได้จากฟังก์ชันการเข้ารหัสและแปลงเป็นช่วงตัวเลขตามกฎที่เผยแพร่ไว้ เกมแต่ละเกมต้องการการแปลงที่แตกต่างกัน
เกมที่ใช้ลูกเต๋าอาจแปลงค่าที่สร้างขึ้นไปเป็นช่วงตัวเลขที่กำหนดไว้ เกมอีกเกมหนึ่งอาจใช้ผลลัพธ์นั้นเพื่อเลือกรายการจากรายการที่กำหนดไว้ล่วงหน้า จุดสำคัญคือ กฎการแปลงต้องถูกกำหนดอย่างสม่ำเสมอหากต้องการให้ผลลัพธ์นั้นสามารถทำซ้ำได้โดยอิสระ
ความแตกต่างนี้มีความสำคัญเป็นพิเศษเมื่อพูดถึงเรื่องต่อไปนี้ระบบยุติธรรมที่พิสูจน์ได้ในประเทศไทยหรือตลาดอื่นๆ: สถานที่ตั้งทางภูมิศาสตร์ไม่ได้เป็นตัวกำหนดกลไกทางคณิตศาสตร์ สิ่งสำคัญทางเทคนิคคือการใช้งานเฉพาะที่แพลตฟอร์มนั้นๆ ใช้ รวมถึงโครงสร้างของ seed ฟังก์ชันการเข้ารหัส การจัดการ nonce และกฎการแปลงผลลัพธ์
การเปรียบเทียบอย่างง่าย