แนะ นำ
เมื่อวันที่ 13 พฤษภาคม พ.ศ. 2024 Vitalik ได้เสนอ EIP-7706 โดยแนะนําแผนเสริมสําหรับแบบจําลองก๊าซที่มีอยู่ ข้อเสนอนี้แยกการคํานวณก๊าซของ calldata และปรับแต่งกลไกการกําหนดราคาค่าธรรมเนียมพื้นฐานที่คล้ายกับก๊าซ Blob ซึ่งช่วยลดต้นทุนการดําเนินงานของเลเยอร์ 2 (L2) ข้อเสนอที่เกี่ยวข้องมีอายุย้อนไปถึง EIP-4844 ซึ่งเสนอในเดือนกุมภาพันธ์ พ.ศ. 2022 บทความนี้จึงทบทวนเนื้อหาที่เกี่ยวข้องเพื่อให้ภาพรวมของการพัฒนาล่าสุดในกลไก Ethereum Gas ทําให้ผู้อ่านเข้าใจการอัปเดตได้อย่างรวดเร็ว
ในการออกแบบเบื้องต้น Ethereum ได้นํากลไกการประมูลที่เรียบง่ายมาใช้เพื่อกําหนดราคาค่าธรรมเนียมการทําธุรกรรม โดยกําหนดให้ผู้ใช้เสนอราคาสําหรับธุรกรรมของตนอย่างแข็งขันโดยกําหนดราคาก๊าซ โดยทั่วไป เนื่องจากค่าธรรมเนียมการทําธุรกรรมที่ผู้ใช้จ่ายให้กับนักขุด นักขุดจึงจัดลําดับความสําคัญของธุรกรรมตามราคาเสนอสูงสุด โดยสมมติว่าไม่มีการพิจารณามูลค่าที่สกัดได้ นักพัฒนาหลักระบุปัญหาหลักสี่ประการของกลไกนี้:
ความไม่ตรงกันระหว่างความผันผวนของค่าธรรมเนียมการทําธุรกรรมและต้นทุนฉันทามติ: สําหรับบล็อกเชนที่ใช้งานอยู่มีความต้องการเพียงพอสําหรับการรวมธุรกรรมซึ่งหมายความว่าสามารถเติมบล็อกได้อย่างง่ายดาย อย่างไรก็ตามสิ่งนี้ยังส่งผลให้เกิดความผันผวนของค่าธรรมเนียมอย่างมีนัยสําคัญ ตัวอย่างเช่น เมื่อราคาก๊าซเฉลี่ยอยู่ที่ 10 Gwei ต้นทุนส่วนเพิ่มในการเพิ่มธุรกรรมอื่นลงในบล็อกจะสูงกว่าเมื่อราคาก๊าซเฉลี่ยอยู่ที่ 1 Gwei ถึงสิบเท่า ซึ่งเป็นที่ยอมรับไม่ได้
ความล่าช้าที่ไม่จําเป็นสําหรับผู้ใช้: เนื่องจากขีด จํากัด ของก๊าซแข็งต่อบล็อกและความผันผวนตามธรรมชาติของปริมาณธุรกรรมในอดีตธุรกรรมมักจะรอหลายบล็อกเพื่อรวมเข้าด้วยกัน สิ่งนี้ไม่มีประสิทธิภาพสําหรับเครือข่ายโดยรวม เนื่องจากไม่มีกลไกความยืดหยุ่นในการอนุญาตให้บล็อกหนึ่งมีขนาดใหญ่ขึ้นและบล็อกถัดไปมีขนาดเล็กลงเพื่อตอบสนองความต้องการแบบบล็อกต่อบล็อกที่แตกต่างกัน
ความไร้ประสิทธิภาพในการกําหนดราคา: กลไกการประมูลที่เรียบง่ายนําไปสู่การค้นพบราคาที่ไม่มีประสิทธิภาพทําให้ผู้ใช้กําหนดราคาที่เหมาะสมได้ยาก ซึ่งมักส่งผลให้ผู้ใช้จ่ายค่าธรรมเนียมการทําธุรกรรมมากเกินไป
ความไม่เสถียรในบล็อคเชนที่ไม่มีรางวัลบล็อก: เมื่อรางวัลบล็อกจากการขุดถูกลบออกและใช้รูปแบบค่าธรรมเนียมล้วนๆ อาจนําไปสู่ความไม่เสถียร เช่น การสร้าง "บล็อกลุง" ที่ขโมยค่าธรรมเนียมการทําธุรกรรม
ด้วยการแนะนําและการใช้งาน EIP-1559 แบบจําลองก๊าซได้รับการทําซ้ําที่สําคัญเป็นครั้งแรก เสนอโดย Vitalik และนักพัฒนาหลักรายอื่นเมื่อวันที่ 13 เมษายน 2019 และนํามาใช้ระหว่างการอัปเกรดในลอนดอนเมื่อวันที่ 5 สิงหาคม พ.ศ. 2021 กลไกนี้ละทิ้งรูปแบบการประมูลเพื่อสนับสนุนรูปแบบการกําหนดราคาแบบคู่ซึ่งประกอบด้วยค่าธรรมเนียมพื้นฐานและค่าธรรมเนียมลําดับความสําคัญ ค่าธรรมเนียมพื้นฐานจะถูกปรับเชิงปริมาณผ่านแบบจําลองทางคณิตศาสตร์ที่กําหนดไว้ล่วงหน้าตามปริมาณการใช้ก๊าซในบล็อกหลักที่สัมพันธ์กับเป้าหมายก๊าซแบบลอยตัวและแบบเรียกซ้ํา
การคํานวณค่าธรรมเนียมพื้นฐานและผลกระทบ: หากการใช้ก๊าซในบล็อกก่อนหน้าเกินเป้าหมายก๊าซค่าธรรมเนียมพื้นฐานจะเพิ่มขึ้น หากต่ํากว่าเป้าหมายก๊าซค่าธรรมเนียมพื้นฐานจะลดลง การปรับนี้สะท้อนให้เห็นถึงการเปลี่ยนแปลงของอุปสงค์และอุปทานได้ดีและปรับปรุงความแม่นยําของการคาดการณ์ก๊าซที่เหมาะสมหลีกเลี่ยงราคาก๊าซที่สูงเกินไปเนื่องจากการทํางานผิดพลาดเนื่องจากการคํานวณค่าธรรมเนียมพื้นฐานถูกกําหนดโดยระบบมากกว่าที่ผู้ใช้ระบุ รหัสเฉพาะสําหรับการคํานวณมีดังนี้:
จากเนื้อหา เราสามารถอนุมานได้ว่าเมื่อ parent_gas_used มากกว่า parent_gas_target ค่าธรรมเนียมพื้นฐานของบล็อกปัจจุบันจะเพิ่มขึ้นเมื่อเทียบกับค่าธรรมเนียมพื้นฐานของบล็อกก่อนหน้าด้วยค่าออฟเซ็ต ออฟเซ็ตนี้ถูกกําหนดโดยการคูณ parent_base_fee ด้วยการเบี่ยงเบนของการใช้ก๊าซทั้งหมดจากเป้าหมายก๊าซในบล็อกก่อนหน้าจากนั้นนําส่วนที่เหลือของเป้าหมายก๊าซและค่าคงที่และค่าสูงสุดระหว่างส่วนที่เหลือนี้กับ 1 ในทางกลับกันตรรกะจะใช้ในทํานองเดียวกันเมื่อ parent_gas_used น้อยกว่า parent_gas_target
นอกจากนี้ ค่าธรรมเนียมพื้นฐานจะไม่ถูกแจกจ่ายเป็นรางวัลให้กับนักขุดอีกต่อไป แต่จะถูกเผาแทน สิ่งนี้ทําให้แบบจําลองทางเศรษฐกิจของ ETH เกิดภาวะเงินฝืด ช่วยรักษาเสถียรภาพของมูลค่า ในทางกลับกัน ค่าธรรมเนียมลําดับความสําคัญ ซึ่งคล้ายกับทิปจากผู้ใช้ถึงนักขุด สามารถกําหนดราคาได้อย่างอิสระ ซึ่งช่วยให้สามารถนํากลับมาใช้ใหม่ได้ในระดับหนึ่งในอัลกอริธึมการเรียงลําดับของนักขุด
ภายในปี 2021 การพัฒนา Rollup ได้เข้าสู่ขั้นตอนที่เป็นผู้ใหญ่ เราทราบดีว่าทั้ง OP Rollup และ ZK Rollup เกี่ยวข้องกับการบีบอัดข้อมูล L2 และอัปโหลดข้อมูลหลักฐานบางอย่างผ่าน calldata ไปยังห่วงโซ่สําหรับความพร้อมใช้งานของข้อมูลหรือการตรวจสอบบนเครือข่ายโดยตรง สิ่งนี้นําไปสู่ต้นทุนก๊าซที่สําคัญในการรักษาขั้นสุดท้ายของ L2 ซึ่งผู้ใช้เป็นผู้รับผิดชอบในท้ายที่สุดส่งผลให้ต้นทุนสูงกว่าที่คาดไว้สําหรับโปรโตคอล L2 ส่วนใหญ่
ในขณะเดียวกัน Ethereum ก็เผชิญกับความท้าทายของการแข่งขันบล็อกสเปซ แต่ละบล็อกมีขีดจํากัดก๊าซ ซึ่งหมายความว่าปริมาณการใช้ก๊าซทั้งหมดของธุรกรรมทั้งหมดในบล็อกต้องไม่เกินขีดจํากัดนี้ ด้วยขีดจํากัดก๊าซปัจจุบันที่ตั้งไว้ที่ 30,000,000 ในทางทฤษฎี มีขีดจํากัดที่ 1,875,000 ไบต์ (30,000,000 / 16) ต่อบล็อก โดยที่จําเป็นต้องใช้ก๊าซ 16 หน่วยสําหรับแต่ละไบต์ข้อมูลการโทรที่ประมวลผลโดย EVM ส่งผลให้มีความจุข้อมูลสูงสุดประมาณ 1.79 MB ต่อบล็อก ข้อมูลที่เกี่ยวข้องกับ Rollup ที่สร้างโดยซีเควนเซอร์ L2 มักมีขนาดใหญ่ ทําให้เกิดการแข่งขันกับธุรกรรมของผู้ใช้ mainnet รายอื่น และลดจํานวนธุรกรรมที่สามารถรวมอยู่ในบล็อกเดียว ซึ่งจะส่งผลต่อ TPS ของ mainnet
เพื่อแก้ไขปัญหานี้ นักพัฒนาหลักได้เสนอ EIP-4844 เมื่อวันที่ 5 กุมภาพันธ์ พ.ศ. 2022 ซึ่งดําเนินการหลังจากการอัปเกรด Dencun ในต้นไตรมาสที่ 2 ปี พ.ศ. 2024 ข้อเสนอนี้แนะนําประเภทธุรกรรมใหม่ที่เรียกว่า Blob Transaction ซึ่งแตกต่างจากธุรกรรมแบบดั้งเดิม Blob Transaction มีประเภทข้อมูลใหม่ Blob data ซึ่งแตกต่างจาก calldata ตรงที่ EVM ไม่สามารถเข้าถึงได้โดยตรง แต่ผ่านแฮชหรือที่เรียกว่า VersionedHash เท่านั้น นอกจากนี้ Blob Transactions ยังมีวงจร GC ที่สั้นกว่าเมื่อเทียบกับธุรกรรมปกติ เพื่อป้องกันไม่ให้ข้อมูลบล็อกป่องเกินไป ข้อมูล Blob ยังมาพร้อมกับกลไกก๊าซโดยธรรมชาติ คล้ายกับ EIP-1559 แต่ใช้ฟังก์ชันเลขชี้กําลังตามธรรมชาติในแบบจําลองทางคณิตศาสตร์ ซึ่งให้ความเสถียรที่ดีขึ้นในการจัดการความผันผวนของขนาดธุรกรรม ความชันของฟังก์ชันเลขชี้กําลังตามธรรมชาติยังเป็นฟังก์ชันเลขชี้กําลังตามธรรมชาติซึ่งหมายความว่าโดยไม่คํานึงถึงสถานะปัจจุบันของขนาดธุรกรรมเครือข่ายค่าธรรมเนียมพื้นฐานของก๊าซหยดจะตอบสนองอย่างเต็มที่มากขึ้นต่อการเพิ่มขึ้นของธุรกรรมอย่างรวดเร็วควบคุมกิจกรรมการทําธุรกรรมได้อย่างมีประสิทธิภาพ คุณสมบัติที่สําคัญอีกประการหนึ่งคือค่าฟังก์ชันคือ 1 เมื่อแกนนอนเป็น 0
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 เป็นค่าคงที่ ในขณะที่ excess_blob_gas ถูกกําหนดโดยความแตกต่างระหว่างปริมาณการใช้ก๊าซหยดทั้งหมดในบล็อกหลักและ TARGET_BLOB_GAS_PER_BLOCK คงที่ เมื่อปริมาณการใช้ก๊าซหยดทั้งหมดเกินค่าเป้าหมายทําให้ความแตกต่างเป็นบวก e**(excess_blob_gas / BLOB_BASE_FEE_UPDATE_FRACTION) มากกว่า 1 ทําให้ base_fee_per_blob_gas เพิ่มขึ้นและในทางกลับกัน
กลไกนี้ช่วยให้สามารถดําเนินการตามสถานการณ์ที่มีต้นทุนต่ําซึ่งใช้ความสามารถฉันทามติของ Ethereum เพื่อรับรองปริมาณข้อมูลขนาดใหญ่เพื่อให้แน่ใจว่ามีความพร้อมใช้งานโดยไม่ต้องใช้ความสามารถในการบรรจุธุรกรรม ตัวอย่างเช่น ซีเควนเซอร์แบบสะสมสามารถใช้ธุรกรรม Blob เพื่อห่อหุ้มข้อมูล L2 ที่สําคัญลงในข้อมูล Blob และบรรลุการตรวจสอบแบบ on-chain ผ่าน VersionedHash ภายใน EVM
ควรสังเกตว่าการตั้งค่าปัจจุบันสําหรับ TARGET_BLOB_GAS_PER_BLOCK และ MAX_BLOB_GAS_PER_BLOCK กําหนดข้อ จํากัด ใน mainnet โดยมีเป้าหมายเฉลี่ยในการประมวลผล 3 blobs (0.375 MB) ต่อบล็อกและสูงสุด 6 blobs (0.75 MB) ต่อบล็อก ขีดจํากัดเริ่มต้นเหล่านี้มีจุดมุ่งหมายเพื่อลดความเครียดของเครือข่ายที่เกิดจาก EIP นี้ โดยคาดว่าจะเพิ่มขีดจํากัดเหล่านี้ในการอัปเกรดในอนาคต เนื่องจากเครือข่ายแสดงให้เห็นถึงความน่าเชื่อถือภายใต้ขนาดบล็อกที่ใหญ่ขึ้น
หลังจากทําความเข้าใจโมเดล Ethereum Gas ปัจจุบันแล้ว เรามาเจาะลึกเป้าหมายและรายละเอียดการดําเนินการของข้อเสนอ EIP-7706 ข้อเสนอนี้นําเสนอโดย Vitalik เมื่อวันที่ 13 พฤษภาคม 2024 มีจุดมุ่งหมายเพื่อกําหนดแบบจําลอง Gas ใหม่สําหรับฟิลด์ข้อมูลเฉพาะที่เรียกว่า calldata เหมือนกับการเปลี่ยนแปลงก่อนหน้านี้สําหรับข้อมูล Blob นอกจากนี้ ข้อเสนอยังปรับตรรกะโค้ดที่เกี่ยวข้องให้เหมาะสม
แนวคิดพื้นฐาน
ตรรกะการคํานวณค่าธรรมเนียมพื้นฐานสําหรับ calldata ใน EIP-7706 สะท้อนการคํานวณค่าธรรมเนียมพื้นฐานสําหรับข้อมูล blob ตามที่ระบุไว้ใน EIP-4844 ทั้งสองใช้ฟังก์ชันเลขชี้กําลังเพื่อปรับค่าธรรมเนียมพื้นฐานตามความเบี่ยงเบนระหว่างปริมาณการใช้ก๊าซจริงและค่าเป้าหมายในบล็อกหลัก
แง่มุมที่น่าสังเกตของข้อเสนอนี้คือการแนะนําการออกแบบพารามิเตอร์ใหม่ LIMIT_TARGET_RATIOS = [2, 2, 4] นี่คือรายละเอียด:
LIMIT_TARGET_RATIOS[0]: อัตราส่วนเป้าหมายสําหรับก๊าซการดําเนินการ
LIMIT_TARGET_RATIOS[1]: อัตราส่วนเป้าหมายสําหรับก๊าซข้อมูล Blob
LIMIT_TARGET_RATIOS[2]: อัตราส่วนเป้าหมายสําหรับก๊าซคอลดาต้า
อัตราส่วนเหล่านี้ใช้ในการคํานวณค่าเป้าหมายก๊าซสําหรับก๊าซสามประเภทในบล็อกหลักโดยการหารขีดจํากัดก๊าซด้วยอัตราส่วนที่เกี่ยวข้อง
ขีด จํากัด ก๊าซถูกกําหนดดังนี้:
gas_limits[0]
ทําตามสูตรการปรับที่มีอยู่
gas_limits[1]
เท่ากับ MAX_BLOB_GAS_PER_BLOCK
.
gas_limits[2]
เท่ากับ gas_limits[0] / CALLDATA_GAS_LIMIT_RATIO
.
กําหนดกระแส gas_limits[0]
คือ 30,000,000 และ CALLDATA_GAS_LIMIT_RATIO
ตั้งค่าไว้ล่วงหน้าเป็น 4 ซึ่งหมายความว่าเป้าหมายก๊าซปัจจุบัน calldata
อยู่ที่ประมาณ
[ \frac{30,000,000}{4 \คูณ 4} = 1,875,000 ]
ตามตรรกะการคํานวณก๊าซในปัจจุบัน calldata
:
แต่ละไบต์ที่ไม่ใช่ศูนย์ใช้ 16 ก๊าซ
แต่ละศูนย์ไบต์ใช้ 4 ก๊าซ
สมมติว่ามีการกระจายที่สม่ําเสมอของไบต์ที่ไม่ใช่ศูนย์และศูนย์ในส่วนของ calldata
ปริมาณการใช้ก๊าซเฉลี่ยต่อไบต์คือ 10 ก๊าซ ดังนั้นเป้าหมายก๊าซในปัจจุบัน calldata
จึงสอดคล้องกับประมาณ 187,500 ไบต์ calldata
ของ ซึ่งเป็นประมาณสองเท่าของการใช้งานเฉลี่ยในปัจจุบัน
ประโยชน์ของข้อเสนอ
การปรับนี้ช่วยลดโอกาสในการ calldata
ถึงขีด จํากัด ก๊าซอย่างมีนัยสําคัญรักษา calldata
การใช้งานในระดับที่สอดคล้องกันผ่านการสร้างแบบจําลองทางเศรษฐกิจและป้องกันการละเมิด จุดประสงค์หลักของการออกแบบนี้คือเพื่ออํานวยความสะดวกในการเติบโตของโซลูชันเลเยอร์ 2 ลดต้นทุนซีเควนเซอร์เมื่อใช้ควบคู่ไปกับข้อมูลหยด
โดยสรุป EIP-7706 ไม่เพียงแต่ปรับแต่งโมเดล Gas เท่านั้น calldata
แต่ยังวางตําแหน่งเชิงกลยุทธ์ Ethereum สําหรับการปรับขนาดโซลูชันเลเยอร์ 2 อย่างมีประสิทธิภาพโดยการควบคุมและเพิ่มประสิทธิภาพการใช้ก๊าซที่เกี่ยวข้องกับข้อมูล
แนะ นำ
เมื่อวันที่ 13 พฤษภาคม พ.ศ. 2024 Vitalik ได้เสนอ EIP-7706 โดยแนะนําแผนเสริมสําหรับแบบจําลองก๊าซที่มีอยู่ ข้อเสนอนี้แยกการคํานวณก๊าซของ calldata และปรับแต่งกลไกการกําหนดราคาค่าธรรมเนียมพื้นฐานที่คล้ายกับก๊าซ Blob ซึ่งช่วยลดต้นทุนการดําเนินงานของเลเยอร์ 2 (L2) ข้อเสนอที่เกี่ยวข้องมีอายุย้อนไปถึง EIP-4844 ซึ่งเสนอในเดือนกุมภาพันธ์ พ.ศ. 2022 บทความนี้จึงทบทวนเนื้อหาที่เกี่ยวข้องเพื่อให้ภาพรวมของการพัฒนาล่าสุดในกลไก Ethereum Gas ทําให้ผู้อ่านเข้าใจการอัปเดตได้อย่างรวดเร็ว
ในการออกแบบเบื้องต้น Ethereum ได้นํากลไกการประมูลที่เรียบง่ายมาใช้เพื่อกําหนดราคาค่าธรรมเนียมการทําธุรกรรม โดยกําหนดให้ผู้ใช้เสนอราคาสําหรับธุรกรรมของตนอย่างแข็งขันโดยกําหนดราคาก๊าซ โดยทั่วไป เนื่องจากค่าธรรมเนียมการทําธุรกรรมที่ผู้ใช้จ่ายให้กับนักขุด นักขุดจึงจัดลําดับความสําคัญของธุรกรรมตามราคาเสนอสูงสุด โดยสมมติว่าไม่มีการพิจารณามูลค่าที่สกัดได้ นักพัฒนาหลักระบุปัญหาหลักสี่ประการของกลไกนี้:
ความไม่ตรงกันระหว่างความผันผวนของค่าธรรมเนียมการทําธุรกรรมและต้นทุนฉันทามติ: สําหรับบล็อกเชนที่ใช้งานอยู่มีความต้องการเพียงพอสําหรับการรวมธุรกรรมซึ่งหมายความว่าสามารถเติมบล็อกได้อย่างง่ายดาย อย่างไรก็ตามสิ่งนี้ยังส่งผลให้เกิดความผันผวนของค่าธรรมเนียมอย่างมีนัยสําคัญ ตัวอย่างเช่น เมื่อราคาก๊าซเฉลี่ยอยู่ที่ 10 Gwei ต้นทุนส่วนเพิ่มในการเพิ่มธุรกรรมอื่นลงในบล็อกจะสูงกว่าเมื่อราคาก๊าซเฉลี่ยอยู่ที่ 1 Gwei ถึงสิบเท่า ซึ่งเป็นที่ยอมรับไม่ได้
ความล่าช้าที่ไม่จําเป็นสําหรับผู้ใช้: เนื่องจากขีด จํากัด ของก๊าซแข็งต่อบล็อกและความผันผวนตามธรรมชาติของปริมาณธุรกรรมในอดีตธุรกรรมมักจะรอหลายบล็อกเพื่อรวมเข้าด้วยกัน สิ่งนี้ไม่มีประสิทธิภาพสําหรับเครือข่ายโดยรวม เนื่องจากไม่มีกลไกความยืดหยุ่นในการอนุญาตให้บล็อกหนึ่งมีขนาดใหญ่ขึ้นและบล็อกถัดไปมีขนาดเล็กลงเพื่อตอบสนองความต้องการแบบบล็อกต่อบล็อกที่แตกต่างกัน
ความไร้ประสิทธิภาพในการกําหนดราคา: กลไกการประมูลที่เรียบง่ายนําไปสู่การค้นพบราคาที่ไม่มีประสิทธิภาพทําให้ผู้ใช้กําหนดราคาที่เหมาะสมได้ยาก ซึ่งมักส่งผลให้ผู้ใช้จ่ายค่าธรรมเนียมการทําธุรกรรมมากเกินไป
ความไม่เสถียรในบล็อคเชนที่ไม่มีรางวัลบล็อก: เมื่อรางวัลบล็อกจากการขุดถูกลบออกและใช้รูปแบบค่าธรรมเนียมล้วนๆ อาจนําไปสู่ความไม่เสถียร เช่น การสร้าง "บล็อกลุง" ที่ขโมยค่าธรรมเนียมการทําธุรกรรม
ด้วยการแนะนําและการใช้งาน EIP-1559 แบบจําลองก๊าซได้รับการทําซ้ําที่สําคัญเป็นครั้งแรก เสนอโดย Vitalik และนักพัฒนาหลักรายอื่นเมื่อวันที่ 13 เมษายน 2019 และนํามาใช้ระหว่างการอัปเกรดในลอนดอนเมื่อวันที่ 5 สิงหาคม พ.ศ. 2021 กลไกนี้ละทิ้งรูปแบบการประมูลเพื่อสนับสนุนรูปแบบการกําหนดราคาแบบคู่ซึ่งประกอบด้วยค่าธรรมเนียมพื้นฐานและค่าธรรมเนียมลําดับความสําคัญ ค่าธรรมเนียมพื้นฐานจะถูกปรับเชิงปริมาณผ่านแบบจําลองทางคณิตศาสตร์ที่กําหนดไว้ล่วงหน้าตามปริมาณการใช้ก๊าซในบล็อกหลักที่สัมพันธ์กับเป้าหมายก๊าซแบบลอยตัวและแบบเรียกซ้ํา
การคํานวณค่าธรรมเนียมพื้นฐานและผลกระทบ: หากการใช้ก๊าซในบล็อกก่อนหน้าเกินเป้าหมายก๊าซค่าธรรมเนียมพื้นฐานจะเพิ่มขึ้น หากต่ํากว่าเป้าหมายก๊าซค่าธรรมเนียมพื้นฐานจะลดลง การปรับนี้สะท้อนให้เห็นถึงการเปลี่ยนแปลงของอุปสงค์และอุปทานได้ดีและปรับปรุงความแม่นยําของการคาดการณ์ก๊าซที่เหมาะสมหลีกเลี่ยงราคาก๊าซที่สูงเกินไปเนื่องจากการทํางานผิดพลาดเนื่องจากการคํานวณค่าธรรมเนียมพื้นฐานถูกกําหนดโดยระบบมากกว่าที่ผู้ใช้ระบุ รหัสเฉพาะสําหรับการคํานวณมีดังนี้:
จากเนื้อหา เราสามารถอนุมานได้ว่าเมื่อ parent_gas_used มากกว่า parent_gas_target ค่าธรรมเนียมพื้นฐานของบล็อกปัจจุบันจะเพิ่มขึ้นเมื่อเทียบกับค่าธรรมเนียมพื้นฐานของบล็อกก่อนหน้าด้วยค่าออฟเซ็ต ออฟเซ็ตนี้ถูกกําหนดโดยการคูณ parent_base_fee ด้วยการเบี่ยงเบนของการใช้ก๊าซทั้งหมดจากเป้าหมายก๊าซในบล็อกก่อนหน้าจากนั้นนําส่วนที่เหลือของเป้าหมายก๊าซและค่าคงที่และค่าสูงสุดระหว่างส่วนที่เหลือนี้กับ 1 ในทางกลับกันตรรกะจะใช้ในทํานองเดียวกันเมื่อ parent_gas_used น้อยกว่า parent_gas_target
นอกจากนี้ ค่าธรรมเนียมพื้นฐานจะไม่ถูกแจกจ่ายเป็นรางวัลให้กับนักขุดอีกต่อไป แต่จะถูกเผาแทน สิ่งนี้ทําให้แบบจําลองทางเศรษฐกิจของ ETH เกิดภาวะเงินฝืด ช่วยรักษาเสถียรภาพของมูลค่า ในทางกลับกัน ค่าธรรมเนียมลําดับความสําคัญ ซึ่งคล้ายกับทิปจากผู้ใช้ถึงนักขุด สามารถกําหนดราคาได้อย่างอิสระ ซึ่งช่วยให้สามารถนํากลับมาใช้ใหม่ได้ในระดับหนึ่งในอัลกอริธึมการเรียงลําดับของนักขุด
ภายในปี 2021 การพัฒนา Rollup ได้เข้าสู่ขั้นตอนที่เป็นผู้ใหญ่ เราทราบดีว่าทั้ง OP Rollup และ ZK Rollup เกี่ยวข้องกับการบีบอัดข้อมูล L2 และอัปโหลดข้อมูลหลักฐานบางอย่างผ่าน calldata ไปยังห่วงโซ่สําหรับความพร้อมใช้งานของข้อมูลหรือการตรวจสอบบนเครือข่ายโดยตรง สิ่งนี้นําไปสู่ต้นทุนก๊าซที่สําคัญในการรักษาขั้นสุดท้ายของ L2 ซึ่งผู้ใช้เป็นผู้รับผิดชอบในท้ายที่สุดส่งผลให้ต้นทุนสูงกว่าที่คาดไว้สําหรับโปรโตคอล L2 ส่วนใหญ่
ในขณะเดียวกัน Ethereum ก็เผชิญกับความท้าทายของการแข่งขันบล็อกสเปซ แต่ละบล็อกมีขีดจํากัดก๊าซ ซึ่งหมายความว่าปริมาณการใช้ก๊าซทั้งหมดของธุรกรรมทั้งหมดในบล็อกต้องไม่เกินขีดจํากัดนี้ ด้วยขีดจํากัดก๊าซปัจจุบันที่ตั้งไว้ที่ 30,000,000 ในทางทฤษฎี มีขีดจํากัดที่ 1,875,000 ไบต์ (30,000,000 / 16) ต่อบล็อก โดยที่จําเป็นต้องใช้ก๊าซ 16 หน่วยสําหรับแต่ละไบต์ข้อมูลการโทรที่ประมวลผลโดย EVM ส่งผลให้มีความจุข้อมูลสูงสุดประมาณ 1.79 MB ต่อบล็อก ข้อมูลที่เกี่ยวข้องกับ Rollup ที่สร้างโดยซีเควนเซอร์ L2 มักมีขนาดใหญ่ ทําให้เกิดการแข่งขันกับธุรกรรมของผู้ใช้ mainnet รายอื่น และลดจํานวนธุรกรรมที่สามารถรวมอยู่ในบล็อกเดียว ซึ่งจะส่งผลต่อ TPS ของ mainnet
เพื่อแก้ไขปัญหานี้ นักพัฒนาหลักได้เสนอ EIP-4844 เมื่อวันที่ 5 กุมภาพันธ์ พ.ศ. 2022 ซึ่งดําเนินการหลังจากการอัปเกรด Dencun ในต้นไตรมาสที่ 2 ปี พ.ศ. 2024 ข้อเสนอนี้แนะนําประเภทธุรกรรมใหม่ที่เรียกว่า Blob Transaction ซึ่งแตกต่างจากธุรกรรมแบบดั้งเดิม Blob Transaction มีประเภทข้อมูลใหม่ Blob data ซึ่งแตกต่างจาก calldata ตรงที่ EVM ไม่สามารถเข้าถึงได้โดยตรง แต่ผ่านแฮชหรือที่เรียกว่า VersionedHash เท่านั้น นอกจากนี้ Blob Transactions ยังมีวงจร GC ที่สั้นกว่าเมื่อเทียบกับธุรกรรมปกติ เพื่อป้องกันไม่ให้ข้อมูลบล็อกป่องเกินไป ข้อมูล Blob ยังมาพร้อมกับกลไกก๊าซโดยธรรมชาติ คล้ายกับ EIP-1559 แต่ใช้ฟังก์ชันเลขชี้กําลังตามธรรมชาติในแบบจําลองทางคณิตศาสตร์ ซึ่งให้ความเสถียรที่ดีขึ้นในการจัดการความผันผวนของขนาดธุรกรรม ความชันของฟังก์ชันเลขชี้กําลังตามธรรมชาติยังเป็นฟังก์ชันเลขชี้กําลังตามธรรมชาติซึ่งหมายความว่าโดยไม่คํานึงถึงสถานะปัจจุบันของขนาดธุรกรรมเครือข่ายค่าธรรมเนียมพื้นฐานของก๊าซหยดจะตอบสนองอย่างเต็มที่มากขึ้นต่อการเพิ่มขึ้นของธุรกรรมอย่างรวดเร็วควบคุมกิจกรรมการทําธุรกรรมได้อย่างมีประสิทธิภาพ คุณสมบัติที่สําคัญอีกประการหนึ่งคือค่าฟังก์ชันคือ 1 เมื่อแกนนอนเป็น 0
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 เป็นค่าคงที่ ในขณะที่ excess_blob_gas ถูกกําหนดโดยความแตกต่างระหว่างปริมาณการใช้ก๊าซหยดทั้งหมดในบล็อกหลักและ TARGET_BLOB_GAS_PER_BLOCK คงที่ เมื่อปริมาณการใช้ก๊าซหยดทั้งหมดเกินค่าเป้าหมายทําให้ความแตกต่างเป็นบวก e**(excess_blob_gas / BLOB_BASE_FEE_UPDATE_FRACTION) มากกว่า 1 ทําให้ base_fee_per_blob_gas เพิ่มขึ้นและในทางกลับกัน
กลไกนี้ช่วยให้สามารถดําเนินการตามสถานการณ์ที่มีต้นทุนต่ําซึ่งใช้ความสามารถฉันทามติของ Ethereum เพื่อรับรองปริมาณข้อมูลขนาดใหญ่เพื่อให้แน่ใจว่ามีความพร้อมใช้งานโดยไม่ต้องใช้ความสามารถในการบรรจุธุรกรรม ตัวอย่างเช่น ซีเควนเซอร์แบบสะสมสามารถใช้ธุรกรรม Blob เพื่อห่อหุ้มข้อมูล L2 ที่สําคัญลงในข้อมูล Blob และบรรลุการตรวจสอบแบบ on-chain ผ่าน VersionedHash ภายใน EVM
ควรสังเกตว่าการตั้งค่าปัจจุบันสําหรับ TARGET_BLOB_GAS_PER_BLOCK และ MAX_BLOB_GAS_PER_BLOCK กําหนดข้อ จํากัด ใน mainnet โดยมีเป้าหมายเฉลี่ยในการประมวลผล 3 blobs (0.375 MB) ต่อบล็อกและสูงสุด 6 blobs (0.75 MB) ต่อบล็อก ขีดจํากัดเริ่มต้นเหล่านี้มีจุดมุ่งหมายเพื่อลดความเครียดของเครือข่ายที่เกิดจาก EIP นี้ โดยคาดว่าจะเพิ่มขีดจํากัดเหล่านี้ในการอัปเกรดในอนาคต เนื่องจากเครือข่ายแสดงให้เห็นถึงความน่าเชื่อถือภายใต้ขนาดบล็อกที่ใหญ่ขึ้น
หลังจากทําความเข้าใจโมเดล Ethereum Gas ปัจจุบันแล้ว เรามาเจาะลึกเป้าหมายและรายละเอียดการดําเนินการของข้อเสนอ EIP-7706 ข้อเสนอนี้นําเสนอโดย Vitalik เมื่อวันที่ 13 พฤษภาคม 2024 มีจุดมุ่งหมายเพื่อกําหนดแบบจําลอง Gas ใหม่สําหรับฟิลด์ข้อมูลเฉพาะที่เรียกว่า calldata เหมือนกับการเปลี่ยนแปลงก่อนหน้านี้สําหรับข้อมูล Blob นอกจากนี้ ข้อเสนอยังปรับตรรกะโค้ดที่เกี่ยวข้องให้เหมาะสม
แนวคิดพื้นฐาน
ตรรกะการคํานวณค่าธรรมเนียมพื้นฐานสําหรับ calldata ใน EIP-7706 สะท้อนการคํานวณค่าธรรมเนียมพื้นฐานสําหรับข้อมูล blob ตามที่ระบุไว้ใน EIP-4844 ทั้งสองใช้ฟังก์ชันเลขชี้กําลังเพื่อปรับค่าธรรมเนียมพื้นฐานตามความเบี่ยงเบนระหว่างปริมาณการใช้ก๊าซจริงและค่าเป้าหมายในบล็อกหลัก
แง่มุมที่น่าสังเกตของข้อเสนอนี้คือการแนะนําการออกแบบพารามิเตอร์ใหม่ LIMIT_TARGET_RATIOS = [2, 2, 4] นี่คือรายละเอียด:
LIMIT_TARGET_RATIOS[0]: อัตราส่วนเป้าหมายสําหรับก๊าซการดําเนินการ
LIMIT_TARGET_RATIOS[1]: อัตราส่วนเป้าหมายสําหรับก๊าซข้อมูล Blob
LIMIT_TARGET_RATIOS[2]: อัตราส่วนเป้าหมายสําหรับก๊าซคอลดาต้า
อัตราส่วนเหล่านี้ใช้ในการคํานวณค่าเป้าหมายก๊าซสําหรับก๊าซสามประเภทในบล็อกหลักโดยการหารขีดจํากัดก๊าซด้วยอัตราส่วนที่เกี่ยวข้อง
ขีด จํากัด ก๊าซถูกกําหนดดังนี้:
gas_limits[0]
ทําตามสูตรการปรับที่มีอยู่
gas_limits[1]
เท่ากับ MAX_BLOB_GAS_PER_BLOCK
.
gas_limits[2]
เท่ากับ gas_limits[0] / CALLDATA_GAS_LIMIT_RATIO
.
กําหนดกระแส gas_limits[0]
คือ 30,000,000 และ CALLDATA_GAS_LIMIT_RATIO
ตั้งค่าไว้ล่วงหน้าเป็น 4 ซึ่งหมายความว่าเป้าหมายก๊าซปัจจุบัน calldata
อยู่ที่ประมาณ
[ \frac{30,000,000}{4 \คูณ 4} = 1,875,000 ]
ตามตรรกะการคํานวณก๊าซในปัจจุบัน calldata
:
แต่ละไบต์ที่ไม่ใช่ศูนย์ใช้ 16 ก๊าซ
แต่ละศูนย์ไบต์ใช้ 4 ก๊าซ
สมมติว่ามีการกระจายที่สม่ําเสมอของไบต์ที่ไม่ใช่ศูนย์และศูนย์ในส่วนของ calldata
ปริมาณการใช้ก๊าซเฉลี่ยต่อไบต์คือ 10 ก๊าซ ดังนั้นเป้าหมายก๊าซในปัจจุบัน calldata
จึงสอดคล้องกับประมาณ 187,500 ไบต์ calldata
ของ ซึ่งเป็นประมาณสองเท่าของการใช้งานเฉลี่ยในปัจจุบัน
ประโยชน์ของข้อเสนอ
การปรับนี้ช่วยลดโอกาสในการ calldata
ถึงขีด จํากัด ก๊าซอย่างมีนัยสําคัญรักษา calldata
การใช้งานในระดับที่สอดคล้องกันผ่านการสร้างแบบจําลองทางเศรษฐกิจและป้องกันการละเมิด จุดประสงค์หลักของการออกแบบนี้คือเพื่ออํานวยความสะดวกในการเติบโตของโซลูชันเลเยอร์ 2 ลดต้นทุนซีเควนเซอร์เมื่อใช้ควบคู่ไปกับข้อมูลหยด
โดยสรุป EIP-7706 ไม่เพียงแต่ปรับแต่งโมเดล Gas เท่านั้น calldata
แต่ยังวางตําแหน่งเชิงกลยุทธ์ Ethereum สําหรับการปรับขนาดโซลูชันเลเยอร์ 2 อย่างมีประสิทธิภาพโดยการควบคุมและเพิ่มประสิทธิภาพการใช้ก๊าซที่เกี่ยวข้องกับข้อมูล