Hanya untuk tujuan edukasi; bukan merupakan nasihat investasi atau rekomendasi investasi. Investasi dapat mengakibatkan kerugian.
Jawaban langsung
Nonce adalah nilai yang maknanya ditentukan oleh ruang nama protokol tertentu. Nonce tidak selalu berarti angka acak atau nilai universal yang “dipakai sekali”. Di Ethereum, nonce dalam state akun milik eksternal mengurutkan dan memvalidasi transaksi pengirim tersebut. Kontrak dapat menyimpan nonce aplikasi yang terpisah untuk permit atau instruksi bertanda tangan. Akun pintar ERC-4337 dapat memakai nonce UserOperation terstruktur dengan jalur kunci dan urutan yang paralel. Dalam proof-of-work Bitcoin, nonce header blok adalah bidang pencarian terbatas untuk mencoba hash kandidat.
Nilai-nilai ini tidak dapat dipertukarkan. Nonce akun Ethereum tidak melindungi sembarang tanda tangan data terstruktur kecuali aplikasi memverifikasi domain dan bidang pencegah replay-nya sendiri. Nonce header PoW tidak mengurutkan transaksi akun. Angka nonce yang sama pada pengirim, kontrak, chain, atau jalur berbeda menggambarkan state yang berbeda.
Cara kerjanya
- Kenali ruang nama sebelum membaca angkanya: transaksi EOA, state akun kontrak, penyimpanan aplikasi,
UserOperationERC-4337, atau header blok PoW tertentu. Tetapkan chain ID, fork dan versi protokol, akun atau pemilik, kontrak pemverifikasi dan domain, EntryPoint, atau format header sesuai konteks. - Baca state otoritatif pada tag blok yang eksplisit. Bedakan nonce akun EOA kanonis dari hitungan pending milik penyedia, nilai
nonces(owner)di penyimpanan aplikasi, kunci dan urutan ERC-4337, serta penghitung pencarian header lokal milik penambang. Kesepakatan beberapa RPC independen tidak menggantikan verifikasi receipt dan state kanonis. - Susun garis riwayat tanda tangan. Catat pengirim atau pemilik, chain dan domain, nonce, payload, tenggat, kontrak pemverifikasi, hash transaksi atau pesan, serta setiap penggantian. Untuk transaksi Ethereum, aturan domain chain seperti EIP-155 melengkapi nonce akun; nonce saja bukan perlindungan replay lintas-chain yang lengkap.
- Alokasikan di jalur yang benar. Koordinasikan penanda tangan EOA yang berjalan bersamaan agar setiap urutan kanonis dialokasikan satu kali; pertahankan celah dan riwayat penggantian dengan nonce yang sama. Untuk aplikasi atau akun pintar, ikuti aturan pemeriksaan-dan-penambahan atomik serta jalur kontraknya, bukan mengasumsikan satu penghitung global.
- Kirim menurut aturan penerimaan yang tepat. Kebijakan pending dan penggantian pada execution client bersifat lokal; bundler ERC-4337 memvalidasi objek
UserOperationmenurut aturan EntryPoint dan akun; tanda tangan EIP-712 atau permit dapat diteruskan di dalam transaksi pihak lain. Tidak satu pun jalur penerimaan lokal ini membuktikan inklusi kanonis. - Lacak hasil secara lengkap. Bedakan ditolak, pending, antre, digantikan, berhasil diinklusikan, diinklusikan dengan
status = 0, dihapus oleh reorganisasi, dan difinalisasi. Transaksi Ethereum yang diinklusikan menaikkan nonce akun pengirim meskipun eksekusi EVM revert; pembaruan nonce aplikasi di penyimpanan dalam panggilan yang revert akan dibatalkan. - Rekonsiliasi sebelum mencoba ulang. Verifikasi receipt kanonis, hash blok, nonce pengirim, penyimpanan aplikasi, event atau receipt ERC-4337, dan finalitas. Untuk PoW, verifikasi keseluruhan header dan target, bukan nonce saja; jika bidang nonce terbatas habis, penambang mengubah data lain yang memengaruhi header untuk membuat ruang pencarian baru.
Contoh terhitung
- Revert yang terinklusi mengonsumsi nonce EOA. Nonce kanonis pengirim adalah
12. Transaksi bernonce12diinklusikan denganstatus = 0, memakai50,000gas pada30 gwei, dan berbiaya50,000 * 30 gwei = 0.0015 ETH. Perubahan kontraknya dibatalkan, tetapi nonce kanonis pengirim menjadi13. Jika reorganisasi menghapus blok itu, nonce dapat kembali ke12; dompet harus memeriksa ulang seluruh riwayat transaksi. - Nonce aplikasi dan relayer terpisah. Pemilik memiliki nonce akun EOA
18; token ERC-2612 melaporkannonces(owner) = 7; nonce EOA relayer adalah42. Permit yang berhasil mengonsumsi nonce aplikasi7sehingga menjadi8, sedangkan inklusi membuat nonce relayer menjadi43dan membiarkan nonce EOA pemilik tetap18. Jika seluruh panggilan revert, nonce relayer tetap menjadi43, tetapi pembaruan penyimpanan token kembali ke7. - Jalur ERC-4337. Dalam ekspresi pengemasan untuk pembelajaran
nonce = (key << 64) | sequence, kunci5dan urutan9menghasilkan5 * 2^64 + 9 = 92,233,720,368,547,758,089; urutan10menghasilkan92,233,720,368,547,758,090. Kunci independen6dan urutan0menghasilkan110,680,464,442,257,309,696. Penggunaan paralel tetap bergantung pada logika validasi akun pintar dan terpisah dari nonce transaksi EOA bundler. - Nonce pencarian PoW. Nonce header Bitcoin berukuran
32 bits, sehingga memiliki2^32 = 4,294,967,296kandidat numerik. Pada laju hipotetis100 TH/s, pemindaian ruang itu memerlukan4,294,967,296 / 100,000,000,000,000 = 0.00004294967296 seconds = 42.94967296 microseconds. Penambang mengubah extraNonce coinbase, waktu, atau kumpulan transaksi untuk mengubah Merkle root dan memperoleh header baru; bidang ini bukan state pencegah replay akun.
Risiko
- Mencampur ruang nama nonce EOA, kontrak, aplikasi, ERC-4337, dan PoW.
- Membaca nonce dari chain, fork, kontrak, atau EntryPoint yang salah.
- Menggunakan respons RPC yang usang, tidak konsisten, atau berbahaya.
- Penanda tangan paralel mengalokasikan nonce transaksi EOA yang sama.
- Celah nonce menghambat kandidat transaksi lokal berikutnya.
- Menganggap nonce pending dari penyedia sebagai state kanonis.
- Melupakan bahwa revert terinklusi mengonsumsi nonce EOA dan gas.
- Gagal memulihkan nonce dan riwayat kandidat setelah reorganisasi.
- Penggantian dengan nonce sama tidak memenuhi kebijakan biaya node tujuan.
- Menganggap penggantian menghapus transaksi lama bertanda tangan secara global.
- Menghubungkan nonce numerik yang sama dari pengirim atau domain berbeda.
- Mengabaikan chain ID atau pemisah domain tanda tangan lain yang diwajibkan.
- Gagal memeriksa dan menaikkan nonce aplikasi secara atomik.
- Pemilik, tenggat, pemisah domain, atau kontrak token ERC-2612 yang salah.
- Memutar ulang tanda tangan aplikasi lintas chain, kontrak, atau versi.
- Salah membaca nonce state akun kontrak sebagai penghitung panggilan umum.
- Salah mengemas kunci nonce atau lebar urutan ERC-4337.
- Mencampur nonce EOA bundler dengan nonce
UserOperationakun pintar. - Upgrade proxy atau tabrakan penyimpanan mengubah perilaku nonce aplikasi.
- Menganggap nonce pencarian PoW terbatas sebagai otorisasi, state replay, atau bukti mandiri.
Kesalahpahaman umum
- Setiap bidang bernama nonce bermakna sama dan dipakai sekali secara global.
- Nonce yang lebih besar membuat transaksi lebih aman, cepat, atau final.
- Transaksi Ethereum yang revert tidak mengonsumsi nonce pengirimnya.
- Nonce saja mencegah semua replay lintas chain, lintas kontrak, dan pesan terstruktur.
- Setiap akun pintar ERC-4337 memiliki satu penghitung linear yang identik dengan nonce transaksi EOA.
Topik terkait
Sumber
- Ethereum accounts - Ethereum.org (diakses: 2026-08-13)
- Transactions - Ethereum.org (diakses: 2026-08-13)
- EIP-2681: Limit account nonce to 2^64-1 - Ethereum Improvement Proposals (diakses: 2026-08-13)
- EIP-155: Simple replay attack protection - Ethereum Improvement Proposals (diakses: 2026-08-13)
- EIP-712: Typed structured data hashing and signing - Ethereum Improvement Proposals (diakses: 2026-08-13)
- ERC-2612: Permit Extension for EIP-20 Signed Approvals - Ethereum Improvement Proposals (diakses: 2026-08-13)
- ERC-4337: Account Abstraction Using Alt Mempool - Ethereum Improvement Proposals (diakses: 2026-08-13)
- Block Chain - Bitcoin Developer Documentation (diakses: 2026-08-13)