Lompat ke konten

Cara memperbaiki “replacement transaction underpriced”

Kesalahan RPC ini berarti transaksi dari pengirim dan nonce yang sama tidak memenuhi kebijakan kenaikan biaya node. Pelajari cara memeriksa, mempercepat, atau membatalkannya dengan aman.

Diperbarui

Hanya untuk edukasi; bukan nasihat keuangan atau keamanan. Penggantian atau pembatalan dapat menjalankan transaksi yang tidak diinginkan, dan biaya jaringan tidak dapat dikembalikan.

Jawaban langsung

replacement transaction underpriced adalah penolakan RPC atau pool transaksi, bukan revert kontrak EVM. Biasanya node sudah mengetahui transaksi dari pengirim dan nonce yang sama, tetapi transaksi baru tidak cukup menaikkan kolom biaya untuk memenuhi kebijakan penggantian node tersebut.

Periksa dahulu chain, pengirim, nonce, dan status semua hash yang diketahui. Jika transaksi awal masih tertunda dan ingin diganti, gunakan nonce yang persis sama dan naikkan biaya sesuai kebijakan dompet atau node. Hanya menaikkan gasLimit, mengubah slippage, atau menyiarkan ulang transaksi bertanda tangan yang sama tidak memenuhi aturan.

Cara kerja

  1. Nonce menandai posisi. Transaksi akun eksternal memakai nonce berurutan. Node yang sudah memiliki transaksi pengirim pada nonce itu memperlakukan transaksi lain di posisi sama sebagai kandidat pengganti. Nonce berikutnya dapat mengantre sampai nonce sebelumnya masuk blok atau diselesaikan.
  2. Penggantian adalah kebijakan pool lokal. Konsensus Ethereum tidak menetapkan persentase universal. Klien, penyedia RPC, dan relay privat dapat memakai aturan atau mengetahui pending yang berbeda. Legacy pool Geth kini memakai 10% sebagai default, tetapi dapat dikonfigurasi dan klien lain tidak wajib sama.
  3. EIP-1559 memiliki dua batas biaya. maxPriorityFeePerGas membatasi tip dan maxFeePerGas total per gas termasuk base fee. Di legacy pool Geth, fee cap dan tip cap baru harus melampaui nilai lama serta ambang persentase. Dompet harus menghitung keduanya.
  4. Diterima pool bukan berarti terkonfirmasi. Satu node dapat menerima pengganti sementara node lain menyimpan transaksi awal. Hanya satu transaksi dari pengirim dan nonce itu yang masuk urutan kanonis. Kandidat valid yang lebih dulu masuk membuat lainnya tidak dapat dipakai di chain itu, meski antarmuka terlambat memperbarui.
  5. Batas dan jumlah bayar berbeda. Harga gas efektif EIP-1559 dibatasi fee cap dan gas yang tidak terpakai tidak ditagih. Menaikkan maxFeePerGas menambah paparan maksimum, bukan selalu harga akhir, tetapi batas tinggi dapat terbayar jika base fee dan tip menuntutnya.

Alur penyelesaian dan contoh

Misalkan nonce 42, maxFeePerGas = 30 gwei, dan maxPriorityFeePerGas = 2 gwei. Node yang meminta 10% dapat menolak 31 gwei dan 2.1 gwei; 35 gwei dan 2.5 gwei melewati ambang contoh. Transaksi masih bisa menunggu jika base fee menyisakan tip efektif terlalu kecil di bawah fee cap 35 gwei. Persentase ini contoh, bukan jaminan jaringan.

Ikuti urutan ini:

  1. Periksa jaringan dan pengirim. Cari hash awal dan semua pengganti lewat dompet serta RPC atau explorer independen.
  2. Bandingkan hitungan terkonfirmasi dengan tampilan pending. Jika nonce 42 sudah terkonfirmasi, jangan buat transaksi lain dengan anggapan masih tertunda.
  3. Dekode to, value, dan data. Untuk mempercepat, pertahankan operasi dan nonce. Untuk membatalkan, dompet biasanya mengirim 0 ETH ke pengirim sendiri dengan nonce sama; ini pengganti pesaing, bukan penarikan tingkat protokol.
  4. Gunakan fungsi dompet bila ada. Jika tidak, dapatkan kebijakan dan estimasi terbaru, naikkan kedua batas EIP-1559 dengan margin pembulatan, dan pastikan akun menutup value + gasLimit x maxFeePerGas.
  5. Periksa semuanya sebelum menandatangani. Siarkan sekali, simpan setiap hash, dan pantau receipt semua kandidat. Hash pending tidak memiliki receipt; receipt pada chain dan blok yang benar menjadi bukti eksekusi.

Risiko

  • Pembatalan tidak dijamin. Transaksi awal bisa masuk lebih dulu, dan transaksi privat atau kurang tersebar mungkin tidak terlihat oleh RPC Anda.
  • Nonce salah dapat membuat pembayaran atau panggilan baru. Menandatangani ulang calldata lama dapat menjalankan operasi dengan harga, allowance, tenggat, atau status yang sudah berubah.
  • Satu endpoint dapat menerima pengganti dan lainnya menolak. Berulang kali berganti RPC dapat meninggalkan kandidat di pool berbeda dan membingungkan tampilan dompet.
  • Menaikkan gasLimit tidak menambah prioritas. Menaikkan batas tanpa analisis menambah biaya maksimum; mengubah slippage atau calldata mengubah eksekusi, bukan aturan pool.
  • Transaksi blob, user operation account abstraction, L2, dan relay privat dapat memakai pool serta aturan berbeda. Jangan menganggap kebijakan EVM biasa Geth berlaku.

Berhenti jika pengirim atau nonce tidak dikenal, calldata tak dapat didekode, transaksi mungkin sudah terkonfirmasi, dompet mengusulkan penerima atau nilai berbeda, atau RPC meminta seed phrase atau private key. Pemecahan masalah yang sah tidak meminta rahasia pemulihan.

Kesalahpahaman umum

  • “Saldo akun kurang.” Itu kesalahan lain. Pesan ini menyangkut transaksi pesaing dan harga penggantian.
  • “Naik 10% selalu berhasil.” Itu default umum Geth, bukan aturan konsensus. Konfigurasi, klien, jenis, dan pembulatan dapat meminta lebih.
  • “Transaksi lebih mahal mengganti transaksi awal di mana-mana.” Pool bersifat lokal. Penerimaan satu RPC tidak menghapus transaksi awal dari semua pool atau menjamin urutan.
  • “Pembatalan membalik transaksi terkonfirmasi.” Tidak. Ia hanya bersaing saat nonce belum selesai; perubahan terkonfirmasi memerlukan solusi tingkat aplikasi, bila ada.

Topik terkait

Sumber

Navigasi

Cari di wiki...