จุดสิ้นสุดที่แท้จริงของบล็อก DAG
คำนำ
คำนำ
ชื่อระดับแรก
ความสำคัญของขั้นสุดท้าย
ขั้นสุดท้ายของโทโพโลยีบล็อกเชนส่วนใหญ่ในปัจจุบันขึ้นอยู่กับความน่าจะเป็น ซึ่งหมายความว่าคุณไม่สามารถแน่ใจได้ 100% ว่าการทำธุรกรรมเสร็จสมบูรณ์จริงๆ ตัวอย่างเช่น ในเครือข่าย Bitcoin เมื่อเวลาผ่านไป (หรือในภาษาของโลก Bitcoin เมื่อจำนวนบล็อกเพิ่มขึ้น) ความน่าจะเป็นที่ผู้โจมตีจะตามทันเครือข่ายที่เหลือและจัดระเบียบบล็อกใหม่จะแปรผันลดลงแบบทวีคูณ การลดความเสี่ยงแบบเอกซ์โปเนนเชียลนี้ทำให้เกิดลัทธินิยมนิยมแบบ "6 บล็อก" กล่าวอีกนัยหนึ่ง หากมีการเพิ่มบล็อกอีก 5 บล็อกในบล็อกที่มีธุรกรรมของคุณ ธุรกรรมของคุณจะ "อยู่ลึกลงไป 6 บล็อก" และในทางสถิติ ธุรกรรมนั้นไม่มากนัก อาจถูกโจมตีด้วยการจัดการใหม่
ในหลายกรณี การสรุปความน่าจะเป็นนั้นใช้ได้ อย่างไรก็ตาม หากคุณกำลังดำเนินการธุรกรรมจำนวนมาก ซึ่งแต่ละรายการขึ้นอยู่กับผลลัพธ์ของธุรกรรมก่อนหน้า หรือหากคุณกำลังดำเนินการธุรกรรมขนาดใหญ่ และคุณต้องแน่ใจว่าธุรกรรมนี้จะไม่ถูกย้อนกลับ ดังนั้นขั้นสุดท้ายคือ ค่อนข้างสำคัญ
ชื่อระดับแรก
ขั้นสุดท้ายของ DAG หมายถึงอะไร
โปรดจำไว้ว่าความเสี่ยงในการจัดเรียงใหม่ของกลไกการสั่งซื้อในช่วงต้นของเราส่วนใหญ่เกิดขึ้นเมื่อมีการเปลี่ยนแปลงโซ่สมอ
ดังนั้น ตราบใดที่เรามั่นใจได้ว่าโซ่สมอได้รับการแก้ไขอย่างสม่ำเสมอ ลำดับของบล็อกบนโซ่สมอสามารถกำหนดได้อย่างสมบูรณ์ไม่ว่าจะเกิดอะไรขึ้น
เราจะทำอย่างไร? เครือข่ายจะทำการลงคะแนนอย่างสม่ำเสมอ ประสานกับการสร้างบล็อก DAG เพื่อใช้น้ำหนักที่ไม่สิ้นสุดกับบล็อกเฉพาะที่อยู่ใกล้กับขอบเขต DAG
เมื่อบล็อกได้รับน้ำหนักไม่จำกัด หมายความว่าบล็อกทั้งหมดที่ชี้โดยตรงหรือโดยอ้อมผ่านตัวชี้ผี (ตัวชี้ผี) มีน้ำหนักไม่สิ้นสุด ซึ่งหมายความว่าขณะนี้เป็นไปไม่ได้ที่จะล้มล้างคำสั่งนี้ด้วยการโจมตี
ในรูปด้านบน เราได้เลือกบล็อกสีส้มเพื่อให้น้ำหนักไม่สิ้นสุด และเราจะเห็นว่าความไม่สิ้นสุดนี้ได้ทำให้บล็อกทั้งหมดบนโซ่สมอมีน้ำหนักไม่สิ้นสุดโดยชี้กลับไปที่บล็อก DAG (ทำเครื่องหมายเป็นสีเทาเข้มในรูป) . ตอนนี้เราได้กำหนดลำดับของโซ่สมอนี้และบล็อกทั้งหมดตามยุคของมันอย่างมีประสิทธิภาพแล้ว
ชื่อระดับแรก
การเลือกบล็อกเป็นระยะโดยอัลกอริทึมคล้าย PBFT
ในการเลือกบล็อกภายใน DAG สำหรับการสรุป เราใช้กระบวนการที่คล้ายกับอัลกอริทึม PBFT (Practical Byzantine Fault Tolerance) เมื่อพิจารณาว่า PBFT เป็นอัลกอริทึมที่ได้รับการพัฒนาอย่างดีและใช้งานอย่างกว้างขวาง รายละเอียดและข้อบกพร่องที่อาจเกิดขึ้น (ข้อบกพร่อง) ที่เกี่ยวข้องกับบทความนี้จะไม่ถูกกล่าวถึงซ้ำที่นี่
กระบวนการสรุปการบล็อกงวดของ PBFT นั้นแบ่งออกเป็นสี่ขั้นตอนอย่างคร่าว ๆ ดังแสดงในแผนภาพแบบง่ายด้านล่าง
ชื่อเรื่องรอง
1. เสนอบล็อกใหม่
คำนวณสิทธิ์ผ่าน VRF (SK, Previous_PBFT_block_hash, current_vote_type, current_round_number, current_step_number) = (e, π) โดยที่ e คือค่าสิทธิ์ และ π เป็นหลักฐานการคำนวณ VRF ที่ถูกต้อง
ตัดสินใจว่า "ถ้า e < เกณฑ์ แสดงว่ามีสิทธิ์เสนอบล็อก PBFT ในรอบนี้"
เลือกตัวเลือกบล็อก DAG ใกล้กับขอบเขต แต่ไม่อยู่บนขอบเขตสำหรับการยืนยันขั้นสุดท้าย นั่นคือ ตัวเลือกบล็อก Pt ของช่วงเวลาปัจจุบัน (ระยะเวลา)
สร้างวงจรระหว่าง Pt และ P(t-1) (รายละเอียดด้านล่าง) ค้นหาบล็อกทั้งหมดที่อยู่ในวงจรนี้
สร้าง CS กำหนดการพร้อมกัน
สร้างตัวเลือกบล็อก PBFT (Pc) ที่มี (Pt, CS) และข้อมูลอื่นๆ เช่น การประทับเวลา ลายเซ็น ผู้รับผลประโยชน์
คำนวณแฮชของ Pc (แฮช)
ชื่อเรื่องรอง
2. โหวตผู้นำ
คำนวณคุณสมบัติอีกครั้งผ่าน VRF (นำ current_round_number บวกหนึ่งและประเภทการลงคะแนนปัจจุบัน) เพื่อสร้างใหม่ (e, π)
ตัดสินใจว่า "ถ้า e < threshold แสดงว่ามีสิทธิ์ในรอบนี้"
รอ 2 λ โดยที่ λ คือเส้นผ่านศูนย์กลางของเครือข่าย นั่นคือระยะทางที่สั้นที่สุด (ในเวลา) ระหว่างสองโหนดที่ไกลที่สุดในเครือข่าย
คำนวณค่าต่ำสุดของ e ที่สังเกตได้เมื่อ π ถูกต้อง และผู้สร้างเป็นค่าต่ำสุด เมื่อ e เป็น "ผู้นำ" จะเป็นผู้สร้าง - โหนดนี้เป็นผู้เสนอตัวเลือกบล็อก PBFT ถัดไป
ชื่อเรื่องรอง
3. โหวตบล็อก
คำนวณคุณสมบัติอีกครั้งผ่าน VRF (นำ current_round_number บวกหนึ่งและประเภทการลงคะแนนปัจจุบัน) เพื่อสร้างใหม่ (e, π)
ตัดสินใจว่า "ถ้า e < threshold แสดงว่ามีสิทธิ์ในรอบนี้"
รอ 2 lambdas
คำนวณว่าได้รับการโหวต 2T+1 ภายในเวลา e_min ที่กำหนดหรือไม่ (โดย T คือ 1/3 ของโหนดการโหวตที่มีคุณสมบัติเหมาะสมในรอบที่แล้ว)
หากยังไม่มีบล็อก PBFT ระบบจะทำการสำรวจแบบเพียร์ทูเพียร์สำหรับพีซีที่สอดคล้องกับ e_min และแฮชที่เกี่ยวข้อง (Pc)
ตรวจสอบว่าสร้างพีซีอย่างถูกต้อง
ชื่อเรื่องรอง
4. โหวตเพื่อไปยังขั้นตอนต่อไป
คำนวณคุณสมบัติอีกครั้งผ่าน VRF (นำ current_round_number บวกหนึ่งและประเภทการลงคะแนนปัจจุบัน) เพื่อสร้างใหม่ (e, π)
ตัดสินใจว่า "ถ้า e < threshold แสดงว่ามีสิทธิ์ในรอบนี้"
รอ 2 lambdas
คำนวณว่าพีซีที่ได้รับคะแนนโหวต 2T+1 หรือไม่
ตรวจสอบว่าพีซีที่ชนะนั้นถูกสร้างขึ้นอย่างถูกต้อง
คำนวณพีซีที่ผ่านการตรวจสอบล่าสุดและส่งผลลัพธ์ไปยังที่เก็บข้อมูลถาวร
ชื่อระดับแรก
บทนำเพิ่มเติมเกี่ยวกับ PBFT ของเรา
สิ่งที่เขียนไว้ข้างต้นเป็นคำอธิบายที่ง่ายมาก
ข้อความ
กระบวนการ PBFT นี้มีความปลอดภัยสูงและสามารถปรับขนาดได้
โปรดทราบว่าทุกครั้งที่โหนดต้องการพูด โหนดจะคำนวณค่าสิทธิ์ VRF เพื่อให้แน่ใจว่ามีสิทธิ์พูดในรอบนั้น เกณฑ์การมีสิทธิ์ได้รับการตั้งค่าและปรับเปลี่ยนแบบไดนามิกเพื่อให้แน่ใจว่ามีสองสิ่ง:
โหนดที่เข้าร่วมในแต่ละรอบนั้นสุ่มและอาจแตกต่างกัน หมายความว่าเมื่อผู้โจมตีสังเกตโหนดในฐานะผู้เข้าร่วมและกำหนดเป้าหมายโหนดนั้น อาจถูกตัดสิทธิ์ในรอบถัดไป สิ่งนี้แตกต่างจากอัลกอริทึมอื่น ๆ ที่จะรักษาผู้เข้าร่วม (หรือสมาชิกคณะกรรมการ) ไว้เป็นระยะเวลานาน ทำให้พวกเขากลายเป็นเป้าหมายหลักสำหรับการโจมตี
ในรอบที่กำหนด จะมีเพียงเศษเสี้ยวของโหนดที่มีสิทธิ์เท่านั้นที่เข้าร่วม ทำให้กระบวนการ PBFT นี้สามารถปรับขนาดได้อย่างมาก ซึ่งหมายความว่าแม้ว่าความจุของเครือข่ายจะขยายและจำนวนผู้เข้าร่วมที่มีคุณสมบัติเพิ่มขึ้น ผู้เข้าร่วมจริง (ขนาดคณะกรรมการ) ของรอบ PBFT เหล่านี้ที่สัมพันธ์กับความจุของเครือข่ายสามารถตั้งค่าได้อย่างง่ายดายเพื่อให้เกิดการขยายย่อยเชิงเส้น ยิ่งจำนวนผู้เข้าร่วมน้อยเท่าไหร่ กระบวนการลงคะแนนก็จะเร็วขึ้นเท่านั้น
ชื่อระดับแรก
ห่วงโซ่ PBFT แบบขนาน
กระบวนการ PBFT ของ Taraxa สร้างสายโซ่เชิงเส้นของบล็อก PBFT ควบคู่ไปกับ DAG ของบล็อกที่มีอยู่
ทุกบล็อก PBFT มีสองเป้าหมายหลัก
เสร็จสิ้นการสิ้นสุดของบล็อก DAG ในบล็อกเป็นระยะ
ชื่อระดับแรก
เสร็จสิ้นการสิ้นสุดของบล็อก DAG
กระบวนการ PBFT นี้จะยืนยันบล็อกเดียวภายในบล็อก DAG ดังนั้นจึงไม่เหมือนกับเครือข่ายอื่นๆ ส่วนใหญ่ที่ใช้กระบวนการ PBFT จึงไม่ทำหน้าที่เป็นอัลกอริทึมหลักในการตรวจสอบกระบวนการบล็อกเชนทั้งหมด นี่คือสาเหตุที่กระบวนการ PBFT ของ Taraxa เป็นแบบคู่ขนานและเป็นแบบอะซิงโครนัสส่วนใหญ่กับกระบวนการสร้างบล็อก DAG
เมื่อใดก็ตามที่บล็อก DAG ใหม่เสร็จสิ้น เราจะสร้างโซ่สมอที่สรุปแล้วและชุดของบล็อกที่เกี่ยวข้องบนโซ่สมอ (นำไปใช้ตามยุคของบล็อกสมอแต่ละอัน) คอลเลกชันของบล็อกทั้งหมดเรียกว่าจุด ซึ่งสามารถมองได้ว่าเป็นสแนปชอตของกลุ่มบล็อกที่เรียงเป็นขั้นสุดท้าย
ชื่อระดับแรก
การตั้งเวลาพร้อมกัน
การจัดกำหนดการพร้อมกันกำหนดการสั่งซื้อด้วยวิธีต่อไปนี้:
ลำดับของบล็อกถูกกำหนดโดยกลไกการสั่งซื้อ เนื่องจากมีบล็อกจำนวนมากในหนึ่งรอบ
กรองธุรกรรมที่ซ้ำซ้อนระหว่างบล็อก เนื่องจากเราใช้โครงสร้างข้อมูล DAG จึงเป็นไปได้สูงที่ผู้เสนอบล็อกหลายรายจะจัดแพคเกจธุรกรรมชุดเดียวกันลงในบล็อก DAG ที่แตกต่างกัน ส่งผลให้เกิดการทับซ้อนของธุรกรรมในระดับหนึ่ง Taraxa ออกแบบกลไกอนุญาโตตุลาการธุรกรรม (จะแนะนำโดยละเอียดในบทความถัดไป) เพื่อช่วยปรับการทับซ้อนนี้ - เราหวังว่าจะลดสถานการณ์นี้ให้เหลือน้อยที่สุดแต่ไม่ใช่ศูนย์ มิฉะนั้นจะมีการแยกธุรกรรมมากเกินไป
แบ่งธุรกรรมออกเป็นชุดพร้อมกันและชุดต่อเนื่อง
นี่เป็นส่วนสำคัญของการออกแบบ EVM พร้อมกันของเรา (ซึ่งจะแนะนำในบทความถัดไป) ซึ่งชุดของอัลกอริทึมการดำเนินการเชิงคาดเดาถูกใช้เพื่อแบ่งธุรกรรมออกเป็นธุรกรรมที่สามารถดำเนินการได้อย่างปลอดภัยแบบขนาน และธุรกรรมที่ต้องดำเนินการตามลำดับ .
คุณยังสามารถนึกถึงการตั้งเวลาพร้อมกันซึ่งเป็นผลจากการรวมบล็อก DAG แต่ละบล็อกเป็นบล็อกเดียวและฝังแต่ละบล็อก PBFT
นอกจากความเห็นพ้องต้องกัน เราจะยังคงแบ่งปันเทคโนโลยีที่น่าสนใจมากขึ้นและเปิดตัวในกระบวนการวิจัยและการใช้งาน
คอยติดตาม!


