Apa yang Sebenarnya Terjadi Ketika Kamu Mengirim Transaksi Ethereum

--> Masalah

Kamu klik “Kirim” di walletmu. UI mengonfirmasi transaksi.

Tapi kemudian… tidak ada yang terjadi.

Kadang-kadang itu terkonfirmasi dalam beberapa detik.
Kadang-kadang itu tergantung selama beberapa menit—atau gagal sepenuhnya.

Kenapa?

Sebagian besar penjelasan berhenti di “itu masuk ke blockchain.”

Itu tidak berguna jika kamu sedang membangun sistem di .

Mari kita uraikan apa yang sebenarnya terjadi di balik layar.


Model Mental (Orientasi Cepat)


Sebuah transaksi tidak dieksekusi secara instan.

Ini bergerak melalui tiga fase yang berbeda:

  • Propagasi (mempool)

  • Inklusi (usulan blok)

  • Eksekusi (transisi status)

Setiap fase menambah latensi, risiko, dan mode kegagalan.


Langkah 1: Pembuatan Transaksi

Saat Anda menekan “send”:


  • Dompet Anda menyusun sebuah transaksi:

    • untuk

    • nilai

    • gasLimit

    • maxFeePerGas

    • data (jika interaksi kontrak)

    Ia menandatangani transaksi menggunakan kunci privat Anda

Pada titik ini:
👉 Transaksi valid, tetapi belum diketahui oleh jaringan


Langkah 2: Siarkan ke Jaringan

Dompet Anda mengirim transaksi tersebut ke sebuah node.

  • Node itu:

  • Memverifikasi tanda tangan

  • Memeriksa nonce

  • Memastikan validitas dasar

Jika valid → masuk ke mempool


Langkah 3: Mempool (Tempat yang Menarik)

Mempool itu:

  • Area penahanan sementara

  • Tidak konsisten secara global

  • Berbeda di tiap node

Ini artinya:
👉 Transaksi Anda mungkin ada di beberapa node—tapi tidak di yang lain

Perilaku kunci:

  • Node memprioritaskan transaksi berdasarkan biaya

  • maxFeePerGas lebih tinggi = prioritas lebih tinggi


📊 Diagram 1: Alur Propagasi Transaksi


Diagram harus menunjukkan:

  • Dompet pengguna → Node A → Node B → Node C

  • Setiap node memiliki mempool sendiri

  • Panah yang menunjukkan propagasi gossip

  • Sorotan: “Tidak semua mempool itu identik”


Langkah 4: Usulan Blok

Validator memilih transaksi dari mempool mereka.

Mereka memilih:

  • Transaksi dengan biaya tertinggi lebih dulu

  • Transaksi yang muat dalam batas gas

Penting:
👉 Transaksi Anda bersaing dengan yang lain



Langkah 5: Eksekusi (Level EVM)


Setelah dimasukkan ke sebuah blok

  • Transaksi dieksekusi di dalam EVM

  • Perubahan status terjadi:

    • Pembaruan saldo

    • Perubahan penyimpanan kontrak pintar

Jika eksekusi gagal:

  • Gas tetap dikonsumsi

  • Perubahan status kembali (revert)


📊 Diagram 2: Alur Eksekusi


Diagram harus menunjukkan:

  • Blok → EVM → Transisi Status

  • Masukan:

    • Transaksi

    • Status saat ini


  • Keluaran:

    • Status baru

  • Sertakan “konsumsi gas” di setiap langkah


Kasus Tepi & Mode Kegagalan

Di sinilah sebagian besar artikel gagal. Mari kita gali lebih dalam.

❌ 1. Transaksi Terjebak di Mempool

  • Biaya terlalu rendah

  • Tidak pernah dipilih oleh validator

❌ 2. Transaksi Terbuang

  • Node menghapusnya karena:

    • Biaya rendah

    • Mempool meluap

❌ 3. Transaksi yang Digantikan (Replaced)

  • Nonce yang sama + biaya lebih tinggi → menggantikan yang asli

❌ 4. Eksekusi Kehabisan Gas (Out-of-Gas)

  • Eksekusi berhenti di tengah jalan

  • Status kembali (revert)

  • Gas yang terbuang

❌ 5. Reorganisasi Rantai (Reorg)

  • Blok diganti

  • Transaksi mungkin menghilang sementara



Implikasi Dunia Nyata

Untuk Pengembang:

  • Anda tidak bisa menganggap finalitas instan

  • Harus menangani status yang masih pending

Untuk UX:

  • Pengguna melihat “pending” → kebingungan

  • Estimasi biaya menjadi hal yang krusial

Untuk Desain Sistem

  • Logika percobaan ulang (retry) diperlukan

  • Pemantauan transaksi itu wajib


Inti yang perlu diingat

  • Sebuah transaksi adalah proses bertahap, bukan peristiwa tunggal

  • Mempool bersifat non-deterministik dan terfragmentasi

  • Biaya secara langsung memengaruhi peluang eksekusi

  • Kegagalan bisa terjadi di banyak lapisan

  • Sistem harus dirancang untuk ketidakpastian dan penundaan



Jika Anda membangun di Ethereum, memahami pipeline ini tidaklah opsional—ini fondasi$ETH