หวางฉี
ผู้ร่วมก่อตั้งและ CTO ของ Tarax Network
วิศวกรฟูลสแต็กอาวุโสที่สำเร็จการศึกษาระดับปริญญาโทด้านวิทยาการคอมพิวเตอร์ แนวทางการวิจัยหลักของเขาคือระบบกระจายและเครือข่าย P2P ที่จัดระเบียบตัวเอง
คำอธิบายภาพ
เขามีส่วนร่วมในการวิจัยทางเทคนิคเกี่ยวกับการแบ่งปันข้อมูลแบบกระจายอย่างต่อเนื่องในกลุ่มวิทยาศาสตร์อัจฉริยะของสถาบันเทคโนโลยีคอมพิวเตอร์ สถาบันวิทยาศาสตร์จีน สถาบันวิจัยโซนี่ไชน่า ไป่ตู้ และตูเตียว
การแบ่งปันที่ฉันนำมาให้คุณในวันนี้เรียกว่า "แอปพลิเคชันและหลักการวิเคราะห์ VRF ในบล็อกเชน" ซึ่งเกิดจากเครือข่ายสาธารณะที่เรียกว่า Tarax Network ที่ทีมของเรากำลังดำเนินการอยู่ เพื่อประโยชน์ในการวางตำแหน่งฉาก เราต้องการหาวิธีบรรลุฉันทามติโดยใช้พลังงานต่ำ ดังนั้นไม่ต้องพิจารณา POW และการคิด POS เป็นเรื่องง่าย จากนั้นให้พิจารณาว่าไม่ว่าจะเป็น POW หรือ POS พวกเขาต้องการสุ่มค้นหาโหนดที่ไม่สามารถคาดเดาได้เพื่อจัดแพคเกจบล็อก และทำให้เครือข่ายทั้งหมดรู้จักบล็อกนี้
จากนั้นในเรื่องของการเลือกแบบสุ่ม VRF เป็นวิธีที่ตรงที่สุดในการจับฉลากตามการเลือกแบบสุ่มที่ตรวจสอบได้
แน่นอนว่า POW ไม่เพียงแต่มีหน้าที่สุ่มเลือกจุดสำหรับบรรจุภัณฑ์เท่านั้น แต่ยังคำนึงถึงเกมและธรรมชาติของมนุษย์ด้วย ในรูปแบบ POS ปัจจุบัน มันไม่โอเคหลังจากเลือกจุดแบบสุ่ม แทนที่จะเป็นแบบแผนการเลือกจุดแบบสุ่ม เป็นธรรมชาติ นอกจากนี้ยังจะออกแบบเกมและปัญหาธรรมชาติของมนุษย์จากแง่มุมอื่นๆ
แต่ขอแก้ปัญหาไปทีละข้อก่อน นอกเสียจากเนื้อหาของเกม เรามาศึกษา VRF กันก่อนดีกว่า
เราพิจารณาสิ่งนี้ด้วยคำถามสองข้อ:
1. ฟังก์ชันสุ่มที่ตรวจสอบได้คืออะไร
2. โครงร่างลูกโซ่ปัจจุบันบางรูปแบบใช้ฟังก์ชันสุ่มที่ตรวจสอบได้ได้อย่างไร
ฟังก์ชันสุ่มที่ตรวจสอบได้คืออะไรฟังก์ชันสุ่มที่ตรวจสอบได้สามารถดูเป็นออราเคิลแบบสุ่ม
ซึ่งหมายความว่าฉันสามารถรับเอาต์พุตตัวเลขสุ่มผ่านอินพุตใดก็ได้:
1. สำหรับอินพุตที่แตกต่างกัน ค่าเอาต์พุตจะสุ่มและกระจายอย่างสม่ำเสมอภายในช่วงค่า
2. สำหรับ Input เดียวกัน Output ที่ได้จะต้องเหมือนกัน
อย่างไรก็ตาม ฟังก์ชันสุ่มที่ตรวจสอบได้มีการพิสูจน์ความรู้เป็นศูนย์แบบไม่โต้ตอบมากกว่าการสุ่มแบบออราเคิล ซึ่งสามารถใช้ตรวจสอบความถูกต้องของเอาต์พุตตัวเลขสุ่ม ซึ่งบ่งชี้ว่าตัวเลขสุ่มนั้นถูกสร้างขึ้นโดยใครบางคน
ฟังก์ชันสุ่มที่ตรวจสอบได้ ประกอบด้วยสี่ฟังก์ชัน
1. สร้างคีย์และสร้างคู่คีย์สาธารณะ-คีย์ส่วนตัว ซึ่งจะไม่กล่าวถึงในรายละเอียดในภายหลัง
2. สร้างเอาต์พุตตัวเลขสุ่ม
3. การพิสูจน์ความรู้ทางคอมพิวเตอร์เป็นศูนย์
4. ตรวจสอบผลลัพธ์ของตัวเลขสุ่ม
กระบวนการสร้างตัวเลขสุ่มและการพิสูจน์จะดำเนินการในเครื่อง และอินพุตเป็นคีย์ส่วนตัวและค่า ผลลัพธ์คือตัวเลขสุ่มและการพิสูจน์ความรู้เป็นศูนย์
เราจะสุ่มเลือกจุดผ่านฟังก์ชันทั้งสี่นี้ได้อย่างไร
ข้อความ
ฟังก์ชันสุ่มที่ตรวจสอบได้
วิธีที่ง่ายที่สุด หลังจากที่เราสร้างค่าตัวเลขสุ่มผ่าน VRF ด้านบนแล้ว เราสามารถตั้งค่าเกณฑ์ที่รู้จักโดยเครือข่ายทั้งหมดเพื่อระบุว่าเลือกหรือไม่ ตัวอย่างเช่น เราทุกคนเห็นพ้องต้องกันว่าค่า 100 คือเกณฑ์ สมมติว่าฉันสุ่ม ได้ 101 ในรอบหนึ่ง จากนั้นฉันได้รับอนุญาตให้ดำเนินการขั้นต่อไป
อย่างไรก็ตาม วิธีที่ง่ายที่สุดนี้ไม่มีทางป้องกันการโจมตีของซีบิลได้ ดังนั้น รูปแบบลอตเตอรี่ VRF ในปัจจุบันส่วนใหญ่จะจัดสรรคะแนนเสียงตามสิทธิ์และความสนใจ จากนั้นจึงออกแบบอัลกอริทึมลอตเตอรี
มาดูวิธีแก้ปัญหาที่พบบ่อยที่สุดตอนนี้ ซึ่งก็คือการคำนวณผลลัพธ์ของลอตเตอรีผ่านการแจกแจงแบบทวินามก่อนอื่น เราได้สร้างค่าผ่านคีย์ส่วนตัว ค่านี้จริง ๆ แล้วถือเป็นจำนวนเต็มบวกขนาดใหญ่ สมมติว่าเป็น 256 บิต ช่วงค่าควรอยู่ระหว่าง 0 ถึง 2 ถึงกำลัง 256 ที่สอดคล้องกับมัน
หารด้วย 2 ยกกำลัง 256 เพื่อให้ได้ค่าระหว่าง 0 ถึง 1
ใส่ค่านี้ในการแจกแจงแบบสะสมของการแจกแจงแบบทวินามเพื่อเปรียบเทียบ และคุณจะได้ค่าที่สอดคล้องกัน (ดูรายละเอียดใน PPT)
หากค่านี้มากกว่าศูนย์ จะเท่ากับการจับสลากที่สามารถดำเนินการขั้นตอนต่อไปได้
เผยแพร่ค่านี้พร้อมกับผลรวมที่สร้างโดย VRF ก่อนหน้าไปยังผู้อื่น และผู้ใช้ที่ได้รับรายอื่นสามารถตรวจสอบได้ว่าเงื่อนไขสองข้อต่อไปนี้เป็นจริงหรือไม่:
1. ตรวจสอบความถูกต้องหรือไม่
1. จำเป็นต้องใช้ VRF ในการจับสลากหรือไม่?
มันเปรียบเทียบกับ oracles แบบสุ่มได้อย่างไร?
2. มีสถานการณ์การใช้งานอื่น ๆ หรือไม่?
ขอบคุณทุกคน.
Verifiable Random Functions [1999]
Ouroboros: A provably secure proof-of-stake blockchain protocol [2017] Algorand:
Scaling Byzantine Agreements for Cryptocurrencies [2017]
Ouroboros Praos: An adaptively-secure, semi-synchronous proof-of- stake blockchain [2018]
https://github.com/iost-official/Documents/blob/master/ Technical_White_Paper/EN/Tech_white_paper_EN.md
https://tools.ietf.org/html/draft-irtf-cfrg-vrf-02
https://github.com/Realiserad/fts-tree
https://www.cs.bu.edu/~goldbe/projects/vrf
2. ใช้ฟังก์ชันการแจกแจงแบบทวินามเพื่อหาว่า j' เท่ากับ j หรือไม่
สมมติว่าเงื่อนไขทั้งสองเป็นจริงแสดงว่าผลลอตเตอรี่นั้นถูกต้องและน่าเชื่อถือ
จนถึงขณะนี้ กระบวนการตั้งแต่การสร้างลอตเตอรีไปจนถึงการตรวจสอบเสร็จสมบูรณ์แล้ว
จากคำอธิบายของกระบวนการข้างต้น ไม่ใช่เรื่องยากที่จะเห็นว่ากลไกลอตเตอรีที่ใช้ VRF มีข้อดีหลายประการ:
1. ประการแรก กระบวนการลอตเตอรีไม่จำเป็นต้องสื่อสารกับผู้อื่น และสามารถรับผลการจับสลากได้โดยตรงจากเครื่อง และทุกคนจะรู้จักอินพุต x และค่าเอาต์พุตสำหรับ x เดียวกันจะคงที่ ดังนั้น ไม่สามารถผ่านหลายครั้งลองเปลี่ยนผลสลากกินแบ่ง
2. หลังจากที่โหนดได้รับข้อมูลลอตเตอรีจากโหนดอื่น โหนดจะสามารถใช้ใบรับรองที่แนบมาเพื่อพิสูจน์ความถูกต้องของหมายเลขสุ่มเพื่อให้แน่ใจว่าเจ้าของคีย์ส่วนตัวคำนวณจริง ดังนั้นจึงไม่สามารถปลอมแปลงผลลอตเตอรี่ได้
3. ส่วนใหญ่จะใช้ VRF เพื่อให้ได้ตัวเลขสุ่มหลอก ส่วนของลอตเตอรี่มีหน้าที่หลักในการแจกแจงแบบทวินาม โดยการสร้างพารามิเตอร์ของการแจกแจงแบบทวินาม เราสามารถควบคุมสิทธิ์ในการชนะที่ต้องการได้รับหมายเลขได้อย่างง่ายดาย ถูกปรับให้เข้ากับสถานการณ์ต่าง ๆ ที่ต้องใช้ลอตเตอรี
หลังจากพูดคุยเกี่ยวกับอัลกอริทึมลอตเตอรีตาม VRF แล้ว เรามาดูกันว่าอัลกอริทึมลอตเตอรีนี้นำมาซึ่งฉันทามติของบล็อกเชนอย่างไร
การเปลี่ยนแปลงที่นำมาโดยลอตเตอรี VRF เป็นฉันทามติ
เริ่มจากตัวอย่างที่เฉพาะเจาะจงกันก่อน
Ouroboros เป็นอัลกอริธึมฉันทามติของ Cardano มันน่าสนใจมาก ในตอนแรก มันเสนอแผนกระบวนการฉันทามติแต่แผนนี้มีความปลอดภัยที่พิสูจน์ได้ จากนั้นจะค่อยๆเพิ่มรายละเอียดการใช้งานในการอัปเดตเวอร์ชันกระดาษและในแผนการใช้งานเฉพาะ
จนถึงตอนนี้ เวอร์ชันทางทฤษฎีของเขาได้ทำซ้ำแล้ว 3 เวอร์ชัน ได้แก่ Ouroboros, Praos และ Genesis ในเวอร์ชันที่สองของ Praos ส่วนหนึ่งของ VRF ได้รับการแนะนำในฐานะการแยกโหนดข้อเสนอบล็อก
ขั้นแรก เรามาพูดสั้น ๆ เกี่ยวกับกระบวนการฉันทามติของ Ouroboros:
ก่อนเริ่มแต่ละยุค ในรอบสุดท้ายของยุค เมล็ดสุ่มและผู้ถือ Stake จำนวนหนึ่งจะถูกกำหนดเป็นโหนดที่เข้าร่วมของรอบนี้ ตามเมล็ดสุ่ม ผู้นำสล็อตของสล็อตทั้งหมดในนี้ จะได้รับรอบ และบรรจุตามลำดับ
ในรอบที่แล้ว การส่งเมล็ดพันธุ์แบบสุ่มถูกสร้างขึ้นโดยโครงการ PVSS แบบโต้ตอบ ยกตัวอย่างให้เห็นภาพง่ายๆ ก็คล้ายๆ กับ คน 2 คน ที่ไม่สามารถเดาหมัดผ่านการสื่อสารแบบ Real-time ได้ ถ้าคนใดคนหนึ่งได้รับผลการชกของอีกคนหนึ่งก็ออกหมัดชัวร์ ชนะได้ เพื่อไม่ให้เป็นการ พอใช้ทีแรกเราก็ใช้ไพ่แทนหมัดของเรา แล้วก็ปิดมัน ทุกคนไม่รู้ว่าหมัดคืออะไร แต่รับรองได้ว่าทุกคนเลือกหมัดขึ้น โดยจะประกาศผลในภายหลัง
หลังจากสร้าง Random Seed แล้ว อัลกอริทึม Follow the Satoshi จะถูกใช้เพื่อรับผู้นำช่องของแต่ละช่อง การติดตาม Satoshi ถือได้ว่าเป็นเครื่องออราเคิลแบบสุ่ม ซึ่งสามารถใช้ Random Seed และมูลค่าส่วนของผู้ถือหุ้นแต่ละรายเพื่อให้ แต่ละโหนดจะสุ่มกำหนดผู้มีส่วนได้ส่วนเสียให้เป็นผู้นำสล็อต และแต่ละโหนดจะทราบผลลัพธ์นี้ก่อนที่จะเริ่มยุคนี้ และพวกเขาสามารถคำนวณได้ด้วยตัวเองแล้วจะมีปัญหาคือ
ฉันสามารถทราบโหนดบรรจุภัณฑ์ของบล็อกหนึ่งๆ ได้ล่วงหน้า ดังนั้นผู้โจมตีจึงสามารถโจมตีโหนดบรรจุภัณฑ์ล่วงหน้าเพื่อให้บรรลุวัตถุประสงค์ของการโจมตีได้
ต่อมาใน Praos ซึ่งเป็นเวอร์ชันที่สองของ Ouroboros ได้แนะนำ VRF เพื่อแทนที่แผน Follow the Satoshi หลังจากที่เราเพิ่งเรียนรู้เกี่ยวกับกระบวนการและลักษณะของลอตเตอรี VRF เราสามารถรู้ได้ว่าหลังจากการแนะนำ VRF ทุกๆ โหนดเป็นผู้นำสล็อตของรอบสล็อตเท่านั้นที่รู้จัก หลังจากที่เขาเผยแพร่ โหนดอื่นสามารถตรวจสอบว่าเขามีบทบาทนี้จริง ๆ หรือไม่ เพื่อหลีกเลี่ยงการโจมตีที่กล่าวถึงข้างต้น
แต่สิ่งนี้ก็นำมาซึ่งปัญหาใหม่ ๆ ดังที่กล่าวไว้ข้างต้น Follow the Satoshi สามารถกำหนดผู้นำสล็อตแบบสุ่มให้กับแต่ละสล็อตได้ แต่ VRF ซึ่งเป็นวิธีการจับสลากตามความน่าจะเป็นไม่สามารถแน่ใจเกี่ยวกับจุดนี้ได้ นอกจากนี้ยังอาจเกิดขึ้นที่สล็อตบางรอบไม่ดึงผู้นำสล็อตหรือดึงผู้นำสล็อตออกมาหลายคน ดังนั้นใน Praos จึงมีการเพิ่มโซลูชันเพิ่มเติมเพื่อจัดการกับสถานการณ์นี้
เมื่อเปรียบเทียบโซลูชันทั้งสอง VRF จะแนะนำสถานการณ์ที่ผิดปกติสองสถานการณ์นอกเหนือจากการอัปเกรดความปลอดภัยที่คาดเดาไม่ได้ของผู้นำสล็อต แต่ความผิดปกติทั้งสองนี้เป็นปัญหาใหม่ที่นำเสนอโดย VRF หรือไม่ ลองคิดดู
ในความเป็นจริง ไม่ว่าจะเป็นโซลูชัน Follow the Satoshi หรือ VRF ปัญหานี้จะต้องได้รับการแก้ไข เพราะแม้ว่าฉันจะรับประกันได้ว่าแต่ละสล็อตมีผู้นำสล็อต ฉันก็ไม่สามารถรับประกันได้ว่าผู้นำสล็อตจะสามารถพิมพ์แพ็กเก็ตในสล็อตนี้ได้หรือไม่ วิธีการตรวจสอบ fork เป็นปัญหาที่ต้องพิจารณาตราบเท่าที่ยังเป็น chain สมมติว่า slot leader ถูกโจมตี และการบรรจุซ้ำจำนวนมากใน slot ของตัวเองจะทำให้เกิดปัญหา fork เช่นกัน
ดังนั้นในกรณีที่ไม่มีปัญหาใหม่ การเพิ่มความไม่เปิดเผยตัวตนของโหนดบรรจุภัณฑ์จึงเป็นการอัปเกรดความปลอดภัยสำหรับระบบ
จากนั้น มาดูอัลกอริธึมที่สอดคล้องกันอื่นๆ ที่ใช้หรือพึ่งพา VRF เป็นอย่างมาก

แนวคิดโดยทั่วไปคือการใช้ฟังก์ชันสุ่มที่ตรวจสอบได้เพื่อจับฉลากเพื่อลดจำนวนโหนดฉันทามติที่เข้าร่วมหรือบทบาทบางอย่าง
1. Algorand จะเลือกผู้แบ่งบรรจุก่อน และหลังจากเลือกผู้แบ่งบรรจุแล้ว คณะกรรมการจะถูกเลือก และคณะกรรมการจะใช้ BA* เพื่อเลือกบล็อค
2. ใน Dfinity ขีดจำกัดจะเพิ่มขึ้นตามเงินฝาก และลดจำนวนโหนดที่เข้าร่วม จากนั้นจึงเลือกผู้บรรจุหีบห่อ หลังจากเลือกผู้บรรจุหีบห่อแล้ว ทนายความจะถูกเลือก และน้ำหนักบล็อกจะถูกจัดเรียงเพื่อเลือกบล็อก
ข้อความ
ข้อความ
ปัญหาบางอย่าง
หลังจากแบ่งปัน VRF และแอปพลิเคชันปัจจุบันบางส่วนแล้ว มีคำถามหลายข้อที่เราต้องพิจารณาร่วมกัน:
เปรียบเทียบกับรูปแบบการเข้ารหัสแบบอสมมาตรซึ่งมีกระบวนการคล้ายกันอย่างไร
ขอบคุณทุกคน.
คำอธิบายภาพ
https://github.com/pinqy520/vrf.js

ปัจจุบันใช้ในการดำเนินการตามอัลกอริทึมฉันทามติของ Tarax
อ้างอิง—————————————————————————————————————————————————————
คำอธิบายภาพ
https://v.qq.com/x/page/e0735yg5l7t.html

Blockchain Funds-Technology Federation
ผู้ร่วมจัดงาน BFTF:
คำอธิบายภาพ
