Lompat ke konten

Batas gas blok

Panduan berbasis fork tentang batas gas blok Ethereum, target EIP-1559, batas gas transaksi, gas terpakai, pencatatan biaya, estimasi throughput, dan konsekuensi sumber daya node.

Diperbarui

Hanya untuk tujuan edukasi; bukan merupakan nasihat investasi atau rekomendasi investasi. Investasi dapat mengakibatkan kerugian.

Jawaban langsung

Batas gas blok adalah plafon gas eksekusi yang dicatat dalam header blok Ethereum. Transaksi yang disertakan harus mematuhi aturan pencatatan protokol agar total gasUsed tidak melebihi gasLimit. Gas merupakan unit pengukuran abstrak; aturan opcode, calldata, memori, storage, dan refund berubah menurut fork, sehingga gas bukan hitungan langsung instruksi CPU, byte, atau transaksi.

Setelah Fusaka, baseline klien yang terkoordinasi untuk mainnet Ethereum adalah 60,000,000 gas per blok. Namun, header aktual tetap menjadi acuan dan preferensi validator dapat menggeser batas secara bertahap menurut aturan relatif terhadap parent saat ini. Dengan pengali elastisitas EIP-1559 sebesar 2, target jangka panjangnya 30,000,000 gas; blok dapat memakai hingga batas untuk sementara, lalu base fee berikutnya naik ketika penggunaan parent melampaui target. EIP-7825 secara terpisah membatasi gas yang dideklarasikan transaksi pengguna pada 2^24 = 16,777,216 gas, sedangkan EIP-7934 memberlakukan batas blok eksekusi RLP independen sebesar 8,388,608 bytes. Nilai ini khusus untuk mainnet dan tanggal pengamatan, bukan konstanta universal EVM.

Cara kerja

  1. Tetapkan chain, jaringan, hash dan nomor blok, fork aktif, klien atau RPC, serta waktu pengamatan. Baca gasLimit, gasUsed, dan baseFeePerGas dari header blok; jangan menggantinya dengan tabel parameter statis dari situs web.
  2. Pisahkan batas gas blok, target gas EIP-1559, gas yang dideklarasikan transaksi, gas aktual yang dipakai, dan harga per gas. Pisahkan pula gas eksekusi dari blob gas, byte blok eksekusi RLP, dan pengukuran khusus L2.
  3. Reproduksi validitas dan eksekusi transaksi menurut jadwal gas fork aktif. Sertakan intrinsic gas, calldata, access list, ekspansi memori, akses cold dan warm, penulisan storage, precompile, serta refund. Estimasi bergantung pada state dan block tag, bukan jaminan.
  4. Cocokkan kapasitas blok. Jumlahkan penggunaan gas receipt atau pakai nilai kumulatif receipt terakhir, konfirmasi gasUsed <= gasLimit, lalu perhitungkan urutan transaksi dan biaya yang bergantung pada state. Jumlah transaksi bukan batas gas ataupun TPS tetap.
  5. Terapkan EIP-1559 dengan benar. Dengan elastisitas 2, targetnya gasLimit / 2; penggunaan parent di atas target menaikkan base fee berikutnya dan penggunaan di bawah target menurunkannya. Berdasarkan aturan saat ini, batas blok child juga harus berada dalam rentang ketat sekitar 1/1024 relatif terhadap parent. Base fee memberi harga pada permintaan, sedangkan batas membatasi pekerjaan eksekusi yang diterima.
  6. Periksa batas operasional. Transaksi yang melampaui batas aktif per transaksi tidak valid walaupun blok masih memiliki ruang gas; blok eksekusi RLP yang terlalu besar juga tidak valid meskipun total gas tetap di bawah batas. Alokasi gas transaksi yang tidak terpakai dilepas, sedangkan refund counter adalah pengurangan terpisah yang dibatasi fork. REVERT mempertahankan gas tersisa, sementara kehabisan gas tingkat teratas mengembalikan state dan menghabiskan seluruh alokasi eksekusi yang diberikan.
  7. Uji beban dan pantau waktu eksekusi blok penuh, pertumbuhan state, propagasi blok, slot terlewat, perilaku reorganisasi, kapasitas builder dan validator, keragaman klien, serta perubahan parameter. Bandingkan blok aktual dan metrik node sebelum menganggap batas yang lebih tinggi sebagai throughput berkelanjutan.

Contoh terapan

  • Plafon transfer sederhana. Pada 60,000,000 gas, secara teoretis sebuah blok dapat memuat floor(60,000,000 / 21,000) = 2,857 transfer ETH biasa. Target 30,000,000 gas memuat 1,428; dalam slot ideal 12-second, hasilnya 1,428 / 12 = 119 transactions/second. Ini ilustrasi batas atas homogen, bukan TPS yang diamati.
  • Blok target campuran. Misalkan blok target memuat transfer sebesar 400 * 21,000 = 8,400,000 gas, swap sebesar 80 * 180,000 = 14,400,000 gas, dan deployment sebesar 6 * 1,200,000 = 7,200,000 gas. Total penggunaan ialah 30,000,000 gas untuk 486 transactions, atau 486 / 12 = 40.5 transactions/second dengan asumsi slot tersebut. Target gas yang sama mendukung jumlah transaksi yang sangat berbeda.
  • Batas transaksi dibanding tagihan aktual. Transaksi mendeklarasikan 200,000 gas tetapi berhasil dengan gasUsed = 146,000. Pada harga efektif 22 gwei, biayanya 146,000 * 22 = 3,212,000 gwei = 0.003212 ETH; 54,000 gas yang tidak dipakai tidak ditagih. Sebaliknya, deklarasi 18,000,000 gas melampaui batas protokol saat ini sebesar 16,777,216 gas dan tidak valid terlepas dari ruang blok yang tersedia.
  • Respons base fee. Dengan gasLimit = 60,000,000, targetnya 30,000,000. Mulai dari 24 gwei, blok parent penuh pada 60,000,000 gas menaikkan base fee berikutnya sebesar maksimum 12.5% menjadi 27 gwei; parent kosong menurunkannya 12.5% menjadi 21 gwei. Hal ini tidak mengubah batas blok atau menjamin penggunaan blok berikutnya.

Risiko

  • Menggunakan nilai batas gas mainnet yang sudah usang.
  • Menerapkan parameter Ethereum pada chain EVM atau L2 lain.
  • Mencampuradukkan batas blok dengan target EIP-1559.
  • Mencampuradukkan batas blok dengan batas per transaksi.
  • Mencampuradukkan gas yang dideklarasikan dengan gas aktual terpakai.
  • Menganggap gas sebagai unit CPU, byte, atau transaksi yang tetap.
  • Memakai jadwal opcode, calldata, atau refund yang usang, atau mengabaikan batas ukuran blok RLP independen.
  • Mengandalkan eth_estimateGas tanpa state dan block tag yang dimaksud.
  • Mengabaikan eksekusi yang bergantung pada state dan urutan transaksi.
  • Mencampuradukkan alokasi transaksi yang tidak terpakai dengan refund counter terpisah.
  • Mengabaikan gas yang ditagih ketika eksekusi kehabisan gas atau revert.
  • Menganggap gas eksekusi dan blob gas sebagai satu sumber daya.
  • Menurunkan TPS hanya dari transfer homogen.
  • Mengabaikan slot terlewat, reorg, dan keterlambatan finalitas.
  • Meningkatkan waktu eksekusi dan propagasi blok terburuk.
  • Mempercepat pertumbuhan state dan kebutuhan arsip.
  • Meningkatkan kebutuhan perangkat keras validator, builder, dan RPC.
  • Meningkatkan risiko sentralisasi atau perbedaan klien.
  • Melewatkan perubahan preferensi validator, default klien, atau fork.
  • Menganggap kapasitas lebih tinggi menjamin biaya lebih rendah atau permintaan.

Kesalahpahaman umum

  • Batas gas blok adalah konstanta universal Ethereum atau EVM.
  • Batas 60,000,000 gas berarti setiap blok harus memakai 60 juta gas atau target EIP-1559 juga 60 juta.
  • Membagi batas blok dengan 21,000 menghasilkan TPS riil chain.
  • Transaksi boleh menghabiskan seluruh blok selama blok memiliki ruang; batas per transaksi saat ini bersifat independen.
  • Menaikkan batas gas otomatis menurunkan biaya tanpa konsekuensi bagi node, state, propagasi, permintaan, atau sentralisasi.

Topik terkait

Sumber

Navigasi

Cari di wiki...