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

EIP-3529: ลดการไหลกลับของก๊าซ

ECN以太坊中国
特邀专栏作者
บทความนี้มีประมาณ 3498 คำ การอ่านทั้งหมดใช้เวลาประมาณ 5 นาที
EIP-3529 ที่อัปเกรดแล้วของลอนดอนจะเพิ่มประสิทธิภาพ EVM ได้อย่างไรโดยการปรับเปลี่ยนการส่งคืนก๊า
สรุปโดย AI
EIP-3529 ที่อัปเกรดแล้วของลอนดอนจะเพิ่มประสิทธิภาพ EVM ได้อย่างไรโดยการปรับเปลี่ยนการส่งคืนก๊า

ที่มา | eips.ethereum.org

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

สรุปสั้น ๆ

เหตุผล

เหตุผล

ในตอนแรกมีการแนะนำ Gas Return ของ SSTORE และ SELFDESTRUCT เพื่อกระตุ้นให้ผู้พัฒนาแอปพลิเคชันปฏิบัติตาม "สุขอนามัยที่ดี" เมื่อเขียนแอปพลิเคชัน และล้างช่องจัดเก็บและสัญญาที่ไม่จำเป็นอีกต่อไป อย่างไรก็ตาม ปรากฎว่าประสิทธิภาพที่เทคโนโลยีนี้นำมานั้นต่ำกว่าที่คาดไว้มาก และการส่งคืนก๊าซมีผลกระทบที่เป็นอันตรายที่ไม่คาดคิดหลายประการ:

➤ การคืนก๊าซทำให้ GASToken ปรากฏขึ้น GasToken นั้นดีสำหรับการย้ายพื้นที่ก๊าซจากเฟสที่มีค่าธรรมเนียมต่ำไปยังเฟสที่มีค่าธรรมเนียมสูง แต่ก็ไม่ดีสำหรับเครือข่ายเช่นกัน โดยเฉพาะอย่างยิ่งการเพิ่มขนาดสถานะที่มากขึ้น (เนื่องจากสเตตสล็อตถูกใช้อย่างมีประสิทธิภาพเป็น "แบตเตอรี่" เพื่อสะสมก๊าซ) และการอุดตันที่ไม่มีประสิทธิภาพ การใช้ก๊าซบล็อคเชน

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

พารามิเตอร์

พารามิเตอร์

สำหรับบล็อกที่มี block.number >= FORK_BLOCK จำเป็นต้องมีการเปลี่ยนแปลงต่อไปนี้

1. ลบการส่งคืน SELFDESTRUCT

2. แทนที่ SSTORE_CLEARS_SCHEDULE (กำหนดโดย EIP-2200) ด้วย SSTORE_RESET_GAS + ACCESS_LIST_STORAGE_KEY_COST (4,800 แก๊สภายใต้แรงรวมของ EIP-2929 + EIP-2930)

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

คำอธิบายหลักการ

EIP-2200 แนะนำสามกรณีของการคืนเงิน:

1. หากค่าเดิมไม่ใช่ศูนย์และค่าใหม่เป็นศูนย์ ให้เพิ่มจำนวนแก๊สของ SSTORE_CLEARS_SCHEDULE (ปัจจุบันคือ 15,000) ลงในเครื่องคำนวณการคืนเงิน

2. หากค่าเดิมเป็นศูนย์ ค่าปัจจุบันไม่ใช่ศูนย์ และค่าใหม่เป็นศูนย์ ให้เพิ่มปริมาณแก๊สของ SSTORE_SET_GAS - SLOAD_GAS (ปัจจุบันคือ 19,900) ลงในเครื่องคำนวณเงินคืน

3. ถ้าค่าเดิมไม่ใช่ศูนย์ ค่าปัจจุบันจะเป็นค่าอื่นที่ไม่ใช่ศูนย์ และค่าใหม่จะเท่ากับค่าเดิม ให้เพิ่มแก๊สของ SSTORE_RESET_GAS - SLOAD_GAS (ปัจจุบันคือ 4,900) ไปที่เครื่องคิดเลขย้อนกลับ

ในสามกรณีนี้ มีเพียง (1) เท่านั้นที่จะเปิดใช้งานแกสโทเค็นและอนุญาตให้บล็อกใช้แก๊สมากกว่าขีดจำกัดของบล็อกแก๊สในการดำเนินการ (2) ไม่มีคุณสมบัตินี้ เนื่องจากจะได้รับเงินคืน 19,900 แก๊ส ช่องเก็บของเดิมต้องเปลี่ยนจากศูนย์เป็นศูนย์ซึ่งก่อนหน้านี้มีค่าใช้จ่าย 20,000 แก๊ส การไม่สามารถรับก๊าซจากช่องหนึ่งและใช้เพื่อแก้ไขช่องอื่นหมายความว่าไม่สามารถใช้เป็นโทเค็นก๊าซได้ นอกจากนี้ การขอรับเงินคืนจำเป็นต้องกู้คืนการเขียนและขยายพื้นที่เก็บข้อมูล เพื่อให้ก๊าซที่ส่งคืนไม่เพิ่มภาระงานของลูกค้าในบล็อกการประมวลผล (3) คล้ายกัน: เงินคืน 4,900 ก๊าซจะได้รับก็ต่อเมื่อช่องเดียวกันเคยใช้ก๊าซ 5,000 มาก่อน

EIP นี้จัดการกับกรณีแรก เราสามารถใช้อาร์กิวเมนต์ "จับคู่" ที่คล้ายกันเพื่อกำหนดเงื่อนไขที่ Gastoken ไม่สามารถใช้ได้ (เช่น คุณไม่สามารถรับก๊าซในช่องได้มากกว่าอินพุตของคุณ) การแปลงแต่ละรายการจะคืนค่าการใช้จ่ายก่อนหน้าของช่องเก็บข้อมูลเดียวกันที่แมปกับ ธุรกรรมเดียวกัน เมื่อค่าดั้งเดิมของช่องเก็บข้อมูลไม่ใช่ศูนย์ หากเปลี่ยนเป็น 0 มีความเป็นไปได้สองประการ:

1. นี่อาจเป็นครั้งแรกที่สล็อตหน่วยความจำถูกตั้งค่าเป็นศูนย์ ในกรณีนี้ เราสามารถจับคู่เวลานี้กับโอเวอร์เฮดขั้นต่ำของ SSTORE_RESET_GAS + ACCESS_LIST_STORAGE_KEY_COST สำหรับการอ่านและแก้ไขช่องเก็บข้อมูลในครั้งแรก

2. กรณีนี้อาจเกิดขึ้นเมื่อสล็อตหน่วยความจำถูกตั้งค่าเป็นศูนย์เป็นครั้งที่สองหรือหลังจากตั้งค่าเป็นศูนย์แล้ว ในกรณีนี้ เราสามารถจับคู่เหตุการณ์นี้กับครั้งล่าสุดที่ค่าเปลี่ยนจากศูนย์เป็นอย่างอื่น และก๊าซของ SSTORE_CLEARS_SCHEDULE ถูกลบออกจากการส่งคืน

สำหรับกรณีที่สองและหลังจากนั้น ไม่สำคัญว่าค่าของ SSTORE_CLEARS_SCHEDULE จะเป็นเท่าใด เพราะการส่งคืนขนาดก๊าซนั้นตรงกับการส่งคืนที่ชัดเจนในขนาดเดียวกัน นี่เป็นเพียงกรณีแรกเท่านั้น เพื่อให้แน่ใจว่าปริมาณก๊าซทั้งหมดที่ใช้ในช่องจัดเก็บเป็นค่าบวก เราจำเป็นต้องมี SSTORE_CLEARS_SCHEDULE <= SSTORE_RESET_GAS + ACCESS_LIST_STORAGE_KEY_COST ดังนั้น EIP นี้จะลด SSTORE_CLEARS_SCHEDULE ให้เป็นผลรวมของค่าโสหุ้ยทั้งสอง

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

ความเข้ากันได้ย้อนหลัง

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

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

อย่างไรก็ตาม การรักษาผลตอบแทนทั้งหมดไว้ใน new = original = 0 != current และรักษาผลตอบแทนบางส่วนในกรณีอื่นๆ ที่ไม่ใช่ศูนย์ -> ศูนย์ ช่วยให้มั่นใจได้ว่ากรณีการใช้งานที่สำคัญบางกรณีที่ได้รับ (และสมควรได้รับ) การบำบัดค่าโสหุ้ยก๊าซที่ดีขึ้นจะยังคงเป็นประโยชน์ต่อไป ตัวอย่างเช่น โหมดการกำหนดค่าพื้นที่เก็บข้อมูลเป็นศูนย์ -> ไม่ใช่ศูนย์ -> ศูนย์ยังคงใช้ก๊าซประมาณ 100 แก๊สเท่านั้น รูปแบบเหล่านี้ประกอบด้วยกรณีสำคัญสองกรณี:

➤ ล็อคป้องกันการกลับเข้าที่ (โดยปกติจะเปลี่ยนจาก 0 เป็น 1 ก่อนที่การโทรย่อยจะเริ่มต้น จากนั้นเปลี่ยนกลับเป็น 0 เมื่อการโทรย่อยสิ้นสุดลง)

➤ การอนุญาตและการส่ง ERC20 (เมื่อการโอนโทเค็นได้รับอนุญาต"ค่าการอนุญาต"ชื่อเรื่องรอง

ผลกระทบต่อแรงจูงใจในการจัดเก็บที่ชัดเจน

คำติชมของ EIP ก่อนหน้านี้สำหรับส่วนลดการลบ (EIP-3298 และ EIP-3403) ก็คือการที่ EIP เหล่านี้ลบแรงจูงใจในการตั้งค่าเป็นศูนย์โดยสิ้นเชิง กระตุ้นให้ผู้ใช้ไม่ต้องล้างช่องอย่างสมบูรณ์ (แม้ว่าพวกเขาจะต้องการ) ก็ตาม) แม้ว่าโอกาสที่พวกเขาต้องการใช้สล็อตนั้นอีกครั้งมีน้อยมาก

ตัวอย่างเช่น หากคุณมีโทเค็น ERC20 หนึ่งหน่วยและคุณต้องการให้หรือขายยอดคงเหลือทั้งหมดของคุณ คุณสามารถให้ 0.999999 หน่วยและเก็บส่วนที่เหลือไว้ หากคุณต้องการใส่โทเค็นนี้อีกครั้งในบัญชีเดียวกันในอนาคต คุณต้องจ่ายเพียง 5,000 แก๊สสำหรับ SSTORE (2,100 สำหรับการอ่าน + 2,900 สำหรับการตั้งค่าที่ไม่ใช่ศูนย์ถึงไม่เป็นศูนย์) แทน 22,100 ( 20,000 สำหรับ การตั้งค่าจากศูนย์ถึงค่าที่ไม่ใช่ศูนย์) วันนี้ ก๊าซส่วนนี้ถูกชดเชยด้วยการคืนก๊าซ 15,000 สำหรับการเคลียร์พื้นที่จัดเก็บ ดังนั้นหากคุณมีความมั่นใจมากกว่า 15,000/17,100 = 87.7% ว่าคุณจะใช้ช่องจัดเก็บนี้อีกครั้ง คุณจะมีแรงจูงใจในการทำเช่นนั้น ต่อ EIP 3298 หรือการตั้งค่า EIP 3403 ไม่มีส่วนของสิ่งจูงใจชดเชย ดังนั้นหากคุณมีโอกาสใช้ช่องเก็บข้อมูลอีกครั้งมากกว่า 0 จะเป็นการดีกว่าหากตั้งค่าเป็นค่าที่ไม่ใช่ศูนย์

สำหรับเงินคืนที่เหลืออีก 4,800 หากคุณรู้สึกว่าโอกาสในการใช้สล็อตอีกครั้งมากกว่า 4800 / 17100 = 28.1% คุณมีแรงจูงใจที่จะรักษาสล็อตนั้นให้ไม่เป็นศูนย์ มันไม่สมบูรณ์แบบ แต่อาจสูงกว่าอัตราต่อรองของคนทั่วไปในการได้รับโทเค็นเดิมในที่อยู่เดิมหลังจากล้างยอดคงเหลือทั้งหมด

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

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

ค่าโสหุ้ยสำหรับ EIP-2929

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

หลังผลตอบแทนลดลง

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

ข้อพิจารณาด้านความปลอดภัย

ผลตอบแทนไม่สามารถมองเห็นได้ในการดำเนินการทางธุรกรรม ดังนั้นจึงไม่มีผลกระทบต่อตรรกะการดำเนินการทางธุรกรรม

งานแปลของ ECN มีเป้าหมายเพื่อส่งมอบข้อมูลและทรัพยากรการเรียนรู้คุณภาพสูงสำหรับชุมชน Ethereum ของจีน ลิขสิทธิ์ของบทความเป็นของผู้เขียนต้นฉบับและต้องระบุแหล่งที่มาของข้อความต้นฉบับและเว็บไซต์ ETH ภาษาจีนเมื่อพิมพ์ซ้ำ สำหรับการพิมพ์ซ้ำในระยะยาว โปรดติดต่อ eth@ecn.co เพื่อขออนุญาต

ลิงค์ต้นฉบับ:https://eips.ethereum.org/EIPS/eip-3529

งานแปลของ ECN มีเป้าหมายเพื่อส่งมอบข้อมูลและทรัพยากรการเรียนรู้คุณภาพสูงสำหรับชุมชน Ethereum ของจีน ลิขสิทธิ์ของบทความเป็นของผู้เขียนต้นฉบับและต้องระบุแหล่งที่มาของข้อความต้นฉบับและเว็บไซต์ ETH ภาษาจีนเมื่อพิมพ์ซ้ำ สำหรับการพิมพ์ซ้ำในระยะยาว โปรดติดต่อ eth@ecn.co เพื่อขออนุญาต

บัญชีอย่างเป็นทางการ: สถานีจีน ​​ETH

เว็บไซต์: ethereum.cn

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