Vitalik Buterin: ทำให้เข้าใจถึงลักษณะเฉพาะทางเทคนิคของ Sharding
ผู้เขียนต้นฉบับ: Vitalik Buterin
ที่มา: Hackernoon
การรวบรวมต้นฉบับ: ChinaDeFi
Sharding คืออนาคตของความสามารถในการปรับขนาดสำหรับ Ethereum และจะเป็นกุญแจสำคัญในการช่วยให้ระบบนิเวศรองรับการทำธุรกรรมหลายพันรายการต่อวินาที และยังช่วยให้พื้นที่ส่วนใหญ่ของโลกใช้แพลตฟอร์มนี้เป็นประจำในราคาที่เหมาะสม อย่างไรก็ตาม มันยังเป็นหนึ่งในแนวคิดที่เข้าใจผิดในระบบนิเวศ Ethereum และระบบนิเวศบล็อกเชนที่กว้างขึ้น หมายถึงชุดของแนวคิดที่มีคุณสมบัติเฉพาะเจาะจงมาก แต่ปัจจุบันมักจะรวมเข้ากับเทคโนโลยีที่มีคุณสมบัติด้านความปลอดภัยที่อ่อนแอกว่า จุดประสงค์ของโพสต์นี้คือเพื่ออธิบายว่า Sharding มีคุณสมบัติเฉพาะอะไรบ้าง แตกต่างจากเทคโนโลยีที่ไม่ Sharding อื่นๆ อย่างไร และสิ่งที่ระบบ Sharded ต้องเสียสละเพื่อให้บรรลุคุณสมบัติเหล่านี้

หนึ่งในหลาย ๆ คำอธิบายของ Ethereum's sharded version ภาพวาดต้นฉบับโดย Hsiao-wei Wang ออกแบบโดย Quantstamp
ชื่อระดับแรก
Trilemma ความสามารถในการปรับขนาด

วิธีที่ดีที่สุดในการอธิบาย Sharding ควรเริ่มต้นด้วยคำชี้แจงปัญหาที่วางแผนและสร้างแรงบันดาลใจในการแก้ปัญหา: ไตรเลมมาของความสามารถในการปรับขนาด
ไตรเลมมาความสามารถในการปรับขนาดระบุว่าบล็อกเชนพยายามมีคุณสมบัติสามอย่าง และถ้าเรายึดติดกับเทคโนโลยีที่ "เรียบง่าย" เราก็จะสามารถบรรลุผลสำเร็จได้เพียงสองในสามคุณสมบัตินี้เท่านั้น คุณลักษณะทั้งสามนี้คือ:
ความสามารถในการปรับขนาด: ห่วงโซ่สามารถจัดการธุรกรรมได้มากกว่าโหนดปกติเดียวที่สามารถตรวจสอบได้
การกระจายอำนาจ: ห่วงโซ่สามารถทำงานได้โดยไม่ต้องพึ่งพากลุ่มเล็ก ๆ ของนักแสดงที่รวมศูนย์ขนาดใหญ่ โดยปกติจะตีความว่าเมื่อเราไม่สามารถเข้าร่วมกลุ่มของโหนดกับแล็ปท็อปทั่วไปได้ เราก็ไม่ควรไว้ใจโหนดนั้น
ความปลอดภัย: สายโซ่ทนทานต่อการโจมตีส่วนใหญ่บนโหนดที่เข้าร่วม (ตามหลักการแล้ว 50% มากกว่า 25% ใช้ได้ 5% ไม่เป็นไร)
ทีนี้ มาดู "วิธีแก้ปัญหาอย่างง่าย" ทั้งสามหมวดหมู่นี้ ซึ่งโดยปกติจะมีเพียงสองหมวดหมู่เท่านั้น:
บล็อกเชนแบบดั้งเดิม: รวมถึง Bitcoin, pre-PoS/sharded Ethereum, Litecoin และเชนอื่นๆ ที่คล้ายกัน พวกเขาพึ่งพาผู้เข้าร่วมแต่ละคนที่เรียกใช้โหนดแบบเต็มเพื่อตรวจสอบความถูกต้องของธุรกรรมแต่ละรายการ ดังนั้นจึงมีการกระจายอำนาจและปลอดภัย แต่ไม่สามารถปรับขนาดได้
เชน TPS สูง: รวมถึงตระกูล DPoS แต่ยังมีอีกหลายกลุ่มเช่นกัน พวกเขาพึ่งพาโหนดจำนวนเล็กน้อย (ปกติคือ 10-100) เพื่อรักษาฉันทามติระหว่างกัน และผู้ใช้ต้องเชื่อถือโหนดส่วนใหญ่ สิ่งนี้สามารถปรับขนาดได้และปลอดภัย แต่จะไม่มีการกระจายอำนาจ
ระบบนิเวศหลายสายโซ่: หมายถึงแนวคิดทั่วไปของ "การปรับขนาดในแนวนอน" โดยการเรียกใช้แอปพลิเคชันที่แตกต่างกันบนสายโซ่ต่างๆ และสื่อสารระหว่างกันโดยใช้โปรโตคอลการสื่อสารข้ามสายโซ่ สิ่งนี้เป็นแบบกระจายอำนาจและปรับขนาดได้ แต่ก็ไม่ปลอดภัยเพราะผู้โจมตีต้องการเพียงโหนดที่สอดคล้องกันส่วนใหญ่ในหนึ่งในหลาย ๆ เชนเพื่อทำลายเชนนั้นและอาจทำให้เกิดปฏิกิริยาลูกโซ่ ส่งผลกระทบต่อแอปพลิเคชันในเชนอื่น ๆ นอกจากนี้ยังสามารถสร้างความเสียหายอย่างมาก .
Sharding เป็นเทคโนโลยีที่สามารถตอบสนองความต้องการทั้งสามประการได้ในเวลาเดียวกัน blockchain ที่แยกย่อยคือ:
ปรับขนาดได้: สามารถรองรับธุรกรรมได้มากกว่าโหนดเดียว
การกระจายอำนาจ: สามารถ "อยู่รอด" บนแล็ปท็อปทั่วไปได้อย่างสมบูรณ์โดยไม่ต้องอาศัย "โหนดพิเศษ" ใด ๆ
ส่วนที่เหลือของบทความนี้จะอธิบายถึงวิธีการที่บล็อกเชนแบบแยกส่วนทำสิ่งนี้
ชื่อระดับแรก
การแบ่งกลุ่มโดยการสุ่มตัวอย่าง
การแบ่งส่วนย่อยที่เข้าใจได้มากที่สุดคือการแยกย่อยโดยการสุ่มตัวอย่าง Sharding ผ่านการสุ่มตัวอย่างมีคุณสมบัติความน่าเชื่อถือที่อ่อนแอกว่ารูปแบบของ Sharding ที่เราสร้างขึ้นในระบบนิเวศ Ethereum แต่ใช้เทคนิคที่ง่ายกว่า
โดยมีแนวคิดหลักดังนี้ สมมติว่าเรามีห่วงโซ่การพิสูจน์การเดิมพันที่มีตัวตรวจสอบความถูกต้องจำนวนมาก (เช่น 10,000) และบล็อกจำนวนมาก (เช่น 100) ที่ต้องตรวจสอบในเวลาเดียวกัน ไม่มีคอมพิวเตอร์เครื่องใดที่มีประสิทธิภาพเพียงพอที่จะตรวจสอบบล็อกเหล่านี้ทั้งหมดก่อนที่บล็อกชุดถัดไปจะเข้ามา

ดังนั้นสิ่งที่เราทำคือแบ่งการตรวจสอบความถูกต้องแบบสุ่ม เราสุ่มสุ่มรายชื่อตัวตรวจสอบความถูกต้อง ให้ตัวตรวจสอบความถูกต้อง 100 คนแรกในรายการที่มีสัญญาณรบกวนตรวจสอบบล็อกแรก และให้ตัวตรวจสอบความถูกต้อง 100 ตัวสุดท้ายในรายการที่มีสัญญาณรบกวนตรวจสอบบล็อกที่สอง ดังนั้นการเปรียบเทียบนั้น กลุ่มผู้ตรวจสอบที่ถูกสุ่มเลือกเพื่อตรวจสอบบล็อก (หรือทำงานอื่น ๆ บางอย่าง) เรียกว่าคณะกรรมการ
เมื่อตัวตรวจสอบความถูกต้องตรวจสอบบล็อก พวกเขาจะออกลายเซ็นเพื่อยืนยันว่าพวกเขาได้ทำเช่นนั้น คนอื่น ๆ แทนที่จะตรวจสอบ 100 บล็อกเต็ม ตอนนี้ตรวจสอบเพียง 10,000 ลายเซ็น ซึ่งทำงานน้อยลงมาก โดยเฉพาะอย่างยิ่งกับการรวมลายเซ็น BLS แทนที่จะออกอากาศผ่านเครือข่าย P2P เดียวกัน แต่ละบล็อกจะออกอากาศในเครือข่ายย่อยที่แตกต่างกัน และโหนดจำเป็นต้องเข้าร่วมเครือข่ายย่อยที่สอดคล้องกับบล็อกที่ตนรับผิดชอบเท่านั้น (หรือสนใจด้วยเหตุผลอื่น)
เราสามารถแนะนำคำศัพท์ทางคณิตศาสตร์เพื่อหารือเกี่ยวกับสิ่งที่เกิดขึ้น เมื่อใช้สัญลักษณ์ Big O เราจะระบุกำลังการคำนวณของโหนดเดียวด้วย "O(C)" บล็อกเชนแบบดั้งเดิมสามารถรองรับบล็อกขนาด O(C) ได้ ดังที่กล่าวไว้ข้างต้น ชาร์ดเชนสามารถประมวลผลบล็อก O(C) แบบขนานได้ (ค่าใช้จ่ายของแต่ละโหนดในการตรวจสอบแต่ละบล็อกทางอ้อมคือ O(1) เนื่องจากแต่ละโหนดต้องการเพียงตรวจสอบลายเซ็นในจำนวนที่แน่นอนเท่านั้น) แต่ละโหนดความจุของ บล็อกคือ O(C) ดังนั้นความจุรวมของเศษโซ่คือ O(C2) นี่คือเหตุผลที่เราเรียก Sharding ประเภทนี้ว่า Sharding รอง และผลกระทบนี้เป็นเหตุผลสำคัญที่ทำให้เราเชื่อว่า Sharding เป็นวิธีที่ดีที่สุดในการขยายขนาดของบล็อกเชนในระยะยาว
ชื่อระดับแรก
คำถามที่พบบ่อย: อะไรคือความแตกต่างระหว่างการแบ่งออกเป็นคณะกรรมการ 100 ชุดและการแยกออกเป็น 100 สายงานแยกกัน
มีความแตกต่างที่สำคัญสองประการ:
การสุ่มตัวอย่างช่วยป้องกันไม่ให้ผู้โจมตีเน้นอำนาจการยิงไปที่ชิ้นส่วนเดียว ในระบบนิเวศแบบหลายเชนที่มี 100 เชน ผู้โจมตีต้องการเพียง 0.5% ของเดิมพันทั้งหมดเพื่อสร้างความเสียหาย ใน sharded blockchain ผู้โจมตีจะต้องเป็นเจ้าของเกือบ 30-40% ของเงินเดิมพันทั้งหมดเพื่อทำเช่นเดียวกัน (กล่าวคือ chain มีความปลอดภัยร่วมกัน) แน่นอน พวกเขาสามารถรอจนกว่าพวกเขาจะโชคดีพอที่จะสุ่มได้รับ 51% ในเศษชิ้นส่วน แม้ว่าพวกเขาจะถือหุ้นน้อยกว่า 50% ของเงินเดิมพันทั้งหมด แต่สิ่งนี้จะทวีคูณสำหรับผู้โจมตีที่มีน้อยกว่า 51% มาก หากผู้โจมตีต่ำกว่า 30% สิ่งนี้แทบจะเป็นไปไม่ได้เลย
ความแตกต่างทั้งสองนี้ช่วยให้มั่นใจได้ว่าการชาร์ดดิ้งจะสร้างสภาพแวดล้อมสำหรับแอปพลิเคชันที่รักษาคุณสมบัติด้านความปลอดภัยที่สำคัญของสภาพแวดล้อมแบบเชนเดียว ซึ่งไม่สามารถทำได้ในระบบนิเวศแบบหลายเชน
ชื่อระดับแรก
ปรับปรุงการแบ่งกลุ่มด้วยโมเดลความปลอดภัยที่ดีกว่า
ข้อความทั่วไปในแวดวง bitcoin และสิ่งที่ฉันเห็นด้วยอย่างยิ่งคือบล็อกเชน เช่น bitcoin (หรือ ethereum) ไม่ได้พึ่งพาสมมติฐานส่วนใหญ่ที่ซื่อสัตย์อย่างสมบูรณ์ หากมีการโจมตี 51% บนบล็อกเชนดังกล่าว ผู้โจมตีสามารถทำสิ่งที่น่ารังเกียจ เช่น ย้อนกลับหรือเซ็นเซอร์ธุรกรรม แต่ไม่สามารถแทรกธุรกรรมที่ไม่ถูกต้องได้ แม้ว่าพวกเขาจะย้อนกลับหรือเซ็นเซอร์การทำธุรกรรม พฤติกรรมนี้สามารถตรวจพบได้ง่ายโดยผู้ใช้ที่เรียกใช้โหนดปกติ ดังนั้นหากชุมชนต้องการแยกเพื่อประสานงานการแก้ปัญหาของการโจมตี กำจัดพลังของผู้โจมตี พวกเขาสามารถทำได้อย่างรวดเร็ว ณ จุดนี้ .
ตามหลักการแล้ว เราต้องการมีรูปแบบของการแบ่งกลุ่มที่หลีกเลี่ยงข้อสันนิษฐานความน่าเชื่อถือที่ถูกต้อง 51% และรักษาอุปสรรคด้านความปลอดภัยที่แน่นหนาซึ่งบล็อกเชนแบบดั้งเดิมทำได้ผ่านการตรวจสอบเต็มรูปแบบ และนั่นคือสิ่งที่เราได้ทำการวิจัยส่วนใหญ่ในช่วงไม่กี่ปีที่ผ่านมา
ชื่อระดับแรก
การตรวจสอบการคำนวณที่ปรับขนาดได้
เราสามารถแบ่งปัญหาการตรวจสอบที่ปรับขนาดได้ของการป้องกันการโจมตี 51% ออกเป็นสองกรณี:
ตรวจสอบการคำนวณ: สมมติว่าเรามีอินพุตทั้งหมดสำหรับการคำนวณ ให้ตรวจสอบว่าการคำนวณบางอย่างทำถูกต้อง
ตรวจสอบความพร้อมใช้งานของข้อมูล: ตรวจสอบว่าอินพุตทางคอมพิวเตอร์ถูกจัดเก็บไว้ในบางรูปแบบ และสามารถดาวน์โหลดได้หากจำเป็นจริง ๆ ควรทำการตรวจสอบนี้โดยไม่ต้องดาวน์โหลดอินพุตทั้งหมดจริง ๆ (เนื่องจากข้อมูลอาจมีขนาดใหญ่เกินกว่าจะดาวน์โหลดได้ทุกบล็อก ).
เมื่อตรวจสอบความถูกต้องของบล็อกในบล็อกเชน สิ่งนี้รวมถึงการคำนวณและการตรวจสอบความพร้อมใช้งานของข้อมูล: เราต้องมั่นใจว่าธุรกรรมในบล็อกนั้นถูกต้อง และสถานะรูทแฮชใหม่ที่ประกาศในบล็อกคือผลลัพธ์ที่ถูกต้องของการดำเนินการธุรกรรมเหล่านั้น แต่เราต้องมั่นใจด้วยว่ามีการเผยแพร่ข้อมูลเพียงพอในบล็อกเพื่อให้ผู้ใช้ที่ดาวน์โหลดข้อมูลนั้นสามารถคำนวณสถานะและทำงานในบล็อกเชนต่อไปได้ ส่วนที่สองเป็นแนวคิดที่ละเอียดอ่อนแต่สำคัญมาก ซึ่งเรียกว่าปัญหาความพร้อมใช้งานของข้อมูล ไว้ค่อยว่ากันทีหลัง

การคำนวณการตรวจสอบที่ปรับขนาดได้นั้นค่อนข้างง่าย มีเทคนิคอยู่ 2 ประเภท: การพิสูจน์การฉ้อโกงและ ZK-SNARK
เทคนิคทั้งสองสามารถอธิบายสั้น ๆ ได้ดังนี้:
การพิสูจน์การฉ้อโกงคือระบบที่ยอมรับผลลัพธ์ของการคำนวณและกำหนดให้ผู้ที่มีเงินฝากค้ำประกันลงนามในข้อความที่อ่านว่า "ฉันพิสูจน์ว่าถ้าคุณทำการคำนวณ C ด้วยอินพุต X คุณจะได้ผลลัพธ์ Y" ตามค่าเริ่มต้น เราเชื่อถือข้อความเหล่านี้ แต่เรายังเปิดโอกาสให้ผู้อื่นที่เดิมพันเงินฝากมีโอกาสที่จะท้าทาย (ข้อความที่มีลายเซ็นระบุว่า "ฉันไม่เห็นด้วย ผลลัพธ์คือ Z") โหนดทั้งหมดเรียกใช้การคำนวณเมื่อถูกท้าทายเท่านั้น ความผิดพลาดโดยฝ่ายใดฝ่ายหนึ่งจะสูญเสียเงินฝากและการคำนวณทั้งหมดขึ้นอยู่กับผลลัพธ์ของการคำนวณนั้นจะถูกคำนวณใหม่
ZK-SNARK เป็นรูปแบบหนึ่งของหลักฐานการเข้ารหัสที่พิสูจน์ข้อความโดยตรงว่า "การคำนวณ C บนอินพุต X ผลลัพธ์ในเอาต์พุต Y" การพิสูจน์นี้เป็น "เสียง" แบบเข้ารหัส: ถ้า C(x) ไม่เท่ากับ Y การพิสูจน์ที่มีประสิทธิภาพจะเป็นไปไม่ได้ในทางคอมพิวเตอร์ แม้ว่าการรัน C เองจะใช้เวลามาก แต่การพิสูจน์ก็สามารถตรวจสอบได้อย่างรวดเร็ว
มีคลาสของระบบกึ่งปรับขนาดได้ที่ทำการตรวจสอบการคำนวณแบบปรับขนาดได้เท่านั้น ในขณะที่ยังคงกำหนดให้ทุกโหนดต้องตรวจสอบข้อมูลทั้งหมด ซึ่งสามารถทำได้โดยใช้ชุดเทคนิคการบีบอัดเพื่อแทนที่ข้อมูลส่วนใหญ่ด้วยการคำนวณ นี่คือโดเมนของการยกเลิก
ชื่อระดับแรก
การตรวจสอบความพร้อมใช้งานของข้อมูลที่ปรับขนาดได้นั้นทำได้ยากขึ้น
ไม่สามารถใช้หลักฐานการฉ้อโกงเพื่อตรวจสอบความพร้อมใช้งานของข้อมูลได้ การพิสูจน์การฉ้อฉลทางคอมพิวเตอร์อาศัยข้อเท็จจริงที่ว่าการป้อนข้อมูลเข้าสู่การคำนวณได้รับการเผยแพร่บนเครือข่ายทันทีที่มีการส่งการอ้างสิทธิ์ต้นฉบับ ดังนั้นหากถูกท้าทาย การดำเนินการตามการท้าทายจะเกิดขึ้นใน "สภาพแวดล้อม" เดียวกันกับที่การดำเนินการดั้งเดิม เกิดขึ้น ในกรณีของการตรวจสอบความพร้อมใช้งานของข้อมูล เราไม่สามารถทำเช่นนั้นได้เนื่องจากปัญหาคือมีข้อมูลมากเกินไปที่จะตรวจสอบเพื่อโพสต์บนเครือข่าย ดังนั้น แผนการป้องกันการฉ้อโกงสำหรับความพร้อมใช้งานของข้อมูลจึงประสบปัญหาร้ายแรง: บางคนอาจอ้างว่า "ข้อมูล X พร้อมใช้งาน" แต่ไม่เผยแพร่ รอการท้าทาย จากนั้นจึงเผยแพร่ข้อมูล X ทำให้ผู้ท้าชิงเห็นว่าไม่เป็นความจริง เครือข่ายที่เหลือ ถูกต้อง

สิ่งนี้ขยายความในภาวะที่กลืนไม่เข้าคายไม่ออกของชาวประมง:
ข้อเท็จจริงที่ว่าไม่มีทางบอกได้ว่าใครถูกและใครผิด ทำให้ไม่สามารถมีแผนการป้องกันการฉ้อโกงข้อมูลที่มีประสิทธิผลได้
ชื่อระดับแรก
คำถามที่พบบ่อย: จะทำอย่างไรหากไม่มีข้อมูลบางอย่าง ด้วย ZK-SNARK คุณจะมั่นใจได้ว่าทุกอย่างถูกต้อง แค่นั้นไม่พอ?
มีข้อโต้แย้งเชิงทฤษฎีข้อมูลที่แข็งแกร่งบางประการว่าปัญหาเป็นพื้นฐานและไม่มีกลอุบายที่เรียบร้อยในการแก้ปัญหา
ชื่อระดับแรก
ฉันจะตรวจสอบได้อย่างไรว่ามีข้อมูล 1 MB อยู่หรือไม่โดยไม่ต้องพยายามดาวน์โหลด ฟังดูเป็นไปไม่ได้!
กุญแจสำคัญคือเทคนิคที่เรียกว่าการสุ่มตัวอย่างความพร้อมใช้งานของข้อมูล การสุ่มตัวอย่างความพร้อมใช้งานของข้อมูลทำงานดังนี้:
ใช้เครื่องมือที่เรียกว่าการลบรหัสเพื่อขยายข้อมูลที่มีบล็อก N เป็นข้อมูลที่มีบล็อก 2N เพื่อให้บล็อก N ใดๆ ในนั้นสามารถกู้คืนข้อมูลทั้งหมดได้

ตรวจสอบความพร้อมใช้งาน แทนที่จะพยายามดาวน์โหลดข้อมูลทั้งหมด ผู้ใช้เพียงแค่สุ่มเลือกตำแหน่งที่ตั้งในบล็อกในจำนวนที่แน่นอน (เช่น 30 ตำแหน่ง) และเฉพาะในกรณีที่ค้นหาบล็อกในบล็อกสำเร็จในทุกตำแหน่งที่พวกเขาเลือกเท่านั้น บล็อกจะได้รับการยอมรับ
สามารถใช้ ZK-SNARK เพื่อตรวจสอบว่ารหัสการลบบนข้อมูลถูกต้องหรือไม่ จากนั้น Merkle Branch สามารถใช้เพื่อตรวจสอบแต่ละบล็อกได้ อีกทางหนึ่งคือสามารถใช้การผูกมัดแบบพหุนาม (เช่น Kate (aka KZG)) ซึ่งโดยหลักแล้วจะทำการลบรหัส การพิสูจน์องค์ประกอบเดียว และการตรวจสอบความถูกต้องในองค์ประกอบง่ายๆ เพียงองค์ประกอบเดียว นี่คือสิ่งที่ ethereum sharding ใช้
ชื่อระดับแรก
บทวิจารณ์: เราจะแน่ใจได้อย่างไรว่าทุกอย่างถูกต้องอีกครั้ง
สมมติว่าเรามี 100 บล็อก และต้องการตรวจสอบความถูกต้องของบล็อกทั้งหมดอย่างมีประสิทธิภาพโดยไม่ต้องอาศัยคณะกรรมการ เราต้องทำสิ่งต่อไปนี้:
ไคลเอ็นต์แต่ละรายทำการสุ่มตัวอย่างความพร้อมใช้งานของข้อมูลสำหรับแต่ละบล็อก โดยตรวจสอบว่าข้อมูลในแต่ละบล็อกนั้นพร้อมใช้งาน แม้ว่าขนาดของบล็อกทั้งหมดจะอยู่ที่ 1 เมกะไบต์หรือใหญ่กว่า แต่ละบล็อกจำเป็นต้องดาวน์โหลดเพียงไม่กี่พันไบต์เท่านั้น ไคลเอนต์จะยอมรับการบล็อกก็ต่อเมื่อข้อมูลทั้งหมดสำหรับการทดสอบความพร้อมใช้งานได้รับการตอบกลับอย่างถูกต้อง
ขณะนี้เราได้ตรวจสอบความพร้อมใช้งานของข้อมูลแล้ว การตรวจสอบความถูกต้องจะง่ายขึ้น มีสองวิธี:
1. เราสามารถใช้ ZK-SNARK แต่ละบล็อกมี ZK-SNARK เพื่อพิสูจน์ความถูกต้อง
2. เราสามารถใช้หลักฐานการฉ้อโกงได้: ผู้เข้าร่วมบางคนที่จำนำเงินฝากสามารถลงนามในความถูกต้องของแต่ละบล็อกได้ โหนดอื่นๆ ที่เรียกว่าผู้ท้าชิง (หรือชาวประมง) สุ่มตรวจและพยายามประมวลผลบล็อคทั้งหมด เนื่องจากเราได้ตรวจสอบความพร้อมใช้งานของข้อมูล จึงเป็นไปได้ที่จะดาวน์โหลดข้อมูลและประมวลผลบล็อกใดบล็อกหนึ่งอย่างสมบูรณ์ หากพวกเขาพบการบล็อกที่ไม่ถูกต้อง พวกเขาจะออกคำท้าให้ทุกคนตรวจสอบความถูกต้อง หากปรากฎว่าบล็อกนั้นเสียหาย บล็อกนั้นและบล็อกในอนาคตทั้งหมดที่ขึ้นอยู่กับบล็อกนั้นจะต้องได้รับการคำนวณใหม่
ในกรณีของ Ethereum Sharding แผนระยะสั้นมีไว้เพื่อให้ Shard Blocks มีเฉพาะข้อมูลเท่านั้น นั่นคือ Sharding เป็น "กลไกจัดการความพร้อมใช้งานของข้อมูล" เพียงอย่างเดียว ซึ่งใช้พื้นที่ข้อมูลที่ปลอดภัยนี้พร้อมกับหลักฐานการฉ้อโกงหรือ ZK-SNARK เพื่อให้บรรลุผลสำเร็จสูง ความสามารถในการประมวลผลธุรกรรมที่ปลอดภัยด้วยปริมาณงานเป็นงานของการยกเลิกเลเยอร์ 2 อย่างไรก็ตาม เป็นไปได้โดยสิ้นเชิงที่จะสร้างระบบในตัวดังกล่าวเพื่อเพิ่มการประมวลผลความเร็วสูงแบบ "เนทีฟ"
ชื่อระดับแรก
คุณสมบัติหลักของระบบชาร์ดดิ้งคืออะไร? การประนีประนอมคืออะไร?
เป้าหมายหลักของ Sharding คือการทำซ้ำคุณสมบัติด้านความปลอดภัยที่สำคัญที่สุดของบล็อกเชนแบบดั้งเดิม (แบบไม่แยกส่วน) ให้ใกล้เคียงที่สุดเท่าที่จะเป็นไปได้ แต่ไม่จำเป็นต้องให้ทุกโหนดตรวจสอบธุรกรรมทุกรายการเป็นการส่วนตัว
เศษอยู่ใกล้มาก ในบล็อกเชนแบบดั้งเดิม:
ไม่สามารถผ่านบล็อกที่ไม่ถูกต้องได้เนื่องจากตัวตรวจสอบความถูกต้องจะสังเกตเห็นว่าบล็อกนั้นไม่ถูกต้องและเพิกเฉยต่อสิ่งเหล่านั้น
การบล็อกที่ไม่พร้อมใช้งานไม่สามารถผ่านไปได้เนื่องจากตัวตรวจสอบความถูกต้องไม่สามารถดาวน์โหลดได้ และเพิกเฉยต่อสิ่งเหล่านั้น
ในบล็อกเชนแบบแยกส่วนพร้อมคุณสมบัติความปลอดภัยขั้นสูง:
บล็อกที่ไม่ถูกต้องไม่สามารถผ่านได้เนื่องจาก:
หลักฐานการฉ้อโกงจะตรวจจับได้อย่างรวดเร็วและแจ้งให้เครือข่ายทั้งหมดทราบถึงความไม่ถูกต้องของการบล็อกและลงโทษผู้สร้างอย่างรุนแรง
ZK-SNARK พิสูจน์ความถูกต้อง เราไม่สามารถสร้าง ZK-SNARK ที่ถูกต้องสำหรับบล็อกที่ไม่ถูกต้องได้
บล็อกที่ใช้ไม่ได้ไม่สามารถผ่านได้เนื่องจาก:
หากบล็อกมีข้อมูลที่มีอยู่น้อยกว่า 50% การตรวจสอบตัวอย่างความพร้อมใช้งานของข้อมูลอย่างน้อยหนึ่งรายการจะล้มเหลวสำหรับลูกค้าแต่ละราย ซึ่งจะทำให้ไคลเอ็นต์ปฏิเสธการบล็อก
หากมีข้อมูลอย่างน้อย 50% ในบล็อก บล็อกทั้งหมดจึงจะใช้งานได้อย่างมีประสิทธิภาพ เนื่องจากโหนดที่ซื่อสัตย์เพียงโหนดเดียวเท่านั้นที่จำเป็นในการสร้างส่วนที่เหลือของบล็อกขึ้นมาใหม่
โซ่ TPS สูงแบบดั้งเดิมที่ไม่มีการแบ่งชิ้นส่วนไม่สามารถรับประกันได้ ระบบนิเวศแบบหลายเชนไม่สามารถหลีกเลี่ยงปัญหาของผู้โจมตีที่เลือกเชนเพื่อโจมตีและเข้าควบคุมได้อย่างง่ายดาย (เชนสามารถแชร์ความปลอดภัยได้ แต่ถ้าทำได้ไม่ดี มันจะกลายเป็นเชน TPS สูงแบบดั้งเดิมโดยพฤตินัยที่มีข้อเสียทั้งหมด หากทำได้ดีก็จะเป็นเพียงการนำเทคนิคการแบ่งส่วนด้านบนไปใช้ที่ซับซ้อนมากขึ้น)
Sidechains ขึ้นอยู่กับการใช้งานสูง แต่มักจะเสี่ยงต่อจุดอ่อนของเชน TPS สูงแบบดั้งเดิม (หากใช้ miner/validator ร่วมกัน) หรือระบบนิเวศแบบ multi-chain (หากไม่ได้ใช้ miner/validator ร่วมกัน) เศษโซ่สามารถหลีกเลี่ยงปัญหาเหล่านี้ได้
อย่างไรก็ตาม มีรอยแตกในเกราะของระบบแยกชิ้นส่วน เป็นที่น่าสังเกตว่า:
เศษโซ่ที่ต้องพึ่งพาคณะกรรมการเท่านั้นมีความเสี่ยงต่อศัตรูที่ปรับตัวได้และมีความรับผิดชอบที่อ่อนแอกว่า นั่นคือหากฝ่ายตรงข้ามมีความสามารถในการแฮ็ค (หรือปิด) ชุดของโหนดที่พวกเขาเลือกแบบเรียลไทม์ พวกเขาจำเป็นต้องโจมตีโหนดย่อยเพียงเล็กน้อยเท่านั้นเพื่อขัดขวางคณะกรรมการ นอกจากนี้ หากฝ่ายตรงข้าม (ไม่ว่าจะเป็นฝ่ายตรงข้ามที่ปรับตัวได้หรือผู้โจมตีเพียง 50%) ทำให้คณะกรรมการเสียหาย มีเพียงส่วนน้อยเท่านั้นที่จะถูกลงโทษ นี่เป็นอีกเหตุผลสำคัญที่การสุ่มตัวอย่างความพร้อมใช้งานของข้อมูลพร้อมกับการพิสูจน์การฉ้อโกงหรือ ZK-SNARK เป็นส่วนเสริมที่ยอดเยี่ยมสำหรับเทคนิคการสุ่มตัวอย่าง
การสุ่มตัวอย่างความพร้อมใช้งานของข้อมูลจะปลอดภัยก็ต่อเมื่อมีไคลเอ็นต์ออนไลน์จำนวนเพียงพอที่ร่วมกันออกคำขอการสุ่มตัวอย่างความพร้อมใช้งานของข้อมูลที่เพียงพอ ซึ่งการตอบสนองมักจะทับซ้อนกันจนคิดเป็นอย่างน้อย 50% ของการบล็อก ในทางปฏิบัติ หมายความว่าจะต้องมีไคลเอ็นต์ออนไลน์หลายร้อยเครื่อง (และจำนวนนี้จะเพิ่มขึ้นตามอัตราส่วนของความจุของระบบต่อความจุของโหนดแต่ละโหนด) นี่เป็นแบบจำลองความน่าเชื่อถือของชนกลุ่มน้อย - โดยทั่วไปค่อนข้างน่าเชื่อถือ แต่ไม่น่าเชื่อถือเท่ากับความไว้วางใจแบบ 0-in-n สำหรับโหนดในห่วงโซ่ที่ไม่ใช่ชิ้นส่วน
หากชาร์ดเชนอาศัยการพิสูจน์การฉ้อโกง ก็จะอาศัยสมมติฐานด้านเวลา หากเครือข่ายช้าเกินไป โหนดอาจยอมรับการบล็อกขั้นสุดท้ายก่อนที่โปรแกรมป้องกันการฉ้อโกงจะปรากฏขึ้นและแสดงว่ามีข้อผิดพลาด โชคดี หากเราปฏิบัติตามกฎที่เคร่งครัดในการคืนค่าการบล็อกที่ไม่ถูกต้องทั้งหมดหลังจากที่พบแล้ว เกณฑ์นี้จะเป็นพารามิเตอร์ที่ผู้ใช้ตั้งขึ้น: ผู้ใช้แต่ละคนเลือกระยะเวลาที่จะรอผลลัพธ์สุดท้าย และถ้าพวกเขาไม่ต้องการรอมากพอ เป็นเวลานานจะเกิดการสูญเสียและผู้ใช้ที่ระมัดระวังมากขึ้นสามารถมั่นใจในความปลอดภัยได้ ถึงกระนั้นสิ่งนี้ก็ลดทอนประสบการณ์ของผู้ใช้ การใช้ ZK-SNARK เพื่อตรวจสอบความถูกต้องจะช่วยแก้ปัญหานี้ได้
จำเป็นต้องส่งผ่านข้อมูลดิบปริมาณมาก ซึ่งจะเพิ่มความเสี่ยงของความล้มเหลวภายใต้สภาวะเครือข่ายที่รุนแรง ข้อมูลจำนวนน้อยสามารถส่งได้ง่ายกว่าข้อมูลจำนวนมาก หากตัวสำรวจบล็อกต้องการบันทึกห่วงโซ่ทั้งหมด ก็จำเป็นต้องจัดเก็บข้อมูลเพิ่มเติม
Sharded blockchains พึ่งพาเครือข่าย peer-to-peer แบบ sharded โดยแต่ละ p2p "subnet" มีความเสี่ยงที่จะถูกโจมตีมากกว่าเนื่องจากมีโหนดน้อยกว่า โมเดลเครือข่ายย่อยสำหรับการสุ่มตัวอย่างความพร้อมใช้งานของข้อมูลช่วยบรรเทาปัญหานี้ได้ เนื่องจากมีความซ้ำซ้อนระหว่างเครือข่ายย่อย แต่ก็ยังมีความเสี่ยงอยู่
อนึ่ง หากทรูพุตของบล็อกเชนแบบแยกส่วนสูงเกินไป ความเสี่ยงด้านความปลอดภัยก็จะสูงขึ้น ซึ่งเป็นเหตุผลสำคัญว่าทำไมความพยายามในการปรับขนาดเป็นการแบ่งกลุ่มแบบไฮเปอร์ควอดราติกจึงถูกละทิ้งไป ดูเหมือนว่าการรักษาแบบแยกส่วนแบบควอดราติกไว้เป็นเพียงการแบ่งกลุ่มแบบควอดราติกเท่านั้น การประนีประนอมที่ดี
ชื่อระดับแรก
ทำไมไม่รวมศูนย์การผลิตและการตรวจสอบชิ้นส่วน
ทางเลือกที่มักเสนอแทนการแบ่งส่วนย่อยคือการสร้างห่วงโซ่ที่มีโครงสร้างคล้ายกับห่วงโซ่ TPS สูงแบบรวมศูนย์ ยกเว้นว่าจะใช้การสุ่มตัวอย่างความพร้อมใช้งานของข้อมูลและการแบ่งส่วนย่อยเพื่อตรวจสอบความถูกต้องและความพร้อมใช้งาน
สิ่งนี้ช่วยปรับปรุงโซ่ TPS สูงแบบรวมศูนย์ที่มีอยู่ในปัจจุบัน แต่ก็ยังอ่อนแอกว่าระบบแบบแยกส่วน มีหลายสาเหตุนี้:
ในห่วงโซ่ TPS สูง เป็นเรื่องยากที่จะตรวจจับการเซ็นเซอร์ของผู้ผลิตบล็อก การตรวจจับการเซ็นเซอร์ต้องการอย่างใดอย่างหนึ่ง (i) สามารถดูธุรกรรมทุกรายการและตรวจสอบว่าไม่มีธุรกรรมใดที่เห็นได้ชัดว่าคุ้มค่าที่จะเข้ามาแต่ไม่สามารถเข้าไปได้ หรือ (ii) มีรูปแบบความน่าเชื่อถือ 1 ใน n ในหมู่ผู้ผลิตบล็อกและตรวจสอบว่าไม่มี บล็อกที่เข้าไม่ได้ ในห่วงโซ่ TPS สูงแบบรวมศูนย์ (i) เป็นไปไม่ได้ (ii) ยากกว่า เนื่องจากโหนดจำนวนน้อยทำให้แบบจำลองความน่าเชื่อถือ 1 ใน n มีแนวโน้มที่จะพังทลาย หากเวลาบล็อกของห่วงโซ่ใหญ่เกินไปสำหรับ DAS รวดเร็ว (เหมือนกับที่เชน TPS สูงแบบรวมศูนย์ส่วนใหญ่ทำ) เป็นการยากที่จะพิสูจน์ว่าบล็อกของโหนดไม่ถูกปฏิเสธเพราะบล็อกทั้งหมดเผยแพร่ช้าเกินไป
หากผู้ผลิตบล็อกและสมาชิกระบบนิเวศส่วนใหญ่พยายามบังคับให้ผ่านการเปลี่ยนแปลงโปรโตคอลที่ไม่พึงปรารถนา ลูกค้าผู้ใช้จะพบสิ่งนั้นอย่างแน่นอน แต่ชุมชนจะกบฏและแยกทางได้ยากกว่ามาก เพราะพวกเขาจำเป็นต้องสร้างชุดใหม่ของ โหนดความเร็วสูงที่มีราคาแพงมากเพื่อรักษาห่วงโซ่ที่รักษากฎเก่า
โครงสร้างพื้นฐานแบบรวมศูนย์มีความอ่อนไหวต่อการตรวจสอบโดยผู้ดำเนินการภายนอก ปริมาณงานสูงของโหนดที่ผลิตบล็อกทำให้ตรวจจับได้ง่ายมากและปิดได้ง่ายยิ่งขึ้น ในเชิงตรรกะ การตรวจสอบ HPC เฉพาะนั้นง่ายกว่าการติดตามแล็ปท็อปของผู้ใช้แต่ละคน
ระบบการแบ่งส่วนที่เหมาะสมควรใช้เป็นชั้นฐาน ด้วยชั้นฐานที่แยกส่วน เราสามารถสร้างระบบการผลิตแบบรวมศูนย์ได้เสมอโดยสร้างเป็นชุดรวม อย่างไรก็ตาม หากเรามีเลเยอร์พื้นฐานที่อาศัยการผลิตบล็อกแบบรวมศูนย์ เราจะไม่สามารถสร้างเลเยอร์ 2 แบบกระจายอำนาจเพิ่มเติมที่ด้านบนได้


