Monad ก้าวล้ำไปอีกขั้นด้วยการปรับปรุงจุดความสมดุลระหว่างการกระจายอำนาจและความสามารถในการปรับขยายอย่างมีประสิทธิภาพMonad นำเสนอการปรับปรุงใน 4 ด้านหลัก ส่งผลให้เกิดบล็อคเชนที่มีปริมาณธุรกรรมสูงถึง 10,000 รายการต่อวินาที (tps) ดังนี้:
- MonadBFT: ปรับปรุงกระบวนการ(consensus) เพื่อความรวดเร็วและเสถียร
- Deferred Execution: เลื่อนการประมวลผลธุรกรรมบางประเภทเพื่อเพิ่มประสิทธิภาพ
- Parallel Execution: ประมวลผลธุรกรรมหลายรายการพร้อมกันเพื่อรองรับปริมาณธุรกรรมสูง
- MonadDb: ฐานข้อมูลบล็อกเชนที่ปรับปรุงประสิทธิภาพ
ด้านที่ 1 MonadBFT
MonadBFT:
two-phase HotStuff Consensus
ระบบ Consensus ใหม่ของ Monad ที่ช่วยให้มี TPS มากกว่า 10,000 + และ Finality ที่ต่ำมาก MonadBFT เป็นอัลกอริทึม BFT สองเฟสแบบท่อส่ง (pipelined) ที่มีความตอบสนอง (optimistic responsiveness) เป็นคุณสมบัติของกลไกความเห็นชอบแบบ Byzantine Fault Tolerance (BFT) ที่ช่วยให้เครือข่ายสามารถตอบสนองต่อธุรกรรมใหม่ได้อย่างรวดเร็ว โดยไม่จำเป็นต้องรอให้รอบความเห็นชอบแบบ BFT เสร็จ สมบูรณ์ และมีค่าใช้จ่ายการสื่อสารแบบเชิงเส้นในกรณีปกติ และแบบกำลังสองในกรณีที่เกิด timeout
MonadBFT เป็นกลไกความเห็นชอบ (consensus) ประสิทธิภาพสูง ที่ใช้สำหรับสร้างความตกลงเกี่ยวกับลำดับการทำธุรกรรม ภายใต้สภาวะที่ซิงโครไนซ์บางส่วน (partially synchronous) และ (Byzantine actors) มันเป็นรูปแบบปรับปรุงมาจาก HotStuff โดยผสมผสานแนวคิดจาก Jolteon/DiemBFT/Fast-HotStuff ซึ่งลดจำนวนรอบจากสามรอบลงเหลือสองรอบ โดยใช้ประโยชน์จากความซับซ้อนของการสื่อสารแบบกำลังสอง (quadratic communication complexity) ในกรณีที่ leader timeout.
optimistic responsiveness
- ทำให้เครือข่ายตอบสนองต่อธุรกรรมใหม่ได้อย่างรวดเร็ว
- ช่วยลดเวลาแฝงของเครือข่าย
- ปรับปรุงประสิทธิภาพของเครือข่าย
Consensus Protocol
แต่ละรอบของ MonadBFT ประกอบด้วยขั้นตอนหลัก ๆ ดังนี้:
- การเสนอบล็อก: โหนดผู้นำ (leader) จะเสนอบล็อกใหม่ไปยังโหนดผู้ลงคะแนน (voters)
- การลงคะแนน: โหนดผู้ลงคะแนนจะตรวจสอบบล็อกและลงคะแนนว่าเห็นด้วยหรือไม่เห็นด้วย
- ใบรับรองโควลัม (QC) หรือใบรับรอง timeout (TC): หากผู้ลงคะแนนส่วนใหญ่เห็นด้วย ผู้นำคนถัดไปจะส่งใบรับรองโควลัม (QC) ไปยังผู้ลงคะแนน หากผู้นำหมดเวลา ผู้นำคนถัดไปจะส่งใบรับรอง timeout (TC) ไปยังผู้ลงคะแนน
- การยอมรับบล็อก: ผู้ลงคะแนนตรวจสอบ QC หรือ TC และยอมรับบล็อกหากถูกต้อง
ในแต้ละรอบของ MonadBFT จะเกิดเหตุการณ์ดังต่อไปนี้:
1. การส่งบล็อกและใบรับรองโดยผู้นำ:
- ผู้นำจะส่งบล็อกใหม่ออกไปยังโหนดผู้ลงคะแนน
- ผู้นำจะส่งใบรับรองโควลัม (QC) หรือใบรับรอง timeout (TC) สำหรับรอบก่อนหน้าไปพร้อมกันด้วย
- QC คือใบรับรองที่แสดงความตกลงเห็นชอบของโหนดส่วนใหญ่ในรอบที่แล้ว
- TC คือใบรับรองที่แสดงความล้มเหลวของผู้นำในรอบที่แล้ว
2. การตรวจสอบบล็อกและการลงคะแนนโดยโหนดผู้ลงคะแนน:
- โหนดผู้ลงคะแนนแต่ละโหนดจะตรวจสอบบล็อกใหม่ว่าเป็นไปตามข้อกำหนดของโปรโตคอลหรือไม่
- หากโหนดผู้ลงคะแนนเห็นด้วยกับบล็อกใหม่ โหนดนั้นจะส่งการลงคะแนนแบบ YES ที่ลงลายมือชื่อไปยังผู้นำในรอบถัดไป
- ผู้นำในรอบถัดไปจะรวบรวมการลงคะแนนแบบ YES จากโหนด 2f + 1 โหนดขึ้นไป (เกินครึ่งหนึ่งของโหนดทั้งหมด) เพื่อสร้างใบรับรองโควลัม (QC) โดยใช้ลายเซ็น пороговое (threshold signature)
- การสื่อสารในขั้นตอนนี้เป็นแบบเชิงเส้น คือ ผู้นำส่งบล็อกไปยังผู้ลงคะแนน และผู้ลงคะแนนส่งการลงคะแนนไปยังผู้นำคนถัดไปโดยตรง
3. การจัดการกับกรณีผู้นำหมดเวลา:
- หากโหนดผู้ลงคะแนนไม่ได้รับการเสนอบล็อกที่ถูกต้องภายในเวลาที่กำหนด โหนดผู้ลงคะแนนจะส่งข้อความแจ้งหมดเวลา (timeout message) ที่ลงลายมือชื่อไปยังโหนดอื่น ๆ ทั้งหมดในเครือข่าย
- ข้อความแจ้งหมดเวลาจะรวมถึงใบรับรองโควลัม (QC) ที่โหนดผู้ลงคะแนนได้รับมาล่าสุดด้วย
- หากโหนดใดโหนดหนึ่งรวบรวมข้อความแจ้งหมดเวลาจากโหนด 2f + 1 โหนดขึ้นไป โหนดนั้นจะสร้างใบรับรอง timeout (TC) โดยใช้ลายเซ็น (threshold signature) และส่งไปยังผู้นำในรอบถัดไปโดยตรง
4.ขั้นตอนสุดท้ายของกลไก MonadBFT:
การสรุปผลบล็อก:
- ผู้ลงคะแนนแต่ละโหนดจะสรุปผลบล็อกที่เสนอในรอบ k เมื่อได้รับใบรับรองโควลัม (QC) สำหรับรอบ k+1 นั่นคือ เมื่อได้รับการสื่อสารจากผู้นำในรอบ k+2
ตัวอย่าง:
- สมมติว่า Alice เป็นผู้นำในรอบ k และส่งบล็อกใหม่ไปยังทุกคนพร้อมกับใบรับรองโควลัม (QC) หรือใบรับรอง timeout (TC) สำหรับรอบ k-1
- ถ้าโหนดผู้ลงคะแนน 2f+1 โหนดลงคะแนนแบบ YES สำหรับบล็อกนั้น โดยส่งการลงคะแนนไปยัง Bob (ผู้นำในรอบ k+1) บล็อกในรอบ k+1 ก็จะรวมใบรับรองโควลัม (QC) สำหรับรอบ k ไว้ด้วย
- อย่างไรก็ตาม การที่ Valerie (ซึ่งเป็นโหนดผู้ลงคะแนน) เห็นใบรับรองโควลัม (QC) สำหรับรอบ k ยังไม่เพียงพอที่จะสรุปได้ว่าบล็อกในรอบ k ได้รับการสรุปผลแล้ว เนื่องจาก Bob อาจเป็นโหนดที่ทำงานผิดพลาดและส่งบล็อกเพียงให้ Valerie คนเดียวก็ได้
- สิ่งที่ Valerie ทำได้คือลงคะแนนสำหรับบล็อกในรอบ k+1 โดยส่งการลงคะแนนไปยัง Charlie (ผู้นำในรอบ k+2)
- ถ้าโหนดผู้ลงคะแนน 2f+1 โหนดลงคะแนนแบบ YES สำหรับบล็อกในรอบ k+1 Charlie ก็จะเผยแพร่ใบรับรองโควลัม (QC) สำหรับรอบ k+1 พร้อมกับเสนอบล็อกใหม่สำหรับรอบ k+2
- ทันทีที่ Valerie ได้รับบล็อกนี้ เธอก็จะสรุปได้ว่าบล็อกจากรอบ k (บล็อกของ Alice) ได้รับการสรุปผลแล้ว
การจัดการกับผู้นำที่ทำงานผิดพลาด:
- ถ้า Bob ทำงานผิดพลาด เช่น ส่งบล็อกที่ไม่ถูกต้องในรอบ k+1 หรือส่งบล็อกไปยังโหนดผู้ลงคะแนนน้อยกว่า 2f+1 โหนด โหนดผู้ลงคะแนนอย่างน้อย f+1 โหนดก็จะหมดเวลา จากนั้นโหนดผู้ลงคะแนนที่ไม่ทำงานผิดพลาดที่เหลือก็จะหมดเวลาตามไปด้วย ส่งผลให้อย่างน้อยหนึ่งโหนดสร้างใบรับรอง timeout (TC) สำหรับรอบ k+1
- Charlie ก็จะเผยแพร่ใบรับรอง timeout (TC) สำหรับรอบ k+1 ในบล็อกที่เสนอในรอบ k+2 (เขาต้องทำเช่นนี้เพราะไม่มีใบรับรองโควลัม (QC) สำหรับรอบ k+1 ให้ใช้)
กฎการสรุปผลแบบ 2 บล็อก:
- กฎการสรุปผลนี้เรียกว่ากฎการสรุปผลแบบ 2 บล็อก (2-chain commit rule) เพราะทันทีที่ผู้ลงคะแนนเห็นบล็อกที่ผ่านการรับรอง 2 บล็อกติดกันคือ B และ B’ พวกเขาก็สามารถสรุปผลบล็อก B และบรรพบุรุษของ B ทั้งหมดได้
BLS multi-signatures
1. ใบรับรองแบบดั้งเดิม (QCs และ TCs):
- ใบรับรองแบบดั้งเดิมมักใช้ลายเซ็นต์ดิจิทัล ECDSA บน secp256k1
- ใบรับรองเหล่านี้สร้างและตรวจสอบได้ง่าย
- แต่มีข้อจำกัดด้านขนาดที่เพิ่มขึ้นตามจำนวนผู้ลงนาม ทำให้มีปัญหาในการขยายขนาดเครือข่าย
2. ลายเซ็นต์ดิจิทัลแบบคู่ BLS multi-signatures:
- ลายเซ็นต์ดิจิทัลแบบคู่ BLS บน BLS12–381 ช่วยแก้ปัญหาเรื่องขนาดได้
- สามารถรวมลายเซ็นต์จากผู้ลงนามหลายคนเข้าด้วยกันเป็นลายเซ็นต์เดียวได้
- การตรวจสอบลายเซ็นต์ที่รวมแล้วเพียงครั้งเดียว เป็นการยืนยันว่าผู้ลงนามทั้งหมดได้ลงนามในข้อความนั้นจริง
3. ข้อดีและข้อจำกัดของ BLS:
- ข้อดี: แก้ปัญหาเรื่องขนาดของใบรับรองได้
- ข้อจำกัด: ประมวลผลได้ช้ากว่า ECDSA
4. แนวทางผสมผสานใน MonadBFT:
- MonadBFT ใช้แนวทางผสมผสานโดยเลือกใช้ BLS เฉพาะกับข้อความประเภทที่สามารถรวมกันได้ (เช่น การลงคะแนนและข้อความแจ้งหมดเวลา)
- ยังคงใช้ ECDSA เพื่อรับประกันความสมบูรณ์และความถูกต้องของข้อความประเภทอื่น ๆ