Sharding คืออะไร? อธิบายแนวคิดการปรับขนาด Ethereum นี้

As การอภิปรายมาตราส่วน ใน cryptocurrencies ยังคงดำเนินต่อไป โซลูชันที่เป็นไปได้บางอย่างได้รับการพัฒนามาระยะหนึ่งแล้ว

โดยเฉพาะในกรณีของ Ethereumโดยเน้นที่การกระจายอำนาจและ ความปลอดภัย ด้วยค่าใช้จ่ายของ scalability การประยุกต์ใช้การแบ่งส่วนร่วมกับการดำเนินการ หลักฐานการเดิมพัน ฉันทามติถูกมองว่าเป็นกลไกที่จำเป็นอย่างยิ่งที่เครือข่ายสามารถขยายไปสู่ระดับที่ใช้งานได้จริงสำหรับแอปพลิเคชันในขณะที่ยังคงการกระจายอำนาจและความปลอดภัย

การแบ่งกลุ่มเป็นหัวข้อที่ซับซ้อน โดยเฉพาะอย่างยิ่งเมื่อนำไปใช้กับเครือข่ายแบบกระจายอำนาจแบบเพียร์ทูเพียร์ เช่น Ethereum ที่สถานะทั่วโลกของเครือข่ายมีการปรับปรุงอย่างต่อเนื่อง

การแบ่งกลุ่มย่อยคืออะไรกันแน่ และมันจะช่วยเครือข่ายบล็อคเชนในการขยายขนาดได้อย่างไร?

การแบ่งส่วนและการกระจายคอมพิวเตอร์พื้นหลัง

Sharding นั้นเก่ากว่าเทคโนโลยีบล็อคเชนมาก และได้นำไปใช้ในระบบที่หลากหลายตั้งแต่การปรับฐานข้อมูลธุรกิจให้เหมาะสมจนถึง ฐานข้อมูล Spanner ทั่วโลกของ Google.

  • โดยพื้นฐานแล้ว การแบ่งกลุ่มเป็นวิธีการเฉพาะสำหรับการแบ่งพาร์ติชั่นข้อมูลในแนวนอนภายในฐานข้อมูล
  • โดยทั่วไปแล้ว ฐานข้อมูลจะถูกแบ่งออกเป็นส่วนเล็กๆ ที่เรียกว่า “shards” ซึ่งเมื่อรวมเข้าด้วยกันจะสร้างฐานข้อมูลดั้งเดิม
  • ในเครือข่ายบล็อกเชนแบบกระจาย เครือข่ายประกอบด้วยชุดของโหนดที่เชื่อมต่อในรูปแบบเพียร์ทูเพียร์ โดยไม่มีอำนาจจากส่วนกลาง
  • เช่นเดียวกับกรณีของระบบบล็อกเชนในปัจจุบัน แต่ละโหนดจะจัดเก็บสถานะทั้งหมดของเครือข่ายและประมวลผลธุรกรรมทั้งหมด
  • ขณะนี้ให้การรักษาความปลอดภัยระดับสูงผ่านการกระจายอำนาจ โดยเฉพาะอย่างยิ่งในระบบ Proof of Work เช่น Bitcoin และ Ethereumมันนำไปสู่ปัญหาการปรับขนาดที่ถูกต้อง

การแบ่งส่วน Ethereum

ใช้ Ethereum เป็นตัวอย่างโหนดแบบเต็มใน Ethereum เครือข่ายจัดเก็บสถานะทั้งหมดของบล็อคเชน รวมถึงยอดคงเหลือในบัญชี ที่เก็บข้อมูล และรหัสสัญญา

น่าเสียดายที่เครือข่ายมีขนาดเพิ่มขึ้นอย่างรวดเร็ว ความเห็นพ้องต้องกันเพิ่มขึ้นเป็นเส้นตรงเท่านั้น ข้อจำกัดนี้เกิดจากการสื่อสารที่จำเป็นระหว่างโหนดที่จำเป็นในการบรรลุฉันทามติ

โหนดในเครือข่ายไม่มีสิทธิพิเศษและทุกโหนดในเครือข่ายจะจัดเก็บและประมวลผลทุกธุรกรรม ด้วยเหตุนี้ ในเครือข่ายขนาดเท่ากับ Ethereum ปัญหาต่างๆ เช่น ค่าน้ำมันที่สูงและเวลายืนยันธุรกรรมที่นานขึ้น จะกลายเป็นปัญหาที่เห็นได้ชัดเจนเมื่อเครือข่ายตึงเครียด ดิ เครือข่าย เร็วเท่ากับแต่ละโหนดมากกว่าผลรวมของส่วนต่างๆ

การชาร์ดช่วยบรรเทาปัญหาเหล่านี้ด้วยการนำเสนอวิธีแก้ไขที่น่าสนใจแต่ซับซ้อน แนวคิดนี้เกี่ยวข้องกับการจัดกลุ่มย่อยของโหนดเป็นชาร์ด ซึ่งจะทำธุรกรรมเฉพาะกับชาร์ดนั้น ช่วยให้ระบบประมวลผลธุรกรรมหลายรายการพร้อมกัน ส่งผลให้ปริมาณงานเพิ่มขึ้นอย่างมาก

วิธีที่ง่ายกว่านั้นคือการจินตนาการถึงการแบ่งสหรัฐอเมริกาออกเป็นรัฐต่างๆ

แม้ว่าแต่ละรัฐ (ชาร์ดในกรณีนี้) จะเป็นส่วนหนึ่งของสหรัฐอเมริกาที่ใหญ่กว่า (เครือข่าย Ethereum) แต่ก็มีกฎเกณฑ์ ขอบเขต และกลุ่มย่อยเฉพาะของตนเอง อย่างไรก็ตาม พวกเขาแบ่งปันภาษาและวัฒนธรรมสากลโดยเป็นส่วนหนึ่งของเครือข่ายที่ใหญ่ขึ้นซึ่งประกอบเป็นประเทศ

หรือดีกว่านั้น ใน Vitalik Buterinคำพูดของตัวเอง:

 “ลองนึกภาพว่า Ethereum ถูกแบ่งออกเป็นหลายพันเกาะ แต่ละเกาะสามารถทำสิ่งของตัวเองได้ แต่ละเกาะมีลักษณะเฉพาะของตัวเอง และทุกคนที่อยู่บนเกาะนั้น กล่าวคือ บัญชีสามารถโต้ตอบซึ่งกันและกัน และพวกเขาสามารถดื่มด่ำกับคุณลักษณะทั้งหมดได้อย่างอิสระ หากพวกเขาต้องการติดต่อกับเกาะอื่น พวกเขาจะต้องใช้ระเบียบการบางอย่าง”

อย่างที่คุณเห็น แนวคิดของการแยกส่วนเครือข่ายออกเป็นชิ้นส่วนที่มีประสิทธิภาพมากขึ้นช่วยให้เครือข่ายทำงานเป็นผลรวมของส่วนต่างๆ ของมัน แทนที่จะถูกจำกัดด้วยความเร็วของแต่ละโหนด

Sharding ทำงานอย่างไรใน Blockchains?

เราจะยังคงใช้ Ethereum เป็นตัวอย่างในเรื่องนี้ต่อไป เนื่องจากเป็นความพยายามในการ sharding ที่เป็นที่รู้จักและลำบากที่สุดในเวที blockchain เนื่องจากนักพัฒนา Ethereum กำลังใช้สิ่งที่เรียกว่า “การแบ่งส่วนสถานะ"

สถานะปัจจุบันของ Ethereum blockchain เรียกว่า “สถานะโลก” และเป็นสิ่งที่ทุกคนสามารถเห็นได้เมื่อพวกเขาดูบล็อคเชนในอินสแตนซ์เฉพาะ

ส่วนที่ยุ่งยากในการใช้การแบ่งส่วนข้อมูลใน Ethereum คือการแบ่งส่วนโหนดออกเป็นชุดย่อยที่มีขนาดเล็กลง ชุดย่อยเหล่านี้จำเป็นต้องสามารถประมวลผลชุดธุรกรรมเฉพาะในขณะที่อัปเดตสถานะของเครือข่ายไปพร้อม ๆ กัน โดยทั้งหมดต้องแน่ใจว่าถูกต้อง

Sharding ใน Ethereum ควรจะนำมาใช้ในการเปิดตัวแบบสองเฟส มากกว่าที่จะเกิดขึ้นภายหลัง หลักฐานการเดิมพัน ถูกนำไปใช้ใน เครือข่าย. ระยะที่หนึ่งจะเป็นชั้นข้อมูลซึ่งประกอบด้วยฉันทามติว่าข้อมูลใดอยู่ในชาร์ด ขั้นตอนที่สองคือชั้นสถานะ ทั้งหมดนี้เป็นของเหลวมาก ดังนั้นรายละเอียดทั่วไปเกี่ยวกับวิธีการทำงานอยู่ด้านล่าง

Ethereum แบ่งเครือข่ายออกเป็นชาร์ดเฉพาะ ส่วนแบ่งข้อมูลแต่ละส่วนได้รับการกำหนดกลุ่มธุรกรรมเฉพาะซึ่งกำหนดโดยการจัดกลุ่มบัญชีเฉพาะ (รวมถึงสัญญาอัจฉริยะ) ลงในส่วนแบ่งข้อมูล แต่ละกลุ่มธุรกรรมมีส่วนหัวและเนื้อหาที่ประกอบด้วยสิ่งต่อไปนี้

  • รหัสชาร์ดของกลุ่มธุรกรรม
  • การมอบหมายผู้ตรวจสอบผ่าน การสุ่มตัวอย่าง (ตรวจสอบการทำธุรกรรมในชาร์ด)
  • State Root (สถานะของ Merkle root ของ Shard ก่อนและหลังเพิ่มธุรกรรม)

ร่างกาย

  • ธุรกรรมทั้งหมดที่อยู่ในกลุ่มธุรกรรมที่เป็นส่วนหนึ่งของชาร์ดเฉพาะ

ธุรกรรมมีความเฉพาะเจาะจงสำหรับชาร์ดแต่ละรายการและเกิดขึ้นระหว่างบัญชีที่มาจากชาร์ดนั้น

เมื่อตรวจสอบธุรกรรมแล้ว สถานะของเครือข่ายจะเปลี่ยนแปลงและยอดคงเหลือในบัญชี พื้นที่เก็บข้อมูล ฯลฯ จะได้รับการอัปเดต เพื่อให้กลุ่มธุรกรรมตรวจสอบว่าถูกต้อง รูทก่อนสถานะของกลุ่มธุรกรรมต้องตรงกับรูทชาร์ดในสถานะโกลบอล หากตรงกัน กลุ่มธุรกรรมจะถูกตรวจสอบและสถานะส่วนกลางจะถูกอัพเดตผ่านรูทสถานะ shard ID เฉพาะ

แทนที่จะประกอบด้วยสถานะรูทเท่านั้น แต่ละบล็อกของ Ethereum blockchain ตอนนี้มีทั้งรูทของสถานะและรูทกลุ่มธุรกรรม รูทกลุ่มธุรกรรมคือรูทของ Merkle ของกลุ่มธุรกรรมทั้งหมดจากชาร์ดเฉพาะสำหรับบล็อกของธุรกรรมนั้น

โดยพื้นฐานแล้ว มี Merkle root ของชาร์ดต่างๆ ทั้งหมดที่มีกลุ่มธุรกรรมที่อัปเดตและยืนยันแล้ว รูทนี้ถูกเก็บไว้ในบล็อคเชนพร้อมกับรูทสถานะที่อัปเดต

การใช้แนวคิดของ Merkle tree ในโครงสร้างนี้มีความสำคัญต่อการรับรองความถูกต้องของบล็อคเชน ทำความเข้าใจว่า a ต้นไม้เมิร์เคิล และโดยเฉพาะงานรูทของ Merkle สามารถช่วยให้คุณเข้าใจแนวคิดเหล่านี้ได้ง่ายขึ้นมาก

Merkle Tree คืออะไร

อ่าน: Merkle Tree คืออะไร?

ฉันทามติภายในส่วนแบ่งข้อมูลผ่านฉันทามติ Proof of Stake ของโหนดที่เลือกแบบสุ่มซึ่งนำไปใช้กับชาร์ดสำหรับรอบฉันทามติที่เฉพาะเจาะจง

สิ่งนี้ไม่เพียงแต่ให้ข้อสรุปแก่ฉันทามติ ซึ่งจำเป็นภายในส่วนแบ่งข้อมูลเท่านั้น แต่ยังให้การป้องกันเฉพาะแก่การโจมตีที่ หลักฐานการทำงาน blockchain จะอ่อนไหวต่อกรณีนี้

กำลังแฮชที่จำเป็นในการบุกรุกชาร์ดเฉพาะในเครือข่ายชาร์ด PoW จะลดลงอย่างมาก และความสามารถสำหรับผู้ประสงค์ร้ายในการควบคุมชาร์ดผ่านพลังการคำนวณนั้นเป็นไปได้

ด้วยวิธีนี้ ตัวแสดงที่ไม่ดีสามารถโจมตีชาร์ดอื่น ๆ ผ่านโปรโตคอลการสื่อสารซึ่งเป็นหนึ่งในคุณสมบัติที่ซับซ้อนและสำคัญของสถาปัตยกรรมการแบ่งส่วนข้อมูล การสุ่มตัวอย่างการเลือกตัวตรวจสอบความถูกต้องภายในส่วนแบ่งข้อมูลสามารถยับยั้งการโจมตีประเภทนี้ได้ เนื่องจากผู้ไม่ประสงค์ดีจะไม่ทราบว่ากำลังวางส่วนย่อยใดก่อนที่จะวางลงในส่วนนั้นจริง

นอกจากนี้ การสุ่มตัวอย่างจะถูกใช้เพื่อเลือกตัวตรวจสอบความถูกต้องที่ จริง ตรวจสอบจากชุดตรวจสอบแบบสุ่มนั้น

โปรโตคอลการสื่อสารมีความสำคัญต่อสถาปัตยกรรมการแบ่งส่วนข้อมูลที่ทำงานอย่างถูกต้องในระบบ คุณสามารถคิดว่าโปรโตคอลการสื่อสารเป็นภาษาสากลที่มีความสอดคล้องกันระหว่างรัฐต่างๆ ซึ่งเป็นส่วนหนึ่งของสหรัฐอเมริกาที่มีขนาดใหญ่กว่า

อย่างไรก็ตาม การออกแบบโปรโตคอลนี้มีความท้าทายอย่างมากและจำเป็นต้องดำเนินการเพื่อให้ใช้เมื่อจำเป็นเท่านั้น จำเป็นเมื่อโหนดเฉพาะต้องการข้อมูลที่ไม่ได้เก็บไว้ในชาร์ดของตัวเอง และจำเป็นต้องค้นหาชาร์ดที่มีข้อมูลที่จำเป็น การสื่อสารนี้เรียกว่าการสื่อสารแบบแยกส่วน

การสื่อสารแบบแบ่งส่วนข้อมูลทำได้โดยใช้แนวคิดของการรับธุรกรรม ใบเสร็จสำหรับธุรกรรมจะถูกเก็บไว้ในรูทของ Merkle ที่สามารถตรวจสอบได้ง่าย แต่ไม่ได้เป็นส่วนหนึ่งของสถานะรูท

ชาร์ดที่ได้รับธุรกรรมจากชาร์ดอื่นจะตรวจสอบ Merkle root เพื่อให้แน่ใจว่าไม่มีการใช้ใบเสร็จ โดยพื้นฐานแล้ว ใบเสร็จจะถูกเก็บไว้ในหน่วยความจำที่ใช้ร่วมกันซึ่งสามารถตรวจสอบได้โดยส่วนแบ่งข้อมูลอื่น แต่ไม่สามารถเปลี่ยนแปลงได้ ดังนั้น ชาร์ดจึงสามารถสื่อสารกันได้ผ่านการจัดเก็บใบเสร็จแบบกระจาย

Sharding ก้าวไปข้างหน้า

Sharding ใน Ethereum คาดว่าจะดำเนินการหลังจาก Casper การอัพเกรด PoS. ล่าสุดมี มีการพัฒนาบางอย่างเกี่ยวกับ Ethereum 2.0 ซึ่งเกี่ยวข้องกับการดำเนินการทั้งสองอย่าง แคสเปอร์ และการแบ่งส่วน

Sharding ยังถูกนำมาใช้ในแพลตฟอร์มอื่นๆ อีกสองสามแห่ง ที่โดดเด่นที่สุด Zilliqa. อย่างไรก็ตาม Zilliqa ไม่ได้ใช้ state sharding ในขณะนี้ แต่มุ่งเน้นไปที่การจัดหา blockchain ที่มีปริมาณงานสูงโดยใช้ธุรกรรมและการแบ่งส่วนข้อมูลเชิงคำนวณ

Zilliqaอ่านของเรา คำแนะนำเกี่ยวกับ Zilliqa

สรุป

Sharding ทำหน้าที่เสนอวิธีแก้ปัญหาที่น่าสนใจให้กับช้างในห้องของแพลตฟอร์มบล็อคเชนในขณะนี้ ความสามารถในการขยายขนาด

ในขณะที่เครือข่าย Lightning ของ Bitcoin อยู่ในขั้นตอนการทดสอบและได้แสดงความคืบหน้าที่มีแนวโน้มว่าจะเป็นเช่นนั้น โซลูชันของ Ethereum มาพร้อมกับความท้าทายที่ไม่เหมือนใครเนื่องจากถูกตรึงเป็นคอมพิวเตอร์โลกที่ทัวริงสมบูรณ์

การแบ่งกลุ่มจะทำงานโดยตรงที่ระดับโปรโตคอลเท่านั้น ดังนั้นสำหรับผู้ใช้ปลายทางหรือนักพัฒนา dapp อาจไม่จำเป็นต้องเรียนรู้เกี่ยวกับเรื่องนี้

โดยไม่คำนึงถึงความพยายามของ Ethereum ในการแบ่งส่วนแบ่งข้อมูลสำหรับเครือข่ายแบบกระจายอำนาจขนาดใหญ่นั้นเป็นความพยายามที่น่าประทับใจและจะเป็นความสำเร็จอย่างมหาศาลหากดำเนินการสำเร็จ

ที่มา: https://blockonomi.com/sharding/