Apa Itu Nonce dalam Kripto? Penambangan Bitcoin, Ethereum, Kriptografi
Pada Desember 2010, di sebuah panggung di Chaos Communication Congress di Berlin, sebuah kelompok kecil bernama fail0verflow mengumumkan bahwa mereka telah mengekstrak kunci penandatanganan utama Sony untuk PlayStation 3. Eksploitasi tersebut tidak merusak kurva eliptik 256-bit. Itu tidak memecahkan AES. Eksploitasi tersebut memanfaatkan fakta bahwa sistem penandatanganan kode Sony menggunakan kembali angka yang sama untuk setiap tanda tangan yang dihasilkannya. Angka itu adalah nonce.
Kata yang sama, "nonce," muncul di tiga sudut dunia kripto yang hampir tidak memiliki kesamaan lain. Ini adalah variabel yang diolah oleh penambang Bitcoin triliunan kali per detik untuk mencari hash blok yang valid. Ini adalah penghitung yang digunakan dompet Ethereum Anda untuk mengurutkan transaksi keluar, dan alasan mengapa transaksi yang macet memblokir setiap transaksi berikutnya yang Anda tandatangani. Ini adalah nilai unik yang dibutuhkan sandi AES-GCM untuk mencegah dua pesan terenkripsi saling membocorkan isinya. Satu kata, tiga fungsi, dan tidak satu pun yang dapat dipertukarkan. Kesalahan dalam membedakan satu fungsi dengan fungsi lainnya adalah bagaimana pendatang baru salah membaca kesalahan "nonce terlalu rendah," bagaimana penambang merancang pengaturan yang mustahil, dan bagaimana sistem seperti PS3 kehilangan akar kepercayaannya.
Nonce 32-bit yang disebut "angka yang digunakan sekali": asal
Akronim balik ada di mana-mana. "Nonce singkatan dari number used once" (angka yang digunakan sekali). Kurang lebih benar, tetapi secara historis salah. Kata bahasa Inggris ini sudah ada sekitar 750 tahun sebelum kriptografi. Frasa "For the nonce" muncul dalam manuskrip bahasa Inggris Pertengahan sekitar tahun 1200-an. Artinya "untuk kesempatan tertentu ini."
Kriptografi meminjam kata tersebut pada tahun 1978, dengan protokol otentikasi Needham-Schroeder. Di sana, properti yang menentukan bukanlah keacakan. Melainkan keunikan, dalam lingkup yang ditentukan. Wikipedia, mengacu pada praktik sebenarnya, menyebut nonce sebagai "angka sembarang yang hanya dapat digunakan sekali dalam komunikasi kriptografi." Penghitung memenuhi syarat. Begitu juga stempel waktu. Begitu juga nilai acak, atau kombinasi dari ketiganya. Yang penting adalah bahwa, di dalam sistem, nonce yang sama tidak pernah muncul kembali dengan kunci yang sama, atau dalam konteks yang sama.
Satu kata melakukan pekerjaan, dan pekerjaan tersebut dibagi menjadi tiga bagian. Nonce penambangan Bitcoin bervariasi hingga hash blok turun di bawah target kesulitan. Nonce akun Ethereum adalah penghitung yang jaringan tolak untuk diulang. Nonce kriptografi dalam enkripsi simetris adalah nilai yang dipasangkan dengan kunci, dan menggunakannya sekali akan membongkar enkripsi tersebut.
Kata itu longgar. Konteksnya tidak.

Bagaimana nonce bekerja dalam penambangan Bitcoin
Dalam Bitcoin, nonce menempati bidang 32-bit di dalam header blok 80-byte. Empat byte. Nilainya berkisar dari nol hingga 4.294.967.295. Hampir 4,3 miliar kemungkinan angka, yang terdengar sangat besar ketika Satoshi menulis protokol tersebut dan sekarang dapat diproses habis oleh ASIC seukuran meja dalam hitungan mikrodetik.
Penambangan adalah perlombaan untuk menemukan nilai dalam bidang tersebut yang menghasilkan hash blok yang valid. Ambil header 80-byte. Masukkan melalui SHA-256, fungsi hash kriptografi yang digunakan blockchain bitcoin, dua kali. Hasilnya adalah angka 256-bit. Bandingkan angka tersebut dengan hash target yang ditetapkan oleh target kesulitan jaringan, mekanisme konsensus yang mendorong bukti kerja. Di bawah target? Blok valid, penambang menang. Di atas target? Naikkan nonce satu dan lakukan hashing ulang. Penambang Bitcoin mengulangi proses ini sampai seseorang menemukan nonce yang valid dan blok baru ditambahkan ke blockchain.
Mengapa bidang yang begitu kecil untuk pekerjaan yang begitu besar? Alasan struktural. Nonce adalah bagian header termurah yang dapat dimutasi oleh penambang. Setiap bidang lain memiliki ketergantungan. Merkle root meringkas transaksi blok, jadi mengubahnya memaksa seluruh pohon transaksi untuk dihitung ulang sebelum hash baru dapat dicoba. Nonce menghindari semua itu. Setiap upaya hash bersifat independen. Meningkatkan nonce tidak memberikan kemajuan yang lebih dekat daripada memilih nilai acak. Brute force, yang dibalut dengan bahasa konsensus.
Desain tersebut bertahan selama kurang lebih satu tahun. Kemudian ASIC merusaknya. Penambang modern menghabiskan seluruh ruang nonce 4,3 miliar dalam hitungan mikrodetik, bukan detik. Bitmain Antminer S21 Pro berjalan pada 234 terahash per detik. Seluruh bidang nonce habis pada perangkat keras tersebut dalam waktu sekitar 18 mikrodetik . Pada Mei 2026, total hashrate jaringan bitcoin berada di dekat 996 EH/s, dengan kesulitan 132,47 triliun. Satu S21 Pro saja menghabiskan setiap nilai nonce yang mungkin puluhan ribu kali per detik.
Jadi, protokol Satoshi memberi penambang dua jalan keluar yang bersih setelah ruang 32-bit habis. Yang pertama adalah "nonce ekstra," sebuah field yang terselip di dalam scriptSig transaksi coinbase. BIP34 mengkodekannya. Dua hingga seratus byte, dikendalikan oleh penambang. Jika nonce ekstra diubah, TXID coinbase berubah, root merkle harus dihitung ulang, header blok berubah, dan pencarian nonce 32-bit baru dibuka. Jalan keluar kedua adalah menaikkan timestamp atau memutar bit versi dalam rentang yang diizinkan protokol. Pool penambangan saat ini menjalankan semuanya sebagai bagian dari operasi normal. Menyesuaikan nonce adalah mutasi termurah. Menyesuaikan nonce ekstra adalah yang termurah kedua. Rotasi merkle dan timestamp berada lebih jauh, sesuai urutan seberapa banyak pekerjaan yang dibutuhkan untuk menghitung ulang masing-masing.
Ketika seseorang mendapatkan hash di bawah target — para penambang menyebutnya "golden nonce" — blok baru tersebut langsung tersebar di jaringan peer-to-peer, dan setiap pesaing menghentikan pencarian mereka saat ini untuk memulai kembali di putaran berikutnya.
| Model ASIC | Hashrate | Saatnya menghabiskan nonce 32-bit | Efisiensi |
|---|---|---|---|
| Antminer S21 | 200 TH/s | ~21 µs | 17,5 J/TH |
| Antminer S21 Pro | 234 TH/s | ~18 µs | 15 J/TH |
| Antminer S21 XP | 270 TH/s | ~16 µs | 13,5 J/TH |
Sebuah contoh nyata dan terkini memperkuat abstraksi ini. Blok 948.000, yang ditambang pada awal tahun 2026, memiliki hash blok `0000000000000000001b01841afc366a4f999b291c8563ee0d0db956fc2db44` dan nilai nonce yang menang sebesar 2.582.463.598 . Bilangan bulat tunggal itu, dikombinasikan dengan sisa header blok, menghasilkan hash yang cukup rendah untuk ditambahkan ke blockchain. Setiap nonce lain yang dicoba penambangnya pada putaran itu menghasilkan sesuatu yang terlalu besar.
Inilah yang dimaksud dengan bukti kerja, secara mekanis. Bukan teka-teki dalam arti permainan tebak-tebakan. Sebuah pencarian nonce yang valid, yang dibayar dengan listrik.
Hash nonce vs account nonce: kata yang sama, fungsi yang berbeda
Kata "nonce" digunakan kembali untuk satu hal lagi dalam mata uang kripto, dan tumpang tindih inilah yang menjadi sumber kebingungan terbesar di antara para pendatang baru. Nonce penambangan Bitcoin adalah variabel pencarian. Nonce akun Ethereum adalah penghitung. Mereka memiliki nama yang sama dan hampir tidak ada kesamaan lainnya.
| Hash nonce (Bitcoin) | Nonce akun (Ethereum) | |
|---|---|---|
| Pekerjaan | Cari hash yang valid di bawah target. | Urutkan transaksi keluar per akun. |
| Di mana ia tinggal | Header blok (32 bit) | Status akun (bilangan bulat penuh, dimulai dari 0) |
| Siapa yang memutasinya? | Penambang, dalam hal perangkat keras, miliaran per detik | Dompet, secara otomatis, satu per pengiriman |
| Apa arti "salah" | Tiket lotre gagal, coba tiket nonce berikutnya. | Transaksi ditolak atau macet |
| Apakah terkait dengan konsensus? | Ya, ini bukti kerja. | Tidak, ini adalah perlindungan tayangan ulang. |
Hash nonce adalah angka sementara yang dibuang oleh penambang. Account nonce adalah status permanen yang terukir dalam tampilan jaringan terhadap alamat Anda. Kekeliruan antara keduanya — memperlakukan blockchain nonce dari blok Bitcoin seolah-olah itu adalah penghitung urutan — adalah bagaimana orang membaca kesalahan Ethereum "nonce terlalu rendah" dan berasumsi bahwa pengaturan penambangan mereka rusak. Blockchain yang berbeda, pekerjaan yang berbeda, kata yang sama. Bahkan dalam satu ekosistem, peran nonce dalam operasi blockchain sepenuhnya bergantung pada apakah Anda mengamati lapisan konsensus atau lapisan akun.
Nonce akun Ethereum dan masalah transaksi macet
Setiap akun yang dimiliki pihak eksternal di Ethereum memiliki nonce-nya sendiri. Penghitung dimulai dari nol, pertama kali alamat tersebut mengirimkan transaksi. Dari situ, nilainya bertambah satu untuk setiap transaksi yang masuk ke dalam blok. Saat Anda mengirim sesuatu, dompet Anda meminta nilai saat ini dari jaringan, menambahkan angka berikutnya, dan menandatanganinya. Jaringan hanya menerima antrian keluar dalam urutan yang ketat. Nonce 0, lalu 1, lalu 2. Celah tidak diperbolehkan.
Pengurutan ketat inilah yang memberikan Ethereum perlindungan terhadap serangan replay. Transaksi yang ditandatangani terikat pada satu nonce tertentu, dan sejak EIP-155, juga pada satu chainID tertentu. Penyerang tidak dapat menyiarkan ulang transaksi lama yang telah dieksekusi seolah-olah itu transaksi baru. Pada saat siaran ulang tiba, nonce akun telah melewatinya. ChainID menghentikan serangan replay lintas rantai dalam satu kali tindakan. Di dalam satu rantai, transaksi yang telah dikonfirmasi berada pada satu titik pada penghitung yang telah bergerak maju.
Urutan yang kaku yang sama menghasilkan masalah yang terus dihadapi oleh dompet Ethereum baru. Sebuah transaksi dikirim dengan tip yang terlalu rendah. Validator melewatinya. Mempool menghapusnya dari antrian prioritas. Transaksi tersebut sekarang berada dalam keadaan limbo — tidak dikonfirmasi, tidak gagal, hanya terhenti. Lebih buruk lagi, setiap transaksi berikutnya yang ditandatangani oleh alamat yang sama mendapatkan nonce yang lebih tinggi. Jaringan menolak untuk menyentuh salah satu dari transaksi tersebut sampai transaksi yang terhenti tersebut dikonfirmasi atau diganti. Satu transaksi yang lambat menghentikan seluruh antrian.
Solusinya terletak pada mekanisme yang disebut replace-by-fee. Dompet Anda akan menyiarkan ulang transaksi baru pada nonce yang sama dengan transaksi yang tertahan, tetapi dengan biaya gas yang lebih tinggi. EIP-1559, model penetapan harga gas yang telah digunakan Ethereum sejak peningkatan London pada Agustus 2021, menetapkan aturannya: transaksi baru harus meningkatkan `maxFeePerGas` dan `maxPriorityFeePerGas` setidaknya sepuluh persen di atas transaksi aslinya. Ingin menghapus transaksi yang tertahan sepenuhnya daripada menggantinya? Kirimkan transfer sendiri senilai nol ETH pada nonce yang macet, dengan tip yang lebih tinggi. Slot tersebut akan terpakai dengan sendirinya, dan setiap transaksi berikutnya dalam antrian akan dibuka blokirnya.
Berikut angka-angka bulan Mei 2026, sebagai konteks. Tip prioritas rata-rata mendekati 1,875 Gwei. Pembatalan standar 21.000 gas menghasilkan sekitar $0,05 pada hari yang tenang, dan naik ke angka beberapa dolar rendah selama kepadatan lalu lintas. Ada satu pelajaran yang pada akhirnya dipelajari semua orang dengan susah payah: selalu ganti nonce tertunda terendah terlebih dahulu. Menaikkan biaya pada transaksi berikutnya sementara pendahulunya masih macet tidak menghasilkan apa pun.
Abstraksi akun sedikit mengubah cerita ini. Akun pintar ERC-4337 menggunakan nonce 2D, membagi bilangan bulat menjadi "kunci" 192-bit dan urutan 64-bit. Kunci yang berbeda membentuk aliran transaksi paralel. Batch yang tertunda pada satu kunci tidak menghalangi pekerjaan pada kunci lainnya. Nonce akun akhirnya berkembang melampaui sekadar penghitung linier tunggal.
Satu mitos terakhir yang perlu diluruskan. Transisi Ethereum ke proof of stake pada Merge, September 2022, tidak menghilangkan account nonce. Yang hilang adalah mining nonce di dalam header blok, karena validator sekarang dipilih berdasarkan slot, bukan berdasarkan hash puzzle. Account nonce tetap berada tepat di tempatnya semula, di dalam account state trie.
Nonce kriptografi dalam enkripsi: versi yang membawa malapetaka
Keluar dari lingkup blockchain, nonce kriptografi akan bekerja lebih efektif. Namun, jika salah langkah, semuanya akan berantakan.
Setiap algoritma enkripsi terautentikasi modern memasangkan kunci rahasia dengan nonce per pesan. AES-GCM, algoritma utama dalam TLS 1.3, menggunakan 96 bit. Spesifikasinya ditulis oleh NIST SP 800-38D. ChaCha20-Poly1305, alternatif yang dikodifikasi dalam RFC 8439 (Juni 2018), meniru panjang nonce 96 bit yang sama dan memasangkannya dengan kunci 256 bit. Aturan di bawah keduanya, dalam bahasa sederhana: setiap pasangan (kunci, nonce) berjalan tepat sekali. Penggunaan kembali bukanlah degradasi yang lunak. Itu adalah jurang yang dalam.
Seperti apa jurang itu? Gunakan kembali nonce dalam AES-GCM di bawah satu kunci. Bayangkan penyerang telah menangkap kedua ciphertext. Mereka melakukan operasi XOR pada keduanya. Hasilnya adalah hasil XOR dari kedua plaintext yang mendasarinya. Kerahasiaan hilang dalam satu langkah. Yang lebih buruk menyusul. Mode otentikasi GCM membocorkan subkunci otentikasi internalnya — nilai yang menandatangani setiap ciphertext di bawah kunci tersebut. Dengan subkunci di tangan, penyerang menulis ciphertext terotentikasi baru dan penerima yang sah menerimanya sebagai nyata. Sebuah cipher canggih, dengan satu nonce yang buruk, akan jatuh di bawah tingkat Caesar shift.
Semua itu bukanlah hipotesis. Sebuah makalah USENIX WOOT tahun 2016, "Nonce-Disrespecting Adversaries," memindai titik akhir HTTPS produksi dan menemukan 184 server yang menggunakan kembali nonce GCM. Build yang bermasalah tersebut mencakup citra Cisco IOS XE dan firmware Radware ADC tertentu. CVE-2016-0270 dan beberapa CVE terkait lainnya melacaknya.
Kebocoran data PS3 Sony pada Desember 2010 adalah penyakit yang sama dalam sandi yang berbeda: ECDSA. Setiap tanda tangan ECDSA membutuhkan nilai per tanda tangan, yang ditulis sebagai k , yang unik dan rahasia. Kode penandatanganan Sony melewatkan bagian unik tersebut. Mereka memasukkan konstanta k secara permanen dan menggunakannya kembali pada setiap tanda tangan. Berikan penyerang dua tanda tangan ECDSA pada pesan yang berbeda dengan k yang sama, dan mereka memiliki dua persamaan linier dengan dua variabel. Selesaikan. Hasilnya adalah kunci penandatanganan pribadi, dalam bentuk tertutup. fail0verflow menjelaskan hal ini di atas panggung pada Kongres Komunikasi Chaos ke-27 di Berlin. Kunci penandatanganan utama Sony tersebar di internet dalam hitungan jam. Setiap PS3 yang pernah dibuat kehilangan rantai kepercayaannya sekaligus.
Perbaikan deterministik, yang dikodifikasi sebagai RFC 6979 pada tahun 2013, menghilangkan generator angka acak dari proses tersebut. Nilai k diperoleh dari HMAC pesan dan kunci privat. Pesan yang sama, kunci yang sama, k yang sama — tidak ada RNG yang dapat dirusak. Pustaka Bitcoin modern menggunakan ECDSA deterministik sebagai default.
Dua konsekuensi muncul dari cerita-cerita ini, dan seringkali membingungkan para pengembang. Dengan sandi AEAD (AES-GCM, ChaCha20-Poly1305), nonce yang dapat diprediksi tidak masalah. Penghitung berfungsi. Keunikan adalah satu-satunya persyaratan. Dengan tanda tangan ECDSA dan Schnorr, aturannya terbalik. k yang dapat diprediksi adalah bencana. Nonce penandatanganan di sana harus unik, tidak dapat diprediksi, dan rahasia pada saat yang bersamaan. Mencampuradukkan kedua kubu inilah yang menyebabkan bug penggunaan kembali nonce terus muncul dalam kode dompet kustom. Audit proyek cadangan Kopia tahun 2024 mencatat risiko tabrakan GCM-nonce acak pada kunci yang berjalan lama, dan laporan pengujian penetrasi pada SDK yang lebih baru mencatat temuan serupa bulan demi bulan.
Nonce vs garam vs IV: menghindari kebingungan tiga arah
Orang-orang menggunakan tiga kata ini secara sembarangan dalam tulisan tentang keamanan seolah-olah ketiganya memiliki arti yang sama. Garam. Pecandu narkoba. IV. Ketiganya bukanlah sinonim.
Salt adalah bagian dari proses hashing kata sandi. Anda mengambil nilai acak per pengguna, mencampurnya ke dalam hash, dan sekarang tabel pelangi yang telah dihitung sebelumnya untuk "password123" berhenti berfungsi terhadap basis data Anda. Salt berada dalam teks biasa di samping hash. Tidak ada yang menyembunyikannya. Dua pengguna yang berbagi salt akan merepotkan; hal itu memungkinkan penyerang yang berhasil meretas satu salt juga dapat meretas salt milik pengguna lainnya. Namun, ini bukanlah akhir dunia.
Nonce berkaitan dengan pengiriman pesan dan tanda tangan. Per-pesan dalam enkripsi simetris. Per-tanda tangan dalam ECDSA. Sandi AEAD seperti AES-GCM mengekspos nonce secara terang-terangan, seperti halnya salt yang berada di samping hash. ECDSA menyembunyikannya, memperlakukannya sebagai rahasia, dan menuntut keacakan baru setiap kali. Bagaimanapun, tabrakan bukan hanya merepotkan. Itu fatal. Seluruh jaminan hilang.
IV — singkatan dari initialization vector — adalah nama lama untuk apa yang disebut spesifikasi yang lebih baru sebagai nonce. Mode CBC dan CTR menggunakan kata ini selama bertahun-tahun. Dokumentasi AEAD modern beralih, sebagian besar karena "vektor" terdengar seperti pekerjaan rumah matematika dan orang terus menggunakannya kembali. "Nonce" lebih condong pada aturan.
Butuh satu aturan yang bisa ditulis di selembar kertas tempel? Garam melindungi rahasia yang Anda simpan. Zat pengganggu melindungi rahasia yang Anda kirimkan.

Mengapa nonce penting di luar hal-hal sepele penambangan bitcoin
Nonce adalah objek kecil. Tiga puluh dua bit di Bitcoin. Sebuah penghitung di Ethereum. Dua belas byte di AES-GCM. Objek ini memiliki bobot yang tidak proporsional dibandingkan ukurannya. Bagi pengguna biasa, setiap transaksi Ethereum yang macet, setiap jabat tangan TLS ke situs perbankan, setiap tanda tangan yang dihasilkan dompet perangkat keras bergantung pada penanganan nonce yang benar. Bagi pengembang, kesalahan penanganan nonce adalah titik masuk paling umum untuk bug fatal dalam kode kriptografi kustom. Insiden PS3 adalah kasus ekstrem, tetapi mode kegagalan yang sama terus muncul di SDK dompet dan alat pencadangan yang lebih baru. Untuk ekonomi Bitcoin, nonce 32-bit yang dikombinasikan dengan mekanisme nonce ekstra adalah apa yang membuat penambangan ASIC menjadi lotere yang adil sejak awal. Salah satu pilihan desain Satoshi yang paling penting, tersembunyi di depan mata di dalam bidang header yang tidak mencolok.
Nonce adalah sesuatu yang menyatakan bahwa ini terjadi sekali, dalam urutan ini, persis seperti ini . Hilangkan nonce, dan setiap sistem yang bergantung pada keunikan akan runtuh menjadi sesuatu yang dapat dibangun kembali oleh penyerang dengan biaya murah. Konsensus runtuh. Perlindungan terhadap serangan replay hilang. Enkripsi bocor. Tanda tangan dipalsukan.