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

เรียนรู้วิธีปรับปรุงเครือข่าย Ethereum ด้วย ReGenesis

以太坊爱好者
特邀专栏作者
บทความนี้มีประมาณ 3817 คำ การอ่านทั้งหมดใช้เวลาประมาณ 6 นาที
"ทางสายกลาง" ระหว่าง Ethereum สถานะร่ำรวยและ Ethereum ไร้สัญชาติ
สรุปโดย AI
"ทางสายกลาง" ระหว่าง Ethereum สถานะร่ำรวยและ Ethereum ไร้สัญชาติ

หมายเหตุบรรณาธิการ: บทความนี้มาจากผู้ที่ชื่นชอบ Ethereum (ID: ethfans)หมายเหตุบรรณาธิการ: บทความนี้มาจาก

ผู้ที่ชื่นชอบ Ethereum (ID: ethfans)

ผู้ที่ชื่นชอบ Ethereum (ID: ethfans)

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

ไม่กี่วันที่ผ่านมา Alexey ได้โพสต์บทความบนฟอรัม EthResearch โดยเสนอแนวคิดที่น่าสนใจ ซึ่งเขาตั้งชื่อว่า ReGenesis

แนวคิดนี้ค่อนข้างเรียบง่ายและอาจดูรุนแรงในแวบแรก: เป็นระยะๆ (เช่น ทุก 1 ล้านบล็อก) ลบสถานะทั้งหมดที่จัดเก็บไว้ในเครื่อง เก็บแฮชรูทของบล็อกล่าสุด และเริ่มสร้างสถานะอีกครั้ง หลังจากอีก 1 ล้านบล็อก จะทำการรีเซ็ตสถานะครั้งถัดไป

คำอธิบายภาพ

-ReGenesis : รีเซ็ตสถานะทุกบล็อก N เมื่อสถานะเติบโตขึ้น จำเป็นต้องมีการพิสูจน์น้อยลงจนกว่า ReGenesis ครั้งต่อไปจะเริ่มต้นขึ้น -

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

นั่นคือสิ่งที่บทความนี้เกี่ยวกับ

สถานการณ์ปัจจุบัน

1. การจัดเก็บข้อมูลของรัฐแบบรวมศูนย์

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

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

ดังนั้น ที่เก็บข้อมูลสถานะปัจจุบันจึงกระจุกตัวอยู่ในโหนดโครงสร้างพื้นฐานที่ดำเนินการโดยหน่วยงานขนาดใหญ่ (Infura, นักขุดขนาดใหญ่, ตลาดแลกเปลี่ยน ฯลฯ)

2. รัฐยังคงเติบโตอย่างไม่มีที่สิ้นสุด

ณ เวลาปัจจุบัน (29 มิถุนายน) "สถานะปัจจุบัน" ในไคลเอ็นต์ Turbo-Geth มีขนาดประมาณ 40 GB และกำลังเพิ่มขึ้น

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

จนถึงตอนนี้เราโชคดี แต่โชคเพียงอย่างเดียวไม่ใช่วิธีแก้ปัญหาระยะยาว

3. Stateless Ethereum เป็นเรื่องยากที่จะปรับราคาก๊าซใหม่

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

ดังนั้นเราจึงต้องหาวิธีการเก็งกำไรราคาพยานผ่านพฤติกรรมของสมาร์ทคอนแทรคโดยไม่ให้กระทบต่อสมาร์ทคอนแทรคที่มีอยู่

มีข้อเสนอมาบ้างแล้ว เช่น ออย แต่นี่เป็นปัญหายุ่งยากจริงๆ

วิธีดำเนินธุรกรรมหลังจาก ReGenesis

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

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

อย่างไรก็ตาม มีความแตกต่างอย่างหนึ่งระหว่าง ReGenesis และ Stateless Ethereum ก่อนที่จะอธิบายความแตกต่าง ฉันต้องการแนะนำคำศัพท์สองคำ: สถานะที่ชัดเจนและสถานะโดยนัย

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

- Ethereum ปัจจุบัน: สมมติว่าทั้งสองโหนดมีสถานะที่จำเป็นทั้งหมด -

นี่คือสถานะโดยนัย 100% เพื่อนร่วมงานถือว่าคุณมีสถานะอยู่แล้ว ดังนั้นอย่าเพิ่มสถานะใดๆ ลงในบล็อก

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

คำอธิบายภาพ

เพื่อนของคุณส่งสถานะที่ชัดเจนให้คุณ

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

คำอธิบายภาพ

- ReGenesis: Block 1 ให้ข้อมูลที่ Node 1 ขาด -

  • คำอธิบายภาพ

  • - ReGenesis: รวมสถานะจากบล็อก 1 เข้ากับสถานะโดยนัยของโหนด 1 -

  • หากคุณ (ในฐานะผู้ส่งธุรกรรม) จำเป็นต้องส่งธุรกรรมใหม่ไปยังเครือข่ายที่มีความสูงบล็อกปัจจุบันคือ 10.001.000 คุณต้องทำตามขั้นตอนต่อไปนี้:

  • สร้างธุรกรรมที่คุณต้องการ

สร้างสถานะที่ชัดเจนสำหรับรายการที่ไม่รวมอยู่ในสถานะโดยนัย บรรจุเป็นพยานการทำธุรกรรม (รายละเอียดที่กล่าวถึงด้านล่าง)

ถูกตัอง.

ส่งการทำธุรกรรมกับพยานไปยังเครือข่าย

เดี๋ยวก่อน นี่หมายความว่าผู้ส่งธุรกรรมต้องมีสถานะก่อน ReGensis หรือไม่ !

ถูกตัอง.

หากคุณต้องการส่งธุรกรรมหลังจากเริ่ม ReGenesis คุณอาจต้องมีข้อมูลสถานะก่อน ReGenesis เพื่อสร้างพยาน

อย่างไรก็ตาม สำหรับ dApps ส่วนใหญ่ พวกเขาจำเป็นต้องจัดเก็บสถานะของสัญญาและบัญชีชุดเล็กๆ ที่ใช้จริง (โดยมีหลักฐานยืนยันจาก Merkle)

พยานการทำธุรกรรม

คุณอาจสังเกตเห็นว่าฉันได้กล่าวถึงคำว่าพยานการทำธุรกรรมข้างต้น

คำอธิบายภาพ

- รวมพยานบล็อก -

คำอธิบายภาพ

- พยานการทำธุรกรรม -

คำอธิบายภาพ

- บล็อกพยานถูกสร้างขึ้นโดยนักขุด เราจำเป็นต้องชดเชยพวกเขาผ่านกลไกการกำหนดราคาก๊าซที่ซับซ้อน -

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

คำอธิบายภาพ

- พยานการทำธุรกรรมถูกสร้างขึ้นโดยผู้ส่งธุรกรรมและง่ายต่อการชดเชย -

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

บล็อกพยานถูกสร้างขึ้นโดยนักขุด นักขุดรู้ลำดับธุรกรรมที่แน่นอนในบล็อก ดังนั้นพยานบล็อกจึงมีข้อมูลล่าสุดเสมอ

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

อย่างไรก็ตาม แนวคิด ReGenesis ทั้งหมดต้องใช้พยานในการทำธุรกรรม ดังนั้นจึงไม่ใช่เรื่องใหญ่

ชื่อระดับแรก

ทำไมเรายังใช้พยานธุรกรรมไม่ได้?

พูดง่ายๆ ก็คือเนื่องจาก Dynamic State Access (DSA) และความเสี่ยงที่อาจเกิดขึ้นจากธุรกรรมที่ดำเนินการโดยผู้ไม่หวังดี

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

ตามทฤษฎีแล้ว สิ่งนี้สามารถเชิญการโจมตีแบบ DoS ได้

ถ้าอลิซแสดงหลักฐานที่มี A อยู่ด้วย Bob สามารถเปลี่ยน K ได้ก่อนที่ธุรกรรมของ Alice จะได้รับการบรรจุ ซึ่งทำให้ธุรกรรมของ Alice ล้มเหลว ถ้าอลิซแสดงหลักฐานที่มี B บ๊อบสามารถทำซ้ำได้

แน่นอน Alice สามารถแสดงหลักฐานที่มี A และ B ได้ แต่ถ้าที่อยู่ของที่เก็บข้อมูลถูกกำหนดโดย uint64 Alice จะต้องรวมสถานะที่สมบูรณ์ในการพิสูจน์เพื่อป้องกันการโจมตี แต่เป็นไปไม่ได้ที่จะรวมสถานะที่สมบูรณ์

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

ชื่อระดับแรก

ReGenesis บรรเทาปัญหานี้ได้อย่างไร?

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

เพื่อบรรเทาปัญหานี้ ไม่ว่าธุรกรรมจะสำเร็จหรือล้มเหลวเนื่องจากสถานะไม่เพียงพอ เราตรวจสอบให้แน่ใจว่าได้รวมหลักฐานที่เราให้ไว้ในสถานะ

แม้ว่าธุรกรรมของ Alice จะล้มเหลว แต่ธุรกรรมดังกล่าวได้เพิ่มการพิสูจน์ทั้งหมดที่จำเป็นสำหรับเส้นทาง A ไปยังสถานะโดยนัยของโหนด

สรุปแล้ว

ตอนนี้ Alice สามารถส่งธุรกรรมนี้อีกครั้ง โดยแสดงหลักฐานที่จำเป็นสำหรับเส้นทาง B Bob ไม่สามารถบล็อกธุรกรรมของ Alice ได้อีกต่อไปโดยการเปลี่ยน K แม้ว่าเขาจะเปลี่ยน K เพื่อให้ธุรกรรมเลือกเส้นทาง A มันก็จะสายเกินไป การพิสูจน์ที่จำเป็นสำหรับเส้นทาง A รวมอยู่ในสถานะโดยนัยของโหนดแล้ว ดังนั้นธุรกรรมจึงไม่ จำเป็นต้องส่งหลักฐานใด ๆ ไปยังโหนด หากธุรกรรมถูกส่งไปยังเส้นทาง B แสดงว่ามีหลักฐาน B ที่ต้องการทุกประการ

  • ชื่อระดับแรก

  • สรุปแล้ว

  • สุดท้าย เราจะสรุปวิสัยทัศน์และสาระสำคัญของ ReGenesis อย่างรวดเร็ว:

  • ทุกครั้งที่สร้าง N บล็อก เราจะล้างสถานะทั้งหมดและเก็บเฉพาะรูทแฮช

  • ความถี่ของการเริ่มต้น ReGenesis ไม่ควรสูงเกินไป โดยสามารถตั้งค่าเป็นทุกๆ 1 ล้านบล็อก ทุกๆ 10 ล้านบล็อก เป็นต้น

  • ผู้ส่งธุรกรรมต้องระบุสถานะที่ชัดเจน (ในฐานะพยานธุรกรรม)

  • ผู้ส่งธุรกรรมจ่ายค่าก๊าซตามขนาดของพยานการทำธุรกรรม

ในการดำเนินการนี้ ผู้ส่งธุรกรรมต้องรักษาสถานะก่อนยุค ReGenesis ของสัญญา/บัญชีที่สนใจ

  • หากธุรกรรมล้มเหลวเนื่องจากสถานะไม่ชัดเจนเพียงพอ เราจะเพิ่มหลักฐานที่ธุรกรรมให้ไว้เป็นสถานะโดยนัย เพื่อที่เราจะได้ไม่ต้องแสดงหลักฐานเดียวกันเมื่อส่งธุรกรรมในครั้งต่อไป

  • สถานะที่ชัดเจนจากการพิสูจน์ธุรกรรมถูกรวมเข้ากับสถานะโดยนัยที่สร้างโดยธุรกรรมที่เรียกใช้ก่อนหน้านี้ในบล็อกผ่านกลไกการผสานอัจฉริยะ

  • จากมุมมองเชิงมหภาค โซลูชัน ReGenesis มีข้อดีดังต่อไปนี้:

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

开发者
ETH
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก:
https://t.me/Odaily_News
กลุ่มสนทนา:
https://t.me/Odaily_GoldenApe
บัญชีทางการ:
https://twitter.com/OdailyChina
สารบัญบทความ
คลังบทความของผู้เขียน
以太坊爱好者
อันดับบทความร้อน
Daily
Weekly
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android