คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
Vitalik Buterin: จะปรับปรุงโซลูชันไคลเอ็นต์ไร้สถานะ Ethereum ได้อย่างไร
Winkrypto
特邀专栏作者
2021-07-01 09:51
บทความนี้มีประมาณ 1908 คำ การอ่านทั้งหมดใช้เวลาประมาณ 3 นาที
การเพิ่ม "epoch prefix" ขนาด 32 ไบต์ในแต่ละแอดเดรสอาจแก้ปัญหาการบีบอัดพื้นที่แอดเดรสแบบทวีคูณเ

ชื่อเดิม: "รูปแบบที่อยู่ที่ถูกผูกไว้ซึ่งเป็นมิตรกับรัฐอื่น"
เขียนโดย: Vitalik Buterin ผู้ร่วมก่อตั้ง Ethereum
ชื่อเรื่องรอง

ทบทวน: เทคนิคการจัดการขนาดของรัฐ

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

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

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

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

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

ชื่อเรื่องรอง

ข้อเสนอ

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

เราเพิ่ม "คำนำหน้ายุค" ขนาด 32 ไบต์ (ซึ่งจะถูกตีความเป็นจำนวนเต็ม) ในแต่ละที่อยู่ ตัวอย่างเช่น ที่อยู่ที่มียุคนำหน้าเป็น 9 จะมีลักษณะดังนี้: 0x00000009de0b295669a9fd93d5f28d9ec85e40f4cb697bae นำหน้าด้วย 00000009

เส้นทางของ Merkle จะขึ้นอยู่กับคำนำหน้าของยุคโดยตรงแทนที่จะเป็นแฮช (เช่น merkle_path_key = address[:4] + hash(address[4:]) แทนที่จะเป็น merkle_path_key = hash(address) ที่ใช้อยู่ในปัจจุบัน สิ่งนี้ทำให้มั่นใจได้ว่า "ไม่ได้ใช้ " พื้นที่ที่อยู่ติดกัน

ไม่สามารถใช้ที่อยู่ได้เว้นแต่คำนำหน้า epoch จะน้อยกว่าหรือเท่ากับจำนวนปีที่ blockchain ทำงาน

มีการเพิ่มรหัส CREATE3 ที่ใช้คำนำหน้ายุคเป็นอาร์กิวเมนต์และสร้างสัญญาที่ที่อยู่ด้วยคำนำหน้ายุคนั้น

ขอแนะนำให้ผู้ใช้และสัญญาสร้างบัญชีที่มีคำนำหน้ายุคล่าสุดเสมอ แม้ว่าจะเป็นค่าเริ่มต้นก็ตาม เนื่องจากจะมีสถานะเต็มโดยที่คำนำหน้ายุคล่าสุดยังคงสามารถเข้าถึงได้ เพื่อที่จะรักษา "ที่อยู่ปลอมแปลง" (เช่น ที่อยู่ที่ผู้ใช้โต้ตอบกับออนเชน [เช่น โดยการส่งโทเค็น ETH หรือ ERC20] หรือนอกเชน [โดยการโต้ตอบในช่องทาง] ก่อนที่รหัสสัญญาจะถูกเผยแพร่ ) มันยังคง เป็นไปได้ที่จะสร้างสัญญาด้วยคำนำหน้ายุคเก่า อย่างไรก็ตาม สำหรับผู้ใช้ที่ต้องการสร้างที่อยู่ปลอม พวกเขามีหน้าที่รับผิดชอบในการจัดเก็บส่วนที่เป็นสถานะเก่าสำหรับบัญชี หากพวกเขาไม่ได้ดำเนินการดังกล่าวเป็นเวลานาน

หลังจากดำเนินการมาหลายปี คาดว่าสถานะใช้งานจะประกอบด้วยสองส่วน: (i) พื้นที่ที่อยู่ทั้งหมดนำหน้าด้วยยุคล่าสุด และ (ii) สถานะเก่าเฉพาะที่เกี่ยวข้องกับบัญชีที่มีการใช้งานล่าสุด

ลิงค์แหล่งที่มา:

ลิงค์แหล่งที่มา:ethresear.ch

Vitalik
นักพัฒนา
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
การเพิ่ม "epoch prefix" ขนาด 32 ไบต์ในแต่ละแอดเดรสอาจแก้ปัญหาการบีบอัดพื้นที่แอดเดรสแบบทวีคูณเ
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android