การใช้แบนด์วิธของ Algorand มีประสิทธิภาพเพียงใด แล้ว Ouroboros ของ Cardano ล่ะ? เหตุใด Solana และ NKN จึงมี TPS สูงเช่นนี้ Ethereum ได้ลดช่วงเวลาการบล็อกให้สั้นลงเหลือ 15 วินาที เหตุใดจึงไม่สูงกว่าปริมาณงาน Bitcoin มากนัก
ดร.จาง เหรินจะตอบคำถามเหล่านี้ทีละข้อในการแบ่งปัน ต่อไปนี้เป็นบันทึกสุนทรพจน์ของ ดร. เหริน
การอ่านบทความนี้มีข้อกำหนดบางประการสำหรับความรู้พื้นฐานของบล็อกเชนของผู้อ่าน:
แนวคิดพื้นฐานของโปรโตคอลฉันทามติ Bitcoin (นั่นคือฉันทามติของ Nakamoto)
แนวคิดพื้นฐานของ Ethereum Consensus Protocol
บล็อกเด็กกำพร้า บล็อกลุง การขุดที่เห็นแก่ตัว และแนวคิดอื่นๆ
ลิงค์วิดีโอ:
ลิงค์วิดีโอ:https://v.qq.com/x/page/g0837...
ขอแนะนำตัวเอง ฉันชื่อ Zhang Ren เป็นนักวิจัยที่ Nervos & Cryptape ปัจจุบันฉันเป็นนักศึกษาปริญญาเอกที่ COSIC (Computer Security and Industrial Cryptography group) ที่ KU Leuven ภายใต้การดูแลของ Bart Preneel หากคุณไม่คุ้นเคยกับ COSIC ฉันสงสัยว่าคุณเคยได้ยินเกี่ยวกับ AES ซึ่งเป็นมาตรฐานการเข้ารหัสที่ใช้ในโทรศัพท์มือถือของเราทั้งหมดหรือไม่
แน่นอน ถ้าคุณคุ้นเคยกับ Bart Preneel คุณจะรู้ว่าเขาเป็นนักออกแบบของ RIPEMD 160 RIPEMD 160 เป็นอัลกอริธึมแฮชที่ใช้ในการแปลงรหัสสาธารณะ Bitcoin เป็นที่อยู่ Bitcoin
Nervos CKB เป็นเครือข่ายสาธารณะที่สามารถรองรับสัญญาอัจฉริยะในภาษาโปรแกรมต่างๆ และโปรโตคอล Layer 2 ต่างๆ ใน Nervos CKB คุณสามารถใช้สินทรัพย์ใดก็ได้เพื่อชำระค่าธรรมเนียมการทำธุรกรรม การดำเนินการและการตรวจสอบสัญญาอัจฉริยะใน Nervos CKB นั้นแยกออกจากกันเพื่อให้ได้ความเป็นส่วนตัวและประสิทธิภาพที่ดีขึ้น สุดท้ายนี้ NC-Max ซึ่งเป็นรูปแบบหนึ่งของ Nakamoto Consensus ถูกนำมาใช้ใน Nervos CKB เป็นโปรโตคอลที่สอดคล้องกันซึ่งมีทรูพุตสูงกว่า
ข้อจำกัดความรับผิดชอบ: เนื้อหาที่ใช้ร่วมกันนี้มุ่งเน้นไปที่การวิเคราะห์โปรโตคอลฉันทามติของเลเยอร์ 1 เท่านั้น และฉันจะไม่พูดถึงโซลูชันเลเยอร์ 2 เช่น Lightning Network
ชื่อเรื่องรอง
ทำไมเราถึงชอบ NC ของ Bitcoin?
มาตอบคำถามกันก่อน ทำไมเราถึงชอบ Nakamoto Consensus (NC) ของ Bitcoin
มีหลายสาเหตุ ประการแรก การเพิ่มประสิทธิภาพของ NC นั้นดีมาก สามารถบันทึกทุกไบต์ของทุกการส่งและทุกรอบการคำนวณ ตัวอย่างเช่น ใช้ Compact Block เพื่อเพิ่มความเร็วในการเผยแพร่บล็อก และในอนาคตอาจใช้ Minisketch (ไลบรารีซอฟต์แวร์ที่ใช้เพื่อลดความต้องการแบนด์วิธเมื่อซิงโครไนซ์ข้อมูลระหว่างโหนดต่างๆ ในระบบแบบกระจาย) เพื่อบันทึกการถ่ายทอดธุรกรรม ทรัพยากรแบนด์วิธ ในเวลาเดียวกัน ผู้พัฒนา Bitcoin ได้เสนอ Graftroot (ข้อเสนอที่เกี่ยวข้องกับการพัฒนาสัญญาอัจฉริยะและความเป็นส่วนตัวบน Bitcoin) คุณสามารถคิดว่ามันจะได้รับความเป็นส่วนตัวและความปลอดภัยที่ดีขึ้นโดยการบีบอัดสัญญาอัจฉริยะบน Bitcoin ประสิทธิภาพ บางทีเราอาจจะเห็นการรวมลายเซ็นที่นำไปใช้กับ Bitcoin
ประเด็นความรู้: Compact Block Relay ซึ่งเสนอใน Bitcoin Improvement Protocol (BIP) 152 สามารถลดปริมาณแบนด์วิธที่จำเป็นสำหรับโหนดเครือข่าย P2P เพื่อออกอากาศบล็อก
Compact block คือ "บทสรุป" ของบล็อกทั้งหมด รวมถึงข้อมูลสามส่วนต่อไปนี้:
1. ส่วนหัวของบล็อกของบล็อกใหม่
2. รหัสธุรกรรม
3. การทำธุรกรรมที่สมบูรณ์ที่คาดการณ์โดยโหนดที่ส่ง แต่ไม่พร้อมใช้งานสำหรับโหนดที่รับ
ผู้รับพยายามสร้างบล็อกทั้งหมดขึ้นใหม่ตามข้อมูลที่ได้รับและธุรกรรมใน mempool หากธุรกรรมบางอย่างยังขาดหายไป ก็จะร้องขอโหนดออกอากาศ
อีกเหตุผลที่ชอบ NC คือความสามารถรอบด้าน โมเดล UTXO บวกกับคำสั่งธุรกรรมทั่วโลกสามารถรองรับเทคโนโลยีการแบ่งส่วนย่อยต่างๆ และโครงร่าง Layer 2 รวมถึงสัญญาอัจฉริยะที่ซับซ้อน
เมื่อเปรียบเทียบกันแล้ว รูปแบบบัญชีของ Ethereum นั้นยากกว่าในการ Shard และหากคุณไม่มีคำสั่งการทำธุรกรรมทั่วโลก เช่น โปรโตคอลประเภท DAG จำนวนมาก ก็จะเป็นการยากที่จะรองรับสัญญาอัจฉริยะที่ซับซ้อน ส่วนนี้จะอธิบายในรายละเอียด เมื่อพูดถึง DAG ในภายหลัง
เราชอบความปลอดภัยของ Bitcoin NC เครือข่าย Bitcoin ประสบกับการโจมตีหลายครั้งและทำงานอย่างเสถียรมาเป็นเวลาสิบปี และพูดอย่างเคร่งครัด ขณะนี้ยังไม่มีกลไกฉันทามติในการพิสูจน์การทำงานที่เป็นที่รู้จักซึ่งเหนือกว่า NC โดยรวม หากคุณสนใจในหัวข้อนี้ คุณสามารถดูที่นี่.
ชื่อเรื่องรอง
NC ต้องเปลี่ยนตรงไหนบ้าง?
ตามที่ระบุไว้ในการศึกษาข้างต้น โหนด Bitcoin IPv4 ที่เชื่อมต่อกับเครือข่ายมีแบนด์วิธเฉลี่ยอยู่ที่ 33Mbit/s ในปี 2016 และ 56Mbit/s ในเดือนกุมภาพันธ์ 2017
วิธีการปรับปรุงที่เราคิดได้ง่ายๆ ก็คือตัว protocol เองนั้นสามารถปรับ throughput แบบไดนามิกเพื่อปรับให้เข้ากับการเปลี่ยนแปลงของระดับแบนด์วิธได้หรือไม่?
Bitcoin Unlimited ใช้ความพยายามที่ไม่ดีในการปรับปริมาณงานของ Bitcoin แบบไดนามิก แต่ล้มเหลวและแนะนำเวกเตอร์การโจมตีใหม่หลายตัวเพื่อทำให้โปรโตคอลไม่ปลอดภัย ข้างต้นคือการศึกษาเกี่ยวกับความปลอดภัยของ Bitcoin Unlimited ที่เผยแพร่บน Coindesk (ลิงก์:https://www.coindesk.com/etf-...) และฉันก็เป็นหนึ่งในผู้เข้าร่วมการศึกษานี้ด้วย
อีกสิ่งหนึ่งที่เราหวังว่าจะเปลี่ยนแปลงใน NC คือปัญหาแรงจูงใจ นั่นคือปัญหาการโจมตีการขุดที่เห็นแก่ตัว ผู้โจมตีการขุดที่เห็นแก่ตัวระงับบล็อกที่ค้นพบด้วยความหวังว่าจะได้ผู้นำที่ใหญ่กว่าในเครือข่าย เมื่อนักขุดที่ซื่อสัตย์รายอื่นค้นพบบล็อก ผู้โจมตีจะเผยแพร่บล็อกที่ถูกระงับไปยังเครือข่าย โดยหวังว่าบล็อกที่ถูกระงับที่เผยแพร่จะได้รับจากนักขุดที่ซื่อสัตย์ส่วนใหญ่ก่อนที่จะบล็อกที่ซื่อสัตย์ หากผู้โจมตีโชคดีพอที่บล็อกถัดไปถูกขุดบนบล็อกของผู้โจมตี บล็อกที่ซื่อสัตย์จะถูกละเลย หากผู้โจมตีโชคดีพอที่จะขุดบล็อกได้หลายบล็อกติดต่อกัน จะปลอดภัยมากในการทำให้บล็อกของผู้ขุดที่ซื่อสัตย์เป็นโมฆะ เนื่องจากผู้โจมตีจะมีสายโซ่ที่ยาวกว่า
เหตุใดการขุดที่เห็นแก่ตัวจึงให้ผลกำไร ลองยกตัวอย่างเฉพาะ สมมติว่าผู้โจมตีการขุดที่เห็นแก่ตัวมี 30% ของพลังการประมวลผลของเครือข่ายทั้งหมด และนักขุดที่ซื่อสัตย์ควบคุม 70% ที่เหลือ หากไม่มีการโจมตีการขุดที่เห็นแก่ตัว ผู้โจมตีสามารถค้นพบบล็อก 3 ใน 10 บล็อก นักขุดที่ซื่อสัตย์สามารถค้นพบ 7 บล็อก และทุกคนจะได้รับรางวัลตามสมควร หากผู้โจมตีเปิดการโจมตีการขุดที่เห็นแก่ตัว มันสามารถค้นหาได้ 3 บล็อก และนักขุดที่ซื่อสัตย์สามารถค้นหาได้เพียง 4 บล็อก เนื่องจากบล็อกที่พบโดยนักขุดที่ซื่อสัตย์อีก 3 คนกลายเป็นบล็อกกำพร้าด้วยวิธีการโจมตีดังกล่าว เวลาที่ 10 บล็อก สามารถสร้างได้เพียง 7 ช่วงตึกและอัตราการเติบโตของห่วงโซ่หลักก็ชะลอตัวลง
ชื่อเรื่องรอง
โปรโตคอลฉันทามติทางเลือกอื่น ๆ
แล้วทำไมเราไม่เลือกโปรโตคอลฉันทามติทางเลือกอื่นล่ะ?
ปัจจุบันมีสามวิธีในการแทนที่ NC ได้แก่ PoS (หลักฐานการเดิมพัน การพิสูจน์สิทธิ์และผลประโยชน์) DAG และโปรโตคอลที่สอดคล้องกันของบล็อกสองประเภท โปรดทราบว่าทั้งสามวิธีนี้ไม่ได้แยกออกจากกัน เป็นไปได้ที่จะใช้ 2-3 วิธีพร้อมกัน ด้านล่างนี้ เราจะวิเคราะห์เพิ่มเติมเกี่ยวกับความปลอดภัย การทำงาน และปริมาณงานของโปรโตคอลเหล่านี้
ประการแรกคือ PoS และโปรโตคอล PoS แทบทั้งหมดจะแนะนำสถานที่รักษาความปลอดภัยใหม่ ยกตัวอย่าง Algorand กำหนดให้ข้อความที่ส่งโดยผู้ใช้ที่ซื่อสัตย์ส่วนใหญ่สามารถรับได้โดยผู้ใช้ที่ซื่อสัตย์รายอื่นส่วนใหญ่ภายในช่วงเวลาที่ทราบ ซึ่งหมายความว่าเมื่อคุณถือ Algorand Token ตามการออกแบบดั้งเดิมของโปรโตคอล คุณจะต้องออนไลน์ตลอดเวลาเพื่อรับข้อความ หากคุณไม่ได้ออนไลน์ แสดงว่าคุณไม่ใช่ผู้ถือโทเค็นที่มีคุณสมบัติเหมาะสม
Ouroboros โปรโตคอลที่สอดคล้องกันของ Cardano ถือว่าผู้ใช้ทุกคนมีนาฬิกาที่ซิงโครไนซ์ไม่สม่ำเสมอและสามารถส่งข้อความทั้งหมดได้ภายในช่วงเวลาหนึ่ง นี่เป็นข้อสันนิษฐานที่หนักแน่นมาก มีการโจมตีมากมายที่สามารถบิดเบือนนาฬิกาบนแท่นขุด โหนดสาธารณะ หรือโทรศัพท์ของคุณ และโซลูชันนี้ใช้งานในสภาพแวดล้อมจริงได้ยากมาก
นอกจากนี้ Sleepy Protocol ยังกำหนดให้ผู้ใช้ต้องซิงโครไนซ์นาฬิกาโดยประมาณ
เมื่อข้อสันนิษฐานด้านความปลอดภัยเหล่านี้ถูกละเมิด อาจส่งผลร้ายแรงต่อโปรโตคอล PoS เหล่านี้ และโปรโตคอล PoS ก็แนะนำวิธีโจมตีใหม่ๆ เช่น Nothing-at-stake Attack, Grinding Attack, Long-range Attack วิธีโจมตีเหล่านี้ไม่มีอยู่ในโปรโตคอล PoW และฉันจะไม่อธิบายรายละเอียดวิธีโจมตีเหล่านี้ที่นี่
แล้วโปรโตคอล DAG ล่ะ?
โปรโตคอล DAG ทั้งหมดมีปัญหาในการสั่งซื้อธุรกรรม หากบล็อกถูกสร้างขึ้นพร้อมกันเหมือนในโปรโตคอล DAG ดังนั้นผู้ขุดที่แตกต่างกันหรือโหนดสาธารณะที่แตกต่างกันจะมีการตัดสินที่ไม่สอดคล้องกันเกี่ยวกับลำดับของธุรกรรม: ฉันคิดว่าธุรกรรมบางอย่างได้รับการยืนยัน แต่คนอื่น ๆ อาจพิจารณาอย่างอื่น ชุดของการทำธุรกรรมที่จะได้รับการยืนยัน ในเวลานี้คุณจะมีวิธีคิดสองวิธีในการแก้ปัญหา
หนึ่งคือการจัดเรียงธุรกรรมหลังจากการจัดเรียงโทโพโลยีของบล็อกเชนเสร็จสิ้น ซึ่งหมายความว่าคุณต้องรอเป็นเวลานานเพื่อยืนยันธุรกรรม
อีกอันคือไม่ยืนยันลำดับการทำธุรกรรม การป้อนข้อมูลของสัญญาจำเป็นต้องมีลำดับธุรกรรมทั่วโลก หากลำดับธุรกรรมที่ตัดสินโดยนักขุดที่แตกต่างกันนั้นแตกต่างกัน นักขุดแต่ละคนจะมีความเข้าใจที่แตกต่างกันเกี่ยวกับลำดับการดำเนินการตามตรรกะของสัญญา โดยเฉพาะอย่างยิ่งสำหรับสัญญาที่ซับซ้อน สิ่งนี้จะจำกัดการทำงานของสัญญา สัญญาที่ซับซ้อนไม่สามารถดำเนินการได้ และโทเค็นที่อยู่ในสัญญาจะติดอยู่ในสัญญา
แล้วโปรโตคอลเหล่านั้นที่มีบล็อกสองประเภทล่ะ โปรโตคอลประเภทสองบล็อกตามชื่อที่แนะนำ ใช้บล็อกคีย์ (Key Block) ที่เหมือนกับบล็อกใน NC เพื่อความปลอดภัยในการยืนยันการทำธุรกรรม และกระจายสัญญาณไมโครบล็อกระหว่างสองบล็อกคีย์ ( Micro Block) เพื่อปรับปรุงทรูพุต
โปรโตคอลเหล่านี้มักมีความล่าช้าในการยืนยันนาน เช่น โปรโตคอล DAG Bitcoin NG ใช้รูปแบบข้างต้น มีการระบุไว้อย่างชัดเจนในกระดาษ Bitcoin NG ว่าหากผู้ใช้จำเป็นต้องยืนยันการทำธุรกรรม ใน Bitcoin NG พวกเขาต้องรอการยืนยันของบล็อคหลักหลาย ๆ อันและต้องทนกับความล่าช้าในการทำธุรกรรมที่ยาวนาน
(ในกระบวนการแบ่งปัน Zhang Ren กล่าวว่า Byzcoin ก็มีปัญหาที่คล้ายกันเช่นกัน อย่างไรก็ตาม หลังจากวิเคราะห์เพิ่มเติม ปัญหาก็ไม่คล้ายกัน หากคุณสนใจ Byzcoin คุณสามารถไปที่ฟอรัม:https://talk.nervos.org/t/ner...ชื่อเรื่องรอง
อ้างสิทธิ์ TPS?
โครงการทั้งหมดที่ใช้โปรโตคอลฉันทามติทางเลือกเหล่านี้อ้างว่ามีทรูพุตสูง ดังนั้นทรูพุตของโครงการเหล่านี้คืออะไร (ส่วนต่อไปนี้แนะนำให้ดูวิดีโอประมาณ 15:30 น. ฉากนี้น่าตื่นเต้นมาก)
Solana อ้างว่าสามารถประมวลผลธุรกรรมได้ 710,000 รายการต่อวินาที หากคุณสามารถสร้างความก้าวหน้าครั้งใหญ่ได้ คุณสมควรได้รับรางวัลทัวริง ฉันแทบรอไม่ไหวที่จะได้ยินเกี่ยวกับรางวัลของพวกเขา
นอกจากนี้ยังมีโปรโตคอลที่เรียกว่า NKN พวกเขาอ้างว่าสามารถประมวลผล 1 ล้านธุรกรรมต่อวินาทีในขณะที่มี 10,000 โหนดในเครือข่ายทั้งหมด ฉันไม่รู้ว่าพวกเขาทำได้อย่างไร แต่ฉันประทับใจมากกับวิธีที่พวกเขาบรรลุ อยากรู้.
ฉันยังสงสัยด้วยว่าเหตุใด Stellar และ Ripple จึงจัดประเภทโปรโตคอลเป็น NC และฉันก็สงสัยอย่างมากว่าโหนด 10,000 โหนดสามารถประมวลผลธุรกรรม 1 ล้านรายการต่อวินาทีได้อย่างไร
และถ้าคุณจะมีความฝัน คุณควรจะมีความฝันที่ยิ่งใหญ่ เช่นข้อตกลงนี้ อ้างว่าสามารถมี 10000000000000TPS ด้วยเวลายืนยันสุดท้ายน้อยกว่า 1 วินาที
ฉันคิดว่าโลกไม่ใหญ่พอสำหรับพวกเขา พวกเขาต้องหา Odaily ที่ใหญ่กว่านี้จริงๆ เพื่อปรับใช้โปรโตคอลของพวกเขา
เราควรสังเกตว่า TPS ที่ประกาศตัวเองว่าเทียบไม่ได้ เนื่องจากมีการจำลองในสภาพแวดล้อมเครือข่ายที่แตกต่างกัน การจำลองบางอย่างใช้แบนด์วิธ 1Gbit/s ซึ่งห่างไกลจากสถานการณ์เครือข่ายจริงอย่างเห็นได้ชัด
และข้อตกลงเหล่านี้ไม่สนใจสถานการณ์จริง ไม่อนุญาตให้มีการซิงโครไนซ์ธุรกรรม สำหรับพวกเขาแล้ว ดูเหมือนว่าธุรกรรมทั้งหมดจะถูกซิงโครไนซ์ในบล็อกแล้ว และโปรโตคอลที่สอดคล้องกันจะใช้เพื่อจัดเรียงธุรกรรมเท่านั้น และการจำลองบางอย่างสันนิษฐานว่ามีการเชื่อมต่อโดยตรงระหว่างสมาชิกคณะกรรมการ (โหนด) แต่ความจริงก็คือข้อความทั้งหมดในเครือข่ายโซ่สาธารณะนั้นดำเนินการโดยการแพร่ภาพ และข้อความแพร่ภาพจะใช้แบนด์วิธของโหนดสาธารณะ
ชื่อเรื่องรอง
โมเดลอย่างง่ายสำหรับการเปรียบเทียบปริมาณงาน
ที่นี่เรามีแบบจำลองสำหรับการประเมิน TPS ดังที่แสดงในรูป ก่อนอื่น เราเชื่อว่าแบนด์วิธของโหนดสาธารณะทั้งหมดมีขีดจำกัดสูงสุด ซึ่งสามารถใช้ได้สูงสุด 100% ของแบนด์วิดท์ และคุณไม่สามารถใช้แบนด์วิธเกิน 100% ได้ มีสามองค์ประกอบในการใช้แบนด์วิธที่นี่
ดังที่แสดงในรูปด้านบน ส่วนแรกคือสัดส่วนของแบนด์วิธที่ใช้โดยธุรกรรมที่ใช้สำหรับการยืนยันขั้นสุดท้ายแบบซิงโครนัส และส่วนนี้คือ TPS จริง (นี่คือ TPS จริง) ต้องซิงโครไนซ์ธุรกรรมก่อนจึงจะสามารถยืนยันธุรกรรมได้ ส่วนที่สองคือเศษส่วนของแบนด์วิธที่ "เสีย" ไปโดยโปรโตคอลฉันทามติ ส่วนที่สามคือแบนด์วิธที่ไม่ได้ใช้งาน
ดังนั้นหากคุณต้องการปรับปรุง TPS มีเพียงสองสิ่งที่คุณสามารถทำได้
1. ลดสัดส่วนของแบนด์วิธที่ถูกครอบครองโดยโปรโตคอลฉันทามติ
2. ลดสัดส่วนแบนด์วิธที่ไม่ได้ใช้งาน
มีเพียงสองสิ่งนี้เท่านั้นที่ทำได้ ใช่ ไม่มีวิธีอื่น และแบนด์วิธของโปรโตคอลของ Layer 1 ต้องไม่เกิน 100%
จากนั้นเรามาดูการใช้แบนด์วิธของโปรโตคอลฉันทามติทางเลือกอื่นๆ
ในความเป็นจริง โปรโตคอลจำนวนมากใช้ทรัพยากรแบนด์วิธอันมีค่าในการสื่อสารระหว่างสมาชิกคณะกรรมการ
Algorand เก็บใบรับรองการบล็อกเพื่อพิสูจน์ให้ผู้ใช้ใหม่เห็นว่ามีการบล็อก ขนาดของใบรับรองบล็อกแต่ละรายการคือ 300KB โดยไม่ขึ้นกับขีดจำกัดขนาดบล็อก หากคุณคำนวณตามขนาดบล็อก 1MB หมายความว่าจะใช้แบนด์วิดท์ประมาณ 25% เพื่อซิงโครไนซ์ใบรับรองเหล่านี้เสมอ ดังนั้นฉันจึงสงสัยมากว่าทำไมพวกเขาถึงอ้างว่าปริมาณงานของพวกเขาดีกว่า NC ซึ่งไม่สมเหตุสมผลเลย
อีกวิธีหนึ่งในการเสียแบนด์วิธในโปรโตคอลที่สอดคล้องกันคือธุรกรรมที่ซ้ำซ้อนในบล็อก DAG และบล็อกที่ไม่ได้ใช้งาน ตามที่กล่าวไว้ในรายงานข้างต้น หากโหนดทั้งหมดเลือกที่จะรวมธุรกรรมย่อยชุดเดียวกันในบล็อก สองบล็อกที่สร้างขึ้นพร้อมกันอาจขัดแย้งกัน และปริมาณงานจะไม่สูงมากนัก
ชื่อเรื่องรอง
จะฝ่าฟันภาวะที่กลืนไม่เข้าคายไม่ออกของมติเอกฉันท์ของ Satoshi Nakamoto ได้อย่างไร?
เป็นที่แน่ชัดว่าทรูพุตปัจจุบันไม่สามารถตอบสนองเราได้ ดังนั้น โปรโตคอลที่สอดคล้องกัน NC-Max ของ Nervos CKB ได้ทำการปรับปรุงบางอย่างกับ NC:
NC-Max มีสามนวัตกรรมหลัก
ใช้การยืนยันการทำธุรกรรมแบบสองขั้นตอนเพื่อลดอัตราการบล็อกกำพร้า
ปรับช่วงเวลาการบล็อกแบบไดนามิกและรางวัลการบล็อกเพื่อปรับปรุงการใช้แบนด์วิธให้ดียิ่งขึ้น
พิจารณาบล็อกทั้งหมดในวงจรเมื่อปรับความยากเพื่อต่อต้านการโจมตีการขุดที่เห็นแก่ตัว
ฉันจะอธิบายในรายละเอียดต่อไป
NC มีขีดจำกัดทรูพุตตามธรรมชาติ เนื่องจากมีเพียงสองสิ่งที่คุณสามารถทำได้เพื่อเพิ่มทรูพุตใน NC:
สิ่งแรกคือบล็อกที่ใหญ่กว่า เช่น Bitcoin Unlimited และ Bitcoin Cash และโครงการอื่น ๆ อีกมากมายก็ทำเช่นเดียวกัน
ประการที่สองคือการลดช่วงเวลาการบล็อก
อย่างไรก็ตาม เนื่องจากการบล็อกการแพร่ภาพต้องใช้เวลา หากโหนดอื่นๆ ค้นพบการบล็อกและแพร่ภาพระหว่างการแพร่ภาพ โหนดดังกล่าวจะแข่งขันกับบล็อกที่กำลังแพร่ภาพ และหนึ่งในนั้นจะกลายเป็นบล็อกกำพร้า บล็อกขนาดใหญ่จะใช้เวลาออกอากาศนานขึ้น และการลดช่วงเวลาบล็อกจะลดความยากในการสร้างบล็อก ทำให้โหนดค้นพบบล็อกได้ง่ายขึ้น ผลลัพธ์ของแผนทั้งสองนี้คืออัตราการบล็อกเด็กกำพร้าจะสูงขึ้น บล็อกกำพร้าเหล่านี้ใช้แบนด์วิธมากกว่า แต่ไม่ได้มีส่วนช่วยในการยืนยันธุรกรรม เมื่ออัตราการบล็อก orphan เพิ่มขึ้น ความปลอดภัยของระบบจะลดลงและปริมาณงานลดลง ดังนั้น แผนทั้งสองนี้จะถึงจุดสมดุลในที่สุด เมื่อขนาดบล็อกหรือช่วงเวลาบล็อกถูกปรับถึงระดับหนึ่ง อัตราการบล็อกกำพร้าจะสูงในระดับหนึ่ง แม้ว่าคุณจะเพิ่มขนาดบล็อกหรือลดช่วงเวลาบล็อกเพิ่มเติม , ปริมาณงานหรือจะไม่ได้รับการปรับปรุง
เหตุใดการมีบล็อกกำพร้าจำนวนมากเกินไปจึงส่งผลเสียต่อความปลอดภัยและประสิทธิภาพของเครือข่าย ในรูปด้านบน เราจะเห็นว่าเมื่ออัตราการบล็อกของ orphan สูงมาก ผู้โจมตีสามารถสร้างเชนที่ยาวขึ้นเป็นการส่วนตัวได้อย่างง่ายดาย ผู้โจมตีต้องการเพียงพลังการประมวลผลที่ต่ำกว่า 51% ของพลังการประมวลผลเครือข่ายทั้งหมดเพื่อเขียนทับบล็อกเชน และบล็อกลูกกำพร้าจะใช้แบนด์วิธจำนวนมากของโหนดสาธารณะ ซึ่งจะส่งผลเสียอย่างมากต่อทรูพุตของระบบทั้งหมด
แล้วเราจะทำลายข้อจำกัดของทรูพุต NC ได้อย่างไร? หลังจากการวิเคราะห์ข้างต้น หากเราต้องการทำลายข้อจำกัดนี้ เราต้องลดอัตราการบล็อกเด็กกำพร้า หากอัตราการบล็อกของ orphan ลดลง ทั้งความปลอดภัยและปริมาณงานของเครือข่ายสามารถปรับปรุงได้
จะลดอัตราการบล็อกเด็กกำพร้าได้อย่างไร? การเกิดขึ้นของบล็อกกำพร้าเกิดจากความล่าช้าของการออกอากาศบล็อก หากพบบล็อกอื่นระหว่างการแพร่ภาพบล็อก บล็อกใดบล็อกหนึ่งจะกลายเป็นบล็อกกำพร้า หากการออกอากาศบล็อกเสร็จสิ้นในทันที ก็จะไม่มีบล็อกกำพร้าเกิดขึ้นโดยธรรมชาติ แล้วเราจะแน่ใจได้อย่างไรว่าบล็อกนั้นออกอากาศเร็วพอ?
นักพัฒนา Bitcoin ได้ลงทุนทรัพยากรและพลังงานจำนวนมากเพื่อเพิ่มความเร็วในการออกอากาศของบล็อก และเราจำเป็นต้องค้นหาเพิ่มเติมว่าบล็อกใดที่ออกอากาศช้าหรือมีปัญหา
มาดูกันว่าสิ่งนี้เกิดขึ้นได้อย่างไรโดยละเอียดดูภาพด้านล่าง
ในเครือข่าย Bitcoin ปัจจุบัน หากทุกอย่างเป็นไปได้ด้วยดี บล็อกหนึ่งๆ จะถูกถ่ายทอดผ่านโปรโตคอลการถ่ายทอด Compact Block
ใน Compact Block ธุรกรรมทั้งหมด (ประมาณ 250 ไบต์ต่อธุรกรรมใน Bitcoin) จะไม่ถูกแพร่ภาพ แต่ ID ของธุรกรรมใน Compact Block นั้นจะถูกถ่ายทอด รหัสธุรกรรมเหล่านี้สร้างเป็น Compact Block ซึ่งมีขนาดเล็กกว่าบล็อกจริงมาก ดังนั้นความเร็วจะเร็วกว่ามาก
เมื่อโหนด A เผยแพร่ Compact Block ไปยังโหนด B โหนด B จะตรวจสอบ ID ของธุรกรรมเหล่านี้ หากไม่มีธุรกรรมเหล่านี้เป็นธุรกรรมใหม่สำหรับโหนด B (นั่นคือ กลุ่มธุรกรรมของโหนด B มีธุรกรรมเหล่านี้) โหนด B สามารถส่งต่อสิ่งเหล่านี้ได้ทันที Compact Blocks บล็อกไปยังโหนดที่อยู่ติดกัน สถานการณ์นี้ดีมาก กระบวนการราบรื่นมาก
อย่างไรก็ตาม หากมี Fresh Transaction ใน Compact Block โหนด B จะต้องซิงโครไนซ์ Fresh Transaction จากโหนด A ก่อน จากนั้นจึงตรวจสอบลายเซ็นของธุรกรรมเหล่านี้ ขั้นตอนเหล่านี้ใช้เวลานานมาก โหนด B จะสามารถแพร่ภาพบล็อกต่อไปได้ก็ต่อเมื่อบล็อกทั้งหมดได้รับการตรวจสอบแล้วว่าถูกต้องเท่านั้น กระบวนการนี้ป้องกันไม่ให้บล็อกที่ได้รับนั้นผิดกฎหมาย ดังนั้น นักขุดจะขุดและเผยแพร่หลังจากบล็อกนี้ หากไม่ได้รับการยืนยันและพบว่าเป็นบล็อกที่ผิดกฎหมาย บล็อกหลังจากบล็อกที่ผิดกฎหมายนี้จะไม่ถูกต้อง กระบวนการซิงโครไนซ์ Fresh Transaction เป็นสาเหตุหลักที่ทำให้การออกอากาศบล็อค Bitcoin ล่าช้า
ดังนั้น Ethereum จึงเป็นความพยายามที่แย่ ให้ฉันวิเคราะห์ว่าพวกเขาทำได้อย่างไร Ethereum เพียงแค่ลดช่วงเวลาการบล็อกให้สั้นลง แต่ Ethereum มีปัญหาที่ไม่สามารถตรวจสอบความถูกต้องของธุรกรรมก่อนที่จะได้รับการบล็อก เนื่องจากความถูกต้องของธุรกรรมใน Ethereum ขึ้นอยู่กับลำดับของธุรกรรมในบล็อก ดังนั้นหากคุณต้องการตรวจสอบความถูกต้องของธุรกรรม คุณต้องรอจนกว่าจะได้รับบล็อกทั้งหมด เพื่อให้แต่ละบล็อกเป็นจริงทั้งหมด ธุรกรรม.
และโปรโตคอลเครือข่ายของ Ethereum นั้นได้รับการดูแลรักษาไม่ดีนัก และไม่มีการทำซ้ำเลยตั้งแต่ปี 2015
และยังมีความซ้ำซ้อนมากมายในขั้นตอนการออกอากาศรายการ ไคลเอนต์ Ethereum จะออกอากาศธุรกรรมเดียวกัน 7 ครั้งไปยังโหนดต่างๆ ซึ่งหมายความว่าแต่ละโหนดจะได้รับธุรกรรมเดียวกัน 7 ครั้ง (Ethereum มีไคลเอนต์ที่แตกต่างกัน เช่น Parity Ethereum, Geth เป็นต้น) และมีความไม่สอดคล้องกันระหว่างไคลเอนต์ประเภทต่างๆ และไคลเอนต์ Ethereum หลักทั้งสองนั้นมีความเป็นอิสระต่อกัน
ดังนั้นจึงมีโหนดน้อยมากที่สามารถเชื่อมโยงสองเครือข่ายที่แตกต่างกันได้ ซึ่งเป็นสาเหตุที่อัตราการบล็อกของ Ethereum นั้นสูงถึง 30% ในบางครั้ง และปริมาณการประมวลผลของธุรกรรมต่ำมาก
และนักขุดรายใหญ่ไม่มีแรงจูงใจในการเร่งความเร็วการออกอากาศแบบบล็อก เพราะหากบล็อกของฉันสามารถออกอากาศได้ช้ากว่านั้น ก็หมายความว่าฉันสามารถบรรลุ "การขุดแบบเห็นแก่ตัว" ได้ (ในที่นี้ นักขุดรายใหญ่จะไม่ระงับบล็อก แต่การออกอากาศบล็อกจะช้ากว่า และนักขุดรายอื่น ๆ จะปรากฏในกระบวนการ บล็อกที่แข่งขันกัน และเนื่องจากฉันเป็นนักขุดรายใหญ่ ฉันจึงมีความเป็นไปได้สูงที่จะชนะในกระบวนการแข่งขันกับบล็อกการแข่งขันอื่นๆ) นี่เป็นสิ่งที่ดีสำหรับฉัน ทำไมฉันต้องเร่งบล็อกการแพร่ภาพ
รางวัลบล็อกลุงใน Ethereum ก็ไม่ได้ช่วยอะไรเช่นกัน เนื่องจากนักขุดยังคงได้รับรางวัลสำหรับบล็อกที่ไม่ได้ใช้งาน ดังนั้นนักขุดขนาดเล็กจะใช้วิธีออกอากาศส่วนหัวของบล็อกและบล็อกเปล่าก่อน เนื่องจากความเร็วของการออกอากาศส่วนหัวของบล็อกจะเร็วกว่ามาก และเนื่องจากพวกเขาไม่รู้ว่าธุรกรรมใดที่จะรวมอยู่ในบล็อกถัดไป นักขุดมักจะขุดบล็อกเปล่าเพื่อให้แน่ใจว่าบล็อกนั้นไม่มีธุรกรรมที่ขัดแย้งกับธุรกรรมบล็อกก่อนหน้า สิ่งนี้แย่มากเนื่องจากการบล็อกว่างไม่ได้นำไปสู่การยืนยันธุรกรรม
ด้านล่างนี้คือการออกแบบของเราเพื่อบรรเทาปัญหาบางอย่างที่กล่าวถึงข้างต้น
รูปภาพนี้เป็นโครงสร้างบล็อก เราได้เพิ่มฟิลด์ต่างๆ บนพื้นฐานของโครงสร้างบล็อก Bitcoin
ภาพด้านบนคือโครงสร้างบล็อกของบล็อกที่สมบูรณ์ของเรา ขั้นแรก เรามีพื้นที่ข้อเสนอการทำธุรกรรม (พื้นที่น้าน) เฉพาะพื้นที่ข้อเสนอธุรกรรมเท่านั้นที่สามารถมี Fresh Transaction ได้ ในขณะที่พื้นที่ยืนยันธุรกรรมแบบดั้งเดิม (พื้นที่สีส้ม) สามารถมีธุรกรรมในพื้นที่ข้อเสนอธุรกรรมของช่วง 2-3 บล็อกก่อนหน้าเท่านั้น หากความสูงของบล็อกปัจจุบันคือ h แสดงว่าเป็น hm ถึง hn บล็อกธุรกรรมภายในพื้นที่ข้อเสนอธุรกรรมของ เฉพาะธุรกรรมเหล่านี้เท่านั้นที่สามารถยืนยันได้ ไม่สามารถยืนยันธุรกรรมใหม่ได้โดยพื้นที่ยืนยันธุรกรรม พื้นที่ข้อเสนอธุรกรรมไม่มีธุรกรรมที่สมบูรณ์ มีเพียง ID ธุรกรรม (Truncated Transaction ID) ดังนั้นพื้นที่ข้อเสนอธุรกรรมจะมีขนาดเล็กมาก
สามารถมีบล็อกลุงจำนวนเท่าใดก็ได้ (พื้นที่สีม่วง) ในพื้นที่ส่วนหัวของบล็อกลุง และบล็อกลุงควรมีส่วนหัวของบล็อกและพื้นที่ข้อเสนอธุรกรรม พื้นที่ส่วนหัวของบล็อกลุงจะไม่ถูกนับในขนาดบล็อก ดังนั้นจึงไม่ถูกจำกัดด้วยขนาดบล็อก ดังนั้นผู้ขุดจะไม่ถูกจำกัดจากการเพิ่มบล็อกลุง
ให้ฉันอธิบายเพิ่มเติมเกี่ยวกับพื้นที่ข้อเสนอการทำธุรกรรม พื้นที่นี้มีขนาดเล็กมากเนื่องจากมีเฉพาะรหัสธุรกรรมเท่านั้น ธุรกรรมที่สมบูรณ์จะออกอากาศพร้อมกันกับบล็อก เนื่องจากเป็นกระบวนการแบบคู่ขนาน ดังนั้นการออกอากาศธุรกรรมจะไม่ส่งผลกระทบต่อการออกอากาศของบล็อก และโหนดจำเป็นต้องตรวจสอบแฮชหลังจากได้รับธุรกรรมที่ออกอากาศเท่านั้น ซึ่งจะไม่ส่งผลกระทบต่อกระบวนการตรวจสอบของบล็อก
แม้ว่านั่นหมายความว่าอาจมีธุรกรรมที่ไม่ถูกต้องในพื้นที่ข้อเสนอการทำธุรกรรม ธุรกรรมแบบ double-spend และธุรกรรมที่นักขุดอาจไม่ยอมรับ แต่ก็ไม่สำคัญ
โหนดที่ค้นพบบล็อกจะออกอากาศ Compact Block ก่อน (นั่นคือส่วนหัวของบล็อกและ ID ของการทำธุรกรรม) คล้ายกับกระบวนการกระจาย Bitcoin block ที่กล่าวถึงข้างต้นในโปรโตคอลของเรา Compact Block มีขนาดใหญ่กว่า Bitcoin เล็กน้อย รวมถึงพื้นที่เสนอธุรกรรมและส่วนหัวบล็อกของบล็อกลุงหลายบล็อกและพื้นที่ข้อเสนอธุรกรรมของบล็อกลุง อย่างไรก็ตาม เนื่องจากตัว Compact Block นั้นมีขนาดเล็กพอ มันจึงกระจายไปยังโหนดที่อยู่ติดกันทันที
หากธุรกรรมที่เสนอใหม่บางส่วนไม่ได้อยู่ในกลุ่มธุรกรรมของโหนด ธุรกรรมเหล่านั้นจะถูกถ่ายทอดหลังจากออก Compact Block กระบวนการเหล่านี้เป็นกระบวนการคู่ขนานกันและไม่ส่งผลกระทบซึ่งกันและกัน โหนดได้รับการทำธุรกรรมและออกอากาศไปยังโหนดที่อยู่ติดกันหลังจากการตรวจสอบแฮช
สิ่งนี้ทำให้เกิดคำถามหลายข้อ:
จะเกิดอะไรขึ้นหากนักขุดปฏิเสธที่จะให้เวอร์ชันเต็มของธุรกรรมที่เสนอ?
ฉันใส่ข้อตกลงนี้ไว้ในส่วนข้อเสนอข้อตกลงของฉัน แต่เมื่อคุณถามฉันเกี่ยวกับข้อตกลงทั้งหมด ฉันแสร้งทำเป็นไม่รู้
ในความเป็นจริง สิ่งนี้จะไม่ส่งผลกระทบต่อการออกอากาศแบบบล็อก เนื่องจากสามารถออกอากาศแบบบล็อกได้โดยไม่คำนึงว่าจะมีการทำธุรกรรมใหม่ในพื้นที่ข้อเสนอการทำธุรกรรมหรือไม่
และนักขุดคนอื่น ๆ จะยังคงขุดต่อไปเพราะมีธุรกรรมที่เสนอเพียงพอที่จะยืนยันเสมอ คนงานเหมืองไม่จำเป็นต้องขุดบล็อก เนื่องจากพื้นที่ข้อเสนอธุรกรรมของบล็อกก่อนหน้ามี ID ธุรกรรมที่จะบรรจุ และบล็อกที่ถูกค้นพบจะออกอากาศ ID ธุรกรรมในพื้นที่ยืนยันธุรกรรมที่บรรจุใน Compact Block นักขุดรู้ว่าธุรกรรมใดถูกบรรจุและไม่ได้และพวกเขาจะไม่เลือกธุรกรรมที่ขัดแย้งกับพื้นที่การยืนยันธุรกรรมของบล็อกที่ค้นพบ ดังนั้น นักขุดจะเลือกดำเนินการบรรจุธุรกรรมต่อไปเพื่อสร้างบล็อกและได้รับค่าธรรมเนียม เพื่อช่วยในการยืนยันการทำธุรกรรม
แล้วจะเกิดอะไรขึ้นหากนักขุดรวมธุรกรรมที่เสนอแต่ไม่ได้เผยแพร่เหล่านี้ไว้ในบล็อกล่าสุด เพื่อให้ได้รับประโยชน์จากการทำเหมืองแบบเห็นแก่ตัว
ใน NC ของ Bitcoin นักขุดจะได้รับประโยชน์จากการทำเหมืองโดยการชะลอการออกอากาศบล็อก นักขุดมักจะสามารถออกอากาศเฉพาะส่วนหัวของบล็อกเมื่อทำการขุดบล็อก และช้าลงเมื่อออกอากาศเต็มบล็อก ในกระบวนการนี้ มีเพียงนักขุดเท่านั้นที่สามารถขุดได้ (เพราะมีเพียงเขาเท่านั้นที่รู้ข้อมูลของบล็อกถัดไปและสามารถขุดตามบล็อกใหม่นี้ได้ กระบวนการนี้คล้ายกับการระงับบล็อก)
แต่ในโปรโตคอลของเรา การนำวิธีนี้มาใช้จะทำให้ความเร็วในการแพร่ภาพบล็อกช้าลงหลังจาก n บล็อกเท่านั้น เนื่องจากธุรกรรมที่นำเสนอแต่ไม่มีการออกอากาศนั้นเป็นที่รู้จักในหมู่นักขุดที่เห็นแก่ตัวเท่านั้น และมีเพียงนักขุดที่เห็นแก่ตัวเท่านั้นที่สามารถใช้มันให้เป็นประโยชน์ได้ อย่างไรก็ตาม สิ่งนี้ไม่สามารถใช้ในบล็อกถัดไปได้ เนื่องจากในโปรโตคอลของเรา สามารถขุดได้เพียง n บล็อกเท่านั้นก่อนที่พื้นที่ข้อเสนอจะมีธุรกรรม และต้องมีช่วงเวลาระหว่างนั้น
นักขุดสามารถขุดธุรกรรมข้อเสนอในบล็อก hm ถึง hn เท่านั้น แต่ไม่สามารถขุดธุรกรรมข้อเสนอในบล็อกก่อนหน้าได้ เว้นแต่ว่าบล็อกนี้จะถูกขุดโดยผู้โจมตีเช่นกัน
ดังที่แสดงไว้ นี่คือการเปรียบเทียบโปรโตคอลฉันทามติของเรากับ Bitcoin NC ใน Bitcoin NC เมื่อนักขุดที่เห็นแก่ตัวพบบล็อก h ก็สามารถเริ่มการขุดบล็อก h+1 ได้ทันที และนักขุดที่ซื่อสัตย์สามารถเริ่มการขุดได้หลังจากได้รับบล็อก h ที่สมบูรณ์แล้วเท่านั้น เนื่องจากนักขุดรายอื่นจำเป็นต้องรู้ว่าธุรกรรมที่สมบูรณ์ในบล็อกคือ ตรวจสอบเพื่อตัดสินว่าบล็อกนั้นถูกกฎหมาย และนักขุดที่เห็นแก่ตัวสามารถชะลอความเร็วในการส่งข้อมูลของบล็อก h เพื่อให้นักขุดรายอื่นได้รับบล็อกในภายหลัง ในช่วงบล็อกออกอากาศเป็นช่วงที่ได้เปรียบสำหรับนักขุดที่เห็นแก่ตัว
อย่างไรก็ตาม ในโปรโตคอลของเรา เมื่อนักขุดที่เห็นแก่ตัวพบบล็อก h และเผยแพร่ Compact Block ที่มีส่วนหัวของบล็อกและรหัสธุรกรรม นักขุดที่ซื่อสัตย์สามารถเริ่มขุด h+1 ได้ทันที หากนักขุดที่เห็นแก่ตัวต้องการใช้ประโยชน์จากธุรกรรมที่เสนอแต่ไม่ได้ออกอากาศ จะต้องค้นหาบล็อก n บล็อกในภายหลังที่มีธุรกรรมที่เสนอแต่ไม่ได้ออกอากาศ เพื่อที่พวกเขาจะได้ใช้ประโยชน์จากสิ่งนี้ อย่างไรก็ตาม สิ่งนี้เกิดขึ้นได้ยากคุณไม่สามารถแน่ใจได้ว่าบล็อกหลังจาก n บล็อกนั้นถูกขุดโดยคุณ นี้เป็นเรื่องยากมากที่จะคาดเดา
เพื่อให้ใช้แบนด์วิธได้ดีขึ้น โปรโตคอลของเราจึงใช้กลไกการปรับความยากที่แตกต่างกัน โดยตั้งค่าอัตราการบล็อกกำพร้าคงที่ (คำนวณจากจำนวนบล็อกที่ไม่อยู่ในระยะเวลาการปรับความยากก่อนหน้า)
หากอัตราการบล็อก orphan ต่ำกว่าอัตราการบล็อก orphan ที่ตั้งไว้ในรอบการปรับความยากก่อนหน้านี้ ความยากของการขุดจะลดลง ช่วงเวลาการบล็อกจะลดลง และปริมาณงานจะเพิ่มขึ้น บล็อกที่ไร้ประโยชน์น้อยลงหมายความว่าสถานะปัจจุบันของเครือข่ายมีความสามารถในการซิงค์ธุรกรรมได้เร็วขึ้น และเราสามารถเพิ่มปริมาณงานโดยไม่ลดทอนการกระจายอำนาจของเครือข่าย
ในทางกลับกัน หากความยากเพิ่มขึ้น ช่วงการบล็อกจะเพิ่มขึ้นและปริมาณงานจะลดลง หากอัตราการบล็อกของ orphan สูง หมายความว่าเครือข่ายปัจจุบันไม่สามารถจัดการธุรกรรมจำนวนมากได้ในช่วงระยะเวลาการปรับความยากนี้ และโปรโตคอลจะลดทรูพุต
ในเวลาเดียวกัน รางวัลบล็อกจะแปรผันตาม 1/(ช่วงเวลาบล็อกที่คาดไว้) ดังนั้นรางวัลบล็อกทั้งหมดที่คาดไว้ในแต่ละรอบการปรับความยากจะคงที่
ซึ่งหมายความว่าสมมติว่าเราสร้างบล็อกทุกๆ 10 นาที จะมี 12.5 bitcoins ในแต่ละบล็อก และถ้าการปรับความยากเปลี่ยนเป็นบล็อกทุกๆ 5 นาที จะมี 6.125 bitcoins ในแต่ละบล็อก ดังนั้นอัตราการออกของสกุลเงินจึงคงที่เช่นกัน
ในที่สุด ต่อต้านการโจมตีการขุดที่เห็นแก่ตัว เราได้กล่าวถึงก่อนหน้านี้ว่าความแตกต่างระหว่างโปรโตคอลของเราและ NC คือกลไกการปรับความยากของเรานั้นคำนวณจากบล็อกทั้งหมดที่ปรากฏในช่วงการปรับความยาก และบล็อกอันล่างจะถูกรวมอยู่ด้วยเมื่อประเมินกำลังการประมวลผลทั้งหมด
ใน NC-Max สันนิษฐานว่าผู้โจมตีคิดเป็น 30% ของพลังการประมวลผลทั้งหมดและนักขุดที่ซื่อสัตย์ 70% หากไม่มีการโจมตีการขุดที่เห็นแก่ตัวผู้โจมตีสามารถค้นหา 3 บล็อกจาก 10 บล็อกและผู้ขุดที่ซื่อสัตย์ สามารถหา 7 บล็อก หากการขุดแบบเห็นแก่ตัวถูกดำเนินการ ผู้โจมตีสามารถค้นพบ 3 บล็อกจาก 7 บล็อก นักขุดที่ซื่อสัตย์พบ 4 บล็อก 3 บล็อกที่ซื่อสัตย์จะกลายเป็นบล็อกกำพร้า และห่วงโซ่หลักจะเติบโตอย่างช้าๆ
ดังที่ได้กล่าวไว้ก่อนหน้านี้ การขุดแบบเห็นแก่ตัวไม่มีประโยชน์ในรอบการปรับความยากแรก ดังนั้นจะเกิดอะไรขึ้นในรอบการปรับความยากที่สอง
ในรอบการปรับความยากครั้งต่อไป ความยากจะไม่เปลี่ยนแปลง (เนื่องจากความยากจะคำนวณตามบล็อกทั้งหมด รวมถึงบล็อกที่ไร้ค่า) และผู้โจมตีไม่สามารถใช้พลังการคำนวณเท่าเดิมเพื่อค้นหาบล็อกเพิ่มเติม ดังนั้นการขุดที่เห็นแก่ตัวจะไม่ทำกำไรอีกต่อไป รูปภาพ.
กล่าวคือ เราถือว่าราคาสกุลเงินยังคงมีเสถียรภาพในช่วงเวลาสั้น ๆ เนื่องจากผู้โจมตีการขุดเหมืองที่เห็นแก่ตัวมีสายตาสั้น รางวัลของพวกเขาจะถูกกำหนดตามรางวัลที่ได้รับต่อหน่วยเวลา ซึ่งอาจเทียบเท่ากับพลังเดียวกัน การบริโภค. รางวัล. ใน Bitcoin ผู้โจมตีการขุดที่เห็นแก่ตัวสามารถ "บังคับ" โปรโตคอลเพื่อลดความยากของการสร้างบล็อคโดยการลดอัตราการเติบโตของเชน เพื่อให้พวกเขาสามารถรับรางวัลมากขึ้นต่อหน่วยเวลาหลังจากปรับความยาก ในการออกแบบโปรโตคอล NC-Max ความยากของการสร้างบล็อกจะถูกคำนวณตามบล็อกทั้งหมด รวมถึงบล็อก orphan ผู้โจมตีทำให้บล็อกของนักขุดที่ซื่อสัตย์กลายเป็นบล็อกกำพร้า แต่ไม่สามารถ "บังคับ" โปรโตคอลให้ลดความ ความยากของการสร้างบล็อก รับรางวัลที่สูงขึ้นต่อหน่วยเวลา
สุดท้าย เพื่อสรุป โปรโตคอลของเราจะใช้ประโยชน์จากบล็อกเด็กกำพร้า:
เราหวังว่าจะลดจำนวนของบล็อกที่ถูกละเลยผ่านการตรวจสอบธุรกรรมแบบ 2 ขั้นตอน หลังจากจำนวนของบล็อกที่ถูกละเลยลดลง เราจะใช้อัตราการบล็อกที่ถูกละเลยเป็นตัวบ่งชี้การใช้แบนด์วิธเพื่อปรับปริมาณงานแบบไดนามิก
และข้อมูลบล็อกกำพร้าถูกเขียนในบล็อกเชน เราใช้ข้อมูลนี้ในอัลกอริธึมการปรับความยากในการขุดเพื่อทำให้การขุดแบบเห็นแก่ตัวไม่เกิดประโยชน์
NC-Max เป็นโปรโตคอลฉันทามติ PoW ของ Nervos CKB NC เป็นตัวย่อของ Nakamoto Consensus ซึ่งเป็นโปรโตคอลที่สอดคล้องกันของ Bitcoin หากหลังจากอ่านบทความนี้แล้ว คุณคิดว่าโปรโตคอลฉันทามตินี้ควรมีชื่อที่ดีกว่านี้ โปรดแจ้งให้เราทราบ
การอ่านที่แนะนำ: บทความการวิเคราะห์ฉันทามติด้านความปลอดภัยของ Dr. Zhang Ren"การพัฒนาเกณฑ์ทั่วไป: การประเมินความปลอดภัยของโปรโตคอลที่สอดคล้องกันของ PoW"
