Owlio
ID
← Blog
PanduanPemula

Transaksi Ethereum gagal: mengapa gas tetap dikenakan

Tindakan yang gagal bisa membuat token tetap utuh tetapi mengurangi ETH. Baca catatan transaksi sebelum membayar percobaan berikutnya.

Transaksi Ethereum yang gagal tetap dapat menghabiskan ETH karena eksekusi memakai komputasi berbayar, meskipun tindakan yang dimaksud dibatalkan. Jika transaksi telah dimasukkan ke blok dan status tingkat teratasnya Failed, transfer atau perubahan kontrak dari transaksi itu tidak berlaku. Biaya eksekusi tetap dikenakan.

Panduan ini mencakup transaksi Ethereum Mainnet biasa dari akun yang membayar gasnya sendiri. Akun pintar, transaksi bersponsor, penarikan dari bursa, dan transfer lintas beberapa chain dapat memiliki langkah atau biaya tambahan. Kegagalan satu langkah di aplikasi belum cukup untuk memastikan seluruh transaksi on-chain gagal.

Pastikan dahulu apa yang sebenarnya gagal

Buka transaksi dari aktivitas dompet Anda dan periksa di penjelajah Ethereum Mainnet. Catat hash transaksi lengkap, pengirim, nomor blok, dan status keseluruhan. Anda dapat memeriksa detail publik ini tanpa menandatangani apa pun.

Perbedaan ini penting karena tanda terima Ethereum merekam hasil eksekusi tingkat teratas: status 0 berarti gagal dan 1 berarti berhasil. Panggilan internal yang gagal dalam jejak eksekusi belum tentu berarti seluruh transaksi gagal. Jika status keseluruhan Success, periksa hasil tindakan yang sesungguhnya alih-alih menganggap semuanya dibatalkan.

Jika tidak ada nomor blok dan transaksi masih tertunda, gunakan daftar pemeriksaan transaksi tertunda. Pemeriksaan di bawah dimulai setelah transaksi masuk blok; menaikkan biaya transaksi yang sudah gagal tidak mengubah hasil yang tercatat.

Baca biaya terpisah dari jumlah yang hendak dikirim

Di halaman transaksi gagal, cari Transaction Fee, Gas Used, dan Gas Price efektif jika penjelajah menyediakannya. Pisahkan jumlah transfer yang dimaksud. Kolom Value dapat menjelaskan nilai yang diajukan tanpa membuktikan bahwa jumlah itu tiba di penerima.

Untuk transaksi Mainnet biasa, biaya eksekusi yang dikenakan adalah gas terpakai dikalikan harga efektif per gas. Pengaturan biaya maksimum dan batas gas merupakan batas atas, sehingga perkalian keduanya tidak membuktikan jumlah yang benar-benar Anda bayar. Dokumentasi gas Ethereum menjelaskan perbedaan ini.

Berikut perhitungan ilustratif, bukan transaksi langsung atau perkiraan biaya saat ini:

Komponen Nilai contoh
Transfer token yang dimaksud 100 token
Status keseluruhan tanda terima Failed
Gas terpakai 60,000 unit
Harga gas efektif 5 gwei per unit
Biaya eksekusi 300,000 gwei, atau 0.0003 ETH

Tanpa aktivitas lain, transfer gagal membuat saldo token pengirim tetap sama, sementara saldo ETH berkurang sebesar biaya. Contoh ini tidak menentukan batas gas yang sesuai atau memberikan harga transaksi Anda berikutnya.

Jika penurunan ETH lebih besar daripada biaya yang tercatat, periksa transaksi lain dari akun yang sama. Jangan memakai grafik portofolio dalam dolar untuk merekonstruksi tagihan: harga pasar dapat berubah pada saat yang sama. Jika jumlahnya masih berbeda antarlayar, lanjutkan dengan daftar pemeriksaan saldo portofolio.

Bedakan kehabisan gas dari pembatalan oleh kontrak

Panduan kegagalan Etherscan membedakan eksekusi yang kehabisan gas dari kontrak yang melakukan revert. Keduanya bisa menghasilkan transaksi gagal, tetapi membutuhkan penyelidikan berbeda.

Kehabisan gas saat eksekusi: komputasi menghabiskan gas yang tersedia. Perubahan yang dicoba dibatalkan dan gas yang disediakan dikonsumsi. Bandingkan gas terpakai dengan batasnya dan baca kesalahan pada penjelajah. Jika ini tindakan sah yang masih Anda inginkan, baca panduan estimasi terbaru dari dompet atau protokol. Jangan menyalin batas lama dari transfer yang tidak berkaitan.

Eksekusi dibatalkan: kontrak menghentikan eksekusi dan membatalkan perubahannya. Kontrak dapat mengembalikan kesalahan yang menjelaskan syarat yang tidak terpenuhi. Spesifikasi REVERT memungkinkan gas yang tidak terpakai tersisa, sehingga tanda terima gagal tidak harus menunjukkan 100% batas gas telah dikonsumsi.

Simpan kesalahan persisnya dan cari dalam dokumentasi protokol yang hendak Anda gunakan. Penjelajah mungkin tidak dapat menerjemahkannya, dan pesan revert umum mungkin tidak mengungkap penyebab. Dalam hal itu, penyebabnya tetap belum terpecahkan. Jatah gas yang lebih besar bukan bukti bahwa syarat kontrak telah berubah.

Harga dan batas gas adalah kontrol terpisah. Membayar lebih per unit tidak dapat membuat kontrak menerima tindakan yang ditolaknya. Jangan melonggarkan perlindungan transaksi atau menaikkan batas sekadar untuk menghilangkan peringatan yang tidak Anda pahami.

Periksa langkah sebelumnya yang berhasil sebelum mencoba lagi

Alur aplikasi dapat melibatkan lebih dari satu transaksi. Misalnya, persetujuan dapat berhasil dalam satu transaksi dan swap berikutnya gagal dalam transaksi lain. Kegagalan belakangan tidak membatalkan transaksi sebelumnya. Periksa setiap hash dan statusnya secara terpisah.

Buat catatan singkat sebelum mengizinkan percobaan lain:

  1. Tindakan gagal: hash, blok, status keseluruhan, dan kesalahan persisnya.
  2. Biaya: biaya transaksi, gas terpakai, dan harga gas efektif.
  3. Langkah lain: hash dan hasil persetujuan, deposit, atau percobaan ulang yang terpisah.
  4. Kondisi saat ini: jumlah token dan posisi protokol terkait untuk akun ini di Mainnet.
  5. Alasan mencoba lagi: penyebab yang teridentifikasi dan perubahan untuk mengatasinya.

Jika poin terakhir belum dapat diisi, mencoba lagi membiarkan penyebab belum terselesaikan dan dapat menimbulkan biaya tambahan jika transaksi baru dimasukkan ke blok. Gunakan jalur dukungan resmi protokol dengan detail transaksi publik, sambil menjaga kerahasiaan frasa pemulihan dan kunci pribadi.

Tindakan gagal tidak menciptakan saldo gas yang dapat dikembalikan

MetaMask menjelaskan bahwa mereka tidak memungut biaya gas jaringan dan tidak dapat mengembalikannya. Jatah gas yang tidak terpakai berbeda dari biaya yang sudah dikonsumsi oleh eksekusi. Tidak perlu terhubung ke situs pengembalian dana untuk mengklaim jatah yang tidak terpakai itu.

Pelacak portofolio dapat membantu membandingkan kepemilikan, tetapi totalnya tidak dapat menjelaskan kesalahan kontrak atau membatalkan transaksi. Simpan tanda terima gagal dan biayanya sebagai catatan percobaan ini. Sebelum melanjutkan, Anda seharusnya tahu tindakan mana yang gagal, berapa biayanya, dan syarat apa yang akan berubah pada percobaan baru.

Pertanyaan umum

Apakah token yang ingin saya kirim hilang jika transaksi Ethereum gagal?

Untuk transaksi Ethereum Mainnet biasa yang tanda terimanya menyatakan kegagalan pada tingkat teratas, transfer yang dimaksud dan perubahan status kontrak dibatalkan. Pengirim tetap membayar biaya eksekusi. Periksa transaksi terpisah dan kontrak token yang tepat jika saldo Anda tidak sesuai dengan hasil tersebut.

Apakah transaksi gagal selalu memakai seluruh batas gas?

Tidak. Kontrak dapat sengaja membatalkan eksekusi sebelum memakai semua gas yang tersedia. Kehabisan gas saat eksekusi menghabiskan gas yang disediakan. Baca gas terpakai pada tanda terima dan penyebab kegagalan, jangan menyimpulkan hasil dari batasnya.

Apakah menaikkan harga gas memperbaiki transaksi yang dibatalkan?

Harga lebih tinggi per unit gas tidak mengubah kondisi kontrak. Kenali kesalahannya terlebih dahulu. Batas gas dan harga gas adalah pengaturan berbeda, dan percobaan baru bisa gagal serta menimbulkan biaya lagi.