Hanya untuk tujuan edukasi; bukan merupakan nasihat investasi atau rekomendasi investasi. Investasi dapat mengakibatkan kerugian.
Jawaban langsung
Penggantian transaksi Ethereum adalah kebijakan lokal pool transaksi yang memungkinkan sebuah node memilih transaksi yang baru ditandatangani daripada kandidat lain dari pengirim yang sama dengan nonce yang sama. Ini bukan sakelar Replace-by-Fee global pada tingkat konsensus. Penerimaan hash baru oleh satu node tidak menghapus transaksi lama yang telah ditandatangani dari node lain, relay privat, atau masukan pembuat blok. Hanya inklusi di rantai kanonis yang menentukan kandidat mana yang memakai nonce akun.
Tindakan Percepat pada dompet biasanya mempertahankan tujuan, nilai, dan calldata asli sambil menaikkan kolom biaya. Tindakan Batalkan melalui pool publik biasanya membuat transfer bernilai nol ke alamat sendiri dengan pengirim dan nonce yang sama. Transaksi ini adalah pesaing, bukan operasi pembatalan yang membalik keadaan: jika transaksi asli masuk lebih dahulu, transfer atau pemanggilan kontraknya tidak dibatalkan. Jalur privat tertentu dapat mendefinisikan API pembatalan berbeda; misalnya, Flashbots Protect mendokumentasikan pembatalan autentikasi yang tidak dimasukkan ke rantai. Mekanisme itu tidak boleh digeneralisasi sebagai penggantian transaksi Ethereum publik.
Cara kerja
- Tetapkan seluruh riwayat kandidat secara tepat: chain ID, klien dan versinya, blok kepala dan biaya dasar, jalur pengiriman, pengirim, nonce akun kanonis, byte mentah bertanda tangan dari transaksi asli, hash, dan jenis transaksi. Periksa beberapa tampilan publik atau privat yang relevan; label dompet atau satu respons RPC bukan keadaan global.
- Klasifikasikan transaksi asli secara tepat sebagai ditolak, tertunda secara lokal, mengantre di belakang celah nonce, dibuang atau dikeluarkan, dikirim secara privat, masuk dan berhasil, masuk dengan
status = 0, dihapus oleh reorganisasi, atau sudah final. Jangan menganggap penggantian masih tersedia setelah nonce dipakai secara kanonis, walaupun reorganisasi dapat membuka kembali perlombaan. - Tentukan maksud baru. Percepatan harus mereproduksi setiap kolom semantik yang dimaksud; upaya pembatalan publik biasanya memakai pengirim dan nonce yang sama dengan
to = sender,value = 0, dan calldata kosong. Bandingkan chain ID, jenis, tujuan, nilai, calldata, daftar akses, batas gas, hash blob, serta otorisasi sebelum menandatangani. - Baca kebijakan penggantian aktual dari node sasaran. Transaksi lama dan jenis 1 memakai
gasPrice; jenis 2 memilikimaxFeePerGasdanmaxPriorityFeePerGas; jenis 3 juga memilikimaxFeePerBlobGasserta memerlukan sidecar. Nilai bawaan Geth saat ini,txpool.pricebump = 10untuk pool biasa danblobpool.pricebump = 100untuk pool blob, adalah contoh konfigurasi Geth, bukan konstanta seluruh Ethereum. - Hitung kelayakan dan pendanaan secara terpisah dari kenaikan biaya. Untuk jenis 2, harga efektif adalah
min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas). Kandidat tetap memerlukan enkode yang valid, gas intrinsik yang cukup, serta saldo untuk menutup nilai ditambah eksposur biaya maksimum. Batas yang lebih tinggi tidak memperbaiki calldata yang tidak valid atau menjamin eksekusi EVM berhasil. - Kirim secara terencana dan simpan setiap respons. Penyiaran ulang ke publik dapat mengungkap niat dan MEV; relay privat memiliki cakupan visibilitas, pembatalan, pembuat blok, dan ketersediaannya sendiri. Lacak hash lama dan baru pada setiap jalur tanpa menganggap penerimaan lokal telah menghapus pesaing, serta jangan mengirim kandidat ketiga yang memindahkan nilai secara membabi buta.
- Rekonsiliasi pemenang dengan rantai kanonis. Verifikasi blok dan hash tanda terima, indeks transaksi,
status, gas terpakai, harga gas efektif, log, nonce pengirim, saldo, dan keadaan kontrak pada tingkat finalitas yang dibutuhkan. Catat hash yang kalah sebagai digantikan, dibuang, atau masih teramati sesuai bukti, lalu ulangi analisis setelah reorganisasi.
Contoh terhitung
- Kenaikan pembelajaran untuk jenis 2 biasa. Kandidat lama memiliki
maxFeePerGas = 40 gweidanmaxPriorityFeePerGas = 2 gwei. Dalam konfigurasi pembelajaran Geth dengan kenaikan10%, ambang aritmetisnya adalah44 gweidan2.2 gwei. Kandidat44/2.1 gweitidak mencapai ambang tip;44/2.2 gweimencapai kedua ambang pembelajaran. Dengan biaya dasar32 gweidan gas terpakai21,000, harga efektifnya34.2 gwei, biaya total718,200 gwei = 0.0007182 ETH, pembakaran biaya dasar0.000672 ETH, dan tip0.0000462 ETH. Penerimaan aktual bergantung pada implementasi, versi, dan pembulatan wei bilangan bulat. - Sensitivitas biaya dasar. Penggantian memiliki batas
66/4.4 gwei. Pada biaya dasar60 gwei, harga efektifnyamin(66, 60 + 4.4) = 64.4 gwei. Pada biaya dasar65 gwei, harga efektifnya66 gweidan tip efektif hanya1 gwei. Pada biaya dasar67 gwei, berlaku66 < 67, sehingga kandidat tidak layak di bawah batas tersebut meskipun lolos uji kenaikan lokal. - Perlombaan pembatalan. Transaksi asli dengan nonce
20mengirim5 ETHke pedagang. Jika transaksi asli menang dengan biaya21,000 * 42 gwei = 0.000882 ETH, pedagang menerima5 ETHdan transaksi pembatalan menjadi nonce-terlalu-rendah. Jika transfer bernilai nol ke alamat sendiri menang dengan biaya21,000 * 45 gwei = 0.000945 ETH, transaksi itu memakai nonce20dan mencegah transaksi asli masuk kemudian ke riwayat kanonis yang sama. Hasilnya tidak dapat diketahui hanya dari klik tombol Batalkan. - Batas pool blob. Kandidat lama jenis 3 mempunyai batas biaya eksekusi
100 gwei, batas tip3 gwei, dan batas biaya blob20 gwei. Dalam konfigurasi pembelajaran pool blob Geth dengan kenaikan100%, ambang aritmetisnya200/6/40 gwei. Kandidat200/6/39 gweitidak mencapai batas blob;200/6/40 gweimencapai ketiga ambang pembelajaran, tetapi tetap memerlukan sidecar, nonce, saldo, dan penerimaan pool yang valid. Angka ini bukan aturan transaksi biasa atau klien lain.
Risiko
- Memilih chain ID atau jaringan yang salah.
- Memilih pengirim atau nonce akun yang salah.
- Memakai blok kepala, biaya dasar, atau nonce kanonis yang usang.
- Mencoba mengganti setelah transaksi asli masuk atau menjadi final.
- Menerapkan aturan txpool biasa pada
UserOperationERC-4337. - Menganggap klien, penyedia, versi, atau konfigurasi lain memakai kebijakan yang sama.
- Gagal memenuhi ambang kenaikan akibat pembulatan wei bilangan bulat.
- Menaikkan hanya satu kolom biaya EIP-1559 yang diwajibkan.
- Menetapkan
maxFeePerGasdi bawah biaya dasar blok kandidat. - Mengabaikan batas biaya blob, sidecar, atau aturan khusus pool blob.
- Saldo tidak cukup untuk nilai dan biaya maksimum yang diotorisasi.
- Tanda tangan, jenis, enkode, gas intrinsik, atau domain jaringan tidak valid.
- Tidak sengaja mengubah tujuan, nilai, calldata, daftar akses, atau hash blob.
- Transaksi pembatalan publik kalah dalam perlombaan inklusi.
- Transaksi lama tetap berada pada node lain atau masukan pembuat blok.
- Relay privat membocorkan, menyensor, membuang, atau gagal membatalkan pengiriman.
- Penyiaran ulang publik mengungkap niat kepada frontrunning, serangan sandwich, atau MEV lain.
- Celah nonce memblokir transaksi kemudian atau memicu transfer duplikat.
- Penggantian masuk tetapi revert atau kehabisan gas sambil memakai nonce dan biaya.
- Kesalahan reorganisasi, finalitas, atau riwayat tanda terima menghidupkan kembali atau salah mengklasifikasikan kandidat.
Kesalahpahaman umum
- Kandidat berbiaya lebih tinggi menghapus transaksi lama secara global.
- Dua transaksi dengan angka nonce sama saling menggantikan meski pengirimnya berbeda.
- Tombol Batalkan pada dompet membalik transaksi yang sudah masuk.
- Penerimaan penggantian oleh satu node membuktikan pembuat blok akan memasukkannya.
- Aturan kenaikan 10% universal mencakup semua klien, transaksi blob, relay privat, dan
UserOperation.
Topik terkait
Sumber
- Transactions - Ethereum.org (diakses: 2026-08-13)
- EIP-1559: Fee market change for ETH 1.0 chain - Ethereum Improvement Proposals (diakses: 2026-08-13)
- txpool Namespace - go-ethereum (diakses: 2026-08-13)
- Command-line Options - go-ethereum (diakses: 2026-08-13)
- eth_sendRawTransaction - Ethereum Execution APIs (diakses: 2026-08-13)
- EIP-4844: Shard Blob Transactions - Ethereum Improvement Proposals (diakses: 2026-08-13)
- ERC-4337: Account Abstraction Using Alt Mempool - Ethereum Improvement Proposals (diakses: 2026-08-13)
- Cancellations - Flashbots Documentation (diakses: 2026-08-13)