BTC
ETH
HTX
SOL
BNB
ดูตลาด
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

เทคโนโลยีการกระจายตัว - ข้อได้เปรียบที่เฉียบคมในการปรับปรุง blockchain TPS

哈希未来
特邀专栏作者
2018-08-06 07:48
บทความนี้มีประมาณ 3702 คำ การอ่านทั้งหมดใช้เวลาประมาณ 6 นาที
จำเป็นต้องได้รับการทดสอบและยืนยันในเครือข่ายขนาดใหญ่เป็นเวลานาน บวกกับการพิสูจน์ทางทฤ
สรุปโดย AI
ขยาย
จำเป็นต้องได้รับการทดสอบและยืนยันในเครือข่ายขนาดใหญ่เป็นเวลานาน บวกกับการพิสูจน์ทางทฤ

สรุปรายงาน:

สรุปรายงาน:

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

Sharding ใน blockchain แบ่งออกเป็นธุรกรรม sharding, network sharding และ state sharding ตามวัตถุ เป็นที่น่าสังเกตว่าเทคโนโลยี network sharding ใช้ใน blockchain นั่นคือผู้ขุดจะถูกแบ่งออกเป็นหลายเครือข่ายย่อย สำหรับการตรวจสอบธุรกรรมบนชาร์ดนั้น จำเป็นต้องตรวจสอบให้แน่ใจว่าจำนวนโหนดที่เป็นอันตรายนั้นน้อยพอ ดังนั้นจึงต้องใช้ความระมัดระวังเพื่อให้แน่ใจว่ากฎสำหรับการมอบหมายผู้ขุดนั้นสุ่ม ในการประยุกต์ใช้เทคโนโลยี sharding ใน blockchain ปัญหาที่ต้องพิจารณาคือการป้องกันการโจมตีต่างๆ เช่น การโจมตีแบบ sybil, การโจมตี DDOS และการโจมตีแบบ double-spend จำเป็นต้องตรวจสอบจำนวนโหนดทั้งหมดในแต่ละ shard ในขณะที่ประสิทธิภาพการชั่งน้ำหนักมีโหนดเพียงพอและซื่อสัตย์คิดเป็นส่วนใหญ่ และเทคโนโลยี sharding มีข้อกำหนดด้านความปลอดภัยที่สูงมาก ขณะเดียวกัน จำนวนโหนดในระบบบล็อกเชนมีมากกว่าในฐานข้อมูลแบบดั้งเดิมและต้องเผชิญกับข้อจำกัดด้านแบนด์วิธ จำเป็นต้องได้รับการพิจารณาอย่างเต็มที่ ความไม่สอดคล้องกันที่เกิดจากความล่าช้านำไปสู่ปัญหาด้านประสิทธิภาพและความปลอดภัย ดังนั้นจึงมีโครงการที่เกี่ยวข้องไม่กี่โครงการที่ได้ลงจอด จำเป็นต้องได้รับการทดสอบและยืนยันในเครือข่ายขนาดใหญ่เป็นเวลานาน บวกกับการพิสูจน์ทางทฤษฎีที่เข้มงวดเพื่อให้น่าเชื่อถือ

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

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

ในเทคโนโลยีฐานข้อมูลแบบดั้งเดิม มีสามวิธีหลักในการแยกส่วนข้อมูล:

1. โหมดแฮช โมดูโลโดยตรง:ตัวอย่างเช่น หากมี 3 shards ข้อมูลจะถูกแฮชและโมดูโล 3 และกำหนดให้กับ shards เฉพาะตามผลลัพธ์ Irregularity ทำลายสถานการณ์เนื่องจากค่าคุณลักษณะหลักบางค่าเกี่ยวข้องกับจำนวนโหลด ดังนั้น ข้อมูล มีแนวโน้มที่จะกระจายอย่างเท่าเทียมกันในเศษต่างๆ ตัวอย่างที่สวนทางกันคือ ถ้าค่าลักษณะสำคัญของข้อมูลคือลำดับของเวลาการลงทะเบียน ข้อมูลที่เพิ่งลงทะเบียนใหม่จะมีความแอ็คทีฟมากกว่า และเป็นไปได้ที่จะกำหนดให้กับชาร์ดหนึ่งๆ แต่ข้อเสียของวิธีนี้คือหากมีการเพิ่มเศษใหม่ จะเป็นการยากที่จะปรับสมดุลของเศษ ข้อดีคือไม่จำเป็นต้องรักษาข้อมูลสถานะเพิ่มเติม

2. การแฮชที่สม่ำเสมอ:วิธีแฮชที่สอดคล้องกันโดยไม่มีโหนดเสมือนหมายความว่าข้อมูลถูกแมปกับวงแหวนแฮชแบบ end-to-end ตามค่าคุณลักษณะ และโหนดก็แมปตามกฎบางอย่างเช่นกัน โหนดแรกที่พบโดยข้อมูลตามเข็มนาฬิกาคือโหนด มันถูกเก็บไว้ที่ไหน การแฮชที่สอดคล้องกันกับโหนดเสมือนนั้นคล้ายคลึงกัน ยกเว้นว่าโหนดเสมือนจะถูกแมปกับวงแหวนแฮช ดังนั้นโหนดจริงสามารถครอบครองหลายช่วงบนวงแหวนแฮช วิธีนี้จำเป็นต้องรักษาข้อมูลสถานะ นั่นคือ โหนดใดที่จัดสรรข้อมูลให้ แต่ข้อดีคือ ง่ายต่อการปรับสมดุลของชาร์ด หากต้องการเพิ่มจำนวนชาร์ด อย่างไรก็ตาม การบำรุงรักษาข้อมูลสถานะของชาร์ดจำเป็นต้องพิจารณาปัญหาความสอดคล้องกัน ซึ่งซับซ้อนกว่า

3. Range based:โดยแบ่งออกเป็นช่วงเวลาต่างๆ ตามค่าคุณลักษณะหลัก และแต่ละโหนดจะสอดคล้องกับช่วงเวลาอย่างน้อย 1 ช่วง เช่นเดียวกับวิธีการแฮชที่สอดคล้องกัน ข้อมูลสถานะก็จำเป็นต้องได้รับการบำรุงรักษาเช่นกัน

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

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

อันดับแรกคือการซิงโครไนซ์มาสเตอร์-สเลฟ ขั้นแรก เลือกเซิร์ฟเวอร์หลัก และเฉพาะเซิร์ฟเวอร์หลักเท่านั้นที่ให้บริการภายนอก เซิร์ฟเวอร์หลักจะบันทึกข้อมูลการอัปเดตของข้อมูลเมตาไปยังพื้นที่เก็บข้อมูลที่ใช้ร่วมกันในรูปแบบของบันทึก จากนั้น เซิร์ฟเวอร์ทาสอ่านจากพื้นที่เก็บข้อมูลที่ใช้ร่วมกัน ใช้บันทึกและใช้เพื่อให้ได้สถานะที่สอดคล้องกับเซิร์ฟเวอร์หลัก หากตรวจพบว่าเซิร์ฟเวอร์หลักมีข้อผิดพลาด (เช่น ผ่าน heartbeat) เซิร์ฟเวอร์หลักใหม่จะถูกเลือกใหม่ . ในกรณีของการแบ่งส่วนเครือข่าย เป็นไปได้ที่ทุกคนคิดว่าเซิร์ฟเวอร์หลักเดิมหยุดทำงาน และเลือกเซิร์ฟเวอร์หลักใหม่ แต่ตามเวลาจริง เซิร์ฟเวอร์หลักเดิมยังคงให้บริการ ซึ่งนำไปสู่การเกิดขึ้นของ "เซิร์ฟเวอร์หลักคู่" ปรากฏการณ์ เพื่อแก้ปัญหานี้จำเป็นต้องหาวิธีแยกเซิร์ฟเวอร์หลักเก่าออกเพื่อไม่ให้สามารถให้บริการภายนอกได้ตามปกติ เพื่อให้แน่ใจว่าข้อมูลเมตามีความสอดคล้องกันอย่างมาก เมื่อเตรียมที่จะเปลี่ยน เซิร์ฟเวอร์หลักใหม่จะต้องยืนยันว่าข้อมูลเมตาได้รับการซิงโครไนซ์อย่างสมบูรณ์ก่อนที่จะให้บริการภายนอกต่อไป วิธีหนึ่งคือการแจ้งเซิร์ฟเวอร์แคชทั้งหมดทันทีเมื่อข้อมูลเมตาเปลี่ยนแปลงและล็อคข้อมูล ตัวอย่างเช่น หากงานที่ระบบต้องทำให้เสร็จต้องใช้แฟรกเมนต์หลายส่วนเพื่ออัปเดตสถานะพร้อมกัน ดังนั้น ก่อนที่การอัปเดตจะเสร็จสิ้น การเข้าถึงจะถูกปฏิเสธ อีกวิธีหนึ่งในการรักษาระดับความสอดคล้องกันระหว่างข้อมูลที่จำลองแบบซึ่งมักจะทำได้ในฐานข้อมูล NoSQL ที่ปรับขนาดได้สูงคือการใช้องค์ประกอบการอ่าน-เขียนและการกำหนดเวอร์ชัน วิธีการนี้จะช่วยหลีกเลี่ยงการล็อกข้อมูลด้วยความซับซ้อนที่เพิ่มขึ้นในการอ่านและเขียนข้อมูล

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

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

ส่วนแบ่งเครือข่ายของ blockchain หมายถึงการแบ่งผู้ขุดออกเป็นหลายกลุ่ม ตรวจสอบธุรกรรมในเวลาเดียวกัน ปรับปรุงความสามารถของระบบในการประมวลผลธุรกรรมแบบขนาน และทำให้ TPS ดีขึ้น โดยปกติแล้ว เป็นไปได้ที่จะตัดสินใจเลือกโหนดที่สอดคล้องกันโดยการสร้างตัวเลขสุ่มเป็นประจำ ตราบใดที่มันถูกแมปกับเศษที่มีหมายเลขอยู่แล้ว ปัญหาก็จะจัดการได้ง่ายขึ้นมาก อย่างไรก็ตาม หากโหนดหยุดทำงานและโหนดถูกกำหนดใหม่ จำเป็นต้องสร้างฉันทามติระหว่างแฟรกเมนต์ เป็นที่น่าสังเกตว่ามีการใช้เทคโนโลยี Network sharding ใน blockchain นั่นคือผู้ขุดจะถูกแบ่งออกเป็นหลายเครือข่ายย่อยที่รับผิดชอบในการตรวจสอบการทำธุรกรรมบน shards จำเป็นต้องตรวจสอบให้แน่ใจว่าจำนวนโหนดที่เป็นอันตรายนั้นน้อยพอ ดังนั้นกฎสำหรับการกำหนดการดูแลคนงานเหมืองจึงต้องดำเนินการเพื่อให้แน่ใจว่ามีการสุ่ม

ข้อมูลอ้างอิง:

    

ข้อมูลอ้างอิง:

1. "การเรียนรู้การแยกส่วนข้อมูลของระบบกระจายพร้อมคำถาม"https://www.cnblogs.com/xybaby/p/7076731.html

2. "Sharding Technology (Sharding) - ทางออกที่ดีสำหรับปัญหาการขยายตัวของ Blockchain",http://www.8btc.com/sharding-blockchain-scalability

3. 《sharding》,https://docs.mongodb.com/manual/sharding/

4. 《Sharding pattern》,https://docs.microsoft.com/en-us/azure/architecture/patterns/sharding

5. 《Database sharding explained in plain English》,https://www.citusdata.com/blog/2018/01/10/sharding-in-plain-english/

6. หลู่ เสี่ยวหมิง "เทคโนโลยีการชาร์ดดิ้งถือเป็นอนาคตของห่วงโซ่สาธารณะไกลแค่ไหน" ",https://www.odaily.com/post/5132394

7. Coin Academy, "ภาพรวม Sharding, Zilliqa และ QuarkChain",http://8btc.com/article-4660-1.html


ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
ค้นหา
สารบัญบทความ
空头猎人
คลังบทความของผู้เขียน
哈希未来
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android