ผู้เขียนต้นฉบับ : @Web3 Mario
บทนำ : Vitalik เปิดตัวข้อเสนอ EIP-7706 เมื่อวันที่ 13 พฤษภาคม 2024 โดยเสนอส่วนเสริมสำหรับโมเดล Gas ที่มีอยู่ แยกการคำนวณก๊าซของข้อมูลการโทรแยกกัน และปรับแต่งกลไกการกำหนดราคาค่าธรรมเนียมพื้นฐานที่คล้ายกับ Blob gas ซึ่งจะช่วยลดต้นทุนการดำเนินงาน L2 ได้มากขึ้น ข้อเสนอที่เกี่ยวข้องต้องย้อนกลับไปที่ EIP-4844 ที่เสนอในเดือนกุมภาพันธ์ 2565 ซึ่งเป็นเวลานานแล้ว ดังนั้น หลังจากปรึกษาข้อมูลที่เกี่ยวข้องแล้ว ฉันหวังว่าจะสร้างภาพรวมของกลไก Ethereum Gas ล่าสุดเพื่อให้ทุกคนสามารถเข้าใจได้อย่างรวดเร็ว มัน.
ปัจจุบันรองรับรุ่น Ethereum Gas - EIP-1559 และ EIP-4844
ในการออกแบบเบื้องต้น Ethereum ใช้กลไกการประมูลง่ายๆ เพื่อกำหนดราคาค่าธรรมเนียมการทำธุรกรรม ซึ่งกำหนดให้ผู้ใช้ต้องเสนอราคาสำหรับธุรกรรมของตนเอง กล่าวคือ เพื่อกำหนดราคาก๊าซ โดยปกติ ค่าธรรมเนียมการทำธุรกรรมที่ผู้ใช้จ่ายจะเป็นของนักขุด ดังนั้นนักขุดจะตัดสินใจลำดับของการบรรจุธุรกรรมตามราคาของการเสนอราคาตามหลักการเพิ่มประสิทธิภาพทางเศรษฐกิจ โปรดทราบว่านี่คือการเพิกเฉยต่อ MEV จากข้อมูลของนักพัฒนาหลักในขณะนั้น กลไกนี้ประสบปัญหาสี่ประการต่อไปนี้:
ไม่ตรงกันระหว่างความผันผวนของระดับค่าธรรมเนียมการทำธุรกรรมและต้นทุนที่เป็นเอกฉันท์ของการทำธุรกรรม: สำหรับบล็อคเชนที่ใช้งานอยู่ มีความต้องการเพียงพอสำหรับการบรรจุธุรกรรม ซึ่งหมายความว่าสามารถเติมบล็อคได้อย่างง่ายดาย แต่บ่อยครั้งก็หมายความว่าต้นทุนโดยรวมมีความผันผวนสูง ตัวอย่างเช่น เมื่อราคาก๊าซเฉลี่ยอยู่ที่ 10 Gwei ต้นทุนส่วนเพิ่มที่เกิดขึ้นโดยเครือข่ายโดยการยอมรับธุรกรรมอื่นในบล็อกจะสูงกว่าราคาก๊าซเฉลี่ย 1 Gwei ถึง 10 เท่า ซึ่งเป็นที่ยอมรับไม่ได้
ความล่าช้าที่ไม่จำเป็นสำหรับผู้ใช้: เนื่องจากขีดจำกัดฮาร์ดแก๊สของแต่ละบล็อก ควบคู่ไปกับความผันผวนตามธรรมชาติของปริมาณธุรกรรมในอดีต ธุรกรรมมักจะรอหลายบล็อกก่อนที่จะถูกบรรจุ แต่สิ่งนี้เป็นอันตรายต่อเครือข่ายโดยรวม กล่าวคือ มี ไม่มีกลไก "การผ่อนคลาย" ที่ช่วยให้หนึ่งบล็อกมีขนาดใหญ่ขึ้น และอีกบล็อกหนึ่งเล็กลงเพื่อตอบสนองความต้องการที่แตกต่างกันทีละบล็อก
การกำหนดราคาที่ไม่มีประสิทธิภาพ: เนื่องจากการใช้กลไกการประมูลแบบง่าย ประสิทธิภาพในการค้นหาราคายุติธรรมจึงต่ำ ซึ่งหมายความว่าผู้ใช้จะให้ราคาที่สมเหตุสมผลได้ยาก ซึ่งหมายความว่าในหลายกรณี ผู้ใช้จะต้องจ่ายค่าธรรมเนียมสูง
บล็อกเชนที่ไม่มีรางวัลบล็อกจะไม่เสถียร: เมื่อรางวัลบล็อคที่ได้จากการขุดถูกกำจัดและมีการใช้รูปแบบค่าธรรมเนียมล้วนๆ อาจนำไปสู่ความไม่แน่นอนมากมาย เช่น "บล็อกย่อย" ที่จูงใจให้ขุดเพื่อขโมยค่าธรรมเนียมการทำธุรกรรม เปิดใช้งาน เวกเตอร์การโจมตีการขุดที่เห็นแก่ตัวที่ทรงพลังยิ่งขึ้นและอีกมากมาย
จนกระทั่งมีข้อเสนอและการดำเนินการตาม EIP-1559 โมเดล Gas มีการทำซ้ำครั้งแรก EIP-1559 ได้รับการเสนอโดยนักพัฒนาหลัก เช่น Vitalik เมื่อวันที่ 13 เมษายน 2019 และถูกนำมาใช้ในการอัปเกรดที่ลอนดอนเมื่อวันที่ 5 สิงหาคม 2021 นำมาใช้ กลไกนี้จะละทิ้งกลไกการประมูล และใช้รูปแบบการกำหนดราคาแบบคู่ของค่าธรรมเนียมพื้นฐานและค่าธรรมเนียมลำดับความสำคัญ ซึ่งค่าธรรมเนียมพื้นฐานจะขึ้นอยู่กับปริมาณการใช้ก๊าซที่สร้างขึ้นในบล็อกหลักและเป้าหมายก๊าซแบบลอยตัวและแบบเรียกซ้ำ ความสัมพันธ์จะถูกคำนวณในเชิงปริมาณ ผ่านแบบจำลองทางคณิตศาสตร์ที่กำหนดไว้ ผลโดยสัญชาตญาณคือ หากการใช้ก๊าซในบล็อกก่อนหน้าเกินเป้าหมายก๊าซที่กำหนดไว้ ค่าธรรมเนียมพื้นฐานจะเพิ่มขึ้น สามารถสะท้อนความสัมพันธ์ระหว่างอุปสงค์และอุปทานได้ดีขึ้น และสามารถทำให้การคาดการณ์ก๊าซที่เหมาะสมได้แม่นยำยิ่งขึ้น ป้องกันไม่ให้ราคาก๊าซพุ่งสูงเนื่องจากการดำเนินการที่ไม่ถูกต้อง เนื่องจากการคำนวณค่าธรรมเนียมพื้นฐานจะถูกกำหนดโดยตรงโดยระบบ แทนที่จะระบุอย่างอิสระโดย ผู้ใช้ รหัสเฉพาะมีดังนี้:

จะเห็นได้ว่าเมื่อ parent_gas_used มากกว่า parent_gas_target ค่าธรรมเนียมพื้นฐานของบล็อกปัจจุบันจะถูกนำไปเปรียบเทียบกับค่าธรรมเนียมพื้นฐานของบล็อกก่อนหน้าบวกกับค่าออฟเซ็ต ส่วนค่าออฟเซ็ตนั้น parent_base_fee คูณด้วยต้นทุนก๊าซทั้งหมด บล็อกก่อนหน้า ค่าชดเชยที่สัมพันธ์กับเป้าหมายก๊าซและค่าสูงสุดของโมดูลัส 1 ระหว่างเป้าหมายก๊าซและค่าคงที่ ในทางตรงกันข้ามตรรกะก็คล้ายกัน
นอกจากนี้ ค่าธรรมเนียมพื้นฐานจะไม่ถูกแจกจ่ายให้กับนักขุดเป็นรางวัลอีกต่อไป แต่จะถูกทำลายโดยตรง ดังนั้นโมเดลทางเศรษฐกิจของ ETH จึงอยู่ในภาวะเงินฝืด ซึ่งเอื้อต่อความมั่นคงของมูลค่า ในทางกลับกัน ค่าธรรมเนียม Priority จะเท่ากับรางวัลที่ผู้ใช้มอบให้กับนักขุดและสามารถกำหนดราคาได้อย่างอิสระ ซึ่งจะทำให้อัลกอริธึมการเรียงลำดับของนักขุดสามารถนำกลับมาใช้ใหม่ได้ในระดับหนึ่ง

เมื่อเวลาผ่านไปจนถึงปี 2021 การพัฒนา Rollup จะค่อยๆ เข้าสู่สถานการณ์ที่ดี เรารู้ว่า OP Rollup หรือ ZK Rollup หมายความว่าข้อมูลพิสูจน์บางอย่างหลังจากการบีบอัดข้อมูล L2 จำเป็นต้องอัปโหลดไปยังลูกโซ่ผ่าน calldata เพื่อให้รับรู้ข้อมูล ความพร้อมใช้งาน (ข้อมูลที่มีอยู่) หรือส่งโดยตรงไปยังห่วงโซ่เพื่อตรวจสอบ ซึ่งทำให้โซลูชัน Rollup เหล่านี้ต้องเผชิญกับต้นทุน Gas จำนวนมากเมื่อรักษาสถานะขั้นสุดท้ายของ L2 และต้นทุนเหล่านี้จะถูกส่งต่อไปยังผู้ใช้ในที่สุด ดังนั้น ต้นทุนในการใช้โปรโตคอล L2 ส่วนใหญ่ในขณะนั้นจึงไม่ต่ำอย่างที่คิดไว้
ในเวลาเดียวกัน Ethereum ก็เผชิญกับภาวะที่กลืนไม่เข้าคายไม่ออกของการแข่งขันสำหรับบล็อกสเปซ เรารู้ว่าแต่ละบล็อกมี Gas Limit ซึ่งหมายความว่าปริมาณการใช้ก๊าซทั้งหมดของธุรกรรมทั้งหมดในบล็อกปัจจุบันจะต้องไม่เกินมูลค่านี้ ขีดจำกัดของแก๊สคำนวณเป็น 30000000 ตามทฤษฎีแล้ว มีขีดจำกัดอยู่ที่ 30, 000, 000 / 16 = 1, 875, 000 ไบต์ โดยที่ 16 หมายถึงข้อเท็จจริงที่ว่า EVM ใช้ Gas 16 หน่วยในการประมวลผลแต่ละไบต์ของ calldata ซึ่งหมายความว่าขนาดข้อมูลสูงสุดที่บล็อกเดียวสามารถพกพาได้คือประมาณ 1.79 MB ข้อมูลที่เกี่ยวข้องกับ Rollup ที่สร้างโดยซีเควนเซอร์ L2 มักจะมีขนาดใหญ่ ซึ่งทำให้สามารถแข่งขันกับการยืนยันธุรกรรมของผู้ใช้สายโซ่หลักรายอื่น ส่งผลให้ปริมาณธุรกรรมน้อยลงซึ่งสามารถบรรจุในบล็อกเดียว จึงส่งผลกระทบต่อ TPS ของห่วงโซ่หลัก
เพื่อแก้ไขภาวะที่กลืนไม่เข้าคายไม่ออกนี้ นักพัฒนาหลักได้เสนอข้อเสนอ EIP-4844 เมื่อวันที่ 5 กุมภาพันธ์ 2022 และได้มีการนำไปใช้หลังจากการอัปเกรด Dencun ในช่วงต้นไตรมาสที่สองของปี 2024 ข้อเสนอเสนอประเภทธุรกรรมใหม่ที่เรียกว่าธุรกรรม Blob เมื่อเปรียบเทียบกับธุรกรรมประเภทดั้งเดิม แนวคิดหลักของธุรกรรม Blob คือการเพิ่มประเภทข้อมูลใหม่ ได้แก่ ข้อมูล Blob แตกต่างจากประเภท calldata EVM ไม่สามารถเข้าถึงข้อมูล Blob ได้โดยตรง แต่จะเข้าถึงได้เฉพาะแฮชเท่านั้น หรือที่เรียกว่า VersionedHash นอกจากนี้ยังมีการออกแบบสองแบบด้วยกัน แบบหนึ่งคือ เมื่อเทียบกับธุรกรรมทั่วไป วงจร GC ของธุรกรรม Blob จะสั้นกว่า ดังนั้นจึงมั่นใจได้ว่าข้อมูลบล็อกจะไม่ป่องจนเกินไป อีกประการหนึ่งคือข้อมูล Blob มีกลไก Gas ดั้งเดิม โดยทั่วไปแล้ว ผลกระทบที่นำเสนอจะคล้ายกับ EIP-1559 แต่ฟังก์ชันเลขชี้กำลังตามธรรมชาติจะถูกเลือกในแบบจำลองทางคณิตศาสตร์เพื่อให้ทำงานได้ดีขึ้นในแง่ของความเสถียรในการตอบสนองต่อความผันผวนของขนาดธุรกรรม เนื่องจากความชันของฟังก์ชันเลขชี้กำลังตามธรรมชาติคือ ยังเป็นฟังก์ชันเลขชี้กำลังตามธรรมชาติ ซึ่งหมายความว่าไม่ว่าสถานะของธุรกรรมเครือข่ายจะเป็นอย่างไรในขณะนี้ เมื่อขนาดธุรกรรมพุ่งสูงขึ้นอย่างรวดเร็ว ค่าธรรมเนียมพื้นฐานของ Blob Gas จะตอบสนองอย่างเต็มที่มากขึ้น จึงช่วยลดกิจกรรมการทำธุรกรรมได้อย่างมีประสิทธิภาพ เวลา ฟังก์ชันนี้ยังมีคุณสมบัติที่สำคัญอีกด้วย เมื่อ Abscissa เป็น 0 ค่าของฟังก์ชันจะเป็น 1
base_fee_per_blob_gas = MIN_BASE_FEE_PER_BLOB_GAS * e**(excess_blob_gas / BLOB_BASE_FEE_UPDATE_FRACTION)
ในบรรดาค่าเหล่านี้ MIN_BASE_FEE_PER_BLOB_GAS และ BLOB_BASE_FEE_UPDATE_FRACTION เป็นค่าคงที่ 2 ค่า และ blob_gas ส่วนเกินจะถูกกำหนดโดยความแตกต่างระหว่างปริมาณการใช้ก๊าซหยดทั้งหมดในบล็อกหลักและค่าคงที่ TARGET_BLOB_GAS_PER_BLOCK เมื่อปริมาณการใช้ก๊าซหยดทั้งหมดเกินค่าเป้าหมาย นั่นคือความแตกต่างจะเป็นค่าบวก . ถ้า e**(excess_blob_gas / BLOB_BASE_FEE_UPDATE_FRACTION) มากกว่า 1 base_fee_per_blob_gas จะมีขนาดใหญ่ขึ้น ไม่เช่นนั้นก็จะเล็กลง
ด้วยวิธีนี้ บางสถานการณ์ที่ต้องการใช้ความสามารถที่เป็นเอกฉันท์ของ Ethereum เพื่อรับรองข้อมูลขนาดใหญ่บางอย่างเท่านั้น เพื่อให้แน่ใจว่าความพร้อมใช้งานสามารถดำเนินการได้ด้วยต้นทุนที่ต่ำ โดยไม่กระทบต่อความสามารถในการบรรจุธุรกรรมของบล็อก จากการใช้ซีเควนเซอร์ Rollup เป็นตัวอย่าง ข้อมูลสำคัญของ L2 สามารถถูกห่อหุ้มไว้ในข้อมูล Blob ผ่านธุรกรรม Blob และด้วยการออกแบบที่ซับซ้อนใน EVM ทำให้ versionedHash สามารถใช้เพื่อใช้ตรรกะการตรวจสอบแบบออนไลน์ได้
ควรเพิ่มว่าการตั้งค่าปัจจุบันของ TARGET_BLOB_GAS_PER_BLOCK และ MAX_BLOB_GAS_PER_BLOCK นำข้อจำกัดมาสู่ mainnet นั่นคือเป้าหมายของการประมวลผลโดยเฉลี่ย 3 blobs (0.375 MB) ต่อบล็อกและขีดจำกัดสูงสุด 6 blobs (0.75 MB) ขีดจำกัดเริ่มต้นเหล่านี้ได้รับการออกแบบมาเพื่อลดความเครียดที่ EIP เกิดขึ้นบนเครือข่าย และคาดว่าจะเพิ่มขึ้นในการอัปเกรดในอนาคต เนื่องจากเครือข่ายแสดงให้เห็นถึงความน่าเชื่อถือด้วยบล็อกที่ใหญ่กว่า

การปรับปรุงสภาพแวดล้อมการดำเนินการเพิ่มเติม โมเดลปริมาณการใช้ก๊าซ——EIP-7706
หลังจากชี้แจงโมเดล Gas ปัจจุบันของ Ethereum แล้ว เรามาดูเป้าหมายและรายละเอียดการดำเนินการของข้อเสนอ EIP-7706 กันดีกว่า Vitalik ยื่นข้อเสนอเมื่อวันที่ 13 พฤษภาคม 2024 เช่นเดียวกับข้อมูล Blob ข้อเสนอนี้จะตัดแบบจำลอง Gas ที่สอดคล้องกับช่องข้อมูลอื่นที่มีคุณสมบัติพิเศษ ซึ่งก็คือ calldata และปรับตรรกะการนำโค้ดไปใช้ให้เหมาะสม
ตามหลักการแล้ว ตรรกะการคำนวณค่าธรรมเนียมพื้นฐานของ calldata จะเหมือนกับค่าธรรมเนียมพื้นฐานสำหรับข้อมูล blob ใน EIP-4844 ทั้งสองใช้ฟังก์ชันเอ็กซ์โปเนนเชียลและคำนวณค่าธรรมเนียมฐานปัจจุบันตามค่าเบี่ยงเบนระหว่างค่าการใช้ก๊าซจริงในบล็อกหลัก และค่าเป้าหมาย

เป็นที่น่าสังเกตว่าการออกแบบพารามิเตอร์ใหม่ LIMIT_TARGET_RATIOS=[ 2, 2, 4 ] โดยที่ LIMIT_TARGET_RATIOS[ 0 ] แสดงถึงอัตราส่วนเป้าหมายของคลาสการทำงานของ Gas LIMIT_TARGET_RATIOS[ 1 ] แสดงถึงอัตราส่วนเป้าหมายของคลาสข้อมูล Blob Gas LIMIT_TARGET_RATIOS [ 2] แสดงถึงอัตราส่วนเป้าหมายของคลาส calldata Gas เวกเตอร์นี้ใช้ในการคำนวณค่าเป้าหมายของก๊าซที่สอดคล้องกับก๊าซสามประเภทในบล็อกหลักคือ ใช้ LIMIT_TARGET_RATIOS เพื่อทำการหารจำนวนเต็ม การดำเนินงานเกี่ยวกับขีดจำกัดก๊าซ:

ตรรกะการตั้งค่าของ gas_limits เป็นดังนี้:
gas_limits[0] ต้องเป็นไปตามสูตรการปรับที่มีอยู่
gas_limits[1] ต้องเท่ากับ MAX_BLOB_GAS_PER_BLOCK
gas_limits[ 2 ] ต้องเท่ากับ gas_limits[ 0 ] // CALLDATA_GAS_LIMIT_RATIO
เรารู้ว่า gas_limits[0] ปัจจุบันคือ 30000000 และ CALLDATA_GAS_LIMIT_RATIO ถูกตั้งค่าล่วงหน้าไว้ที่ 4 ซึ่งหมายความว่าเป้าหมายก๊าซ calldata ปัจจุบันอยู่ที่ประมาณ 30000000 // 4 // 4 = 1875000 และเนื่องจากตรรกะการคำนวณก๊าซ calldata ปัจจุบัน แต่ละค่า ไบต์ที่ไม่ใช่ศูนย์จะใช้ 16 Gas และศูนย์ไบต์จะใช้ 4 Gas สมมติว่าการกระจายของไบต์ที่ไม่ใช่ศูนย์และศูนย์ในเซกเมนต์หนึ่งของข้อมูลการโทรแต่ละส่วนคิดเป็น 50% ดังนั้นโดยเฉลี่ยแล้วจะใช้เวลา 10 Gas ในการประมวลผล 1 ไบต์ของ ข้อมูลการโทร ดังนั้นเป้าหมายก๊าซ calldata ปัจจุบันควรสอดคล้องกับข้อมูล calldata ขนาด 187,500 ไบต์ ซึ่งประมาณ 2 เท่าของการใช้งานเฉลี่ยในปัจจุบัน
ข้อดีของการทำเช่นนี้คือช่วยลดโอกาสที่ข้อมูลการโทรจะถึงขีดจำกัดของก๊าซได้อย่างมาก รักษาการใช้ข้อมูลการโทรให้อยู่ในสถานะที่สอดคล้องกันมากขึ้นผ่านแบบจำลองทางเศรษฐกิจ และยังกำจัดการใช้ข้อมูลการโทรในทางที่ผิดอีกด้วย เหตุผลของการออกแบบนี้คือเพื่อให้ชัดเจนถึงแนวทางในการพัฒนา L2 และด้วยข้อมูลหยด ต้นทุนของเครื่องคัดแยกจึงสามารถลดลงได้อีก


