ขอขอบคุณเป็นพิเศษสำหรับ Sacha Yves Saint-Leger และ Joseph Schweitzer สำหรับการรีวิว
Sharding เป็นหนึ่งในการปรับปรุงหลายอย่างที่ eth2 มีมากกว่า eth1 คำนี้ยืมมาจากการวิจัยฐานข้อมูล โดยที่ shard หมายถึง ชิ้นส่วนที่ใหญ่กว่า ในบริบทของฐานข้อมูลและ eth2 การแบ่งส่วนหมายถึงการแบ่งพื้นที่จัดเก็บและการคำนวณของทั้งระบบออกเป็นส่วนแบ่งข้อมูล ประมวลผลส่วนแบ่งข้อมูลแยกกัน และรวมผลลัพธ์ตามต้องการ โดยเฉพาะอย่างยิ่ง eth2 ใช้เครือข่ายชาร์ดจำนวนมาก โดยที่แต่ละชาร์ดมีความสามารถคล้ายคลึงกับเชน eth1 ซึ่งส่งผลให้เกิดการปรับปรุงขนาดอย่างมาก
อย่างไรก็ตาม มีการแบ่งส่วนประเภทที่ไม่ค่อยมีใครรู้จักใน eth2 สิ่งที่น่าตื่นเต้นกว่าจากมุมมองการออกแบบโปรโตคอล ป้อนฉันทามติที่แบ่งส่วน
ฉันทามติการแบ่งส่วน
ในลักษณะเดียวกับที่พลังการประมวลผลของโหนดที่ช้าที่สุดจำกัดปริมาณงานของเครือข่าย ทรัพยากรการประมวลผลของเครื่องมือตรวจสอบความถูกต้องเดียวจะจำกัดจำนวนเครื่องมือตรวจสอบทั้งหมดที่สามารถมีส่วนร่วมในฉันทามติได้ เนื่องจากเครื่องมือตรวจสอบความถูกต้องเพิ่มเติมแต่ละตัวจะแนะนำการทำงานพิเศษสำหรับเครื่องมือตรวจสอบความถูกต้องอื่นๆ ทุกตัวในระบบ จึงจะมาถึงจุดที่เครื่องมือตรวจสอบที่มีทรัพยากรน้อยที่สุดไม่สามารถเข้าร่วมได้อีกต่อไป (เนื่องจากไม่สามารถติดตามการโหวตของเครื่องมือตรวจสอบอื่นๆ ทั้งหมดได้อีกต่อไป) . วิธีแก้ปัญหาที่ eth2 ใช้เพื่อสิ่งนี้คือ ฉันทามติแบบแบ่งส่วน–
ทำลายมันลง
Eth2 แบ่งเวลาออกเป็นสองช่วง ได้แก่ slot และ epoch
ช่องคือกรอบเวลา 12 วินาทีซึ่งคาดว่าจะเพิ่มบล็อกใหม่ลงในห่วงโซ่ การบล็อกเป็นกลไกที่การลงคะแนนเสียงโดยผู้ตรวจสอบความถูกต้องรวมอยู่ในห่วงโซ่ นอกเหนือจากธุรกรรมที่ทำให้ห่วงโซ่มีประโยชน์จริง ๆ
ยุคประกอบด้วย 32 ช่อง (6.4 นาที) ในระหว่างที่บีคอนเชนทำการคำนวณทั้งหมดที่เกี่ยวข้องกับการบำรุงรักษาของเชน รวมถึง: การให้เหตุผลและการสรุปบล็อกใหม่ และการออกรางวัลและบทลงโทษให้กับผู้ตรวจสอบความถูกต้อง
ดังที่เราได้กล่าวไปแล้วใน โพสต์แรกของซีรีย์นี้ผู้ตรวจสอบจะถูกจัดเป็นคณะกรรมการเพื่อทำงานของตน ในแต่ละครั้ง ผู้ตรวจสอบความถูกต้องแต่ละคนจะเป็นสมาชิกของหนึ่งกลุ่มบีคอนและคณะกรรมการกลุ่มย่อยหนึ่งคน และถูกเรียกให้ทำการรับรองหนึ่งครั้งต่อยุค โดยที่การรับรองคือการลงคะแนนสำหรับบล็อกลูกโซ่บีคอนที่ได้รับการเสนอให้ ช่อง
โมเดลความปลอดภัยของความเห็นพ้องต้องกันแบบแบ่งส่วนของ eth2 ขึ้นอยู่กับแนวคิดที่ว่าคณะกรรมการมีการนำเสนอทางสถิติที่แม่นยำของชุดเครื่องมือตรวจสอบโดยรวมไม่มากก็น้อย
ตัวอย่างเช่น หากเรามีสถานการณ์ที่ 33% ของผู้ตรวจสอบความถูกต้องในชุดโดยรวมเป็นอันตราย ก็มีโอกาสที่พวกเขาจะจบลงในคณะกรรมการชุดเดียวกัน นี่จะเป็นหายนะสำหรับโมเดลการรักษาความปลอดภัยของเรา
ดังนั้นเราจึงต้องมีวิธีที่จะทำให้แน่ใจว่าสิ่งนี้จะไม่เกิดขึ้น กล่าวอีกนัยหนึ่ง เราต้องการวิธีที่จะทำให้แน่ใจว่าหาก 33% ของผู้ตรวจสอบเป็นอันตราย จะมีเพียงประมาณ 33% ของผู้ตรวจสอบในคณะกรรมการเท่านั้นที่จะเป็นอันตราย
ปรากฎว่าเราสามารถบรรลุเป้าหมายนี้ได้ด้วยการทำสองสิ่ง:
- ตรวจสอบให้แน่ใจว่าการมอบหมายงานของคณะกรรมการเป็นการสุ่ม
- ต้องมีผู้ตรวจสอบจำนวนขั้นต่ำในแต่ละคณะกรรมการ
ตัวอย่างเช่น เมื่อมีผู้ตรวจสอบความถูกต้องสุ่มตัวอย่าง 128 คนต่อคณะกรรมการ โอกาสของผู้โจมตีที่มี 1/3 ของผู้ตรวจสอบความถูกต้องที่ได้รับการควบคุม > 2/3 คณะกรรมการนั้นมีน้อยมาก (ความน่าจะเป็นน้อยกว่า 2^-40–
กำลังสร้างมันขึ้นมา
การลงคะแนนเสียงโดยผู้ตรวจสอบความถูกต้องเรียกว่าการยืนยัน การรับรองประกอบด้วยองค์ประกอบหลายอย่าง โดยเฉพาะ:
- การโหวตให้กับหัวบีคอนเชนปัจจุบัน
- การลงคะแนนเสียงว่าบล็อกบีคอนใดควรได้รับการพิสูจน์/สรุปผล
- การลงคะแนนเสียงเกี่ยวกับสถานะปัจจุบันของห่วงโซ่ชาร์ด
- ลายเซ็นของผู้ตรวจสอบทุกคนที่เห็นด้วยกับการลงคะแนนนั้น
การรวมส่วนประกอบต่างๆ ให้ได้มากที่สุดในการรับรองจะทำให้ประสิทธิภาพโดยรวมของระบบเพิ่มขึ้น สิ่งนี้เป็นไปได้เนื่องจากแทนที่จะต้องตรวจสอบการโหวตและลายเซ็นสำหรับบล็อกบีคอนและบล็อกส่วนแบ่งแยกกัน โหนดต้องทำเพียงการคำนวณทางคณิตศาสตร์เพื่อรับรองเท่านั้นจึงจะได้รับแจ้งเกี่ยวกับสถานะของสายสัญญาณบีคอนและของสายโซ่ส่วนแบ่งข้อมูลทั้งหมด
หากผู้ตรวจสอบความถูกต้องทุกรายสร้างการรับรองของตนเอง และการรับรองทุกครั้งจำเป็นต้องได้รับการตรวจสอบโดยโหนดอื่นๆ ทั้งหมด การเป็นโหนด eth2 จะมีราคาแพงมาก ป้อนการรวมกลุ่ม
การรับรองได้รับการออกแบบมาให้รวมเข้าด้วยกันได้อย่างง่ายดาย โดยหากผู้ตรวจสอบตั้งแต่สองคนขึ้นไปมีการรับรองที่มีการโหวตเท่ากัน ก็สามารถรวมกันได้โดยการเพิ่มช่องลายเซ็นเข้าด้วยกันในการรับรองเดียว นี่คือสิ่งที่เราหมายถึงโดยการรวมกลุ่ม
ตามโครงสร้างของคณะกรรมการแล้ว จะมีคะแนนเสียงที่รวบรวมได้ง่ายเนื่องจากได้รับมอบหมายให้อยู่ในชาร์ดเดียวกัน และดังนั้นจึงควรได้รับคะแนนเสียงเท่ากันสำหรับทั้งสถานะชาร์ดและบีคอนเชน นี่คือกลไกที่ eth2 ปรับขนาดจำนวนผู้ตรวจสอบความถูกต้อง โดยการแบ่งผู้ตรวจสอบความถูกต้องออกเป็นคณะกรรมการ ผู้ตรวจสอบความถูกต้องจำเป็นต้องใส่ใจสมาชิกในคณะกรรมการคนอื่นๆ เท่านั้น และจะต้องตรวจสอบการรับรองโดยรวมเพียงเล็กน้อยจากคณะกรรมการอื่นๆ แต่ละคณะกรรมการเท่านั้น
การรวมลายเซ็น
Eth2 ใช้ลายเซ็น BLS – รูปแบบลายเซ็นที่กำหนดไว้บนเส้นโค้งรูปไข่หลายเส้นที่เป็นมิตรต่อการรวมกลุ่ม บนเส้นโค้งเฉพาะที่เลือก ลายเซ็นจะเป็น 96 ไบต์ แต่ละ.
หาก 10% ของ ETH ทั้งหมดลงเอยด้วยการเดิมพัน ก็จะมีผู้ตรวจสอบประมาณ 350,000 คนใน eth2 ซึ่งหมายความว่ามูลค่าของลายเซ็นในยุคหนึ่งจะเป็นเช่นนั้น 33.6 เมกะไบต์ ที่มา~7.6 กิกะไบต์ ต่อวัน. ในกรณีนี้การกล่าวอ้างที่เป็นเท็จทั้งหมดเกี่ยวกับ ขนาดสถานะ eth1 สูงถึง 1TB ย้อนกลับไปในปี 2018 จะเป็นจริงในกรณีของ eth2 ในเวลาน้อยกว่า 133 วัน (ขึ้นอยู่กับลายเซ็นเพียงอย่างเดียว)
เคล็ดลับที่นี่คือสามารถรวมลายเซ็น BLS ได้: หาก Alice สร้างลายเซ็น กและลายเซ็นของบ๊อบคือ บี บนข้อมูลเดียวกัน ทั้งลายเซ็นของ Alice และ Bob สามารถจัดเก็บและตรวจสอบร่วมกันได้โดยการจัดเก็บเท่านั้น ค = ก + บี– เมื่อใช้การรวมลายเซ็น จะต้องจัดเก็บและตรวจสอบลายเซ็นเพียง 1 รายการสำหรับทั้งคณะกรรมการ ซึ่งจะช่วยลดความต้องการในการจัดเก็บให้เหลือน้อยกว่า 2 เมกะไบต์ ต่อวัน.
โดยสรุป
โดยการแยกผู้ตรวจสอบออกเป็นคณะกรรมการ ความพยายามที่จำเป็นในการตรวจสอบ eth2 จะลดลงตามลำดับความสำคัญ
สำหรับโหนดที่จะตรวจสอบความถูกต้องของบีคอนเชนและชาร์ดเชนทั้งหมด โหนดจะต้องดูที่การรับรองแบบรวมจากคณะกรรมการแต่ละชุดเท่านั้น ด้วยวิธีนี้ จึงสามารถทราบสถานะของทุกส่วน และความคิดเห็นของผู้ตรวจสอบทุกคนว่าบล็อกใดเป็นและไม่ได้เป็นส่วนหนึ่งของห่วงโซ่
กลไกของคณะกรรมการจึงช่วยให้ eth2 บรรลุเป้าหมายการออกแบบสองประการที่กำหนดไว้ใน บทความแรก: กล่าวคือ การเข้าร่วมในเครือข่าย eth2 จะต้องเป็นไปได้บนแล็ปท็อประดับผู้บริโภค และจะต้องมุ่งมั่นที่จะกระจายอำนาจให้สูงสุดโดยการสนับสนุนผู้ตรวจสอบความถูกต้องให้ได้มากที่สุด
ในการใส่ตัวเลข แม้ว่าโปรโตคอล Byzantine Fault Tolerant Proof of Stake ส่วนใหญ่จะปรับขนาดเป็นสิบ (และในกรณีที่รุนแรง จะต้องมีเครื่องมือตรวจสอบความถูกต้องหลายร้อยตัว) eth2 ก็มีความสามารถในการมีเครื่องมือตรวจสอบความถูกต้องหลายแสนตัวที่ล้วนมีส่วนช่วยในการรักษาความปลอดภัยโดยไม่กระทบต่อเวลาแฝงหรือปริมาณงาน