0Pricing
Cryptology Academy · บทเรียน

ฟังก์ชันสุ่มที่ตรวจสอบได้ในระบบเอกฉันท์

ทำความเข้าใจ VRF และวิธีที่ทำให้เกิดความสุ่มซึ่งคาดเดาไม่ได้แต่ตรวจสอบได้ในการเลือกผู้นำ (Algorand, Cardano)

ฟังก์ชันสุ่มที่ตรวจสอบได้ในระบบเอกฉันท์ เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

ความจำเป็นของความสุ่มที่ตรวจสอบได้

โปรโตคอลฉันทามติต้องใช้ความสุ่มสำหรับการเลือกผู้นำ การเลือกคณะกรรมการ และการกำหนดส่วนย่อย ความสุ่มต้องมีคุณสมบัติสามประการ ได้แก่ การคาดเดาไม่ได้ คือไม่มีใครคาดเดาผลลัพธ์ได้ก่อนการเปิดเผย การทำให้เอนเอียงไม่ได้ คือไม่มีผู้เข้าร่วมรายใดบิดเบือนผลลัพธ์เพื่อประโยชน์ของตน และการตรวจสอบต่อสาธารณะได้ คือทุกคนตรวจสอบความถูกต้องของผลลัพธ์ได้โดยไม่ต้องไว้วางใจผู้สร้าง วิธีพื้นฐานมักล้มเหลว ตัวเลขสุ่มจากโหนดเดียวสามารถถูกบิดเบือนได้ และรูปแบบยืนยันแล้วเปิดเผยเปิดโอกาสให้ผู้เปิดเผยคนสุดท้ายสร้างอคติได้ ฟังก์ชันสุ่มที่ตรวจสอบได้ (VRF) แก้ปัญหาทั้งสามประการ

นิยามอย่างเป็นทางการของ VRF

ฟังก์ชันสุ่มที่ตรวจสอบได้ (VRF) ซึ่ง Micali, Rabin และ Vadhan เสนอในปี 1999 คือฟังก์ชันสุ่มเทียมที่มีหลักฐานความถูกต้อง VRF มีอัลกอริทึมสามรายการ ได้แก่ KeyGen ซึ่งสร้างคู่กุญแจ (SK, PK); อัลกอริทึมสร้างหลักฐานซึ่งรับ SK และอินพุต α แล้วสร้าง (β, π) โดย β คือผลลัพธ์และ π คือหลักฐาน; และอัลกอริทึมตรวจสอบซึ่งรับ PK, α, β, π แล้วคืนค่าถูกต้องหรือไม่ถูกต้อง ผู้ที่ไม่ทราบ SK จะไม่สามารถแยกแยะผลลัพธ์ β จากค่าที่สุ่มได้ ซึ่งเป็นคุณสมบัติสุ่มเทียมของ VRF และไม่สามารถปลอมแปลงหลักฐาน π ได้ ซึ่งเป็นคุณสมบัติความเป็นหนึ่งเดียวของ VRF ขนาดหลักฐานคือ O(1) หรือมีค่าคงที่ไม่ว่าอินพุตจะเป็นอย่างไร

ECVRF: VRF บนเส้นโค้งวงรี

โครงสร้าง VRF ที่ใช้งานแพร่หลายที่สุดคือ ECVRF (มาตรฐานหมายเลข 9381 ของ IETF) ซึ่งอาศัยความยากของปัญหาลอการิทึมไม่ต่อเนื่องบนเส้นโค้งวงรี เมื่อมีกุญแจส่วนตัว x และอินพุต α ผู้สร้างหลักฐานจะคำนวณ H ซึ่งเป็นจุดบนเส้นโค้งที่ได้จาก PK และ α จากนั้นคำนวณ γ = x * H หรือการคูณสเกลาร์ ผลลัพธ์ VRF คือ β = keccak(γ) หลักฐาน π ใช้ข้อโต้แย้งแบบความรู้ศูนย์คล้ายชนอร์ ผู้สร้างหลักฐานเลือก k แบบสุ่ม คำนวณความท้าทาย c = แฮช(H, γ, k*G, k*H) คำตอบ s = k - c*x แล้วส่งออก π = (γ, c, s) การตรวจสอบจะตรวจสมการแบบชนอร์และคำนวณ β ใหม่

VRF ใน Algorand

Algorand (Silvio Micali และคณะ, 2017) เป็นผู้บุกเบิกการใช้ VRF ในฉันทามติของบล็อกเชน ในแต่ละรอบ ผู้ตรวจสอบทุกคนจะประเมิน VRF(SK, round || seed) เป็นการส่วนตัวเพื่อรับผลลัพธ์แบบสุ่ม จากนั้นนำผลลัพธ์ไปเปรียบเทียบกับค่าขีดจำกัด หาก VRF_output < stake_fraction * threshold ผู้ตรวจสอบจะได้รับเลือกเป็นสมาชิกคณะกรรมการหรือผู้เสนอสร้างบล็อก มีเพียงผู้ตรวจสอบคนนั้นที่ทราบว่าตนได้รับเลือก จนกว่าจะเผยแพร่บล็อกหรือคะแนนเสียงของตนพร้อมหลักฐาน VRF การคัดเลือกตนเองด้วยวิทยาการเข้ารหัสนี้ขจัดความจำเป็นในการเลือกผู้นำแบบเปิดเผย ทำให้ Algorand ทนทานต่อการโจมตีแบบปฏิเสธการให้บริการที่มุ่งเป้าไปยังผู้นำในอนาคตซึ่งเป็นที่รู้จักล่วงหน้า

VRF ใน Cardano Ouroboros

Ouroboros Praos ของ Cardano (รุ่นที่ใช้งานอยู่ในปัจจุบัน) ใช้ VRF สำหรับการเลือกผู้นำช่องเวลา ในแต่ละยุค จะมีการสร้างเมล็ดสุ่มใหม่จากบล็อกเชน ผู้ดำเนินการกลุ่มเงินเดิมพันแต่ละรายจะประเมิน VRF(SK, slot || epoch_seed) สำหรับแต่ละช่องเวลาในยุคนั้น หากผลลัพธ์ต่ำกว่าค่าขีดจำกัดที่แปรผันตามเงินเดิมพันของตน ผู้ดำเนินการรายนั้นจะเป็นผู้นำช่องเวลาและอาจสร้างบล็อกได้ หลักฐาน VRF จะรวมอยู่ในส่วนหัวบล็อก ทำให้ทุกคนตรวจสอบได้ว่า SPO ได้รับเลือกอย่างถูกต้อง วิธีนี้ทำให้ Cardano มีความปลอดภัยที่พิสูจน์ได้เมื่อต้องรับมือกับผู้โจมตีแบบปรับตัว ซึ่งเรียนรู้ตารางผู้นำระหว่างยุค

VRF เทียบกับ RANDAO: ข้อแลกเปลี่ยน

Ethereum ใช้ RANDAO (ลายเซ็น BLS ที่สะสมไว้) แทน VRF สำหรับแหล่งกระจายความสุ่ม RANDAO เรียบง่ายกว่า — ไม่ต้องใช้พื้นฐานการเข้ารหัสเพิ่มเติมนอกเหนือจาก BLS — แต่มีความเสี่ยงต่ออคติจากผู้เปิดเผยคนสุดท้าย ผู้เสนอสร้างบล็อกที่คาดการณ์ได้ว่าผลจากการส่งข้อมูล RANDAO ของตนจะไม่เป็นที่พอใจ สามารถงดเผยแพร่บล็อกของตนได้ (โดยต้องแลกกับรางวัลบล็อก) การเลือกตั้งที่อาศัย VRF จะปกปิดผู้ได้รับเลือกจนกว่าผู้นั้นจะเปิดเผยตัว จึงขจัดช่องทางโจมตีนี้ได้โดยสิ้นเชิง ข้อแลกเปลี่ยนคือ VRF เพิ่มความซับซ้อนด้านการเข้ารหัส (การแฮชลงเส้นโค้งและการสร้างหลักฐาน) ขณะที่ RANDAO นำโครงสร้างพื้นฐาน BLS ที่มีอยู่กลับมาใช้

Chainlink VRF: ความสุ่มนอกเชน

Chainlink VRF ให้บริการความสุ่มที่ตรวจสอบได้สำหรับสัญญาอัจฉริยะ สัญญาผู้ใช้บริการจะขอค่าความสุ่มโดยชำระโทเค็น LINK โหนดออราเคิลของ Chainlink จะเก็บคู่กุญแจ VRF ไว้ โหนดจะประเมิน ECVRF(SK, seed) โดยเมล็ดสุ่มได้มาจากแฮชของบล็อกและค่าตัวนับที่ผู้ใช้ระบุ จากนั้นส่ง (beta, pi) ขึ้นเชน สัญญาประสานงาน VRF จะตรวจสอบหลักฐานก่อนส่งต่อผลลัพธ์แบบสุ่มไปยังผู้ใช้บริการ วิธีนี้ทำให้สัญญาอัจฉริยะเข้าถึงความสุ่มที่ต้านทานการบิดเบือนได้ โดยไม่ต้องให้เชนติดตั้งแหล่งกระจายความสุ่ม VRF ในตัว ซึ่งมีประโยชน์สำหรับการสร้าง NFT การจับสลาก และเกม

VXEdDSA และ Signal Protocol

Signal Protocol ใช้ VXEdDSA (EdDSA แบบ X25519 ที่ตรวจสอบได้) ซึ่งเป็นโครงสร้าง VRF บน Curve25519 เมื่อผู้ส่งสร้างลายเซ็นกุญแจล่วงหน้าสำหรับใช้ครั้งเดียว VRF จะสร้างค่าหนึ่งครั้งที่กำหนดได้แน่นอนแต่คาดเดาไม่ได้จากข้อความและกุญแจของผู้ส่ง วิธีนี้ป้องกันการนำค่าหนึ่งครั้งกลับมาใช้ซ้ำ (ซึ่งจะทำลายความปลอดภัยของ EdDSA) พร้อมทั้งยังทำให้ตรวจสอบลายเซ็นได้ หลักฐาน VRF ช่วยให้ผู้รับตรวจสอบได้ว่าค่าหนึ่งครั้งถูกสร้างขึ้นอย่างถูกต้อง ป้องกันไม่ให้ผู้ส่งเลือกค่าหนึ่งครั้งที่เป็นอันตรายซึ่งอาจเปิดทางให้เกิดการโจมตีกู้คืนกุญแจ VXEdDSA แสดงให้เห็นว่า VRF เป็นเครื่องมือด้านการเข้ารหัสที่ใช้ได้ทั่วไป ไม่ได้จำกัดอยู่แค่ฉันทามติ

VDF เทียบกับ VRF

บางครั้งผู้คนสับสนระหว่าง VDF กับ VRF VDF ต้องใช้การคำนวณแบบต่อเนื่องอย่างน้อย T ขั้น (คุณสมบัติล็อกเวลา) และสร้างผลลัพธ์พร้อมหลักฐานความถูกต้องขนาดสั้น VDF ใช้เพื่อลดอคติจากผู้เปิดเผยคนสุดท้ายใน RANDAO ชั้น VDF ที่ Ethereum วางแผนไว้จะทำให้ความพยายามบิดเบือนใด ๆ ต้องคำนวณ VDF ล่วงหน้า ซึ่งใช้เวลานานกว่าช่วงเวลาที่โจมตี VRF ให้การประเมินแบบส่วนตัวที่เกิดขึ้นทันที ส่วน VDF ให้การประเมินแบบสาธารณะที่ล่าช้า ทั้งสองอย่างเสริมกัน: VDF ป้องกันอคติจากผู้เปิดเผยคนสุดท้าย ขณะที่ VRF ป้องกันการคาดการณ์ผู้นำ

แบบจำลองความปลอดภัย: ผู้โจมตีแบบปรับตัวเทียบกับผู้โจมตีแบบคงที่

การคัดเลือกด้วย VRF ช่วยเพิ่มความปลอดภัยอย่างสำคัญเมื่อต้องรับมือกับผู้โจมตีแบบปรับตัว ใน PBFT และ Tendermint ตัวตนของผู้นำเป็นที่รู้ล่วงหน้า (ตามตารางแบบวนรอบ) ทำให้ผู้โจมตีสามารถโจมตีแบบปฏิเสธการให้บริการแบบกระจายต่อผู้นำคนถัดไปก่อนที่ผู้นำนั้นจะเสนอ การคัดเลือกที่อาศัย VRF (Algorand และ Cardano) จะเก็บตัวตนของผู้นำไว้เป็นความลับจนกว่าจะเผยแพร่บล็อก — เมื่อถึงตอนนั้นบล็อกก็ถูกเสนอไปแล้ว ดังนั้นการโจมตีแบบปฏิเสธการให้บริการจึงมาช้าเกินไป คุณสมบัตินี้เรียกว่าความปลอดภัยแบบปรับตัวหรือการเลือกผู้นำที่คาดเดาไม่ได้ คุณสมบัติด้านการเข้ารหัสที่ทำให้สิ่งนี้เป็นไปได้คือ ผลลัพธ์ VRF จะดูเสมือนสุ่มสำหรับทุกคนที่ไม่มีกุญแจส่วนตัว

หมายเหตุการนำ VRF ไปใช้งาน

การนำ VRF ไปใช้งานอย่างถูกต้องต้องใส่ใจหลายประเด็น การแฮชลงเส้นโค้งต้องใช้อัลกอริทึมที่ใช้เวลาในการคำนวณคงที่และให้การกระจายสม่ำเสมอ (IETF RFC 9380 กำหนดวิธีมาตรฐานเพื่อป้องกันการรั่วไหลของเวลา) ค่า k แบบใช้ครั้งเดียวของ VRF ในหลักฐานต้องสร้างขึ้นอย่างกำหนดได้แน่นอนจาก (SK, alpha) โดยใช้ RFC 6979 — การนำ k กลับมาใช้ซ้ำหรือใช้ k แบบสุ่มที่ไม่ปลอดภัยจะทำให้กุญแจลับรั่วไหล (เป็นช่องโหว่แบบเดียวกับการใช้ค่าหนึ่งครั้งของ ECDSA ซ้ำ) หลักฐานของ ECVRF-P256-SHA256-TAI มีขนาด 80 ไบต์ ส่วน ECVRF-ED25519-SHA512-ELL2 ก็มีขนาด 80 ไบต์เช่นกัน ทั้งสองรูปแบบจึงเหมาะสำหรับการใส่ไว้บนเชน คุณสมบัติความเป็นเอกลักษณ์ของ VRF รับประกันว่าจะไม่มีหลักฐานที่ถูกต้องสองชุดสำหรับคู่ (SK, alpha) เดียวกัน

แบบทดสอบการคัดเลือกที่คาดเดาไม่ได้ด้วย VRF

เหตุใดการเลือกผู้นำที่อาศัย VRF จึงให้ความปลอดภัยที่แข็งแกร่งกว่าการจัดตารางผู้นำแบบวนรอบ

สรุป VRF ในฉันทามติ

VRF สร้างผลลัพธ์เสมือนสุ่มพร้อมหลักฐานการเข้ารหัสที่ยืนยันความถูกต้อง ซึ่งมีคุณสมบัติคาดเดาไม่ได้ ปราศจากอคติ และตรวจสอบได้โดยสาธารณะ ECVRF (RFC 9381) เป็นโครงสร้างมาตรฐานบนเส้นโค้งวงรี Algorand ใช้การคัดเลือกตนเองด้วยการเข้ารหัส VRF เพื่อรับมือกับผู้โจมตีแบบปรับตัว Cardano Ouroboros Praos ใช้ VRF สำหรับการเลือกผู้นำในแต่ละช่องเวลา Chainlink VRF มอบความสุ่มที่ตรวจสอบได้ให้แก่สัญญาอัจฉริยะ VRF ทำงานเสริมกับ VDF (ซึ่งจัดการกับอคติจากผู้เปิดเผยคนสุดท้าย) และแตกต่างจาก RANDAO (ซึ่งใช้ลายเซ็น BLS ที่สะสมไว้และมีจุดอ่อนจากผู้เปิดเผยคนสุดท้ายที่ทราบกันดี)

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

บทเรียน “ฟังก์ชันสุ่มที่ตรวจสอบได้ในระบบเอกฉันท์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ฟังก์ชันสุ่มที่ตรวจสอบได้ในระบบเอกฉันท์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ฟังก์ชันสุ่มที่ตรวจสอบได้ในระบบเอกฉันท์”

ทำความเข้าใจ VRF และวิธีที่ทำให้เกิดความสุ่มซึ่งคาดเดาไม่ได้แต่ตรวจสอบได้ในการเลือกผู้นำ (Algorand, Cardano) คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “ฟังก์ชันสุ่มที่ตรวจสอบได้ในระบบเอกฉันท์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. กลไกการเข้ารหัสของ Proof-of-Stake
  2. โพรโทคอล BFT: PBFT และ Tendermint
  3. ฟังก์ชันสุ่มที่ตรวจสอบได้ในระบบเอกฉันท์
  4. ลายเซ็น BLS และโครงร่างลายเซ็นรวม
← กลับไปที่ Cryptology Academy