Cara Mengira Yuran Gas Ethereum: Base Fee, Priority Fee dan Had Gas
Ketahui maksud unit gas, had gas, base fee, priority fee dan yuran maksimum di Ethereum, kemudian kira kos sebenar transaksi.
Dalam panduan iniGas mengukur pengiraan, bukan jumlah yang anda hantar
Ringkasan ringkas
Yuran gas Ethereum dikira dengan mendarab jumlah gas yang benar-benar digunakan oleh transaksi dengan harga gas berkesan dalam blok yang memasukkannya. Protokol menetapkan dan membakar base fee; priority fee boleh diberikan kepada validator. Yuran maksimum ialah had atas, bukannya semestinya harga yang anda bayar.
Gas mengukur pengiraan, bukan jumlah yang anda hantar
Di Ethereum, gas ialah unit untuk mengira kerja pengiraan yang diperlukan oleh EVM bagi memproses transaksi. Pemindahan ETH yang mudah memerlukan kerja yang agak sedikit; pemindahan token atau pelaksanaan beberapa syarat kontrak pintar boleh memerlukan lebih banyak kerja. Oleh itu, dua transaksi yang menghantar jumlah ETH yang sama boleh menggunakan jumlah gas yang berbeza jika kerja yang dilakukan berbeza.
Unit gas menggambarkan jumlah kerja. Harga gas menunjukkan jumlah ETH yang anda tawarkan bagi setiap unit. Hasil darab kedua-duanya ialah yuran. Had gas ialah jumlah maksimum unit yang boleh digunakan oleh transaksi, manakala maxFeePerGas ialah had harga bagi setiap unit. Medan ini bukan versi yang boleh saling menggantikan bagi satu “yuran maksimum”.
Panduan ini menerangkan transaksi EIP-1559 standard di Ethereum mainnet. Rangkaian blok lain dan rangkaian layer 2 mungkin menggunakan struktur yuran, aset pembayaran dan label yang berbeza. Jangan terus menggunakan istilah Ethereum pada semua rangkaian. Panduan gas Ethereum.org dan panduan transaksinya menerangkan takrif medan tersebut.
Penggunaan gas bergantung pada kerja yang dilakukan oleh transaksi
EVM menetapkan kos gas untuk pengiraan dan perubahan keadaan. Panggilan kontrak boleh melibatkan pelaksanaan fungsi, pembacaan atau penulisan storan, serta rekod peristiwa yang tidak diperlukan oleh pemindahan mudah. Lebih banyak operasi atau laluan pelaksanaan yang lebih panjang boleh menggunakan lebih banyak gas. Gas yang digunakan tidak dikira dengan mendarab jumlah ETH yang dihantar atau harga pasaran token.
Pemindahan ETH, pemindahan token dan panggilan dapp menjalankan operasi yang berbeza. Panggilan kontrak boleh menjalankan fungsi tambahan serta membaca atau mengemas kini storan, jadi penggunaan gasnya boleh melebihi pemindahan mudah. Bagi transaksi yang dimasukkan ke dalam blok, resit transaksi melaporkan jumlah gas yang benar-benar digunakan.
Ethereum.org menggunakan 21,000 gas sebagai contoh pemindahan ETH standard. Angka itu rujukan untuk pemindahan mudah, bukan had gas yang boleh digunakan semula bagi panggilan kontrak, kerana kerja panggilan bergantung pada fungsi dan akses storan yang dilaksanakan.
Gas rangkaian juga berbeza daripada yuran pengeluaran sesuatu perkhidmatan. Exchange mungkin menambah caj operasi atau menggunakan jadual yurannya sendiri. Gas on-chain membayar kerja pengiraan yang diproses oleh rangkaian. Jika skrin pengeluaran hanya menunjukkan satu jumlah, semak sama ada jumlah itu menggabungkan yuran platform dengan kos rangkaian.
Had gas dan gas yang digunakan ialah dua angka berbeza
Had gas (gasLimit) ialah jumlah maksimum unit gas yang dibenarkan untuk digunakan oleh transaksi. Gas yang digunakan (gasUsed) ialah jumlah yang benar-benar digunakan apabila pelaksanaan selesai. Menetapkan had yang lebih tinggi tidak bermakna setiap unit dalam had itu akan dicaj secara automatik. Bagi transaksi yang dimasukkan ke dalam blok, yuran dikira berdasarkan gas yang benar-benar digunakan dan harga gas berkesan; unit had yang tidak digunakan tidak digunakan.
Jika transaksi itu sendiri kehabisan gas semasa pelaksanaan, keseluruhan had gas akan digunakan dan transaksi itu gagal. Perubahan keadaan dibatalkan, tetapi pengiraan itu tetap dikenakan bayaran. Had lebih tinggi membolehkan lebih banyak kerja, namun meningkatkan pendedahan kos gas maksimum: gasLimit × maxFeePerGas. Caj sebenar tetap bergantung pada gas yang digunakan dan harga berkesan.
Had gas ialah siling, bukan ramalan penggunaan sebenar. Had bukan harga seunit, dan menaikkan harga tidak menyelesaikan kekurangan jumlah unit gas. Jika anda tidak memahami perkara yang akan dilaksanakan oleh sesuatu panggilan, semak panduan rasmi wallet atau aplikasi terlebih dahulu, bukannya mengubah had secara sewenang-wenangnya.
Base fee berubah mengikut permintaan terhadap ruang blok
Bagi transaksi EIP-1559, base fee ialah harga bagi setiap gas yang ditetapkan oleh protokol untuk sesuatu blok. Yuran maksimum transaksi mesti cukup untuk menampung base fee bagi blok yang memasukkannya. Protokol melaraskan base fee dari satu blok ke blok seterusnya berdasarkan jumlah gas yang digunakan oleh blok sebelumnya berbanding sasarannya. Base fee boleh naik atau turun; ia bukan kadar tetap selama-lamanya.
Bahagian base fee bagi gas yang benar-benar digunakan akan dibakar; validator tidak menerimanya sebagai tip. Oleh sebab base fee berubah dari blok ke blok, transaksi tertangguh mungkin menghadapi base fee yang berbeza ketika dimasukkan berbanding ketika dihantar.
Gwei ialah denominasi kecil ETH: 1 gwei bersamaan 0.000000001 ETH. Harga gas yang lebih tinggi menaikkan kos dalam ETH walaupun jumlah gas yang digunakan kekal sama. Lebih banyak gas yang digunakan juga menaikkan kos walaupun harga seunit tidak berubah. Kedua-duanya boleh mengubah yuran dalam denominasi ETH, berasingan daripada harga dolar ETH.
Priority fee ialah tip yang boleh menggalakkan transaksi dimasukkan
Priority fee ialah tip bagi setiap gas yang ditawarkan kepada validator yang memasukkan transaksi. Pengguna bersaing untuk ruang blok yang terhad, jadi tip yang lebih tinggi boleh menjadikan transaksi lebih menarik apabila keadaan lain serupa. Tip menandakan tahap segera, tetapi tidak menjamin transaksi dimasukkan ke blok tertentu atau dalam tempoh tertentu.
Priority fee yang kelihatan tinggi ialah perkara yang berbeza daripada jumlah unit gas yang diperlukan oleh transaksi. Priority fee mengubah harga seunit; had gas mengehadkan kerja yang dibenarkan. Panggilan kontrak yang rumit masih boleh gagal jika gas tidak mencukupi, walaupun tipnya tinggi. Sebaliknya, unit gas yang mencukupi tidak membantu jika had harga tidak dapat menampung base fee blok.
Validator turut mempertimbangkan ruang blok dan syarat transaksi lain semasa memilih transaksi. Spesifikasi EIP-1559 memberikan peranan berasingan kepada base fee dan priority fee serta mengehadkan harga berkesan gabungannya supaya tidak melebihi yuran maksimum.
Yuran maksimum ialah had harga, bukan harga sebenar
maxFeePerGas ialah harga tertinggi seunit yang sanggup anda tanggung. maxPriorityFeePerGas ialah had tertinggi tip seunit yang anda tawarkan. Apabila transaksi dimasukkan, harga berkesannya ialah base fee ditambah tip yang muat di bawah kedua-dua had. Tip yang dikenakan dihadkan kepada nilai yang lebih rendah antara maxPriorityFeePerGas dengan maxFeePerGas - baseFee, jadi harga berkesan tidak boleh melebihi yuran maksimum.
Sebagai contoh, andaikan yuran maksimum ialah 30 gwei, tip maksimum 2 gwei dan base fee blok 18 gwei. Tip yang boleh dikenakan ialah 2 gwei, menjadikan harga berkesan 20 gwei. Transaksi tidak membayar 30 gwei secara automatik hanya kerana itulah had maksimum. Jika base fee meningkat kepada 31 gwei, had 30 gwei tidak dapat menampung blok tersebut, maka transaksi tidak boleh dimasukkan ke dalamnya.
Apabila base fee menghampiri yuran maksimum, ruang untuk tip semakin kecil. Walaupun had tip ditetapkan pada 5 gwei, jika maxFeePerGas - baseFee hanya 1 gwei, tip yang dikenakan paling banyak 1 gwei. Baca kedua-dua had bersama base fee semasa.

Kira kos sebenar dan hadnya menggunakan contoh angka
Angka berikut ialah andaian untuk menunjukkan pengiraan sahaja. Andaikan transaksi mempunyai had gas 30,000 unit, menggunakan 24,000 unit dan dimasukkan ke blok dengan base fee 18 gwei. Tetapkan tip maksimum kepada 2 gwei dan yuran maksimum kepada 30 gwei. Tip yang dikenakan ialah min(2, 30 - 18) = 2 gwei, jadi harga berkesan ialah 18 + 2 = 20 gwei.
Yuran gas sebenar ialah 24,000 × 20 = 480,000 gwei. Oleh sebab 1 ETH bersamaan 1,000,000,000 gwei, jumlahnya ialah 0.00048 ETH. Bahagian base fee ialah 24,000 × 18 = 432,000 gwei, atau 0.000432 ETH. Bahagian tip ialah 24,000 × 2 = 48,000 gwei, atau 0.000048 ETH. Jumlah kedua-dua bahagian itu sama dengan yuran sebenar 0.00048 ETH.
Mendarab keseluruhan had gas dengan had harga memberikan 30,000 × 30 = 900,000 gwei, atau 0.0009 ETH. Itulah had atas kos gas dengan tetapan tersebut jika seluruh had dan harga maksimum seunit digunakan. Nilai itu bukan yuran sebenar dalam contoh ini. Jumlah ETH yang dihantar kepada penerima adalah berasingan daripada yuran gas. Jangan anggap had itu sebagai caj tetap atau yuran sebagai peratusan pemindahan. Angka ini hanya ilustrasi, bukan sebut harga langsung.
Transaksi yang gagal masih boleh menggunakan gas
Jangan anggap yuran gas akan dipulangkan hanya kerana wallet memaparkan mesej “gagal”. Jika transaksi dimasukkan ke dalam blok dan pelaksanaan EVM kemudian dibatalkan, perubahan keadaan dikembalikan, tetapi gas yang digunakan untuk pengiraan tetap dikenakan bayaran. Jika transaksi itu sendiri kehabisan gas semasa pelaksanaan, keseluruhan had gas akan digunakan. Pengiraan tetap berlaku walaupun hasil yang dimaksudkan tidak tercapai.
Transaksi yang gagal pengesahan sebelum dimasukkan ke blok berbeza. Contohnya, pemindahan ETH yang dihantar dengan gas kurang daripada jumlah yang diperlukan boleh ditolak sebelum masuk ke blok; dalam keadaan itu, gas pelaksanaan tidak digunakan. “Ditolak sebelum dimasukkan” dan “dimasukkan, kemudian dibatalkan semasa pelaksanaan” bukan keadaan yang sama.
Semak hash transaksi untuk melihat status, gas yang digunakan, harga gas berkesan dan hasil pelaksanaan. Mesej ralat ringkas wallet mungkin tidak menerangkan puncanya. Ethereum.org membezakan penolakan pengesahan sebelum kemasukan daripada transaksi yang kehabisan gas semasa pelaksanaan.
Baca had, harga dan jumlah pemindahan secara berasingan
Sebelum menandatangani transaksi, pastikan rangkaian yang digunakan dan sama ada transaksi itu pemindahan mudah atau panggilan kontrak. Wallet mungkin memaparkan anggaran yuran, had gas, anggaran base fee, had priority fee, had yuran maksimum serta jumlah ETH atau token yang akan dihantar. Nilai tersebut menjawab soalan yang berlainan. Jika skrin hanya menunjukkan kos gas maksimum, buka butirannya untuk mengetahui had yang dimaksudkan dan jangan anggapnya sebagai potongan yang pasti.
Wallet boleh mengisi anggaran yuran, jadi selalunya anda tidak perlu melaraskan setiap medan secara manual. Anggaran ini berdasarkan keadaan rangkaian pada waktu itu dan tidak menjamin bila transaksi akan dimasukkan atau jumlah kos akhirnya. Had harga yang rendah boleh menyebabkan transaksi menunggu. Menaikkan had atau tip tanpa memahami panggilan boleh meningkatkan kemungkinan kos tanpa menyelesaikan masalah asas. Semak nilai semasa dan tandatangani hanya jika butiran transaksi jelas kepada anda.
Penjelasan ini meliputi aliran transaksi standard Ethereum mainnet. Layer 2 atau rangkaian lain mungkin memaparkan yuran data tambahan, menggunakan aset yuran berlainan atau mengira yuran dengan cara lain. Jangan gunakan formula Ethereum pada rangkaian lain tanpa menyemak dokumentasinya. Untuk rangkaian dan alamat penerima, lihat senarai semak pemindahan kripto; untuk kebenaran berasingan yang mungkin dimiliki kontrak bagi menggunakan token, lihat panduan kelulusan token.
Soalan lazim
Q1Mengapa transaksi yang gagal masih boleh mengurangkan ETH?
Jika transaksi telah dimasukkan dan pelaksanaan bermula, pengiraan boleh menggunakan gas walaupun perubahan keadaan dibatalkan. Semak hash transaksi untuk membezakan kegagalan pelaksanaan daripada penolakan sebelum kemasukan.
Q2Adakah `maxFeePerGas` harga gas sebenar yang dipaparkan wallet?
Tidak. Nilai itu ialah had harga seunit. Harga berkesan menggabungkan base fee blok yang memasukkan transaksi dengan tip yang muat di bawah had, jadi transaksi boleh membayar kurang daripada nilai maksimum.
Q3Adakah transaksi Ethereum mainnet membayar gas dengan ETH?
Transaksi standard Ethereum mainnet membayar gas dalam ether, aset asli rangkaian. Jika wallet memaparkan token lain atau penaja pihak ketiga, semak sama ada mekanisme pembayaran yuran berasingan digunakan. Rangkaian lain mungkin berbeza.
Sumber dan bacaan lanjut
Laporkan masalah
Kami akan menyediakan e-mel dengan pautan artikel ini. Mark menerima laporan hanya selepas anda menghantarnya
Semakan pantas
Sudah membaca panduan? Uji diri dengan 3 soalan
Soalan 01
Apakah maksud `gasLimit`?
Pilih jawapan untuk melihat penjelasan