ผู้เขียนต้นฉบับ: Xiang, W3.Hitchhiker
เกี่ยวกับการอัปเกรด Ethereum Shanghai เรามาทำความเข้าใจสั้น ๆ ว่ามีประโยชน์อะไรบ้าง
อ้างอิงถึง Ethereum ล่าสุดข้อมูลสาธารณะและ EIP ที่เกี่ยวข้องสำหรับการอัปเกรด Shanghai มีดังนี้:
ตรวจสอบ EIP ที่รวมอยู่: EIP-3651, EIP-3855, EIP-3860, EIP-4895
EIP ที่อาจรวมอยู่: EIP-3540, EIP-3670
ชื่อระดับแรก
EIP-3651: ฐานเหรียญที่อบอุ่น
เมื่อพูดถึง EIP-3651 ก่อนอื่นเราต้องแนะนำการเปลี่ยนแปลงใน EIP-2929:
เมื่อเป้าหมายไม่ได้อยู่ใน access_addresses ให้เรียกเก็บเงิน COLD_ACCOUNT_ACCESS_COST (ต้นทุนการเข้าถึงบัญชีแบบเย็น) และเพิ่มที่อยู่ไปยัง accessed_addresses มิฉะนั้นจะมีการเรียกเก็บก๊าซ WARM_STORAGE_READ_COST (ต้นทุนการอ่านค่าในการจัดเก็บแบบอุ่น) และก๊าซที่ใช้โดยการอ่านค่าแบบอุ่นจะค่อนข้างต่ำ
ทุกวันนี้ การชำระเงินโดยตรงของ COINBASE กำลังเป็นที่นิยมมากขึ้นเรื่อย ๆ แต่ราคาของการเข้าถึง COINBASE นั้นสูงขึ้น เนื่องจากภายใต้กรอบรายการการเข้าถึงที่แนะนำโดย EIP-2929 COINBASE จะคำนวณก๊าซตามต้นทุนของการเข้าถึงบัญชีเย็นใน EIP - หลังจาก 3651 access_addresses จะรวมที่อยู่ที่ส่งคืนโดย COINBASE (0x41)
ผลประโยชน์:
ชื่อระดับแรก
EIP-3855: คำสั่ง PUSH0
EIP-3855 แนะนำคำสั่งใหม่ (0x5f) เพื่อพุชค่าคงที่ 0 ลงบนสแตก ชุดคำสั่งของ PUSH ใน Yellow Paper ปัจจุบันมีเพียง PUSH1-PUSH32 ซึ่งใช้เพื่อพุช 1 ไบต์บนสแตกและพุช 32 ไบต์ ลงบนกอง
การดำเนินการตามคำสั่งที่มีอยู่เพื่อพุชค่า 0 ลงบนสแต็กจำเป็นต้องดำเนินการ PUSH1 0 ซึ่งใช้ 3 แก๊สในรันไทม์ และใช้แก๊สเพิ่มเติมอีก 200 แก๊ส (ต้นทุนพื้นที่จัดเก็บ 2 ไบต์)
ด้วยคำสั่ง PUSH0 คุณไม่จำเป็นต้องใช้แก๊สเพิ่มอีก 200
ผลประโยชน์:
ชื่อระดับแรก
EIP-3860: จำกัดและคำนวณรหัสเริ่มต้น
ปัจจุบัน รหัสเริ่มต้นสูงสุดคือ MAX_CODE_SIZE: 24576 (EIP-170) และรหัสเริ่มต้นใหม่สูงสุดคือ (MAX_INITCODE_SIZE = 2 * MAX_CODE_SIZE = 49152) ซึ่งหมายความว่าขนาดสัญญาสามารถเพิ่มเป็นสองเท่า และนักพัฒนาสัญญาสามารถใช้ฟังก์ชันที่สมบูรณ์ยิ่งขึ้นได้ (รหัสสัญญามีขนาดใหญ่เกินไปและการปรับใช้ไม่สำเร็จ PS: โครงการ L2 ยังได้รับการแก้ไขบางส่วนเพื่อรองรับขีดจำกัดบนที่สูงขึ้นของขนาดสัญญา)
นอกจากนี้ ยังมีค่าธรรมเนียมก๊าซ 2 รายการสำหรับแต่ละก้อน initcode ขนาด 32 ไบต์เพื่อแสดงถึงต้นทุนของการวิเคราะห์ Jumpdest เนื่องจากในระหว่างการสร้างสัญญา ลูกค้าต้องทำการวิเคราะห์ jumpdest บน initcode ก่อนดำเนินการ การดำเนินการทำงานเชิงเส้นกับขนาดของ initcode
ซึ่งหมายความว่าแต่ละไบต์ของ initcode จะมีค่าใช้จ่าย 0.0625 gas และค่าใช้จ่ายของ gas ในการปรับใช้ตามสัญญาจะเพิ่มขึ้นเล็กน้อย
ผลประโยชน์:
ชื่อระดับแรก
EIP-4895: การถอน Beacon Chain
เนื้อหาหลักคือการกำหนดกระบวนการหลักในการถอนเงินจาก beacon chain ไปยัง EVM หลังจากการปรับใช้เสร็จสิ้น ฟังก์ชันการถอนเงินของ Ethereum beacon chain จะถูกเปิดใช้งาน
ผลประโยชน์:
ชื่อระดับแรก
EIP-3540: รูปแบบวัตถุ EVM (EOF) v1
EIP นี้เกี่ยวข้องกับการเปลี่ยนแปลงที่สำคัญและไม่จำเป็นต้องรวมอยู่ในการอัปเกรดเซี่ยงไฮ้
รูปแบบที่อธิบายใน EIP นี้แนะนำรูปแบบที่เรียบง่ายและขยายได้ และแนะนำการตรวจสอบความถูกต้อง ตระหนักถึงการแยกรหัสสัญญาและข้อมูล
รูปแบบวัตถุ EVM ใหม่คือ: magic, version, (section_kind, section_size)+, 0,
ผลประโยชน์:
การควบคุมเวอร์ชันเอื้อต่อการแนะนำหรือเลิกใช้งานฟังก์ชันใหม่ในอนาคต (เช่น การแนะนำการแยกบัญชี)
การแยกรหัสสัญญาและข้อมูลเป็นประโยชน์ต่อการตรวจสอบความถูกต้องของ L2 (op) ซึ่งช่วยลดต้นทุนก๊าซของเครื่องมือตรวจสอบความถูกต้องของ L2
ชื่อระดับแรก
EIP-3670: EOF — การยืนยันรหัส
EIP นี้ไม่จำเป็นต้องรวมอยู่ในการอัปเกรด Shanghai และจะมีการแนะนำการยืนยันรหัสเมื่อมีการสร้างสัญญา EIP-3540 สัญญาที่ปฏิเสธคำแนะนำที่ไม่ได้กำหนด
ผลประโยชน์:
ลิงค์ต้นฉบับ
