ข้ามไปยังเนื้อหา

ขีดจำกัด Gas ของบล็อก

คู่มือที่คำนึงถึง fork สำหรับขีดจำกัด Gas ของบล็อก Ethereum, เป้าหมาย EIP-1559, เพดาน Gas ต่อธุรกรรม, Gas ที่ใช้จริง, การคิดค่าธรรมเนียม, การประมาณ throughput และผลกระทบต่อทรัพยากรของโหนด

อัปเดต

จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน การลงทุนอาจทำให้สูญเสียเงินลงทุนได้

คำตอบโดยตรง

ขีดจำกัด Gas ของบล็อกคือเพดาน Gas สำหรับการประมวลผลที่บันทึกในส่วนหัวบล็อก Ethereum ธุรกรรมที่บรรจุในบล็อกต้องเป็นไปตามกฎบัญชีของโปรโตคอล เพื่อให้ gasUsed รวมไม่เกิน gasLimit Gas เป็นหน่วยวัดเชิงนามธรรมซึ่งกฎของ opcode, calldata, หน่วยความจำ, storage และ refund เปลี่ยนไปตาม fork ไม่ใช่จำนวนคำสั่ง CPU, ไบต์ หรือธุรกรรมโดยตรง

หลัง Fusaka ค่าพื้นฐานที่ไคลเอนต์ mainnet Ethereum ประสานกันคือ 60,000,000 gas ต่อบล็อก แต่ส่วนหัวจริงยังเป็นหลักฐานที่ชี้ขาด และความต้องการของ validator สามารถขยับขีดจำกัดทีละน้อยภายใต้กฎปัจจุบันที่อิงบล็อก parent เมื่อ EIP-1559 มีตัวคูณความยืดหยุ่น 2 เป้าหมายระยะยาวจึงเป็น 30,000,000 gas บล็อกอาจใช้ได้ถึงเพดานชั่วคราว และ base fee ถัดไปจะสูงขึ้นเมื่อการใช้ของ parent เกินเป้าหมาย EIP-7825 แยกกำหนดเพดาน Gas ที่ธุรกรรมผู้ใช้ประกาศไว้ที่ 2^24 = 16,777,216 gas ส่วน EIP-7934 กำหนดขีดจำกัดบล็อกประมวลผล RLP อิสระที่ 8,388,608 bytes ค่าเหล่านี้เฉพาะ mainnet และเวลาที่สังเกต ไม่ใช่ค่าคงที่สากลของ EVM

วิธีการทำงาน

  1. ระบุเชน เครือข่าย แฮชและหมายเลขบล็อก fork ที่ใช้งาน ไคลเอนต์หรือ RPC และเวลาที่สังเกต อ่าน gasLimit, gasUsed และ baseFeePerGas จากส่วนหัวบล็อก อย่าใช้ตารางพารามิเตอร์คงที่จากเว็บไซต์แทน
  2. แยกขีดจำกัด Gas ของบล็อก เป้าหมาย Gas ของ EIP-1559 ขีดจำกัด Gas ที่ธุรกรรมประกาศ Gas ที่ธุรกรรมใช้จริง และราคาต่อ Gas รวมทั้งแยก Gas ประมวลผลออกจาก blob gas, จำนวนไบต์ของบล็อกประมวลผล RLP และหน่วยวัดเฉพาะ L2
  3. ทำซ้ำการตรวจความถูกต้องและการประมวลผลธุรกรรมตามตาราง Gas ของ fork ที่ใช้งาน โดยรวม intrinsic gas, calldata, access list, การขยายหน่วยความจำ, การเข้าถึงแบบ cold และ warm, การเขียน storage, precompile และ refund ค่าประมาณขึ้นอยู่กับ state และ block tag ไม่ใช่การรับประกัน
  4. กระทบยอดความจุบล็อก รวม Gas ที่ใช้จาก receipt หรือใช้ค่าสะสมของ receipt สุดท้าย ยืนยัน gasUsed <= gasLimit และคำนึงถึงลำดับธุรกรรมกับต้นทุนที่ขึ้นกับ state จำนวนธุรกรรมไม่เท่ากับขีดจำกัด Gas หรือ TPS คงที่
  5. ใช้ EIP-1559 ให้ถูกต้อง เมื่อความยืดหยุ่นเป็น 2 เป้าหมายคือ gasLimit / 2 การใช้ของ parent สูงกว่าเป้าหมายทำให้ base fee ถัดไปเพิ่มขึ้น และต่ำกว่าเป้าหมายทำให้ลดลง ภายใต้กฎปัจจุบัน ขีดจำกัดของบล็อก child ยังต้องอยู่ในช่วงเข้มงวดประมาณ 1/1024 เทียบกับ parent base fee ใช้กำหนดราคาความต้องการ ส่วนขีดจำกัดใช้จำกัดงานประมวลผลที่ยอมรับได้
  6. ตรวจขอบเขตการปฏิบัติงาน ธุรกรรมที่เกินเพดานต่อธุรกรรมซึ่งใช้งานอยู่จะไม่ถูกต้อง แม้บล็อกยังมีพื้นที่ Gas และบล็อกประมวลผล RLP ที่ใหญ่เกินไปก็ไม่ถูกต้อง แม้ Gas รวมยังต่ำกว่าเพดาน ส่วน Gas ที่ธุรกรรมจัดสรรแต่ไม่ได้ใช้จะถูกปล่อยคืน ขณะที่ refund counter เป็นการลดอีกประเภทหนึ่งซึ่ง fork จำกัดไว้ REVERT รักษา Gas ที่เหลือ แต่การหมด Gas ระดับบนสุดจะย้อน state และใช้โควตาการประมวลผลที่จัดให้ทั้งหมด
  7. ทดสอบภาระและติดตามเวลาประมวลผลบล็อกเต็ม การเติบโตของ state การเผยแพร่บล็อก slot ที่พลาด พฤติกรรมรีออร์แกไนซ์ ความสามารถของ builder และ validator ความหลากหลายของไคลเอนต์ และการเปลี่ยนพารามิเตอร์ เปรียบเทียบบล็อกจริงกับเมตริกโหนดก่อนถือว่าขีดจำกัดที่สูงขึ้นคือ throughput ที่ยั่งยืน

ตัวอย่างคำนวณ

  • เพดานการโอนอย่างง่าย ที่ 60,000,000 gas ในทางทฤษฎีบล็อกหนึ่งบรรจุการโอน ETH ปกติได้ floor(60,000,000 / 21,000) = 2,857 รายการ เป้าหมาย 30,000,000 gas บรรจุได้ 1,428 รายการ และใน slot สมมติ 12-second จะเท่ากับ 1,428 / 12 = 119 transactions/second นี่เป็นตัวอย่างขอบเขตบนแบบธุรกรรมชนิดเดียว ไม่ใช่ TPS ที่สังเกตจริง
  • บล็อกเป้าหมายแบบผสม สมมติว่าบล็อกเป้าหมายมีการโอน 400 * 21,000 = 8,400,000 gas การ swap 80 * 180,000 = 14,400,000 gas และการ deploy 6 * 1,200,000 = 7,200,000 gas การใช้รวมคือ 30,000,000 gas ใน 486 transactions หรือ 486 / 12 = 40.5 transactions/second ภายใต้สมมติฐาน slot ที่ระบุ เป้าหมาย Gas เดียวกันรองรับจำนวนธุรกรรมที่แตกต่างกันมาก
  • ขีดจำกัดธุรกรรมเทียบกับค่าที่เรียกเก็บจริง ธุรกรรมประกาศ 200,000 gas แต่สำเร็จด้วย gasUsed = 146,000 ที่ราคาจริง 22 gwei ค่าธรรมเนียมคือ 146,000 * 22 = 3,212,000 gwei = 0.003212 ETH และไม่เรียกเก็บ 54,000 gas ที่ไม่ได้ใช้ ในทางกลับกัน การประกาศ 18,000,000 gas เกินเพดานโปรโตคอลปัจจุบัน 16,777,216 gas จึงไม่ถูกต้อง ไม่ว่าบล็อกจะเหลือพื้นที่เท่าใด
  • การตอบสนองของ base fee เมื่อ gasLimit = 60,000,000 เป้าหมายคือ 30,000,000 เริ่มจาก 24 gwei บล็อก parent ที่เต็ม 60,000,000 gas ทำให้ base fee ถัดไปเพิ่มสูงสุด 12.5% เป็น 27 gwei ส่วน parent ว่างทำให้ลด 12.5% เป็น 21 gwei เหตุการณ์นี้ไม่เปลี่ยนขีดจำกัดบล็อกหรือรับประกันการใช้บล็อกถัดไป

ความเสี่ยง

  • ใช้ค่าขีดจำกัด Gas ของ mainnet ที่ล้าสมัย
  • นำพารามิเตอร์ Ethereum ไปใช้กับเชน EVM หรือ L2 อื่น
  • สับสนระหว่างขีดจำกัดบล็อกกับเป้าหมาย EIP-1559
  • สับสนระหว่างขีดจำกัดบล็อกกับเพดานต่อธุรกรรม
  • สับสนระหว่าง Gas ที่ธุรกรรมประกาศกับ Gas ที่ใช้จริง
  • ถือว่า Gas เป็นหน่วย CPU ไบต์ หรือธุรกรรมที่คงที่
  • ใช้ตาราง opcode, calldata หรือ refund ที่ล้าสมัย หรือมองข้ามขีดจำกัดขนาดบล็อก RLP อิสระ
  • พึ่ง eth_estimateGas โดยไม่ระบุ state และ block tag ที่ต้องการ
  • มองข้ามการประมวลผลที่ขึ้นกับ state และลำดับธุรกรรม
  • สับสนระหว่างโควตาธุรกรรมที่ไม่ได้ใช้กับ refund counter ที่แยกต่างหาก
  • มองข้าม Gas ที่ถูกเรียกเก็บเมื่อการประมวลผลหมด Gas หรือ revert
  • ถือว่า Gas ประมวลผลกับ blob gas เป็นทรัพยากรเดียวกัน
  • คำนวณ TPS จากการโอนชนิดเดียวเท่านั้น
  • มองข้าม slot ที่พลาด รีออร์แกไนซ์ และความล่าช้าของ finality
  • เพิ่มเวลาประมวลผลและเผยแพร่บล็อกในกรณีเลวร้ายที่สุด
  • เร่งการเติบโตของ state และข้อกำหนด archive
  • เพิ่มข้อกำหนดฮาร์ดแวร์ของ validator, builder และ RPC
  • เพิ่มความเสี่ยงการรวมศูนย์หรือความเห็นต่างของไคลเอนต์
  • พลาดการเปลี่ยนความต้องการของ validator ค่าเริ่มต้นไคลเอนต์ หรือ fork
  • ถือว่าความจุสูงขึ้นรับประกันค่าธรรมเนียมต่ำลงหรือความต้องการ

ความเข้าใจผิดที่พบบ่อย

  • ขีดจำกัด Gas ของบล็อกเป็นค่าคงที่สากลของ Ethereum หรือ EVM
  • ขีดจำกัด 60,000,000 gas หมายความว่าทุกบล็อกควรใช้ 60 ล้าน Gas หรือเป้าหมาย EIP-1559 ก็เท่ากับ 60 ล้าน
  • การหารขีดจำกัดบล็อกด้วย 21,000 ให้ค่า TPS จริงของเชน
  • ธุรกรรมหนึ่งใช้พื้นที่ทั้งบล็อกได้หากบล็อกมีพื้นที่พอ ทั้งที่เพดานต่อธุรกรรมปัจจุบันเป็นอิสระ
  • การเพิ่มขีดจำกัด Gas ทำให้ค่าธรรมเนียมลดลงโดยอัตโนมัติ โดยไม่มีผลแลกเปลี่ยนด้านโหนด state การเผยแพร่ ความต้องการ หรือการรวมศูนย์

หัวข้อที่เกี่ยวข้อง

แหล่งข้อมูล

การนำทาง

ค้นหาในวิกิ...