เรียนรู้วิธีปรับปรุงเครือข่าย Ethereum ด้วย ReGenesis
หมายเหตุบรรณาธิการ: บทความนี้มาจากผู้ที่ชื่นชอบ 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 มีข้อดีดังต่อไปนี้:
เปลี่ยนความสมดุลของสิ่งจูงใจระหว่างผู้ส่งธุรกรรมและโหนดโครงสร้างพื้นฐาน ซึ่งจะช่วยปรับปรุงการกระจายอำนาจของที่เก็บข้อมูลของรัฐ


