BITSCRIPTUM
BLK #915,217
PROTOCOL: BITCOIN
SHA-256 / SECP256K1
DIFFICULTY
92.67 T
HASHRATE
734 EH/s
Open Source Protocol
Welcome to Bitscriptum

Tempat belajar Bitcoin Protocol
tanpa batas, dari genesis block
hingga Lightning Network.

Live Hash — Block Header
000000000000000000029d2f3b5c8e1a...
BLK #915,217
Pilih bab untuk memulai
Chapter List
00
Prologue
Mengapa Bitcoin?
Uang, sejarah, kriptografi, dan jalan menuju genesis block
17 menit
→
01
Bab 1
Bitcoin dari 10.000 Kaki
Jaringan, protokol, transaksi, dan cara kerja Bitcoin secara konseptual
9 menit
→
02
Bab 2
Wallet dan Private Key
Kepemilikan, kunci, alamat, seed phrase, dan jenis-jenis wallet
15 menit
→
03
Bab 3
Anatomi Sebuah Transaksi
UTXO, input, output, fee, mempool, dan lifecycle transaksi
12 menit
→
04
Bab 4
Kriptografi Bitcoin
Hash, ECC, ECDSA, Schnorr, Merkle Tree, dan keamanan jaringan
15 menit
→
05
Bab 5
Mining dan Proof of Work
Konsensus, PoW, mining, difficulty adjustment, block reward, dan serangan 51%
11 menit
→
06
Bab 6
Bitcoin Script dan Opcodes
Script, stack, opcodes, P2PKH, SegWit, P2SH, multisig, dan Taproot
10 menit
→
07
Bab 7
Lightning Network
Skalabilitas, payment channel, routing, HTLC, dan masa depan pembayaran Bitcoin
13 menit
→
08
Bab 8
Node dan Jaringan P2P
Full node, SPV, mining node, jaringan peer-to-peer, dan propagasi transaksi
12 menit
→
09
Bab 9
Mempool dan Fee Market
Mempool, fee rate, RBF, CPFP, dan bagaimana transaksi bersaing untuk masuk block
13 menit
→
10
Bab 10
UTXO Set dan State Bitcoin
UTXO set, state Bitcoin, dan bagaimana node memverifikasi kepemilikan
11 menit
→
11
Bab 11
Mining: Hardware, Pool, dan Ekonomi
Proof of Work, ASIC, mining pool, dan ekonomi insentif miner
13 menit
→
12
Bab 12
Privasi On-chain: CoinJoin dan Teknik Lainnya
Mengapa privasi di Bitcoin sulit, CoinJoin, dan teknik privasi lainnya
12 menit
→
13
Bab 13
Soft Fork: Sejarah, Proses, dan Governance
Soft fork, hard fork, BIP, dan bagaimana Bitcoin berubah tanpa otoritas pusat
12 menit
→
14
Bab 14
Insiden dan Kejadian Langka di Bitcoin
Bug, serangan, dan anomali nyata yang menguji batas protokol Bitcoin
12 menit
→
15
Bab 15
Waktu di Bitcoin: Timelock, Sequence, dan Kontrak Berbasis Waktu
Bagaimana Bitcoin mendefinisikan waktu dan membangun kontrak yang berlaku otomatis
12 menit
→
16
Bab 16
Menjalankan Node: IBD, Chainstate, dan Verifikasi dari Dalam
Apa yang terjadi di dalam node saat memproses blockchain — dari sync pertama hingga verifikasi setiap block
11 menit
→
17
Bab 17
SPV & Light Clients: Verifikasi Tanpa Download Semua Data
Bagaimana HP dan perangkat terbatas bisa memverifikasi transaksi Bitcoin tanpa menjadi full node
11 menit
→
18
Bab 18
Wire Protocol & Block Propagation: Bagaimana Bitcoin Berkomunikasi
Protokol komunikasi P2P yang membuat seluruh jaringan Bitcoin berjalan — dari byte pertama hingga propagasi block
13 menit
→
19
Bab 19
Mining Economics & Incentive Design
Dari mana uang miner berasal, bagaimana fee market terbentuk, dan apa yang terjadi saat block reward mendekati nol
12 menit
→
20
Bab 20
Rangkuman — Seluruh Protokol Bitcoin dalam Satu Bab
Referensi cepat untuk semua konsep kunci: kriptografi, transaksi, konsensus, jaringan, Lightning, privacy, dan governance
9 menit
→
LAB
Laboratorium
Bongkar isinya, bukan cuma pakai
Tiga kelompok: alur ujung ke ujung, primitif kriptografi yang dibedah dari dalam, dan format serta protokol byte per byte
21 alat
→
APPENDIKS
← Chapter List
BLK #915,217
Prologue · P.1
Pertanyaan paling mendasar
Apa itu uang, sebenarnya?

Kita semua menggunakan uang setiap hari. Tapi kalau ditanya "apa itu uang?" kebanyakan orang akan terdiam sejenak. Jawaban yang muncul biasanya: kertas di dompet, angka di aplikasi bank, atau koin di laci meja. Semua itu benar. Tapi semua itu juga hanya bentuknya, bukan esensinya.

Uang, pada dasarnya, adalah teknologi sosial. Bukan benda fisik, bukan logam mulia, bukan angka digital. Uang adalah kesepakatan, sebuah kepercayaan kolektif bahwa sesuatu memiliki nilai dan bisa dipertukarkan.

Selembar uang Rp 100.000 tidak bernilai karena kertasnya. Ia bernilai karena jutaan orang sepakat bahwa ia bernilai. Kalau kesepakatan itu runtuh, uang itu tidak lebih dari kertas.

Untuk memahami kenapa kesepakatan ini muncul, kita perlu mundur jauh ke masa sebelum uang ada sama sekali.

Bayangkan sebuah desa kecil. Petani punya beras. Nelayan punya ikan. Tukang kayu punya kursi. Mereka butuh satu sama lain, dan satu-satunya cara untuk mendapatkan yang dibutuhkan adalah barter: menukar barang dengan barang secara langsung.

Masalahnya sederhana tapi fatal: bagaimana kalau nelayan butuh beras, tapi petani tidak butuh ikan, melainkan butuh kursi? Transaksi tidak bisa terjadi. Para ekonom menyebut ini coincidence of wants, kebetulan kebutuhan yang harus bertemu dua arah sekaligus. Barter hanya bekerja di komunitas yang sangat kecil.

Solusinya adalah menemukan sesuatu yang semua orang mau terima, bukan karena mereka butuh benda itu secara langsung, tapi karena mereka tahu orang lain juga akan menerimanya. Inilah asal mula uang.

Sepanjang sejarah, manusia pernah menggunakan kerang, garam, batu raksasa di Kepulauan Yap, bulu hewan, tembaga, perak, hingga emas. Bukan karena benda-benda itu cantik atau langka saja, tapi karena komunitas sepakat untuk mempercayainya sebagai alat tukar.

Dari eksperimen panjang ini, para ekonom merumuskan tiga fungsi utama uang yang baik:

Medium of exchange. Uang harus bisa dipakai untuk membeli dan menjual. Ia menghapus kebutuhan akan coincidence of wants.

Store of value. Uang harus bisa disimpan dan tetap bernilai di masa depan. Ikan segar tidak bisa menjadi uang yang baik karena ia membusuk.

Unit of account. Uang harus bisa dijadikan satuan pengukur nilai. Berapa harga seekor sapi? Tiga puluh karung beras, atau satu angka yang disepakati bersama?

Emas bertahan ribuan tahun sebagai uang terbaik yang pernah ada. Langka secara alami, tahan lama, bisa dibagi, dan sulit dipalsukan. Tapi emas punya satu kelemahan besar: berat dan sulit dipindahkan.

Maka manusia menciptakan kertas, bukti kepemilikan emas yang tersimpan di gudang. Lebih praktis, lebih mudah dibawa. Dan di sinilah cerita mulai berubah. Karena kertas jauh lebih mudah dicetak daripada emas ditambang.

Uang bukan tentang benda yang kamu pegang. Uang adalah tentang kepercayaan yang kamu dan orang lain sepakati, dan siapa yang memegang kendali atas kesepakatan itu.

Pertanyaan terakhir inilah yang akan kita kejar di sepanjang Prologue ini, dan yang pada akhirnya melahirkan Bitcoin.

Prologue · P.2
Uang yang berubah diam-diam
Sejarah manipulasi uang

Pernah nggak kamu nanya ke orang tua atau kakek nenek, berapa harga sebungkus mie instan dulu? Atau berapa harga bensin pertama kali mereka beli? Jawabannya pasti bikin geleng-geleng kepala. Bukan karena mie-nya berubah. Bukan karena bensinnya berubah. Tapi karena uangnya yang berubah.

Ini bukan kebetulan. Dan ini bukan takdir.

Dari emas ke kertas

Selama ribuan tahun, uang punya jangkar. Jangkar itu bernama emas. Setiap lembar kertas yang beredar punya padanan emas yang tersimpan di brankas pemerintah. Sistem ini disebut gold standard. Artinya, tidak ada yang bisa sembarangan mencetak uang lebih banyak dari emas yang dimiliki.

Ini membuat uang jujur. Nilainya stabil. Pemerintah tidak bisa seenaknya.

Tapi jangkar itu diputus.

15 Agustus 1971

Presiden Amerika Serikat Richard Nixon berdiri di depan kamera televisi dan mengumumkan sesuatu yang mengubah sistem keuangan dunia selamanya. Amerika Serikat tidak lagi mengaitkan dolar dengan emas. Keputusan ini dikenal sebagai Nixon Shock.

Alasannya saat itu terdengar masuk akal: ekonomi sedang sulit, perang Vietnam menguras anggaran, dan cadangan emas Amerika mulai menipis karena negara-negara lain mulai menukarkan dolar mereka dengan emas sungguhan.

Jadi Nixon memutus talinya. Dolar tidak lagi dijamin emas. Dan karena hampir semua mata uang dunia saat itu dikaitkan ke dolar, satu keputusan itu mengubah seluruh sistem keuangan global sekaligus.

Sejak hari itu, uang yang kamu pegang tidak dijamin apa-apa. Nilainya ditopang oleh satu hal: kepercayaan bahwa pemerintah akan mengelolanya dengan bertanggung jawab.

Ketika mesin cetak menyala

Masalahnya, kepercayaan itu sering dikhianati.

Tanpa jangkar emas, pemerintah dan bank sentral punya kemampuan baru: mencetak uang sebanyak yang mereka mau. Dan godaan itu sangat besar, terutama di saat krisis.

Ketika ekonomi ambruk di 2008, bank-bank besar di Amerika nyaris kolaps. Respons pemerintah? Cetak uang. Triliunan dolar dipompa ke sistem keuangan dalam program yang disebut quantitative easing.

Ketika pandemi Covid-19 melanda di 2020, hal yang sama terjadi lagi, dalam skala yang jauh lebih besar. Amerika mencetak lebih dari 40% dari seluruh dolar yang pernah ada dalam sejarah, hanya dalam dua tahun.

Akibatnya? Inflasi meledak. Harga naik. Daya beli uang yang kamu simpan di tabungan turun, tanpa kamu melakukan apa-apa, tanpa kamu dimintai izin.

Siapa yang paling dirugikan?

Bukan orang kaya. Orang kaya menyimpan kekayaan mereka dalam bentuk aset, saham, properti, emas, hal-hal yang nilainya ikut naik ketika uang dicetak.

Yang paling dirugikan adalah orang biasa. Yang menyimpan uangnya di rekening tabungan. Yang gajinya tidak naik secepat harga-harga. Yang bekerja keras menabung selama bertahun-tahun, hanya untuk melihat daya beli tabungannya perlahan terkikis.

Inflasi adalah pajak yang tidak pernah dipungut secara terbuka. Tidak ada surat pemberitahuan. Tidak ada pemungutan suara. Ia bekerja diam-diam, setiap hari, dan hampir tidak pernah dipertanyakan.

Pertanyaan yang mulai muncul

Kalau uang bisa dicetak kapan saja oleh siapa yang berkuasa, apakah uang itu masih bisa disebut jujur? Kalau nilai tabunganmu bisa terkikis oleh keputusan yang dibuat tanpa sepengetahuanmu, apakah kamu benar-benar memiliki uang itu?

Pertanyaan-pertanyaan inilah yang mulai membuat sebagian orang berpikir: harus ada cara lain.

Prologue · P.3
Uang yang sehat itu seperti apa?
Austrian Economics & sound money

Kamu pernah nggak ngerasa kayak gini: sudah kerja keras, sudah hemat, sudah nabung, tapi kok rasanya nggak pernah cukup? Harga-harga terus naik, tapi tabungan kamu diam di tempat. Ada yang salah. Tapi salahnya di mana?

Sebagian ekonom punya jawaban yang sudah ada sejak lebih dari seratus tahun lalu. Mereka bukan dari Wall Street. Bukan dari Washington. Mereka dari Wina, Austria.

Apa itu Austrian Economics?

Austrian Economics, atau Mazhab Wina, adalah sebuah tradisi pemikiran ekonomi yang lahir di akhir abad ke-19. Tokoh-tokohnya antara lain Carl Menger, Ludwig von Mises, dan Friedrich Hayek. Nama terakhir bahkan memenangkan Nobel Ekonomi pada 1974.

Tapi lupakan dulu nama-nama itu. Yang penting adalah satu ide inti yang mereka perjuangkan: uang yang baik adalah uang yang jujur.

Jujur dalam artian: nilainya tidak bisa dimanipulasi semau penguasa. Jumlahnya tidak bisa ditambah seenaknya. Ia mencerminkan kerja keras nyata, bukan angka yang dicetak di atas kertas.

Cantillon Effect: siapa yang menang, siapa yang kalah

Ketika uang baru dicetak, ia tidak langsung menyebar merata ke semua orang. Ia mengalir dari atas ke bawah. Bank sentral menerimanya pertama, lalu bank-bank besar, lalu pengusaha, baru kemudian sampai ke pekerja dan pensiunan.

Masalahnya, harga-harga sudah naik duluan sebelum uang itu sampai ke bawah. Jadi siapa yang dapat uang pertama, bisa beli dengan harga lama. Siapa yang dapat terakhir, sudah kesiangan.

Para ekonom menyebut ini Cantillon Effect, dinamai dari ekonom Richard Cantillon yang pertama kali mendeskripsikannya di abad ke-18. Coba simulasikan sendiri di bawah.

Simulasi interaktif — Cantillon Effect
Total uang beredar
Rp 1.000
Indeks harga (inflasi)
100
Harga barang — naik setiap kali uang dicetak
⚠️
DAYA BELI TURUN!
Log kejadian

Sound money: uang yang sehat

Lawan dari uang yang bisa dimanipulasi adalah apa yang disebut sound money, uang yang sehat. Kriterianya sederhana:

Langka. Jumlahnya terbatas dan tidak bisa sembarangan ditambah. Emas adalah contoh klasiknya karena untuk mendapatkan emas baru, seseorang harus menambangnya, membutuhkan waktu, tenaga, dan biaya nyata.

Tahan lama. Nilainya tidak membusuk, tidak rusak, dan bisa disimpan dalam jangka panjang.

Tidak bisa dimanipulasi. Tidak ada satu pihak pun yang bisa mengubah aturan mainnya di tengah jalan.

Sound money bukan soal emas atau logam mulia. Ia adalah soal prinsip: uang seharusnya berfungsi sebagai penyimpan nilai yang jujur, bukan alat yang bisa digunakan penguasa untuk memindahkan kekayaan secara diam-diam.

Kenapa ini penting untuk Bitcoin?

Satoshi Nakamoto, pencipta Bitcoin, tidak muncul dari ruang hampa. Ia muncul dari tradisi pemikiran yang sudah lama mempertanyakan sistem uang yang ada.

Bitcoin dirancang dengan prinsip sound money sebagai fondasinya. Jumlah Bitcoin dibatasi hanya 21 juta koin, selamanya. Tidak ada bank sentral Bitcoin. Tidak ada yang bisa mencetak lebih banyak karena merasa perlu.

Untuk pertama kalinya dalam sejarah, manusia punya pilihan: uang digital yang langka, terbuka, dan tidak bisa dimanipulasi oleh siapapun.

Prologue · P.4
Masalah terbesar uang digital
The Double-Spend Problem

Bayangkan kamu punya file foto. Kamu bisa kirim ke satu orang, lalu kirim lagi ke orang lain, lalu ke seribu orang sekaligus. File aslinya tetap ada. Semua orang dapat salinannya.

Sekarang bayangkan uang digital bekerja dengan cara yang sama. Kamu punya Rp 100.000 dalam bentuk file digital. Kamu kirim ke Toko A. Lalu kamu kirim file yang sama ke Toko B. Uang yang sama, dipakai dua kali. Inilah yang disebut double-spend problem.

Di dunia fisik, masalah ini tidak ada. Kalau kamu kasih uang kertas Rp 100.000 ke seseorang, kamu tidak punya uang itu lagi. Perpindahannya nyata dan tidak bisa diulang. Tapi di dunia digital, semua hal adalah salinan. Tidak ada yang namanya original.

Solusi lama: percayakan ke bank

Selama ini solusinya adalah menaruh pihak ketiga di tengah. Bank memastikan uang benar-benar dipotong dari saldomu sebelum sampai ke penerima. Tidak ada yang bisa double-spend karena bank mengontrol catatannya.

Tapi ini punya harga: kamu harus percaya banknya jujur, tidak bangkrut, dan tidak membekukan akunmu. Sejarah membuktikan harapan itu tidak selalu terpenuhi.

Percobaan sebelum Bitcoin

DigiCash, b-money, Bit Gold, semua mencoba membuat uang digital tanpa bank. Semua gagal di titik yang sama: bagaimana memastikan tidak ada yang membelanjakan uang yang sama dua kali, tanpa mempercayai siapapun di tengah?

Yang dibutuhkan adalah buku besar yang terbuka untuk semua, tidak dimiliki siapapun, dan tidak bisa dimanipulasi. Itulah yang diciptakan Satoshi pada 2008. Namanya: blockchain.

Simulasi interaktif — Double-Spend Problem
Uang cash berpindah secara fisik. Setelah diberikan ke Toko A, uang itu tidak ada lagi di tanganmu. Untuk bayar Toko B, kamu butuh uang lagi. Inilah yang membuat cash aman secara alami.
🧑
Pembeli
Saldo: Rp 100.000
Tx #1
🏪
Toko A
Menunggu...
Tx #2
🏬
Toko B
Menunggu...
Log transaksi

Bitcoin menyelesaikan double-spend problem tanpa bank, tanpa pihak ketiga. Ia membuat uang digital berperilaku seperti uang cash: ketika kamu kirim, ia benar-benar berpindah. Kamu tidak punya lagi.

Prologue · P.5
Kepemilikan tanpa identitas
Revolusi Public-Key Cryptography

Cash memecahkan double-spend secara fisik. Tapi ia tidak bisa membuktikan kepemilikan di dunia digital. Kalau kamu punya uang cash dan seseorang mencurinya, tidak ada cara matematis untuk membuktikan uang itu milikmu.

Bitcoin memecahkan keduanya sekaligus. Anti double-spend seperti cash, sekaligus bisa membuktikan kepemilikan secara digital. Rahasianya ada di sebuah penemuan dari tahun 1970-an yang mengubah dunia: public-key cryptography.

Dua kunci, satu identitas

Bayangkan kamu punya gembok dan kunci. Kamu bisa bagikan gembok itu ke siapa saja. Siapapun bisa menggunakannya untuk mengunci pesan untukmu. Tapi hanya kamu yang punya kuncinya. Hanya kamu yang bisa membuka.

Itulah cara kerja public-key cryptography. Public key adalah gembokmu, boleh dibagikan ke siapa saja. Di Bitcoin, ini seperti alamat rekeningmu. Private key adalah kuncimu, tidak boleh diketahui siapapun. Ia membuktikan bahwa kamu adalah pemilik sah dari public key tersebut.

Ketika kamu mengirim Bitcoin, kamu menandatangani transaksi dengan private key-mu. Jaringan bisa memverifikasi tanda tangan itu menggunakan public key-mu, tanpa perlu tahu siapa kamu sebenarnya.

Untuk pertama kalinya, seseorang bisa membuktikan kepemilikan sesuatu secara digital, tanpa menyebutkan nama, tanpa kartu identitas, tanpa bank yang memverifikasi. Matematika yang membuktikan. Bukan institusi.

Simulasi interaktif — Public-Key Cryptography
1
Generate Key Pair
Belum di-generate
Setiap pengguna Bitcoin punya sepasang kunci. Public key boleh dibagikan ke siapa saja. Private key harus disimpan sendiri dan tidak boleh diketahui siapapun.
2
Tanda Tangani Pesan
Tunggu step 1
Ketika mengirim Bitcoin, kamu menandatangani transaksi dengan private key-mu. Tanda tangan ini unik untuk pesan ini dan tidak bisa dipalsukan siapapun yang tidak punya private key-mu.
3
Verifikasi oleh Jaringan
Tunggu step 2
Jaringan Bitcoin memeriksa tiga hal: pesan asli, public key pengirim, dan signature. Jika cocok, transaksi valid. Coba ubah pesan sedikit lalu verifikasi lagi untuk melihat apa yang terjadi.
Pesan
Public Key
Signature

Seluruh sistem Bitcoin berdiri di atas prinsip ini. Private key-mu adalah identitasmu. Siapapun yang memegang private key, memegang Bitcoin. Bukan nama di buku rekening, bukan kartu identitas, bukan tanda tangan di atas kertas.

Prologue · P.6
Perlawanan yang ditulis dalam kode
Gerakan Cypherpunk

Ada yang menyadari lebih awal.

Bukan dengan turun ke jalan. Bukan dengan orasi. Mereka duduk di depan layar, menulis kode, dan pelan-pelan membangun sesuatu yang tidak bisa disensor, tidak bisa dihentikan, dan tidak perlu izin siapapun untuk berjalan.

Mereka menyebut diri mereka Cypherpunks.

Internet yang terbuka terlalu lebar

Ketika internet lahir di era ARPANET tahun 1969, ia dirancang untuk menghubungkan institusi akademik dan militer yang saling percaya. Tidak ada yang memikirkan privasi, karena semua penggunanya memang komunitas kecil yang saling kenal.

Tapi internet tumbuh. Publik masuk. Dan fondasinya tidak ikut berubah.

Data bergerak dalam bentuk terbuka, tidak terenkripsi. Siapapun yang berada di jalur koneksimu bisa membaca apa yang kamu kirim, persis seperti membaca kartu pos, bukan surat dalam amplop tertutup. Pemerintah bisa memantau. Korporasi bisa mengumpulkan. Tidak ada yang perlu izin untuk mengintip.

Internet tidak rusak. Ia hanya tidak pernah didesain untuk melindungimu.

Dari mana mereka berasal?

Tahun 1992. Tiga orang bertemu di San Francisco: Eric Hughes, Timothy C. May, dan John Gilmore. Mereka mulai mengumpulkan orang-orang yang berpikiran sama dalam sebuah mailing list. Di puncaknya, lebih dari 700 orang aktif di dalamnya, termasuk beberapa nama yang kelak mengubah lanskap teknologi dunia.

Mereka adalah matematikawan, programmer, dan kriptografer. Bukan aktivis jalanan. Tapi mereka punya keyakinan yang tajam: privasi adalah hak, bukan keistimewaan yang diberikan oleh negara.

The Cypherpunk Manifesto

Tahun 1993, Eric Hughes menulis sebuah manifesto. Tenang, tapi tegas sampai ke tulang:

"Privacy is necessary for an open society in the electronic age."

Privasi bukan tentang menyembunyikan sesuatu. Ia tentang kemampuan untuk memilih, apa yang kamu ungkapkan, kepada siapa, dan kapan. Dan solusi mereka bukan meminta. Solusi mereka adalah membangun.

Warisan yang tidak kelihatan

Banyak teknologi yang kamu pakai sehari-hari tumbuh dari benih yang ditanam gerakan ini. HTTPS yang mengamankan browsing-mu. Enkripsi end-to-end di aplikasi chat. Jaringan yang memungkinkan komunikasi tanpa pengawasan.

Dan yang paling berdampak: pada 31 Oktober 2008, seseorang dengan nama samaran Satoshi Nakamoto mengirimkan sebuah paper ke mailing list kriptografi. Judulnya sederhana. Dampaknya tidak.

"Bitcoin: A Peer-to-Peer Electronic Cash System."

Satoshi tidak muncul dari ruang hampa. Ia adalah ujung dari benang panjang yang ditenun selama puluhan tahun oleh orang-orang yang tidak menunggu dunia berubah, tapi memilih untuk mengubahnya sendiri, satu baris kode dalam satu waktu.

Cypherpunks menulis kode. Bukan petisi. Bukan lobi. Mereka percaya bahwa perubahan nyata tidak datang dari izin yang diberikan penguasa, tapi dari teknologi yang sudah terlanjur berjalan.

Bitcoin bukan percobaan pertama

Kalau cypherpunk memang menulis kode, wajar bertanya: kode apa yang mereka tulis sebelum Bitcoin? Di bagian Double-Spend Problem tadi kita sempat menyebut DigiCash, b-money, dan bit gold dalam satu kalimat sebagai percobaan yang gagal. Sekarang kita berhenti lebih lama di sana, karena yang menarik bukan bahwa mereka gagal, melainkan seberapa dekat mereka sudah sampai.

Percobaan paling awal datang dari David Chaum, yang pada 1989 mendirikan DigiCash. Uangnya benar-benar privat, memakai teknik kriptografi yang membuat bank tidak bisa melihat siapa membelanjakan apa. Secara teknis ia berhasil. Tapi DigiCash tetap sebuah perusahaan, dan uangnya tetap diterbitkan oleh satu pihak. Ketika perusahaan itu bangkrut pada 1998, uangnya ikut lenyap. Pelajarannya keras: privasi saja tidak cukup kalau masih ada satu titik yang bisa gagal.

Pada 1997 Adam Back membuat Hashcash, yang kita bahas lagi di 5.2. Idenya sederhana: sebelum mengirim email, komputermu harus menyelesaikan perhitungan yang sedikit memakan waktu. Bagi orang biasa itu tidak terasa, bagi pengirim spam jutaan email itu jadi mahal. Untuk pertama kalinya ada cara membuat sesuatu di dunia digital berbiaya nyata. Tapi bukti kerja Hashcash tidak bisa dipindahtangankan. Ia habis dipakai sekali, tidak bisa diberikan ke orang lain, dan tidak ada jumlah totalnya. Ia perangko, bukan uang.

Setahun kemudian, 1998, dua usulan muncul hampir bersamaan. Wei Dai menulis b-money, yang mengusulkan agar semua peserta menyimpan salinan catatan siapa punya berapa, dan uang baru lahir dari kerja komputasi. Nick Szabo menulis bit gold, yang merangkai hasil kerja komputasi menjadi rantai bersambung sehingga urutannya bisa dibuktikan.

Bacalah dua kalimat barusan sekali lagi dan kamu akan merasakan sesuatu yang aneh: keduanya terdengar hampir persis seperti Bitcoin. Catatan yang disimpan semua orang, uang yang lahir dari kerja, rantai yang membuktikan urutan. Semua sudah ada di atas kertas satu dekade sebelum Satoshi.

Lalu apa yang kurang? Satu hal, dan itu yang paling sulit. Kalau semua orang menyimpan catatan sendiri, apa yang terjadi ketika catatan mereka berbeda? Siapa yang berhak memutuskan versi mana yang benar? Baik b-money maupun bit gold menyadari masalah ini dan menawarkan jawaban, tapi jawabannya selalu berujung pada sekelompok pihak terpilih yang harus dipercaya. Persis masalah yang ingin mereka hindari sejak awal. Ini masalah double-spend yang sama seperti di bagian sebelumnya, hanya dilihat dari sudut lain.

Yang sebenarnya ditambahkan Satoshi

Di sinilah letak lompatannya, dan ia lebih kecil sekaligus lebih besar daripada yang biasa dibayangkan orang. Satoshi tidak menciptakan bukti kerja, tidak menciptakan tanda tangan digital, tidak menciptakan rantai hash. Semua itu sudah ada.

Yang ia lakukan adalah menyadari bahwa bukti kerja bisa memikul dua tugas sekaligus. Pendahulunya memakai bukti kerja hanya untuk membuat sesuatu mahal diproduksi. Satoshi memakainya juga untuk memutuskan catatan siapa yang berlaku: versi yang paling banyak menumpuk kerja di belakangnya, itulah yang menang. Tidak perlu memilih siapa yang berwenang, karena kewenangan itu diganti oleh sesuatu yang tidak bisa dipalsukan, yaitu energi yang sudah terlanjur dibakar.

Itu sebabnya pertanyaan "kenapa baru 2009, padahal bahannya sudah ada sejak 1998" punya jawaban yang mungkin mengecewakan sekaligus melegakan. Yang hilang selama sepuluh tahun itu bukan sebuah komponen, bukan penemuan matematis baru, dan bukan komputer yang lebih cepat. Yang hilang adalah satu cara memandang komponen yang sudah tergeletak di depan mata semua orang.

Sejarah ini juga menjelaskan sesuatu yang akan kamu temui berulang kali di buku ini. Bitcoin jarang menambahkan hal baru. Ia hampir selalu menyusun ulang yang sudah ada, dengan sangat hati-hati, karena setiap bagian yang ditambahkan adalah bagian yang bisa gagal.

Timeline — Dari ARPANET ke Bitcoin
Klik setiap momen untuk membaca detailnya.
Prologue · P.7
Hari ketika semuanya dimulai
Genesis Block & Pesan Satoshi

3 Januari 2009.

Dunia baru saja keluar dari salah satu krisis keuangan terburuk dalam sejarah modern. Bank-bank raksasa di Amerika dan Eropa nyaris ambruk. Pemerintah mengucurkan triliunan dolar uang pajak untuk menyelamatkan institusi yang sama yang menyebabkan krisis itu sendiri.

Di suatu tempat yang tidak diketahui siapapun, seseorang menyalakan sebuah jaringan.

Blok pertama

Dalam sistem Bitcoin, semua transaksi dicatat dalam satuan yang disebut block. Setiap block terhubung ke block sebelumnya, membentuk rantai yang tidak bisa dimanipulasi. Rantai ini disebut blockchain.

Block pertama yang pernah ada disebut Genesis Block. Block #0. Awal dari segalanya. Dan di dalamnya, Satoshi meninggalkan sebuah pesan yang tertulis selamanya:

"The Times 03/Jan/2009 Chancellor on brink of second bailout for banks"

Ini adalah judul halaman depan surat kabar The Times pada hari itu. Hari ketika Bitcoin lahir.

Mengapa pesan itu penting

Pesannya bukan kebetulan. Bukan sekadar timestamp. Di satu sisi, ia berfungsi sebagai bukti bahwa Genesis Block benar-benar dibuat pada tanggal itu. Di sisi lain, ia adalah pernyataan. Sebuah kritik yang tenang tapi tajam terhadap sistem keuangan yang sedang diselamatkan oleh uang rakyat di hari yang sama.

Siapa Satoshi?

Tidak ada yang tahu. Satoshi Nakamoto berkomunikasi melalui email dan forum selama dua tahun setelah Bitcoin lahir. Lalu, pada April 2011, ia mengirim pesan terakhirnya kepada seorang developer: "I've moved on to other things." Dan menghilang.

Identitasnya tidak pernah terkonfirmasi. Yang tersisa hanyalah kodenya. Whitepaper-nya. Dan Genesis Block yang masih berdiri hingga hari ini, dengan pesan yang sama, tidak berubah, tidak bisa diubah.

Bitcoin adalah satu-satunya sistem keuangan di dunia yang penciptanya memilih untuk menghilang. Tidak ada CEO. Tidak ada pendiri yang memegang kendali. Tidak ada yang bisa dihubungi untuk mengubah aturannya. Ini bukan kelemahan. Ini adalah fitur yang paling penting dari semua.

Rekonstruksi — Block #0 · Genesis Block
Genesis Block
Block #0
000000000019d6...
Hash
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
Previous Hash
0000000000000000000000000000000000000000000000000000000000000000
Timestamp
2009-01-03 18:15:05 UTC
Difficulty
1 (minimum — jaringan baru saja lahir)
Nonce
2083236893
Reward
50 BTC (tidak pernah bisa dibelanjakan)
Coinbase Message
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks
Pesan Satoshi — tertulis selamanya di block pertama
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks
Mereka yang memahami protokolnya
A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution.
Bitcoin seems to be a very promising idea. I like the idea of basing security on the assumption that the CPU power of honest participants outweighs that of the attacker.
Bitcoin is not a currency. Bitcoin is the internet of money. Currency is just the first application.
Bitcoin is a distributed system — it's not under any one entity's control. That's a feature, not a bug.
What blockchain solves is the problem of two parties who don't trust each other agreeing on a shared fact.
Cypherpunks write code. We know that someone has to write software to defend privacy, and we're going to write it.
Prologue · P.8
Penutup Prologue
Sistem Tanpa Kepercayaan

Seluruh sistem keuangan yang ada hari ini berdiri di atas kepercayaan.

Kamu percaya bankmu tidak akan bangkrut. Kamu percaya pemerintah tidak akan membekukan akunmu. Kamu percaya perusahaan transfer tidak akan menahan uangmu. Kepercayaan itu tidak ada jaminannya, ia hanya bergantung pada niat baik institusi yang memegang kendali.

Sejarah membuktikan, niat baik itu tidak selalu cukup.

Trustless bukan berarti tidak ada kepercayaan

Kata trustless sering disalahpahami. Ia bukan berarti tidak perlu percaya siapapun sama sekali. Ia berarti kamu tidak perlu mempercayai orang atau institusi tertentu, karena yang kamu percaya adalah matematika dan kode yang bisa diverifikasi oleh siapapun.

Di Bitcoin, tidak ada direktur yang bisa mengubah aturan. Tidak ada rapat dewan yang memutuskan kebijakan moneter. Tidak ada kantor pusat yang bisa dilobi atau ditekan. Aturannya tertulis dalam kode, terbuka untuk semua, dan berlaku sama untuk semua orang di seluruh dunia.

Kepercayaan yang didesentralisasi

Kalau kamu kirim Bitcoin ke seseorang, transaksi itu diverifikasi bukan oleh satu bank, tapi oleh ribuan komputer di seluruh dunia secara bersamaan. Tidak ada satupun yang punya otoritas lebih dari yang lain. Untuk memanipulasi sistemnya, seseorang harus menguasai lebih dari separuh seluruh jaringan sekaligus, sebuah tugas yang secara praktis mustahil.

Inilah yang membuat Bitcoin berbeda dari semua sistem keuangan sebelumnya. Bukan karena ia digital. Bukan karena ia baru. Tapi karena untuk pertama kalinya, kepercayaan tidak lagi bergantung pada subjektivitas manusia yang bisa salah, bisa disuap, dan bisa berubah pikiran.

Bitcoin tidak meminta kamu percaya pada Satoshi. Tidak meminta kamu percaya pada pengembangnya. Tidak meminta kamu percaya pada siapapun. Ia hanya meminta kamu verifikasi sendiri. Dan itulah yang membuat segalanya berbeda.

← Chapter List
BLK #915,217
Bab 1 · 1.1
Meluruskan yang selama ini salah kaprah
Apa itu Bitcoin sebenarnya?

Kalau kamu tanya sepuluh orang tentang Bitcoin, kamu akan dapat sepuluh jawaban berbeda.

Ada yang bilang Bitcoin adalah investasi. Ada yang bilang spekulasi. Ada yang bilang penipuan. Ada yang bilang masa depan. Semua jawaban itu bicara tentang harga, bukan tentang apa Bitcoin sebenarnya.

Bitcoin adalah cryptocurrency, tapi bukan bagian dari industri "kripto".

Ini penting untuk dipahami sejak awal. Bitcoin secara teknis adalah cryptocurrency karena ia menggunakan kriptografi sebagai fondasi teknologinya. Tapi istilah "kripto" yang kamu dengar sehari-hari adalah sesuatu yang berbeda.

"Kripto" adalah label yang lahir dari tempat sesuatu diperdagangkan, bukan dari cara kerjanya. Exchange dan media keuangan mengelompokkan Bitcoin bersama ribuan token lain karena semuanya diperjualbelikan di bursa yang sama, disimpan di dompet yang mirip, dan dilaporkan di kolom berita yang sama. Sebagai pengelompokan komersial, itu masuk akal dan tidak ada yang salah dengannya.

Masalahnya muncul ketika pengelompokan komersial itu dibaca sebagai pernyataan teknis. Karena secara teknis, isi keranjang itu sangat berbeda satu sama lain. Ada token yang punya CEO. Ada yang whitepapernya bisa diubah kapan pun. Ada yang dibuat untuk dijual ke publik, bukan untuk menyelesaikan masalah nyata. Menaruh semuanya dalam satu kata membuat perbedaan yang paling penting jadi tidak terlihat.

Bitcoin tidak punya CEO. Tidak punya tim marketing. Tidak punya investor awal yang menunggu untuk exit. Tidak punya aturan yang bisa diubah oleh siapapun secara sepihak.

Bitcoin adalah protokol. Seperti HTTP adalah protokol untuk web, atau TCP/IP adalah protokol untuk internet. Protokol tidak dimiliki siapapun, tidak bisa dimatikan siapapun, dan tidak butuh izin siapapun untuk digunakan.

Bahwa Bitcoin menggunakan kriptografi dalam cara kerjanya membuatnya secara teknis masuk dalam definisi cryptocurrency. Tapi menyebutnya bagian dari industri "kripto" sama seperti menyebut email sebagai bagian dari industri spam hanya karena keduanya menggunakan protokol yang sama.

Bitcoin adalah tiga hal sekaligus

Jaringan. Bitcoin adalah jaringan komputer yang tersebar di seluruh dunia, berjalan tanpa server pusat, tanpa kantor pusat, dan tanpa siapapun yang bisa mematikannya. Siapapun bisa bergabung, siapapun bisa keluar. Jaringan tetap berjalan selama ada satu node pun yang hidup.

Protokol. Bitcoin adalah seperangkat aturan yang disepakati oleh semua peserta jaringan. Aturan tentang bagaimana transaksi dibuat, diverifikasi, dan dicatat. Aturan tentang berapa banyak Bitcoin yang bisa ada. Aturan yang tidak bisa diubah oleh satu pihak manapun secara sepihak.

Mata uang. Bitcoin adalah unit nilai yang bisa dikirim dari satu orang ke orang lain, di mana saja di dunia, tanpa perantara, tanpa izin, dan tanpa batas waktu operasional.

Kalau internet adalah protokol untuk memindahkan informasi, Bitcoin adalah protokol untuk memindahkan nilai. Keduanya terbuka, keduanya tidak dimiliki siapapun, dan keduanya mengubah cara dunia bekerja. Dan seperti internet, Bitcoin tidak peduli siapa yang salah paham tentangnya. Ia tetap berjalan.

Bab 1 · 1.2
Dari klik sampai konfirmasi
Bagaimana Transaksi Terjadi?

Bayangkan kamu ingin mengirim uang ke temanmu yang tinggal di kota lain.

Cara biasa: kamu buka aplikasi bank, ketik nomor rekening, ketik jumlah, klik kirim. Di balik layar, bankmu menghubungi bank temanmu, keduanya memperbarui catatan masing-masing, dan setelah proses yang melibatkan beberapa lembaga perantara, uang "tiba" dalam hitungan menit sampai hari. Kamu tidak tahu persis apa yang terjadi di tengah. Kamu hanya percaya sistemnya bekerja.

Di Bitcoin, tidak ada yang di tengah.

Apa yang sebenarnya terjadi

Ketika kamu mengirim Bitcoin, kamu membuat sebuah pesan digital yang berisi tiga hal: berapa banyak yang kamu kirim, ke alamat mana, dan tanda tangan digital dari private key-mu sebagai bukti bahwa kamu adalah pemilik sah Bitcoin tersebut.

Pesan ini disiarkan ke seluruh jaringan Bitcoin. Ribuan node di seluruh dunia menerimanya, memverifikasinya, dan meneruskannya ke node lain. Dalam hitungan detik, transaksimu sudah diketahui oleh seluruh jaringan.

Tapi belum selesai.

Masuk ke dalam block

Transaksimu kemudian menunggu untuk dimasukkan ke dalam sebuah block oleh para miner. Miner adalah komputer-komputer yang bersaing memecahkan teka-teki matematika yang sangat sulit. Yang berhasil pertama mendapat hak untuk menulis block berikutnya, sekaligus mendapat reward dalam bentuk Bitcoin baru.

Begitu transaksimu masuk ke dalam block, ia tercatat permanen di blockchain. Tidak bisa dihapus, tidak bisa diubah, tidak bisa dibatalkan.

Berapa lama?

Satu block Bitcoin rata-rata muncul setiap 10 menit. Untuk transaksi yang dianggap final dan aman, umumnya ditunggu 6 konfirmasi, artinya 6 block berturut-turut setelah block yang berisi transaksimu. Sekitar satu jam.

Dibandingkan transfer bank antar negara yang bisa memakan 3 sampai 5 hari kerja, satu jam adalah kemajuan yang signifikan. Dan tidak ada yang bisa memblokir, menunda, atau membatalkannya di tengah jalan.

Di Bitcoin, tidak ada yang perlu kamu hubungi kalau transaksimu bermasalah. Tidak ada customer service. Tidak ada tombol "batalkan". Transaksi yang sudah dikonfirmasi adalah transaksi yang selesai, selamanya.

Simulasi interaktif — Perjalanan Transaksi
Uang bergerak melalui rantai institusi. Setiap perantara punya jam operasional, aturan, dan kewenangan untuk menahan atau memblokir transaksi kapanpun.
Estimasi waktu
1-5 hari kerja
Jumlah perantara
3-5 institusi
Bisa diblokir?
Ya, di setiap titik
Jaringan memverifikasi transaksi...
Konfirmasi block (6 konfirmasi = final, tidak bisa diblokir)
0 / 6 konfirmasi
Aspek
Bank / SWIFT
Bitcoin
Waktu
1-5 hari kerja
~1 jam (6 konfirmasi)
Perantara
3-5 institusi
Tidak ada
Jam operasional
Senin-Jumat, tutup malam
24/7, 365 hari
Bisa diblokir?
Ya, di setiap titik perantara
Butuh kuasai lebih dari 50% jaringan
Butuh izin?
Ya, KYC dan persetujuan bank
Tidak perlu
Bab 1 · 1.3
Tanpa bos, tanpa server pusat
Siapa yang Menjalankan Jaringannya?

Tidak ada yang menjalankannya. Dan itulah yang membuatnya berjalan.

Ini terdengar paradoks. Setiap sistem yang kita kenal punya seseorang di baliknya. Server punya administrator. Bank punya direksi. Aplikasi punya developer yang bisa update atau matikan kapanpun. Tapi Bitcoin tidak punya satupun dari itu.

Yang menjalankan Bitcoin adalah jaringan itu sendiri, yang terdiri dari tiga jenis peserta:

Node

Node adalah komputer yang menyimpan salinan lengkap seluruh blockchain Bitcoin dan memverifikasi setiap transaksi yang masuk. Siapapun bisa menjalankan node, dengan hardware yang relatif terjangkau. Node tidak dapat bayaran. Mereka menjalankannya karena mereka ingin berpartisipasi dalam jaringan dan memverifikasi sendiri bahwa aturan Bitcoin diikuti dengan benar.

Node adalah penjaga aturan. Kalau ada transaksi yang tidak valid, node menolaknya. Kalau ada miner yang mencoba curang, node menolak block-nya. Tidak ada otoritas pusat yang perlu dihubungi.

Miner

Miner adalah komputer yang bersaing memecahkan teka-teki matematika untuk mendapat hak menulis block berikutnya. Mereka menginvestasikan hardware dan listrik yang nyata. Sebagai imbalanya, miner yang berhasil mendapat Bitcoin baru, disebut block reward, plus biaya transaksi dari transaksi yang mereka masukkan ke block.

Mining adalah proses yang membuat blockchain aman. Untuk memalsukan satu transaksi lama, seseorang harus mengulang seluruh proof of work dari block itu sampai sekarang, lebih cepat dari seluruh jaringan yang sedang berjalan. Secara praktis mustahil.

Pengguna

Pengguna adalah siapapun yang menyimpan atau mengirim Bitcoin. Mereka tidak perlu menjalankan node atau miner. Cukup punya wallet dan alamat Bitcoin.

Kenapa tidak bisa dimatikan?

Karena tidak ada satu titik pun yang kalau dihilangkan akan membuat semuanya berhenti. Node tersebar di ratusan negara. Miner beroperasi di berbagai yurisdiksi. Tidak ada server pusat untuk diserang, tidak ada CEO untuk ditangkap, tidak ada kantor untuk ditutup.

Bitcoin berjalan karena ribuan orang di seluruh dunia memilih untuk menjalankannya, bukan karena ada satu entitas yang memaksanya berjalan. Dan selama satu node pun masih hidup di suatu tempat di bumi ini, Bitcoin masih ada.

Bab 1 · 1.4
Buku besar yang tidak bisa dimanipulasi
Apa itu Blockchain?

Sebelum masuk ke cara kerjanya, ada satu hal yang perlu diluruskan dulu.

Kata "blockchain" sudah mengalami nasib yang sama seperti kata "kripto". Industri mengambilnya, memakainya untuk menjual segalanya, dan maknanya jadi kabur. "Blockchain untuk supply chain." "Blockchain untuk voting." "Blockchain untuk kesehatan." Hampir semua dari itu tidak butuh blockchain sama sekali, dan bisa diselesaikan lebih efisien dengan database biasa.

Jadi sebelum belajar cara kerjanya, penting untuk tahu: tidak semua yang disebut blockchain adalah blockchain.

Blockchain Bitcoin vs "blockchain" industri

Blockchain Bitcoin adalah sistem yang benar-benar terdesentralisasi. Tidak ada yang mengontrol siapa boleh menulis atau membaca. Tidak ada admin yang bisa mengubah aturan. Tidak ada perusahaan di baliknya. Tidak ada tombol off. Keamanannya datang dari proof of work dan konsensus ribuan node independen di seluruh dunia.

Kebanyakan "blockchain" yang dijual industri kripto adalah database terpusat dengan tampilan blockchain. Ada perusahaan yang mengontrolnya. Ada tim yang bisa mengubah aturannya kapanpun. Ada server yang bisa dimatikan. Ini bukan blockchain dalam arti yang Satoshi maksud. Ini marketing.

Semua yang disebut blockchain belum tentu blockchain. Tapi blockchain Bitcoin adalah blockchain yang sesungguhnya.

Apa itu block?

Bayangkan sebuah buku besar catatan transaksi. Setiap halaman berisi daftar transaksi yang terjadi dalam satu periode waktu. Setiap halaman baru merujuk ke halaman sebelumnya, membentuk rantai yang tidak bisa diputus. Itulah blockchain. Tapi tidak ada yang memilikinya, dan semua orang bisa melihatnya.

Setiap block berisi tiga hal utama:

Data transaksi. Daftar semua transaksi yang terjadi dalam periode itu. Siapa mengirim berapa ke siapa.

Hash block ini. Semacam sidik jari digital dari seluruh isi block. Kalau satu huruf pun berubah, hash-nya berubah total.

Hash block sebelumnya. Inilah yang membentuk rantai. Setiap block terikat ke block sebelumnya melalui hash-nya.

Kenapa tidak bisa dimanipulasi?

Coba bayangkan seseorang ingin memalsukan transaksi di block #500. Ia harus mengubah isi block itu. Tapi begitu isinya berubah, hash block #500 berubah. Itu berarti block #501 yang menyimpan hash #500 kini tidak valid. Block #502 juga tidak valid. Dan seterusnya sampai block terbaru.

Untuk memalsukan satu transaksi lama, seseorang harus menghitung ulang seluruh rantai dari block itu sampai sekarang, lebih cepat dari seluruh jaringan yang sedang menambah block baru setiap 10 menit. Secara praktis mustahil.

Siapa yang menyimpannya?

Semua orang yang menjalankan node Bitcoin menyimpan salinan lengkap seluruh blockchain. Bukan di satu server, tapi di ribuan komputer di seluruh dunia. Tidak ada satu titik pun yang bisa diserang untuk menghapus atau mengubah catatan.

Blockchain bukan teknologi ajaib. Ia adalah kombinasi sederhana dari kriptografi, konsensus, dan insentif ekonomi yang bekerja bersama untuk menciptakan sesuatu yang belum pernah ada sebelumnya: catatan yang jujur, tanpa penjaga yang perlu dipercaya.

Simulasi interaktif — Struktur Blockchain
Setiap block terhubung ke block sebelumnya melalui hash. Coba ubah data transaksi di Block #1 dan lihat apa yang terjadi pada block-block berikutnya.
Coba ubah isi "Data Transaksi" di Block #1 di atas. Hash-nya akan langsung berubah, dan Block #2 dan #3 akan menjadi invalid karena menyimpan hash lama.
Simulasi interaktif — Serangan ke Blockchain
Kamu adalah penyerang. Kamu ingin mengubah transaksi di salah satu block untuk mencuri Bitcoin. Pilih block yang ingin kamu manipulasi.
Memanipulasi Block #?
Transaksi asli (akan dihapus)
Transaksi palsu (yang kamu tulis)
Menghitung ulang hash yang rusak...
Kamu (penyerang)
0%
Jaringan Bitcoin
0%
Pilih salah satu block di atas untuk mulai menyerang.
Bab 1 · 1.5
Kelangkaan yang tidak bisa dipalsukan
Kenapa 21 Juta?

Ketika Satoshi merancang Bitcoin, ia membuat satu keputusan yang tidak biasa: jumlah Bitcoin yang pernah ada di dunia ini dibatasi. Tepat 21 juta. Tidak lebih, tidak kurang, selamanya.

Bukan kebijakan yang bisa diubah rapat. Bukan regulasi yang bisa diamandemen. Ia tertulis langsung dalam kode, dan untuk mengubahnya dibutuhkan persetujuan dari seluruh jaringan, sesuatu yang secara praktis tidak mungkin terjadi.

Kenapa 21 juta?

Tidak ada jawaban matematis yang definitif untuk angka ini. Satoshi tidak pernah menjelaskan secara spesifik. Yang jelas adalah prinsip di baliknya: Bitcoin harus langka. Kelangkaan yang bisa diverifikasi, bukan kelangkaan yang dijanjikan.

Ini berbeda fundamental dari uang fiat. Tidak ada yang tahu berapa jumlah dolar, rupiah, atau euro yang beredar besok. Angkanya bisa berubah kapanpun ada keputusan politik atau ekonomi yang membutuhkannya. Bitcoin tidak bisa.

Bagaimana Bitcoin baru lahir?

Bitcoin baru tidak dicetak oleh bank sentral. Ia lahir melalui proses mining. Setiap kali miner berhasil menemukan block baru, ia mendapat sejumlah Bitcoin sebagai reward. Inilah satu-satunya cara Bitcoin baru masuk ke sirkulasi.

Tapi reward ini tidak tetap selamanya.

Halving

Setiap 210.000 block, sekitar empat tahun sekali, reward mining dipotong menjadi setengahnya. Proses ini disebut halving.

Saat Bitcoin pertama lahir tahun 2009, reward per block adalah 50 BTC. Setelah halving pertama tahun 2012, menjadi 25 BTC. Lalu 12,5 BTC. Lalu 6,25 BTC. Dan seterusnya, terus dipotong setengah, sampai sekitar tahun 2140 ketika reward mendekati nol dan seluruh 21 juta Bitcoin sudah beredar.

Mekanisme ini adalah yang memastikan supply Bitcoin tidak bisa dimanipulasi. Tidak ada yang bisa mempercepat jadwal ini. Tidak ada yang bisa mengubah aturannya di tengah jalan.

Emas langka karena susah ditambang. Bitcoin langka karena matematikanya tidak mengizinkan lebih dari 21 juta. Satu bergantung pada alam, satu bergantung pada kode. Keduanya tidak bisa dipalsukan.

Tabel Halving Bitcoin
Total Bitcoin yang sudah beredar
97.92%
~19.863.000 dari 21.000.000 BTC
Era Tahun Block Reward Total Supply % dari 21 Juta
Klik setiap baris untuk melihat detail. Baris yang lebih terang adalah era yang sudah lewat atau belum terjadi.
Bab 1 · 1.6
Uang yang tidak bisa dibohongi
Bitcoin vs Uang Biasa

Uang yang baik seharusnya tidak bisa dibohongi.

Tidak bisa dicetak diam-diam. Tidak bisa dibekukan semena-mena. Tidak bisa disensor karena alasan politik. Tidak bisa diencerkan nilainya oleh keputusan segelintir orang di ruang tertutup.

Selama ribuan tahun, manusia mencari bentuk uang yang memenuhi semua itu. Emas mendekati, tapi bisa disita. Uang kertas praktis, tapi bisa dicetak. Uang digital lebih efisien, tapi dikontrol institusi.

Bitcoin adalah percobaan pertama yang berhasil menjawab semua itu sekaligus. Bukan karena ia menghasilkan keuntungan. Bukan karena harganya naik. Tapi karena untuk pertama kalinya dalam sejarah, ada bentuk uang yang aturannya tidak bisa dimanipulasi oleh siapapun.

Itulah yang dimaksud dengan uang yang jujur.

Eksplorasi — Bitcoin vs Uang Biasa
← Chapter List
BLK #915,217
Bab 2 · 2.1
Bukan tempat menyimpan Bitcoin
Apa itu Wallet?

Namanya menyesatkan.

Wallet dalam Bitcoin tidak menyimpan Bitcoin. Ini hal pertama yang harus diluruskan. Bitcoin tidak ada di dalam aplikasi di ponselmu. Ia tidak tersimpan di perangkatmu. Ia ada di blockchain, dan blockchain ada di ribuan komputer di seluruh dunia.

Yang disimpan wallet adalah sesuatu yang jauh lebih penting: kunci.

Bayangkan Bitcoin seperti brankas yang terkunci di tempat umum yang bisa dilihat semua orang. Semua orang tahu isi brankasnya berapa. Tapi hanya orang yang punya kuncinya yang bisa membuka dan memindahkan isinya. Wallet adalah tempat kamu menyimpan kunci itu.

Bukan rekening, bukan saldo

Rekening bank menyimpan catatanmu di server milik bank. Bank tahu siapa kamu, berapa saldo kamu, dan bisa mengubah atau membekukannya kapanpun.

Wallet Bitcoin tidak seperti itu. Tidak ada nama, tidak ada identitas, tidak ada institusi yang menyimpan datamu. Yang ada hanyalah sepasang kunci matematika yang membuktikan bahwa kamu adalah pemilik sah dari Bitcoin di alamat tertentu.

Apa yang sebenarnya ada di dalam wallet?

Semuanya berawal dari satu angka, lalu turun berantai:

Private key. Angka acak yang sangat besar, dibuat sekali dan tidak bisa ditebak oleh siapapun. Ini adalah bukti kepemilikan. Siapapun yang tahu private key-mu, bisa memindahkan Bitcoin-mu. Siapapun.

Public key. Diturunkan secara matematis dari private key. Ia tidak dirahasiakan, tapi bukan ini yang kamu berikan ke orang lain. Tugasnya adalah membuktikan ke jaringan bahwa transaksimu benar-benar berasal darimu.

Address. Diturunkan sekali lagi dari public key, lebih pendek dan lebih tahan salah ketik. Inilah yang kamu bagikan ketika ingin menerima Bitcoin. Seperti nomor rekening, tapi tanpa identitasmu di baliknya.

Wallet bukan tempat menyimpan Bitcoin. Wallet adalah tempat menyimpan kunci yang membuktikan kamu pemilik Bitcoin. Kalau kamu kehilangan kuncinya, Bitcoin-mu tidak hilang dari blockchain, tapi tidak ada yang bisa mengaksesnya lagi, selamanya.

Bab 2 · 2.2
Angka yang tidak bisa ditebak siapapun
Private Key dan Public Key

Di balik setiap wallet Bitcoin, ada sebuah angka.

Bukan angka biasa. Ini adalah angka acak yang sangat besar, 256 bit, atau sekitar 78 digit desimal. Angka ini tidak dibuat oleh manusia, tidak dipilih oleh server, dan tidak didaftarkan ke siapapun. Ia lahir dari keacakan murni di perangkatmu sendiri, pada saat wallet dibuat.

Inilah private key-mu.

Seberapa acak?

Jumlah kemungkinan private key adalah 2²⁵⁶, atau sekitar 1,2 × 10⁷⁷. Sebagai pembanding: jumlah atom di seluruh alam semesta yang bisa kita observasi diperkirakan sekitar 10⁸⁰. Ruang private key belum sebesar itu, tapi berada di kelas angka yang sama, dan itu sudah jauh melewati apa pun yang bisa disisir oleh komputer, sekarang maupun nanti. Peluang dua orang menghasilkan private key yang sama secara tidak sengaja, secara praktis, adalah nol. Ini bukan janji. Ini matematika.

Dari private key lahir public key

Private key tidak pernah dibagikan ke siapapun. Tapi dari private key, bisa diturunkan sebuah public key melalui proses matematika satu arah.

Satu arah artinya: dari private key, public key bisa dihitung dalam sepersekian detik. Arah sebaliknya tidak punya jalan pintas yang diketahui siapapun. Bukan karena ada informasi yang hilang di tengah jalan, sebab public key sepenuhnya ditentukan oleh private key-mu dan tidak ada yang tercecer. Tapi karena membalikkannya menuntut kerja komputasi yang, dengan metode terbaik yang kita punya hari ini, tidak akan selesai dalam umur alam semesta.

Mudah dihitung ke depan, tidak mungkin ditelusuri balik. Seluruh keamanan Bitcoin bersandar pada ketimpangan ini.

Lalu public key ini buat apa?

Sampai di sini kita baru tahu public key itu aman dibagikan. Tapi kenapa ia perlu ada sama sekali?

Untuk menjawabnya, ada satu benda ketiga yang belum kita sebut: tanda tangan digital.

Ketika kamu mengirim Bitcoin, wallet-mu tidak mengirimkan private key ke mana-mana. Yang ia lakukan adalah mengambil dua bahan, yaitu private key-mu dan isi transaksinya (berapa jumlahnya dan ke alamat mana), lalu mengolah keduanya menjadi satu angka baru. Angka itulah tanda tangannya.

Dua sifat tanda tangan inilah yang membuat seluruh sistem bekerja.

Ia terikat pada satu transaksi. Karena lahir dari isi transaksi itu sendiri, ia hanya sah untuk transaksi itu. Ubah jumlahnya sedikit, ganti alamat tujuannya, dan tanda tangan yang sama langsung tidak cocok lagi. Ia tidak bisa digunting dari satu transaksi lalu ditempel ke transaksi lain.

Ia bisa diperiksa tanpa private key. Ini bagian yang paling penting. Siapapun yang memegang public key-mu bisa memastikan tanda tangan itu dibuat oleh pemegang private key yang cocok, tanpa pernah tahu private key-nya. Memeriksa tidak menuntut rahasia yang sama dengan membuat.

Di sinilah pembagian tugasnya jadi jelas. Private key membuat tanda tangan, dan hanya ia yang bisa. Public key memeriksa tanda tangan, dan siapapun bisa. Satu untuk membuktikan, satu untuk memverifikasi.

Dan itulah alasan sebenarnya public key aman dibagikan. Bukan sekadar karena ia tidak membocorkan private key, tapi karena yang ia berikan ke orang lain hanyalah kemampuan memeriksa, tidak pernah kemampuan membuat.

Bagaimana persisnya angka itu dihitung, dan kenapa memeriksa jauh lebih murah daripada memalsukan, kita bongkar di Bab 4 saat masuk ke ECDSA dan Schnorr.

Kenapa ini penting?

Karena seluruh sistem kepemilikan Bitcoin berdiri di atas prinsip ini. Tidak ada username. Tidak ada password. Tidak ada verifikasi email. Kepemilikanmu dibuktikan semata-mata oleh kemampuanmu menghasilkan tanda tangan yang valid menggunakan private key, dan jaringan bisa memverifikasinya menggunakan public key tanpa perlu tahu siapa kamu.

Private key adalah identitasmu di Bitcoin. Siapapun yang memegangnya, memegang Bitcoin-mu. Tidak ada "lupa password", tidak ada "reset via email", tidak ada layanan pelanggan yang bisa membantumu. Ia adalah tanggung jawab yang absolut.

Simulasi interaktif — Private Key dan Public Key
Klik "Generate" untuk membuat sepasang kunci baru. Perhatikan bagaimana private key yang berbeda selalu menghasilkan public key yang berbeda pula. Lalu coba ubah satu karakter di private key.
Private Key
Jangan dibagikan
Belum di-generate...
Public Key
Aman dibagikan
Belum di-generate...
Private Key → Public Key ✓ Mudah
|
Public Key → Private Key ✗ Mustahil
Coba ubah satu karakter di private key di bawah ini dan lihat apa yang terjadi pada public key:
Bab 2 · 2.3
Satu kunci, banyak wajah
Dari Key ke Address

Private key menghasilkan public key. Tapi public key belum bisa langsung dipakai sebagai alamat untuk menerima Bitcoin. Ada satu langkah lagi.

Public key diproses melalui serangkaian fungsi hash, menghasilkan sebuah string yang lebih pendek dan lebih mudah dibaca. Inilah address Bitcoin. Alamat inilah yang kamu bagikan ke orang lain ketika ingin menerima Bitcoin. Bukan private key, bukan public key, tapi alamat yang diturunkan dari keduanya.

Kenapa tidak langsung pakai public key?

Dua alasan utama. Pertama, keamanan. Dengan menyembunyikan public key di balik hash, ada lapisan perlindungan tambahan kalau suatu hari ada kemajuan komputasi yang menjadi ancaman. Satu catatan penting: perlindungan ini hanya berlaku selama address itu belum pernah kamu pakai untuk mengirim. Begitu kamu membelanjakan dana darinya, public key-mu ikut terungkap di blockchain. Inilah alasan sebenarnya di balik saran yang sering kamu dengar untuk tidak memakai ulang satu address, dan kita bahas lebih jauh di 10.5. Kedua, praktis. Public key adalah string panjang yang sulit dibaca manusia. Address jauh lebih pendek dan punya mekanisme checksum yang mendeteksi kesalahan ketik.

Format address yang berbeda

Kalau kamu pernah melihat address Bitcoin, mungkin kamu perhatikan ada yang dimulai dengan angka 1, ada yang dengan 3, dan ada yang dengan bc1. Masing-masing merepresentasikan generasi teknologi yang berbeda dengan kemampuan dan efisiensi yang berbeda pula. Detail teknis di balik setiap format akan kita bahas di Bab 6.

Satu private key bisa menghasilkan banyak address berbeda tergantung format yang dipakai. Tapi semua address itu tetap milik satu private key yang sama. Inilah kenapa wallet modern bisa menampilkan beberapa address sekaligus tanpa membuat kamu kehilangan kendali.

Bagaimana wallet tahu address mana miliknya?

Kalimat barusan menyisakan satu pertanyaan. Kalau satu kunci bisa menghasilkan banyak address dalam beberapa format sekaligus, bagaimana wallet tahu persis address mana saja yang harus ia awasi? Dulu jawabannya berantakan: setiap wallet punya caranya sendiri, dan memindahkan cadangan dari satu aplikasi ke aplikasi lain sering berakhir dengan saldo yang tampak hilang padahal cuma tidak terdeteksi.

Jawaban modernnya adalah output descriptor, sebuah baris teks yang menyatakan aturannya secara lengkap. Bentuknya kira-kira begini:

wpkh([d34db33f/84h/0h/0h]xpub6.../0/*)

Dibaca satu per satu, isinya masuk akal. wpkh memberitahu formatnya, yaitu P2WPKH atau bc1q yang kita bahas di 6.4. Bagian dalam kurung siku adalah asal-usulnya, menandai perangkat mana dan jalur turunan mana yang dipakai. xpub6... adalah kunci publik induk yang bisa menurunkan seluruh anak. Dan /0/* berarti "semua address di cabang penerimaan", dengan bintang sebagai pengganti nomor urut yang tidak terbatas.

Satu baris itu memuat semua yang dibutuhkan untuk menemukan kembali seluruh danamu, tanpa mengandung satu pun rahasia. Ia memakai xpub, bukan xprv, jadi ia bisa memindai tapi tidak bisa membelanjakan. Kamu bisa menyimpannya bersama seed phrase, dan ia justru melengkapi: seed phrase memberi kemampuan menandatangani, descriptor memberi tahu di mana harus mencari.

Descriptor juga bisa menyatakan aturan yang lebih rumit dari sekadar satu kunci, termasuk multisig yang kita bahas di 6.5. Di situlah ia bertemu Miniscript dari 6.2: descriptor menjadi cara menuliskan syarat pembelanjaan yang bisa dibaca manusia sekaligus dipahami perangkat lunak. Karena itu, kalau kamu memakai skema yang lebih dari satu kunci, menyimpan descriptor bukan lagi tambahan yang bagus untuk dimiliki, melainkan bagian dari cadangan itu sendiri. Tanpa descriptor, seed phrase saja belum tentu cukup untuk menyusun ulang wallet multisig.

Simulasi interaktif — Dari Key ke Address
Private Key
Rahasia
Klik Generate...
Elliptic Curve Multiplication
Public Key
Bisa dibagikan
Menunggu...
Hashing (SHA256 + RIPEMD160 / Bech32)
Address akan muncul setelah Generate.
Klik setiap format address untuk melihat penjelasannya. Satu private key menghasilkan semua format ini sekaligus.
Bab 2 · 2.4
Kata-kata yang menyimpan segalanya
Seed Phrase

Private key adalah segalanya di Bitcoin. Tapi ada satu masalah praktis: private key adalah string 64 karakter hex yang tidak mungkin dihafal manusia.

Tidak ada yang bisa mengingat itu. Dan kalau hilang, Bitcoin-mu hilang selamanya.

Solusinya adalah seed phrase, juga disebut mnemonic phrase atau recovery phrase. Urutannya sebenarnya kebalikan dari yang sering dibayangkan orang. Wallet tidak mengubah private key menjadi kata. Yang terjadi: wallet membuat keacakan awal, menuliskannya sebagai serangkaian kata biasa, lalu dari kata-kata itulah seluruh private key-mu diturunkan. Seed phrase datang lebih dulu, private key menyusul.

Bagaimana cara kerjanya?

Seed phrase biasanya terdiri dari 12 atau 24 kata yang dipilih dari daftar 2048 kata standar yang disebut BIP-39 wordlist. Kata-kata ini bukan acak sembarangan. Mereka dipilih karena mudah dibedakan satu sama lain, menghindari kata yang mirip secara visual maupun bunyi.

Dengan 2048 kata dan 12 posisi, kombinasi kata yang mungkin adalah 2048¹². Tapi tidak semua kombinasi itu sah: kata terakhir membawa checksum, sehingga frasa 12 kata sebenarnya mewakili 128 bit entropi, dan frasa 24 kata mewakili 256 bit. Angka yang terakhir itu persis sebesar ruang private key yang kita hitung di 2.2, yaitu sekitar 1,2 × 10⁷⁷ kemungkinan. Peluang dua orang menghasilkan seed phrase yang sama secara tidak sengaja, secara praktis, adalah nol. Dua belas kata yang terdengar sepele itu memikul beban yang sama dengan angka 256 bit di bab sebelumnya.

Dari seed phrase ini, wallet bisa menghasilkan kembali seluruh hierarki kunci. Tidak hanya satu private key, tapi ratusan bahkan ribuan address sekaligus. Inilah yang disebut HD wallet, atau Hierarchical Deterministic wallet.

Satu seed phrase, satu wallet

Seed phrase adalah representasi lengkap dari seluruh wallet-mu. Siapapun yang punya seed phrase-mu, punya akses ke semua Bitcoin di wallet tersebut, dari semua address, semua format, semua network.

Ini berarti dua hal penting. Pertama, backup seed phrase adalah backup seluruh wallet. Tidak perlu backup tiap private key satu per satu. Kedua, seed phrase harus disimpan offline, di tempat yang aman, tidak pernah difoto, tidak pernah diketik di komputer yang terhubung internet, dan tidak pernah diberikan ke siapapun dengan alasan apapun.

Tidak ada perusahaan wallet yang legitimate yang pernah meminta seed phrase-mu. Tidak ada support yang butuh seed phrase-mu. Tidak ada form yang perlu kamu isi dengan seed phrase-mu. Kalau ada yang memintanya, itu penipuan. Selalu.

Masalah yang belum kita selesaikan

Saran standar soal seed phrase terdengar sederhana: tulis di kertas, simpan di tempat aman. Tapi coba pikirkan baik-baik dan kamu akan menemukan bahwa saran itu menarik dua arah sekaligus. Semakin banyak salinan yang kamu buat, semakin kecil risiko kehilangan, tapi semakin besar peluang salah satunya ditemukan orang. Semakin sedikit salinan dan semakin tersembunyi, semakin aman dari pencuri, tapi semakin mudah lenyap karena kebakaran, banjir, atau sekadar lupa di mana menaruhnya.

Tidak ada jumlah salinan yang menyelesaikan keduanya. Selama satu kertas berisi seluruh rahasia, kamu hanya bisa memilih risiko mana yang lebih kamu takuti.

Memecah rahasia jadi kepingan

Ada cara keluar dari tarik-menarik itu, dan namanya Shamir Secret Sharing. Rahasianya dipecah menjadi beberapa keping, misalnya lima, dengan syarat cukup tiga keping untuk menyusunnya kembali. Yang membuatnya menarik bukan pembagiannya, melainkan sifat matematisnya: satu atau dua keping tidak membocorkan apa-apa. Bukan membocorkan sebagian, bukan mempersempit tebakan, benar-benar nol. Sampai keping ketiga berkumpul, isinya sama tidak bergunanya dengan angka acak.

Artinya kamu bisa menyebar lima keping di lima tempat berbeda. Dua boleh hilang tanpa kamu kehilangan apa pun, dan dua boleh ditemukan orang tanpa mereka mendapat apa pun. Tarik-menarik tadi selesai.

Tapi ada satu kelemahan yang jarang disebut. Untuk memakainya, keping-keping itu harus disatukan kembali di satu perangkat, dan pada detik itu seluruh seed phrase-mu utuh kembali di satu tempat. Kalau perangkat itu sedang disusupi, semua kerja tadi sia-sia. Multisig yang kita bahas di 6.5 tidak punya masalah ini, karena kuncinya tidak pernah disatukan: masing-masing menandatangani sendiri-sendiri di perangkatnya sendiri. Karena itu banyak yang menganggap multisig lebih aman untuk jumlah besar, dan Shamir lebih cocok untuk cadangan yang jarang disentuh.

Dan kalau kamu meninggal?

Ini pertanyaan yang jarang dibahas buku Bitcoin, padahal justru paling sering terjadi. Sifat yang membuat Bitcoin benar-benar milikmu, yaitu tidak ada pihak yang bisa mengambilnya tanpa kuncimu, berlaku juga bagi keluargamu. Tidak ada bank yang bisa dihubungi, tidak ada surat kematian yang bisa ditunjukkan, tidak ada proses hukum yang bisa memaksa jaringan menyerahkan apa pun. Kalau pengetahuan itu ikut hilang bersamamu, dananya ikut hilang selamanya.

Yang mengejutkan, hambatan terbesarnya biasanya bukan teknis. Ahli warismu perlu tahu tiga hal, dan hanya yang ketiga yang berbau teknologi: bahwa Bitcoin itu ada, di mana kepingannya disimpan, dan bagaimana memakainya. Banyak kasus kehilangan bukan karena kriptografinya sulit, melainkan karena keluarga tidak pernah tahu ada yang harus dicari.

Pendekatannya bermacam-macam. Ada yang menitipkan sebagian keping Shamir ke pengacara atau anggota keluarga yang berbeda. Ada yang memakai multisig di mana satu kunci dipegang pihak ketiga yang hanya ikut menandatangani setelah kematian terbukti. Ada juga yang memakai timelock, sehingga sebuah transaksi ke ahli waris otomatis menjadi sah setelah jangka waktu tertentu berlalu tanpa diperbarui. Cara terakhir itu kita bahas di Bab 15.

Satu peringatan yang perlu ditutup dengan jujur: kerumitan itu sendiri adalah risiko. Skema warisan yang terlalu berbelit sudah menghilangkan lebih banyak Bitcoin daripada skema yang sederhana, karena pemiliknya sendiri lupa cara kerjanya, atau ahli warisnya menyerah di tengah jalan. Rencana yang benar-benar dipahami oleh orang yang akan menjalankannya jauh lebih berharga daripada rencana yang canggih di atas kertas.

Simulasi interaktif — Seed Phrase Generator
Wallet membuat keacakan awal, menuliskannya sebagai kata-kata biasa, lalu menurunkan seluruh private key dari kata-kata itu. Klik Generate untuk membuat seed phrase baru dari BIP-39 wordlist.
🔒 Peringatan: Seed phrase ini dibuat untuk tujuan edukasi dan tidak boleh digunakan untuk menyimpan Bitcoin sungguhan. Seed phrase yang sesungguhnya harus dibuat oleh wallet yang terpercaya dan disimpan secara offline.
Dari seed phrase ini, wallet menurunkan:
Address #1
Address #2
Address #3
Satu seed phrase menghasilkan jutaan address yang berbeda secara deterministik. Backup seed phrase = backup seluruh wallet.
Bab 2 · 2.5
Di mana private key-mu disimpan?
Jenis-jenis Wallet

Wallet adalah tempat menyimpan kunci. Tapi tidak semua wallet diciptakan sama. Ada yang lebih nyaman, ada yang lebih aman, ada yang keduanya dengan trade-off tertentu.

Perbedaan utama antara jenis wallet bukan di tampilannya, tapi di satu pertanyaan: di mana private key disimpan?

Hot Wallet

Hot wallet adalah wallet yang terhubung ke internet. Aplikasi di ponselmu, ekstensi browser, aplikasi desktop yang online, semuanya masuk kategori ini.

Kelebihannya mudah diakses, cepat untuk transaksi sehari-hari, dan biasanya gratis. Kekurangannya karena terhubung ke internet, ia lebih rentan terhadap serangan. Malware, phishing, atau celah keamanan di aplikasi bisa mengekspos private key-mu.

Hot wallet cocok untuk jumlah kecil yang sering dipakai, seperti dompet di saku. Kamu tidak menaruh semua tabunganmu di dompet fisik yang dibawa ke mana-mana.

Cold Wallet

Cold wallet adalah wallet yang tidak pernah terhubung ke internet. Private key dibuat dan disimpan di perangkat yang offline sepenuhnya.

Jenis yang paling umum adalah hardware wallet, perangkat fisik khusus seperti USB yang menyimpan private key di dalam chip yang terisolasi. Untuk menandatangani transaksi, kamu menghubungkan perangkat ini ke komputer, tapi private key tidak pernah keluar dari perangkat.

Yang paling sederhana adalah paper wallet, private key dan seed phrase dicetak atau ditulis di atas kertas dan disimpan di tempat aman. Tidak ada yang bisa meretasnya secara digital karena ia tidak digital.

Tapi paper wallet sudah lama tidak lagi direkomendasikan, dan alasannya penting untuk dipahami sebelum kamu membuatnya. Untuk membelanjakan dananya, kamu harus memasukkan private key itu ke perangkat yang terhubung internet, dan pada saat itu juga seluruh keunggulan offline-nya hilang. Ia juga tidak mendukung hierarki address seperti seed phrase modern, sehingga satu kertas hanya melayani satu address. Kalau tujuanmu penyimpanan jangka panjang, seed phrase yang ditulis tangan dan disimpan offline memberikan keamanan yang sama tanpa kelemahan-kelemahan itu.

Cold wallet cocok untuk menyimpan jumlah besar dalam jangka panjang, seperti brankas di rumah.

Aturan praktis

Tidak ada yang salah dengan memakai keduanya. Banyak pengguna Bitcoin menyimpan sebagian kecil di hot wallet untuk transaksi harian, dan menyimpan sebagian besar di cold wallet untuk jangka panjang.

Keamanan Bitcoin bukan tentang platform atau aplikasi yang paling canggih. Ia tentang seberapa baik kamu menjaga private key-mu dari jangkauan orang lain dan koneksi internet.

Sepenuhnya terputus: air-gapped signing

Hardware wallet biasa tetap ditancapkan ke komputer lewat USB saat menandatangani. Private key-nya memang tidak ikut keluar, tapi tetap ada jalur data antara perangkat rahasiamu dan mesin yang mungkin terinfeksi. Bagi sebagian orang, jalur itu sendiri sudah terlalu banyak.

Air-gapped signing menghapusnya sama sekali. Perangkat penandatangan tidak pernah menyentuh komputer, tidak lewat USB, tidak lewat Bluetooth, tidak lewat apa pun. Yang berpindah antara keduanya hanya gambar: kode QR yang ditampilkan di satu layar lalu dipotret kamera perangkat satunya.

Alurnya bersandar pada PSBT yang kita bahas di 3.6. Komputermu menyusun transaksi yang belum ditandatangani, lalu menampilkannya sebagai QR. Perangkat air-gapped memindai QR itu, menunjukkan isinya di layarnya sendiri supaya kamu bisa memeriksa jumlah dan alamat tujuan, lalu menandatanganinya. Hasilnya ditampilkan sebagai QR baru, dipindai balik oleh komputer, dan barulah disiarkan ke jaringan.

Perhatikan bahwa yang berpindah bolak-balik cuma transaksi, tidak pernah kuncinya. Dan karena jalurnya berupa gambar, malware di komputer tidak punya saluran untuk menjangkau perangkat penandatangan. Beberapa perangkat bahkan dijual tanpa port data sama sekali, hanya kamera, layar, dan slot kartu microSD.

Ada satu langkah yang tidak boleh dilewati, dan justru di situ kekuatannya. Layar perangkat penandatangan menunjukkan jumlah dan alamat tujuan sebelum kamu setujui. Periksa di layar itu, bukan di layar komputer. Kalau komputermu disusupi dan diam-diam mengganti alamat tujuan, satu-satunya tempat kebohongan itu ketahuan adalah layar perangkat yang tidak terhubung ke mana-mana.

Eksplorasi — Jenis-jenis Wallet
Bab 2 · 2.6
Siapa yang memegang kuncinya?
Custodial vs Non-Custodial

Ada satu pertanyaan yang lebih penting dari memilih aplikasi wallet mana yang terbaik: siapa yang memegang private key-mu?

Jawabannya menentukan segalanya.

Custodial wallet

Custodial artinya ada pihak lain yang menyimpan private key-mu atas namamu. Exchange seperti Binance, Coinbase, atau Indodax adalah contoh paling umum. Ketika kamu membeli Bitcoin di sana dan tidak menariknya, Bitcoin itu ada di wallet mereka, bukan wallet-mu.

Kamu hanya punya saldo di buku rekening mereka. Seperti menabung di bank.

Ini nyaman. Tidak perlu urus seed phrase, tidak perlu takut salah kirim, ada customer service kalau ada masalah. Tapi ada harga yang harus dibayar: kamu tidak benar-benar memegang Bitcoin-mu.

Exchange bisa membekukan akunmu. Exchange bisa bangkrut. Exchange bisa diretas. Semua ini sudah terjadi, berkali-kali, di berbagai platform di seluruh dunia.

Non-custodial wallet

Non-custodial artinya kamu sendiri yang memegang private key. Tidak ada pihak ketiga yang bisa memblokir, membekukan, atau mengambil Bitcoin-mu.

Tapi tanggung jawabnya penuh ada di tanganmu. Tidak ada customer service. Tidak ada pemulihan akun. Kalau seed phrase hilang, Bitcoin hilang selamanya.

"Not your keys, not your coins"

Ini bukan sekadar slogan. Ini adalah prinsip fundamental Bitcoin. Selama private key ada di tangan orang lain, kamu tidak benar-benar memiliki Bitcoin. Kamu memiliki janji dari orang lain bahwa mereka akan memberikanmu Bitcoin kalau kamu memintanya.

Dan janji bisa diingkari.

Custodial wallet bukan pilihan yang setara dengan non-custodial. Ia adalah trade-off yang sadar: kamu menukar kedaulatan atas uangmu dengan kenyamanan. Pahami konsekuensinya sebelum memilih.

Simulasi — Apa yang terjadi ketika exchange bermasalah?
Pilih skenario untuk melihat apa yang terjadi pada pengguna custodial wallet vs non-custodial wallet.
🏦 Custodial Wallet
🔑 Non-Custodial Wallet
← Chapter List
BLK #915,217
Bab 3 · 3.1
Bukan transfer saldo, tapi rantai kriptografi
Apa itu Transaksi?

Kalau kamu pernah transfer uang lewat bank, kamu terbiasa dengan model yang sederhana: saldo berkurang di satu rekening, bertambah di rekening lain. Bank mencatat perubahannya. Selesai.

Bitcoin tidak bekerja seperti itu.

Di Bitcoin, tidak ada yang namanya "saldo." Tidak ada angka yang tersimpan di suatu tempat yang bertuliskan "kamu punya 1 BTC." Yang ada adalah sejarah transaksi, dan dari sejarah itulah dihitung berapa Bitcoin yang bisa kamu gunakan saat ini.

Transaksi adalah instruksi pemindahan

Setiap transaksi Bitcoin adalah sebuah pesan yang ditandatangani secara kriptografi, berisi dua hal utama: dari mana Bitcoin ini berasal, dan ke mana Bitcoin ini akan pergi.

"Dari mana" adalah referensi ke transaksi sebelumnya yang memberikan Bitcoin kepadamu. "Ke mana" adalah instruksi kepada siapa Bitcoin ini dikirim dan berapa jumlahnya.

Jaringan memverifikasi bahwa kamu memang berhak memindahkan Bitcoin yang kamu referensikan, lalu menyiarkan transaksi ke seluruh node. Kalau valid, ia masuk ke dalam block, dan menjadi bagian permanen dari blockchain.

Bukan angka, tapi rantai

Ini yang membuat Bitcoin berbeda secara fundamental dari sistem keuangan konvensional. Kepemilikanmu bukan angka di database. Ia adalah rantai kriptografi yang bisa ditelusuri sampai ke block pertama, Genesis Block, yang ditambang Satoshi pada Januari 2009.

Setiap Bitcoin yang ada di dunia ini bisa dilacak asal-usulnya. Tidak ada yang bisa muncul dari ketiadaan.

Di Bitcoin, "memiliki" Bitcoin artinya memiliki kemampuan untuk menandatangani transaksi yang mereferensikan output yang belum digunakan. Bukan angka di database, tapi kunci yang membuka sebuah output. Konsep ini akan jadi jauh lebih jelas di 3.2.

Bab 3 · 3.2
Uang kertas digital yang tidak bisa dipotong
UTXO — Unspent Transaction Output

UTXO adalah singkatan dari Unspent Transaction Output. Ini adalah konsep paling penting di Bab 3, dan mungkin salah satu konsep paling sering disalahpahami di Bitcoin.

Lupakan konsep saldo

Di sistem perbankan, kepemilikanmu direpresentasikan sebagai angka: saldo. Bank menyimpan angka itu di database mereka dan mengubahnya setiap kali ada transaksi.

Bitcoin tidak punya saldo. Yang Bitcoin punya adalah kumpulan output transaksi yang belum digunakan. Setiap output itu punya nilai tertentu dan hanya bisa digunakan sekali, oleh orang yang punya kunci yang tepat. Itulah UTXO.

Analogi uang kertas

Cara termudah memahami UTXO adalah membayangkan uang kertas fisik. Kalau kamu punya uang kertas Rp 100.000, kamu tidak punya "saldo Rp 100.000." Kamu punya selembar kertas bernilai Rp 100.000 yang fisiknya ada di tanganmu.

Kalau kamu mau membayar Rp 30.000, kamu tidak bisa memotong uang kertasnya. Kamu serahkan seluruh Rp 100.000, pedagang mengambil Rp 30.000, dan mengembalikan Rp 70.000 kepadamu. UTXO bekerja persis seperti itu. Kamu tidak bisa membelanjakan sebagian. Kamu harus membelanjakan seluruhnya, dan sisanya kembali kepadamu sebagai UTXO baru.

"Saldo" Bitcoin sebenarnya

Kalau wallet-mu menampilkan "0.55 BTC", itu bukan satu angka di satu tempat. Itu bisa saja hasil penjumlahan dari beberapa UTXO: misalnya satu UTXO bernilai 0.05 BTC dari Alice, satu UTXO bernilai 0.12 BTC dari Bob, satu UTXO bernilai 0.08 BTC dari mining reward, dan satu UTXO bernilai 0.30 BTC dari Charlie. Wallet-mu menjumlahkan semua UTXO yang bisa kamu tandatangani, dan menampilkannya sebagai satu angka.

Kenapa UTXO?

Model UTXO punya beberapa keunggulan. Pertama, ia memudahkan verifikasi: untuk mengecek apakah sebuah transaksi valid, node hanya perlu memastikan UTXO yang direferensikan ada dan belum digunakan. Kedua, ia mencegah double-spend secara alami: begitu sebuah UTXO dipakai, ia hilang dari set UTXO yang aktif dan tidak bisa dipakai lagi.

Seluruh state Bitcoin bisa diringkas dalam satu set data: UTXO set. Ini adalah daftar semua output transaksi yang belum digunakan di seluruh jaringan. Per pertengahan 2026 ukurannya sekitar 11 GB, berisi lebih dari 170 juta UTXO. Setiap full node menyimpannya dan menggunakannya untuk memvalidasi setiap transaksi baru.

Siapa yang memilih UTXO untukmu?

Di simulasi tadi kamu memilih sendiri UTXO mana yang dipakai. Dalam pemakaian sehari-hari kamu tidak pernah melakukan itu. Kamu mengetik jumlah dan alamat, lalu menekan kirim. Tapi keputusan itu tetap harus diambil oleh seseorang, dan yang mengambilnya adalah wallet-mu. Proses itu namanya coin selection, dan ia menjelaskan banyak hal yang terasa aneh bagi pengguna baru.

Kenapa penting? Karena seperti yang kita lihat di 3.4, ongkos transaksi ditentukan oleh bentuknya, bukan nilainya. Setiap UTXO yang ikut dipakai menambah satu input, dan setiap input menambah ukuran. Memilih tiga UTXO kecil alih-alih satu UTXO besar bisa melipatgandakan fee untuk pembayaran yang jumlahnya sama persis.

Wallet menghadapi beberapa tujuan yang saling bertabrakan. Ia ingin fee semurah mungkin, jadi sebaiknya memakai sesedikit mungkin input. Ia juga ingin menghindari kembalian yang terlalu kecil, karena kembalian receh hari ini akan jadi UTXO yang mahal dibelanjakan besok. Dan idealnya ia tidak membocorkan lebih banyak informasi daripada yang perlu, karena setiap UTXO yang disatukan dalam satu transaksi memberitahu dunia bahwa keduanya milik orang yang sama. Kita bahas akibat privasinya di Bab 10.

Cara paling ideal adalah menemukan kombinasi yang jumlahnya pas, sehingga tidak perlu ada output kembalian sama sekali. Transaksinya jadi lebih kecil, lebih murah, dan tidak menyisakan jejak kembalian yang bisa dianalisis. Bitcoin Core menyebut pencarian ini branch and bound, dan ia memang mencoba menemukan kecocokan pas itu lebih dulu. Masalahnya kecocokan seperti itu jarang ada, jadi kalau pencarian gagal, wallet jatuh ke cara lain yang menerima adanya kembalian.

Di sinilah beberapa hal yang membingungkan pengguna baru jadi masuk akal. Kenapa mengirim jumlah kecil kadang jauh lebih mahal dari biasanya? Karena danamu tersebar di banyak UTXO receh, dan wallet terpaksa menyatukan banyak input. Kenapa fee bisa berbeda padahal jumlah yang dikirim sama? Karena bentuk transaksinya berbeda, meski nilainya sama.

Itu juga sebabnya banyak wallet menyediakan pilihan memilih UTXO secara manual, biasanya bernama coin control. Untuk pemakaian biasa, membiarkan wallet memilih sudah cukup. Tapi begitu kamu peduli pada privasi atau sedang menghadapi fee tinggi, mengambil alih keputusan itu bisa sangat berarti. Dan kalau danamu sudah terlanjur tersebar di banyak UTXO kecil, ada langkah khusus untuk merapikannya yang kita bahas di 10.4.

Simulasi interaktif — UTXO dan Transaksi
Tentukan jumlah yang ingin dikirim, lalu pilih UTXO yang akan digunakan. Setiap UTXO harus digunakan seluruhnya. Sisanya kembali sebagai UTXO baru.
0.050 BTC
UTXO dipilih
0 UTXO
Total input
0.000 BTC
Kembalian
0.000 BTC
Hasil transaksi
Pilih UTXO secara manual atau klik "Pilih otomatis". Setiap UTXO harus digunakan seluruhnya. Sisanya kembali sebagai UTXO baru (kembalian).
Format asli UTXO seperti di Bitcoin Core — field address dihitung node dari scriptPubKey, bukan data on-chain
UTXO · Raw Format bitcoin-cli listunspent
Kirim transaksi dulu untuk melihat raw data UTXO yang dikonsumsi.
Bab 3 · 3.3
Anatomi di dalam sebuah transaksi
Input dan Output

Setiap transaksi Bitcoin punya dua bagian utama: input dan output. Input adalah referensi ke UTXO yang kamu konsumsi. Output adalah instruksi ke mana Bitcoin pergi setelah transaksi ini.

Input

Input bukan angka. Input adalah pointer ke output transaksi sebelumnya yang belum digunakan. Ia berisi dua hal: referensi ke UTXO mana yang dikonsumsi, dan bukti bahwa kamu berhak menggunakannya berupa tanda tangan kriptografi dari private key-mu.

Satu transaksi bisa punya banyak input. Ini terjadi ketika kamu perlu menggabungkan beberapa UTXO kecil untuk membayar jumlah yang lebih besar, seperti menggabungkan beberapa lembar uang kertas kecil untuk membayar sesuatu yang nilainya lebih besar.

Output

Output menentukan ke mana Bitcoin pergi. Setiap output berisi dua hal: jumlah BTC yang dikirim, dan kondisi yang harus dipenuhi untuk membelanjakan output ini di masa depan. Kondisi itu biasanya sederhana: siapapun yang bisa membuktikan mereka memiliki private key yang sesuai dengan alamat ini boleh membelanjakan output ini.

Satu transaksi juga bisa punya banyak output. Kamu bisa mengirim ke beberapa alamat sekaligus dalam satu transaksi, dan output kembalian ke diri sendiri juga dihitung sebagai output terpisah.

Fee tersembunyi

Ada satu hal menarik: fee miner tidak ditulis secara eksplisit di dalam transaksi. Fee adalah selisih antara total nilai input dan total nilai output. Kalau kamu punya input senilai 0.1 BTC dan membuat output senilai 0.099 BTC, maka 0.001 BTC sisanya otomatis menjadi fee untuk miner yang memasukkan transaksimu ke dalam block.

Inilah kenapa sangat penting untuk selalu cek total output sebelum menandatangani transaksi. Kalau kamu lupa membuat output kembalian dan hanya membuat satu output ke penerima, seluruh selisihnya menjadi fee miner. Ada kasus nyata di mana seseorang membayar fee ribuan dolar karena lupa menambahkan output kembalian.

Selain jumlah dan tujuan, sebuah transaksi juga bisa membawa kondisi waktu: kapan paling awal ia boleh masuk ke block, atau berapa lama sebuah UTXO harus menunggu sebelum bisa dibelanjakan. Bitcoin punya empat mekanisme untuk itu, dan seluruhnya kita bongkar di Bab 15.

Simulasi interaktif — Anatomi Transaksi
Pilih skenario transaksi dan klik setiap elemen untuk melihat penjelasannya.
Input
TRANSAKSI
Output
Format transaksi asli seperti di Bitcoin Core — field address dihitung node dari scriptPubKey, bukan data on-chain
Transaksi · Raw Format bitcoin-cli getrawtransaction
Pilih skenario transaksi untuk melihat raw data-nya.
Bab 3 · 3.4
Bukan tarif, tapi tawaran kepada miner
Transaction Fee

Fee di Bitcoin tidak bekerja seperti biaya transfer di bank. Tidak ada tarif tetap, tidak ada persentase dari nilai yang dikirim, dan tidak ada yang menetapkannya secara terpusat.

Fee di Bitcoin ditentukan oleh pasar.

Bagaimana fee dihitung

Di Bitcoin, fee dihitung berdasarkan ukuran transaksi dalam bytes, bukan berdasarkan nilai Bitcoin yang dikirim. Mengirim 1 BTC dan mengirim 0.00001 BTC bisa punya fee yang sama persis kalau ukuran transaksinya sama.

Satuan yang dipakai adalah satoshi per vbyte (sat/vB). Satu satoshi adalah unit terkecil Bitcoin: 0.00000001 BTC. Satu vbyte adalah ukuran transaksi dalam virtual bytes, satuan yang memperhitungkan efisiensi format transaksi modern.

Kenapa fee bisa naik turun

Setiap block Bitcoin punya kapasitas terbatas, sekitar 1-4 MB per block, dan block baru muncul rata-rata setiap 10 menit. Ketika banyak orang ingin bertransaksi sekaligus, ruang di block menjadi rebutan.

Miner memilih transaksi mana yang masuk ke block mereka. Mereka akan memprioritaskan transaksi yang menawarkan fee per vbyte tertinggi karena itu memaksimalkan pendapatan mereka. Transaksi dengan fee rendah akan menunggu lebih lama, atau bahkan tidak masuk ke block sama sekali kalau jaringan sangat sibuk.

Hubungan fee dan UTXO

Semakin banyak input dalam transaksi, semakin besar ukuran transaksinya dalam bytes, semakin tinggi fee yang perlu dibayar. Inilah kenapa wallet modern berusaha mengelola UTXO dengan efisien, mengumpulkan UTXO kecil-kecil ketika fee sedang murah, supaya tidak perlu menggunakan banyak input saat fee sedang mahal.

RBF (Replace by Fee)

Kalau transaksimu sudah disiarkan ke jaringan tapi belum masuk ke block dan fee-nya terlalu rendah, ada mekanisme yang disebut RBF atau Replace by Fee. Kamu bisa mengirim ulang transaksi yang sama dengan fee lebih tinggi, dan miner akan memprioritaskan versi yang baru. Satu syarat yang sering terlewat: transaksi aslinya harus sudah ditandai sebagai replaceable sejak dibuat. Kalau tidak ditandai, banyak node akan menolak versi penggantinya. Detail mekanismenya, termasuk alternatif kalau kamu penerima dan bukan pengirim, kita bahas di 9.3.

Fee bukan biaya yang diambil oleh "Bitcoin." Fee adalah insentif yang kamu tawarkan kepada miner supaya mereka memprioritaskan transaksimu. Tidak ada perusahaan, tidak ada platform, tidak ada pihak ketiga yang menerimanya. Fee langsung masuk ke miner yang menemukan block-mu.

Simulasi interaktif — Fee Calculator
Atur jumlah input dan output untuk melihat ukuran transaksi, lalu pilih fee rate untuk estimasi konfirmasi.
2 input
2 output
Ukuran transaksi 0 vB
🟣 Overhead (header, version, locktime) 10 vB
🔴 Input (± 68 vB per input) 136 vB
🟢 Output (± 31 vB per output) 62 vB
Hemat
5 sat/vB
~1-6 jam
Normal
20 sat/vB
~10-30 menit
Prioritas
100 sat/vB
~block berikutnya
Fee total
0 sat
0.000000 BTC
Rate dipilih
20 sat/vB
~10-30 menit
Estimasi konfirmasi
~2 block
1 block ≈ 10 menit
Posisimu di antrian mempool
Fee tinggi (prioritas)
Fee sedang
Fee rendah
Transaksimu
Format fee data seperti di Bitcoin Core — getmempoolentry
Fee & Mempool Entry · Raw Format bitcoin-cli getmempoolentry
Atur slider dan pilih fee rate untuk melihat raw data-nya.
Bab 3 · 3.5
Antrian sebelum masuk blockchain
Mempool

Ketika kamu mengirim transaksi Bitcoin, ia tidak langsung masuk ke blockchain. Ia masuk ke antrian dulu.

Antrian itu disebut mempool, kependekan dari memory pool. Setiap node di jaringan Bitcoin menyimpan mempool-nya sendiri, daftar transaksi yang sudah disiarkan, sudah divalidasi, tapi belum dikonfirmasi ke dalam block.

Perjalanan sebuah transaksi

Begitu kamu menandatangani dan menyiarkan transaksi, ia menyebar ke seluruh node jaringan dalam hitungan detik melalui proses yang disebut gossiping. Setiap node meneruskan transaksi yang valid ke node-node tetangganya. Tapi masuk ke mempool bukan berarti selesai. Transaksimu masih menunggu di sana sampai seorang miner memutuskan untuk memasukkannya ke dalam block yang sedang mereka tambang.

Miner memilih transaksi

Miner tidak wajib memasukkan semua transaksi di mempool. Mereka memilih transaksi mana yang menghasilkan total fee tertinggi untuk block mereka. Strategi yang paling umum adalah memilih transaksi dengan fee per vbyte tertinggi terlebih dahulu sampai kapasitas block penuh. Inilah kenapa fee rate yang kamu pilih menentukan seberapa cepat transaksimu dikonfirmasi.

Mempool bisa penuh

Saat jaringan sangat sibuk, ukuran mempool bisa membengkak sampai ratusan megabyte. Transaksi dengan fee terlalu rendah bisa terjebak di sana berjam-jam, bahkan berhari-hari. Beberapa node bahkan akan menghapus transaksi dengan fee sangat rendah dari mempool mereka kalau memori sudah penuh.

Konfirmasi

Begitu transaksimu masuk ke sebuah block, ia mendapat satu konfirmasi. Setiap block baru yang ditambang di atas block tersebut menambah satu konfirmasi lagi. Semakin banyak konfirmasi, semakin sulit untuk membalik transaksi itu, semakin final transaksimu. Untuk transaksi kecil sehari-hari, satu konfirmasi biasanya sudah cukup. Untuk transaksi besar, kebanyakan orang menunggu 6 konfirmasi sebelum menganggap transaksi benar-benar final.

Mempool bukan satu antrian global yang sama untuk semua orang. Setiap node punya mempool-nya sendiri dengan aturan dan kapasitas yang bisa berbeda. Tapi karena node saling berbagi transaksi, secara praktis sebagian besar node punya isi mempool yang mirip.

Simulasi interaktif — Dari Broadcast ke Konfirmasi
Pilih fee rate lalu klik Broadcast. Simulasi berjalan otomatis sampai transaksimu mendapat 6 konfirmasi.
Hemat
5 sat/vB
risiko tunggu lama
Normal
20 sat/vB
~2 block
Prioritas
100 sat/vB
block berikutnya
Langkah 1
Pilih fee rate, lalu klik "Broadcast". Simulasi akan berjalan otomatis sampai transaksimu dikonfirmasi.
Broadcast
Mempool
Blockchain
Konfirmasi transaksimu
Jumlah konfirmasi yang dianggap "aman" tidak ada standarnya. 6 konfirmasi adalah konvensi yang umum dipakai, bukan aturan protokol. Transaksi kecil sehari-hari bisa dianggap cukup dengan 1 konfirmasi. Exchange besar bisa mensyaratkan lebih dari 6.
Status transaksi dari mempool sampai dikonfirmasi
Transaction Status · Raw Format bitcoin-cli getmempoolentry / getrawtransaction
Broadcast transaksi terlebih dahulu untuk melihat raw data-nya.
Bab 3 · 3.6
Dari pembuatan sampai final
Lifecycle Sebuah Transaksi

Kita sudah belajar semua komponen: UTXO, input, output, fee, mempool, konfirmasi. Sekarang kita satukan semuanya dalam satu gambaran utuh.

Inilah perjalanan lengkap sebuah transaksi Bitcoin, dari awal sampai akhir.

1. Pembuatan

Wallet memilih UTXO yang cukup untuk menutupi jumlah yang ingin dikirim plus fee. Ia menyusun transaksi dengan input yang mereferensikan UTXO tersebut, output ke penerima, dan output kembalian ke pengirim kalau ada sisa.

2. Penandatanganan

Private key pengirim digunakan untuk membuat tanda tangan kriptografi yang membuktikan kepemilikan UTXO yang direferensikan. Tanda tangan ini unik untuk transaksi ini dan tidak bisa dipakai ulang untuk transaksi lain.

3. Broadcast

Transaksi yang sudah ditandatangani disiarkan ke jaringan. Node pertama yang menerimanya memvalidasi: apakah UTXO-nya ada dan belum dipakai? Apakah tanda tangannya valid? Kalau ya, ia meneruskan ke node-node tetangganya.

4. Mempool

Transaksi masuk ke mempool di setiap node yang menerimanya. Ia menunggu di sana bersama ribuan transaksi lain. Fee rate menentukan seberapa cepat miner memilihnya.

5. Seleksi miner

Ketika seorang miner sedang menyusun block baru, ia memilih transaksi dari mempool berdasarkan fee per vbyte tertinggi. Transaksimu masuk ke kandidat block yang sedang ditambang.

6. Block ditemukan

Miner menemukan bukti kerja yang valid dan menyiarkan block ke jaringan. Node-node lain memverifikasi dan menambahkannya ke blockchain. UTXO yang direferensikan ditandai spent. Output baru menjadi UTXO segar milik penerima.

7. Konfirmasi bertambah

Setiap block baru yang ditambang di atas block tersebut menambah satu konfirmasi. Semakin banyak konfirmasi, semakin dalam transaksi tertanam di blockchain, semakin tidak mungkin dibalik.

PSBT: Partially Signed Bitcoin Transaction

Lifecycle di atas menggambarkan transaksi yang ditandatangani oleh satu pihak. Tapi bagaimana kalau transaksi perlu ditandatangani oleh beberapa pihak, misalnya multisig 2-of-3, atau kalau penandatanganan dilakukan di hardware wallet yang terpisah dari wallet yang menyusun transaksi?

PSBT (BIP 174) adalah format standar untuk transaksi yang sedang "dalam proses" ditandatangani. Ia memisahkan dua peran yang sebelumnya selalu digabung: peran penyusun transaksi (yang memilih UTXO, menentukan output, dan menghitung fee) dan peran penandatangan (yang punya private key). Dengan PSBT, kedua peran ini bisa dilakukan oleh perangkat atau pihak yang berbeda.

Alurnya: wallet software menyusun transaksi dan mengekspornya sebagai file PSBT. File ini berisi semua informasi yang dibutuhkan untuk menandatangani: input mana yang perlu ditandatangani, script yang harus dipenuhi, dan metadata tambahan. Hardware wallet atau penandatangan lain membaca file PSBT, memverifikasi detailnya, menambahkan tanda tangannya, dan mengembalikan PSBT yang sudah sebagian ditandatangani. Setelah semua tanda tangan terkumpul, PSBT digabungkan dan difinalisasi menjadi transaksi yang siap di-broadcast.

Seluruh proses ini, dari pembuatan sampai konfirmasi pertama, bisa selesai dalam 10 menit kalau jaringan tidak sedang sibuk dan fee-mu cukup. Tanpa bank, tanpa izin, tanpa jam kerja, tanpa hari libur. Di manapun di dunia, kapanpun.

Simulasi interaktif — Lifecycle Transaksi
Klik "Mulai simulasi" untuk melihat perjalanan transaksi dari pembuatan sampai konfirmasi. Klik setiap tahap untuk membaca penjelasannya.
← Chapter List
BLK #915,217
Bab 4 · 4.1
Mesin penghancur yang deterministik
Fungsi Hash

Bayangkan sebuah mesin ajaib. Kamu bisa memasukkan apapun ke dalamnya: selembar kertas, satu kata, atau seluruh isi perpustakaan nasional. Mesin itu akan selalu mengeluarkan sebuah kartu berukuran sama, berisi deretan angka dan huruf sepanjang 64 karakter.

Itulah fungsi hash.

Seperti sidik jari, tapi untuk data

Setiap data punya "sidik jari" hash yang unik. Seperti sidik jari manusia, hash sebuah data bisa dipakai untuk memverifikasi identitasnya tanpa perlu membandingkan seluruh isinya. Dan seperti sidik jari, dari hash tidak bisa direkonstruksi data aslinya.

Kalau kamu ingin memastikan file yang kamu unduh tidak rusak atau dimanipulasi di tengah jalan, kamu bisa membandingkan hash-nya dengan hash yang disediakan oleh sumbernya. Kalau hash-nya sama, file-nya identik. Kalau berbeda satu bit pun, hash-nya berbeda total.

Sifat pertama: deterministik

Input yang sama selalu menghasilkan output yang sama. SHA-256("Bitcoin") akan selalu menghasilkan hash yang persis sama, di komputer manapun, kapanpun. Tidak ada variasi, tidak ada keacakan.

Sifat kedua: avalanche effect

Ubah satu huruf kecil saja, dan seluruh hash berubah total. "Bitcoin" dan "bitcoin" menghasilkan hash yang tidak punya kesamaan sama sekali. Tidak ada pola yang bisa ditebak, tidak ada transisi yang mulus. Satu perubahan kecil, gempa besar di output.

Ini seperti resep kue. Kalau kamu ganti satu gram gula dengan garam, rasanya berubah drastis. Tidak ada cara untuk menebak berapa banyak yang diganti hanya dari mencicipi hasilnya.

Sifat ketiga: satu arah

Dari output, tidak mungkin merekonstruksi input. Ini bukan soal kunci rahasia atau enkripsi. Ini soal matematika. Tidak ada persamaan yang bisa dibalik. Satu-satunya cara untuk menemukan input dari sebuah hash adalah mencoba semua kemungkinan satu per satu. Untuk SHA-256, dengan seluruh komputer di dunia bekerja bersama, membutuhkan waktu lebih dari usia alam semesta. Bukan hiperbola.

Sifat keempat: collision resistant

SHA-256 menghasilkan output 256-bit, artinya ada 2²⁵⁶ kemungkinan output yang berbeda. Kemungkinan dua input berbeda menghasilkan hash yang sama, secara praktis, adalah nol.

SHA-256 di Bitcoin

Bitcoin menggunakan SHA-256 hampir di mana-mana. Untuk menghasilkan alamat dari public key. Untuk menghubungkan block satu sama lain di blockchain. Sebagai inti dari proses mining. Setiap block berisi hash dari block sebelumnya, membentuk rantai yang tidak bisa dimanipulasi tanpa menghitung ulang seluruh rantai sesudahnya.

SHA-256 bukan enkripsi. Enkripsi bisa dibalik kalau kamu punya kuncinya. Hash tidak bisa dibalik sama sekali. Ini perbedaan fundamental yang sering disalahpahami, bahkan oleh orang yang sudah lama berkecimpung di dunia teknologi.

Hash Playground — SHA-256 real-time
Ketik apapun dan lihat SHA-256 hash-nya muncul secara real-time. Coba ubah satu huruf kecil dan perhatikan bagaimana seluruh hash berubah total.
Input
SHA-256 Hash 256-bit · 64 karakter hex
Ketik sesuatu untuk melihat hash-nya...
Panjang input: 0 karakter
Panjang hash: 64 karakter (selalu)
Coba contoh:
Avalanche Effect — perbandingan dua input yang hampir sama
Ketik sesuatu di atas untuk melihat perbandingan dengan versi yang berbeda satu huruf.
Perbandingan jenis hash
Ketik input di atas dan lihat bagaimana jenis hash berbeda menghasilkan output yang berbeda. SHA-256 dan SHA-256d dipakai langsung di Bitcoin. Hash160 dipakai untuk alamat. SHA-1 sudah tidak aman dan tidak dipakai Bitcoin.
Fungsi
Bit
Dipakai di Bitcoin
Output (hex)
SHA-256
256
Merkle Root, Mining
—
SHA-256d
256
TXID, Block Hash
—
Hash160
160
Alamat Bitcoin
—
SHA-1 ⚠️
160
Tidak dipakai — deprecated
Sudah deprecated dan diblokir di banyak browser modern. Bitcoin tidak menggunakannya.
SHA-256, SHA-256d, dan Hash160 dihitung secara akurat — SHA-256 via Web Crypto API, RIPEMD-160 via implementasi langsung dari spesifikasi RFC 2286. SHA-1 sudah deprecated, diblokir browser modern, dan tidak dipakai Bitcoin.
Bab 4 · 4.2
Lompatan yang tidak bisa dibalik
Elliptic Curve Cryptography

Di Bab 2 kita belajar bahwa private key menghasilkan public key melalui proses satu arah. Sekarang saatnya kita pahami mengapa proses itu tidak bisa dibalik.

Jawabannya ada di sebuah cabang matematika yang disebut Elliptic Curve Cryptography, atau ECC. Tapi kita tidak akan mulai dari matematikanya. Kita mulai dari masalahnya.

Masalah yang harus dipecahkan

Bayangkan kamu ingin membuat sistem di mana seseorang bisa membuktikan identitasnya tanpa mengungkapkan rahasia yang membuktikan identitas itu. Seperti ini: kamu ingin membuktikan bahwa kamu tahu jalan menuju sebuah tempat tersembunyi, tanpa harus menunjukkan petanya kepada siapapun. Kamu cukup tiba di sana. Orang lain bisa memverifikasi bahwa kamu sampai, tapi tidak bisa merekonstruksi rute yang kamu ambil.

Untuk itu, dibutuhkan operasi matematika yang punya satu sifat krusial: mudah dilakukan ke satu arah, tapi mustahil dibalik.

Analogi kunci kombinasi

Bayangkan sebuah kunci kombinasi dengan puluhan digit. Memutar kenopnya sesuai kombinasi yang kamu tahu: gampang, beberapa detik. Menemukan kombinasinya kalau kamu tidak tahu: tidak ada jalan selain mencoba, dan jumlah percobaannya jauh melampaui waktu yang tersedia bagi siapapun.

Perhatikan bahwa yang menghalangi bukan hilangnya informasi. Kombinasinya masih ada di sana, utuh, menentukan posisi kenop secara pasti. Yang menghalangi adalah ongkos untuk menemukannya kembali. Ini bedanya dengan mencampur cat, di mana komposisi aslinya benar-benar musnah. ECC bekerja seperti kunci kombinasi, bukan seperti cat: hasilnya sepenuhnya ditentukan oleh input, tapi menelusuri balik menuntut kerja yang tidak akan pernah selesai.

Lompatan di atas kurva

Kurva eliptik adalah garis matematika dengan bentuk tertentu. Di atas kurva ini, ada satu titik awal yang sudah disepakati semua orang, disebut titik generator G. Dari titik G, kita bisa "melompat" ke titik berikutnya dengan aturan matematika tertentu. Dari sana melompat lagi. Dan lagi. Setiap lompatan mengikuti aturan yang sama, tapi menghasilkan titik yang tersebar acak di seluruh kurva.

Private key adalah jumlah lompatan yang kamu lakukan. Bisa jadi angka yang sangat besar, sampai 2²⁵⁶ kemungkinan. Public key adalah titik akhir tempat kamu mendarat. Menghitung titik akhir dari jumlah lompatan: mudah, butuh milidetik. Menemukan jumlah lompatan dari titik akhir: mustahil secara komputasi. Tidak ada jalan pintas.

Format public key

Titik akhir di kurva eliptik adalah sepasang koordinat (x, y). Di Bitcoin, koordinat ini dikodekan menjadi string hex. Format yang paling umum dipakai sekarang adalah format compressed: prefix 02 kalau y positif, atau 03 kalau y negatif, diikuti koordinat x dalam hex. Karena kurva eliptik simetris, penerima bisa menghitung ulang y dari x dan prefix kapanpun dibutuhkan.

SECP256K1

Bitcoin menggunakan kurva eliptik spesifik yang disebut SECP256K1. Kurva ini dipilih karena sifat matematisnya yang efisien, aman, dan tidak ada pintu belakang yang tersembunyi.

Keamanan seluruh sistem kepemilikan Bitcoin berdiri di atas satu masalah matematika yang belum terpecahkan: dari titik akhir, tidak ada cara menemukan berapa lompatan yang dilakukan. Selama masalah ini belum terpecahkan, private key tidak bisa diturunkan dari public key.

Simulasi interaktif — Lompatan di atas Kurva Eliptik
Geser slider untuk mengubah private key (jumlah lompatan). Perhatikan bagaimana titik akhir dan public key berubah total meski hanya menambah satu lompatan.
7
Private key
7 lompatan
Angka rahasia yang hanya kamu tahu. Di Bitcoin sungguhan ini adalah angka 256-bit acak.
Titik akhir — koordinat (x, y)
(x, y)
Hasil perkalian k × G. Ini adalah public key dalam bentuk koordinat mentah.
Public key — format compressed
02...
Geser slider untuk mengubah private key.
Simulasi ini hanya menampilkan maksimal 32 lompatan, dan sudah sulit ditebak kemana arah tiap lompatannya. Private key Bitcoin sungguhan adalah 2²⁵⁶ lompatan. Angka itu tidak bisa dibayangkan oleh otak manusia manapun, dan tidak bisa dipecahkan oleh komputer manapun yang pernah ada.
Format public key: kenapa cukup separuhnya
Titik di kurva punya koordinat X dan Y. Tapi kurvanya simetris terhadap sumbu X, jadi untuk setiap X hanya ada dua kemungkinan Y: satu genap, satu ganjil. Artinya Y tidak perlu disimpan, cukup dicatat yang mana.
Uncompressed
04X (32 byte)Y (32 byte)
65 byte
Format lama. Menyimpan X dan Y dua-duanya.
Compressed
02/03X (32 byte)
33 byte
Prefiks 02 kalau Y genap, 03 kalau ganjil. Y dihitung ulang saat dibutuhkan.
Hemat 32 byte per public key, hampir setengahnya, tanpa kehilangan informasi apa pun. Y bukan dibuang, melainkan bisa diturunkan kembali dari X lewat persamaan kurvanya. Inilah kenapa hampir semua wallet modern memakai format compressed.
Bab 4 · 4.3
Membuktikan tanpa mengungkapkan
ECDSA

Kita sudah tahu bahwa private key menghasilkan public key lewat ECC. Sekarang pertanyaannya: bagaimana private key digunakan untuk membuktikan kepemilikan tanpa mengungkapkan private key itu sendiri?

Jawabannya adalah tanda tangan digital. Di Bitcoin, mekanisme ini disebut ECDSA, Elliptic Curve Digital Signature Algorithm.

Analogi surat bermaterai

Bayangkan kamu mengirim surat resmi. Kamu tidak ingin siapapun bisa memalsukan suratmu, dan penerima harus bisa memastikan surat itu benar-benar dari kamu. Di dunia fisik, kamu pakai tanda tangan dan materai. Di dunia Bitcoin, kamu pakai ECDSA.

Bedanya dengan tanda tangan fisik: tanda tangan ECDSA unik untuk setiap pesan. Tanda tangan kamu untuk transaksi senilai 0.1 BTC hari ini berbeda sepenuhnya dengan tanda tangan kamu untuk transaksi senilai 0.1 BTC besok, meski private key yang dipakai sama. Tidak ada yang bisa menyalin tanda tanganmu dari satu transaksi dan menempelkannya ke transaksi lain.

Bagaimana signing bekerja

Ketika kamu mengirim Bitcoin, wallet mengambil data transaksi, menggabungkannya dengan private key-mu, dan menghasilkan dua angka: r dan s. Keduanya bersama-sama membentuk tanda tangan ECDSA. Proses ini juga melibatkan angka acak rahasia yang disebut nonce. Nonce ini harus benar-benar acak dan tidak boleh dipakai dua kali. Kalau satu nonce yang sama dipakai untuk menandatangani dua transaksi berbeda, private key-mu bisa dihitung balik sepenuhnya hanya dari kedua tanda tangan itu. Ini bukan kelemahan teoretis: kesalahan implementasi semacam ini pernah menguras wallet di dunia nyata. Perhatikan juga bahwa nonce di sini tidak ada hubungannya dengan nonce yang dicari miner di Bab 5. Namanya kebetulan sama, konsepnya berbeda.

Bagaimana verification bekerja

Siapapun yang punya public key dan tanda tangan bisa memverifikasi bahwa tanda tangan itu dibuat oleh pemilik private key yang sesuai, tanpa perlu tahu private key-nya. Jaringan Bitcoin melakukan verifikasi ini untuk setiap transaksi yang masuk. Kalau tanda tangan tidak valid, transaksi ditolak.

Satu input, satu tanda tangan

Setiap input dalam transaksi harus ditandatangani secara terpisah. Kalau transaksimu punya tiga input dari tiga UTXO berbeda, kamu perlu membuat tiga tanda tangan berbeda, masing-masing membuktikan kepemilikan UTXO yang bersangkutan.

ECDSA memungkinkan sesuatu yang luar biasa: kamu bisa membuktikan bahwa kamu tahu sebuah rahasia, tanpa mengungkapkan rahasianya. Jaringan tahu kamu punya private key yang benar, tapi tidak pernah melihat private key-mu.

Simulasi interaktif — ECDSA: Sign, Verify, Tamper
Ikuti tiga tahap: tandatangani transaksi, verifikasi tanda tangan, lalu coba manipulasi dan lihat apa yang terjadi.
Tahap 1
✍️ Sign
Tahap 2
✅ Verify
Tahap 3
🔍 Tamper
Pesan transaksi
Data yang akan ditandatangani. Di Bitcoin sungguhan ini adalah data transaksi lengkap: siapa pengirim, penerima, dan berapa jumlahnya.
Pesan yang diterima
Data transaksi yang diterima oleh node jaringan.
Selesaikan Tahap 1 terlebih dahulu.
Tanda tangan (r, s)
Tanda tangan yang disertakan bersama transaksi. Node menggunakannya bersama public key untuk verifikasi.
—
Public key pengirim
Diketahui publik. Node menggunakan public key ini untuk memverifikasi tanda tangan, tanpa perlu tahu private key.
—
Coba manipulasi pesan atau tanda tangan, lalu verifikasi. Lihat bagaimana perubahan sekecil apapun langsung terdeteksi.
Pesan
Selesaikan Tahap 1 terlebih dahulu.
Tanda tangan (r, s)
—
Tanda tangan ECDSA dalam format DER encoding — format yang dipakai Bitcoin
ECDSA Signature · DER Encoding scriptSig / witness
Tanda tangani transaksi di Tahap 1 terlebih dahulu.
Bab 4 · 4.4
Satu tanda tangan, berapapun orangnya
Schnorr Signature

ECDSA sudah bekerja dengan baik selama Bitcoin ada. Tapi ada algoritma tanda tangan lain yang lebih elegan, lebih efisien, dan punya sifat-sifat yang membuka kemungkinan baru: Schnorr signature.

Schnorr diaktifkan di Bitcoin melalui upgrade Taproot pada November 2021.

Kenapa bukan Schnorr dari awal?

Selama hampir dua dekade, Schnorr signature dilindungi paten dan nyaris tidak dipakai siapapun. Paten itu kedaluwarsa pada 2008, beberapa bulan sebelum Bitcoin dirilis. Jadi alasan Satoshi memilih ECDSA bukan soal paten. Saat itu Schnorr belum distandarisasi, belum teruji luas, dan belum tersedia di OpenSSL, pustaka kriptografi yang jadi sandaran kode awal Bitcoin. ECDSA memenuhi ketiganya. Butuh bertahun-tahun sesudahnya bagi komunitas Bitcoin untuk mematangkan Schnorr dan mencapai konsensus untuk mengaktifkannya secara aman.

Keunggulan pertama: lebih sederhana

Schnorr punya bukti keamanan yang lebih kuat dan lebih mudah dianalisis. ECDSA lebih kompleks dan punya lebih banyak sudut yang bisa salah diimplementasikan, seperti masalah nonce yang kita bahas di 4.3.

Keunggulan kedua: linear dan bisa digabung

Ini yang paling penting. Tanda tangan Schnorr bisa digabungkan secara matematis. Kalau dua orang masing-masing punya private key, mereka bisa membuat satu tanda tangan tunggal yang mewakili keduanya. Orang luar tidak bisa membedakan apakah tanda tangan itu dari satu orang atau seratus orang.

Keunggulan ketiga: lebih privat

Karena tanda tangan bisa digabung, transaksi multisignature terlihat identik dengan transaksi biasa dari luar. Tidak ada yang bisa tahu apakah sebuah transaksi membutuhkan 2 dari 3 tanda tangan atau cukup 1.

Keunggulan keempat: lebih efisien

Tanda tangan yang digabung lebih kecil ukurannya dari kumpulan tanda tangan terpisah. Ini menghemat ruang di block dan menurunkan fee untuk transaksi kompleks.

MuSig

Kemampuan menggabungkan tanda tangan Schnorr ini diimplementasikan dalam protokol yang disebut MuSig. Dengan MuSig, beberapa pihak bisa berkolaborasi membuat satu tanda tangan tanpa ada satu pihak pun yang tahu private key pihak lain.

Taproot

Schnorr adalah fondasi dari Taproot, upgrade Bitcoin terbesar sejak SegWit. Taproot memungkinkan kondisi pengeluaran yang kompleks disembunyikan di balik tanda tangan tunggal yang sederhana. Selama semua pihak setuju, transaksi terlihat seperti transaksi biasa. Hanya kalau ada sengketa, kondisi kompleks itu terungkap.

Schnorr bukan sekadar upgrade teknis. Ia adalah fondasi dari privasi dan skalabilitas Bitcoin generasi berikutnya. Setiap transaksi Taproot yang terlihat sederhana bisa menyembunyikan logika yang sangat kompleks di baliknya.

Simulasi interaktif — ECDSA vs Schnorr: Agregasi, Ukuran, dan Privasi
Geser jumlah penandatangan sebuah transaksi multisig. Perhatikan tiga hal sekaligus: berapa tanda tangan yang tersimpan di blockchain, berapa besar ukurannya, dan apakah orang luar bisa tahu ini multisig.
3 dari 3
ECDSA 0 byte
Schnorr 0 byte
⚡ ECDSA — tanda tangan terlihat
Schnorr — semua terlihat sama
Bab 4 · 4.5
Satu hash yang merangkum segalanya
Merkle Tree, Merkle Root, dan Merkle Proof

Setiap block Bitcoin berisi ratusan bahkan ribuan transaksi. Ada satu pertanyaan sederhana yang butuh jawaban efisien: bagaimana cara membuktikan bahwa sebuah transaksi tertentu ada di dalam sebuah block, tanpa harus mengunduh dan memeriksa seluruh isi block?

Jawabannya adalah Merkle Tree.

Pohon dari hash

Merkle Tree adalah struktur data berbentuk pohon yang dibangun dari hash. Cara kerjanya: pertama, setiap transaksi di-hash menghasilkan Transaction ID atau TXID. Ini adalah "daun" dari pohon. Kedua, daun-daun itu dipasangkan dua-dua. Setiap pasangan digabungkan dan di-hash lagi, menghasilkan satu hash baru di level di atasnya. Ketiga, proses ini terus berulang ke atas sampai hanya tersisa satu hash tunggal di puncak.

Hash tunggal di puncak itu disebut Merkle Root.

Merkle Root di header block

Merkle Root inilah yang disimpan di header setiap block Bitcoin. Bukan seluruh daftar transaksi, tapi hasil dari struktur pohon yang hierarkis ini. Merkle Root merangkum seluruh isi block dalam satu hash berukuran 32 byte. Kalau satu transaksi berubah, TXID-nya berubah, yang mengubah hash di atasnya, sampai Merkle Root ikut berubah. Tidak ada yang bisa memanipulasi transaksi tanpa mengubah Merkle Root.

Merkle Proof

Yang membuat Merkle Tree benar-benar powerful adalah Merkle Proof. Untuk membuktikan bahwa transaksi T ada di dalam sebuah block, kamu tidak perlu melihat seluruh isi block. Kamu hanya perlu TXID transaksi T, beberapa hash "saudara" di sepanjang jalur dari T ke root, dan Merkle Root yang ada di header block. Dengan elemen-elemen itu, siapapun bisa memverifikasi bahwa T memang ada di block tersebut dengan menghitung ulang jalur hash dari bawah ke atas.

SPV (Simplified Payment Verification)

Merkle Proof adalah fondasi dari SPV, cara kerja wallet ringan seperti wallet di smartphone. Wallet SPV tidak mengunduh seluruh blockchain yang ratusan gigabyte. Ia hanya mengunduh header block, lalu meminta Merkle Proof untuk transaksi yang relevan. Cukup untuk memverifikasi pembayaran tanpa menjadi full node.

Untuk membuktikan satu transaksi di block yang berisi 2.000 transaksi, kamu hanya butuh sekitar 11 hash. Bukan 2.000, bukan 1.999, tapi 11. Ini karena pohon biner tumbuh secara logaritmik, efisiensi yang elegan dari matematika sederhana.

Simulasi interaktif — Merkle Tree dan Merkle Proof
Klik salah satu transaksi di baris bawah untuk melihat Merkle Proof-nya — jalur hash minimal yang dibutuhkan untuk membuktikan bahwa transaksi itu ada di dalam block.
Merkle Proof
Untuk memverifikasi 1 transaksi dari 8 transaksi di block ini, kamu hanya butuh 3 hash. Semakin besar block, semakin dramatis efisiensinya.
Merkle Root seperti di block header Bitcoin
Block Header · Merkle Root bitcoin-cli getblockheader
Klik salah satu Tx untuk melihat Merkle Root dan Merkle Proof dalam format raw.
Bab 4 · 4.6
Bagaimana semuanya bekerja bersama
Dari Kriptografi ke Keamanan Jaringan

Kita sudah mempelajari semua komponen kriptografi yang membentuk Bitcoin: hash function, ECC, ECDSA, Schnorr, dan Merkle Tree. Sekarang saatnya melihat bagaimana semuanya bekerja bersama sebagai satu sistem yang utuh.

Hash menjaga integritas blockchain

Setiap block berisi hash dari block sebelumnya. Ini berarti kalau kamu ingin mengubah transaksi di block lama, kamu harus menghitung ulang hash seluruh rantai block sesudahnya. Sementara itu jaringan terus menambang block baru. Kamu tidak akan pernah bisa mengejar. Inilah kenapa semakin banyak konfirmasi sebuah transaksi, semakin aman. Setiap block baru yang ditambang di atasnya membuat serangan semakin tidak mungkin.

ECC dan ECDSA menjaga kepemilikan

Tanpa private key yang benar, tidak ada yang bisa menandatangani transaksi yang valid dari alamat Bitcoin-mu. Jaringan memverifikasi setiap tanda tangan sebelum menerima transaksi. Tidak ada otoritas pusat, tidak ada password yang bisa direset, tidak ada "lupa sandi." Kepemilikan murni bersifat kriptografis.

Merkle Tree menjaga efisiensi verifikasi

Tanpa Merkle Tree, untuk memverifikasi satu transaksi kamu harus mengunduh seluruh block. Dengan Merkle Tree, kamu hanya butuh beberapa hash. Ini yang membuat Bitcoin bisa digunakan di perangkat dengan sumber daya terbatas tanpa harus mempercayai pihak ketiga.

Schnorr menjaga privasi dan skalabilitas

Dengan Schnorr, transaksi kompleks terlihat seperti transaksi biasa. Privasi meningkat, ukuran transaksi mengecil, dan fee turun. Ini bukan sekadar upgrade teknis tapi perubahan fundamental pada cara Bitcoin bisa digunakan.

Sistem yang saling mengunci

Yang membuat Bitcoin berbeda bukan satu komponen kriptografinya, tapi bagaimana semuanya saling mengunci. Hash memastikan riwayat tidak bisa diubah. ECC memastikan kepemilikan tidak bisa dipalsukan. Merkle Tree memastikan verifikasi bisa dilakukan secara efisien. Schnorr memastikan privasi dan efisiensi terus meningkat. Tidak ada satu titik kegagalan. Tidak ada satu pihak yang bisa memanipulasi sistem. Kepercayaan dibangun dari matematika, bukan dari institusi.

Satoshi tidak menemukan semua matematika ini. SHA-256, ECC, Merkle Tree, semuanya sudah ada sebelum Bitcoin. Yang Satoshi lakukan adalah merangkai komponen-komponen yang sudah ada menjadi satu sistem yang untuk pertama kalinya memecahkan masalah double-spend tanpa otoritas pusat. Itu yang membuat Bitcoin bukan sekadar teknologi, tapi sebuah penemuan.

Lalu bagaimana dengan komputer kuantum?

Dua kali di buku ini kita menyandarkan argumen pada kalimat "kalau suatu hari ada kemajuan komputasi yang menjadi ancaman": waktu membahas alamat di 2.3, dan waktu membahas P2PKH di 6.3. Sudah waktunya kalimat itu dijelaskan.

Yang terancam bukan seluruh kriptografi Bitcoin, melainkan satu bagiannya saja. Fungsi hash seperti SHA-256 relatif tahan: komputer kuantum mempercepat pencariannya, tapi tidak meruntuhkannya, dan memperpanjang ukuran hash sudah cukup untuk mengimbangi. Yang benar-benar rapuh adalah tanda tangan. Algoritma Shor, kalau dijalankan di komputer kuantum yang cukup besar, bisa menghitung private key dari public key. Persis kebalikan dari sifat satu arah yang kita bahas di 4.2, dan seluruh kepemilikan Bitcoin berdiri di atas sifat itu.

Tapi perhatikan syaratnya: public key harus terlihat lebih dulu. Di sinilah kebiasaan menyembunyikan public key di balik hash, yang kita bahas di 2.3, ternyata berubah dari sekadar kerapian menjadi perlindungan yang serius.

Berapa banyak yang sebenarnya terpapar?

Berbagai analisis pada 2026 memperkirakan sekitar 6,5 sampai 6,9 juta BTC, kira-kira sepertiga dari seluruh pasokan, sudah memperlihatkan public key-nya di blockchain. Angka itu terbagi dua. Sekitar 1,9 juta berasal dari format P2PK paling awal yang memang menaruh public key langsung di output, termasuk sekitar 1,7 juta yang diduga milik Satoshi sendiri. Sisanya, sekitar 4,1 juta, terpapar bukan karena formatnya melainkan karena pemakaian ulang alamat. Inilah harga nyata dari kebiasaan yang kita bahas di 10.5.

Artinya, sebagian besar keterpaparan itu bukan cacat protokol. Ia hasil pilihan pengguna, dan itu berarti sebagian besarnya bisa dihindari.

Perdebatan yang sedang berlangsung

Pada Februari 2026 muncul BIP-360, yang mengusulkan format output baru bernama P2MR. Ia mirip Taproot tapi membuang jalur key path, sehingga tidak ada public key yang tampil di blockchain saat output dibuat. Ini menutup keterpaparan untuk transaksi baru, tapi tidak menolong koin yang public key-nya sudah terlanjur terlihat.

Dua bulan kemudian muncul BIP-361, dan di sinilah perdebatannya memanas. Usulan itu menawarkan jadwal bertahap: setelah beberapa tahun, jaringan berhenti menerima output ke format lama, lalu beberapa tahun berikutnya verifikasi ECDSA dan Schnorr dimatikan sepenuhnya. Koin yang belum pindah menjadi beku secara permanen.

Reaksinya keras, dan kedua sisinya punya dasar. Yang menolak menyebutnya penyitaan: membekukan koin orang lain karena mereka tidak sempat atau tidak bisa pindah, termasuk pemilik yang sudah meninggal, bertentangan dengan janji bahwa tidak ada yang bisa mengambil Bitcoin-mu. Yang mendukung menjawab bahwa membiarkannya juga bukan sikap netral: kalau tidak dibekukan, koin itu akan diambil oleh siapa pun yang lebih dulu punya komputer kuantum, dan yang beredar bukan lagi Bitcoin yang dimiliki melainkan Bitcoin yang dicuri. Pilihannya bukan antara menyita dan tidak menyita, melainkan antara membekukan atau menyerahkan.

Bagian yang akan menua, dan bagian yang tidak

Per pertengahan 2026, kedua usulan itu masih berupa usulan dan belum diaktifkan. Kalau kamu membaca ini beberapa tahun kemudian, besar kemungkinan keadaannya sudah bergeser. Mungkin salah satunya sudah aktif, mungkin keduanya digantikan usulan lain, mungkin perdebatannya masih berjalan. Nama dan nomor BIP di atas memang akan menua, begitu juga angka 6,9 juta itu, dan begitu juga setiap perkiraan tentang kapan komputer kuantum yang cukup besar benar-benar ada. Riwayat perkiraan semacam itu penuh dengan tenggat yang lewat begitu saja.

Tapi empat hal berikut tidak akan menua, dan itulah yang sebenarnya perlu kamu bawa dari bagian ini. Pertama, yang terancam hanya tanda tangan, bukan fungsi hash. Kedua, ancaman itu baru berlaku setelah public key terlihat di blockchain. Ketiga, keterpaparan terbesar datang dari pemakaian ulang alamat, bukan dari cacat protokol. Keempat, setiap solusi pada akhirnya harus memilih antara membekukan koin yang terlanjur terpapar atau membiarkannya diambil, dan tidak ada pilihan ketiga yang menyenangkan semua pihak.

Kalau kamu ingin tahu keadaan terkini, yang perlu dicari bukan berita tentang komputer kuantum, melainkan dua pertanyaan yang jauh lebih membumi: apakah sudah ada format output tahan kuantum yang aktif di jaringan, dan apakah wallet yang kamu pakai sudah mendukungnya. Selebihnya kebisingan.

Dan apa pun jawaban kedua pertanyaan itu nanti, yang bisa kamu lakukan sendiri tetap sama sederhananya: jangan pakai ulang alamat. Selama public key-mu belum pernah tampil di blockchain, kamu tidak berada di kelompok yang terpapar, hari ini maupun sepuluh tahun lagi. Nasihat yang di 10.5 terdengar seperti soal privasi ternyata juga soal ketahanan jangka panjang.

Peta sistem — Kriptografi Bitcoin
Klik setiap komponen untuk melihat perannya, cara kerjanya, dan apa yang terjadi jika komponen itu tidak ada.
Klik salah satu komponen di atas untuk melihat perannya dalam sistem Bitcoin.
← Daftar Bab
BLK #915,217
Bab 5 · 5.1
Bagaimana ribuan pihak yang tidak saling kenal bisa sepakat?
Konsensus

Setiap pagi, miliaran orang di seluruh dunia bangun dan sepakat tentang satu hal tanpa pernah membicarakannya: jam berapa sekarang. Tidak ada yang memutuskan ini. Tidak ada rapat, tidak ada pemungutan suara. Tapi semua orang di zona waktu yang sama melihat jam yang sama dan sepakat bahwa sekarang adalah pukul tujuh pagi. Ini adalah konsensus.

Konsensus ada di mana-mana

Konsensus adalah proses di mana sekelompok pihak mencapai kesepakatan bersama tentang sesuatu. Ia bisa terjadi secara formal maupun informal, dengan otoritas pusat maupun tanpa. Di parlemen, konsensus dicapai melalui voting. Di pasar saham, konsensus tentang harga sebuah saham dicapai melalui transaksi jual beli yang terus-menerus. Di internet, protokol TCP/IP adalah konsensus tentang bagaimana data harus dikirim antar komputer. Di masyarakat, bahasa adalah konsensus tentang apa arti sebuah kata.

Konsensus yang mudah dan konsensus yang sulit

Kebanyakan konsensus yang kita kenal punya satu ciri yang sama: ada otoritas pusat yang menjadi jangkar. Bank sentral menetapkan nilai mata uang. Pemerintah menetapkan hukum. Otoritas ini membuat konsensus menjadi relatif mudah. Tapi bagaimana kalau tidak ada wasit? Bagaimana kalau semua pihak setara, tidak ada yang punya otoritas lebih, dan sebagian dari mereka bahkan mungkin tidak jujur? Ini adalah konsensus yang sulit. Dan ini persis masalah yang dihadapi Bitcoin.

Dua konsekuensi tidak mengikuti konsensus

Dalam sistem apa pun yang berbasis konsensus, pihak yang tidak mengikuti kesepakatan bersama menghadapi dua pilihan. Pertama, kembali ke konsensus. Mereka menyadari bahwa versi mereka berbeda dari mayoritas, menyesuaikan diri, dan melanjutkan bersama. Kedua, membentuk golongan sendiri. Mereka tetap mempertahankan versi mereka, memisahkan diri dari mayoritas, dan membentuk sistem paralel. Di dunia Bitcoin, ini disebut fork.

Masalah konsensus Bitcoin

Bitcoin tidak punya otoritas pusat. Yang ada adalah ribuan node yang tersebar di seluruh dunia, masing-masing menyimpan salinan blockchain-nya sendiri. Pertanyaannya: kalau dua node mendapat informasi berbeda tentang block yang sama, siapa yang benar? Bagaimana ribuan komputer yang tidak saling kenal bisa sepakat tentang satu versi sejarah yang sama? Solusi Bitcoin untuk masalah ini adalah Proof of Work, yang akan kita bahas di 5.2.

Satoshi bukan yang pertama memikirkan masalah konsensus tanpa otoritas pusat. Ilmuwan komputer sudah bergulat dengan ini sejak 1982 dalam apa yang disebut Byzantine Generals Problem. Yang Satoshi lakukan adalah menemukan solusi praktis pertama yang bisa bekerja di sistem terbuka, tanpa izin, dan tanpa kepercayaan awal antar pihak.

Simulasi interaktif — Konsensus jaringan
Pilih skenario untuk melihat apa yang terjadi ketika node tidak sepakat tentang rantai yang benar.

Soft fork dan hard fork

Ketika ada usulan perubahan aturan di Bitcoin, cara perubahannya menentukan apakah jaringan akan tetap bersatu atau terbelah permanen.

Soft fork adalah perubahan aturan yang backward compatible. Node lama masih bisa berkomunikasi dengan node baru, tapi node baru punya aturan yang lebih ketat. Kuncinya: aturan baru adalah himpunan bagian dari aturan lama, sehingga block yang sah menurut aturan baru otomatis juga sah menurut aturan lama. Node lama tidak menolaknya. Dan karena mayoritas hashrate menegakkan aturan baru, rantai merekalah yang tumbuh lebih panjang. Berkat aturan longest chain, node lama akhirnya mengikuti rantai yang lebih panjang, bahkan tanpa harus memperbarui software mereka. SegWit yang diaktifkan pada 2017 adalah contoh soft fork.

Hard fork adalah perubahan aturan yang tidak backward compatible. Node lama tidak bisa mengenali block dari node baru, dan sebaliknya. Split yang terjadi bersifat permanen. Dua rantai tumbuh sejajar selamanya, membentuk dua jaringan dan dua mata uang yang berbeda. Tidak ada longest chain yang bisa mendamaikan keduanya karena mereka sudah berbicara dalam bahasa yang berbeda. Bitcoin Cash yang memisahkan diri dari Bitcoin pada 2017 adalah contoh hard fork.

Perbedaan kuncinya: di soft fork, node lama tidak perlu tahu bahwa ada aturan baru. Di hard fork, node lama dan baru tidak bisa lagi hidup di jaringan yang sama.

Visualisasi — Soft fork vs Hard fork
Keduanya dimulai dari split yang sama, tapi berakhir sangat berbeda.
Soft fork
Split sementara — rantai lebih panjang menang, node lama ikut tanpa sadar.
Hard fork
Split permanen — dua jaringan berbeda, dua mata uang berbeda selamanya.
Node baru
Node lama
Rantai ditinggalkan / fork permanen
Bab 5 · 5.2
Sangat sulit dibuat, sangat mudah diverifikasi
Proof of Work

Konsensus Bitcoin membutuhkan cara untuk membuktikan bahwa seseorang telah melakukan pekerjaan nyata sebelum bisa mengusulkan block baru. Cara itu disebut Proof of Work.

Teka-teki yang asimetris

Proof of Work adalah sebuah teka-teki matematika dengan sifat yang sangat spesifik: sangat sulit dipecahkan, tapi sangat mudah diverifikasi. Temukan sebuah angka yang jika digabungkan dengan data block lalu di-hash dengan SHA-256d, menghasilkan hash yang dimulai dengan sejumlah angka nol. Angka yang dicari itu disebut nonce. Tidak ada cara pintar untuk menemukannya. Satu-satunya cara adalah mencoba satu per satu, miliaran kali per detik, sampai hash yang memenuhi syarat ditemukan.

Target dan leading zeros

Jaringan Bitcoin menetapkan sebuah target: hash dari block header harus lebih kecil dari angka tertentu. Dalam praktiknya, ini berarti hash harus dimulai dengan sejumlah angka nol di depan. Semakin banyak angka nol yang dibutuhkan, semakin sulit teka-tekinya. Saat ini, hash block Bitcoin yang valid harus dimulai dengan sekitar 19 hingga 20 angka nol.

Kenapa ini efektif?

Karena sifat hash function yang sudah kita pelajari di Bab 4: output tidak bisa diprediksi. Tidak ada cara untuk tahu lebih dulu nonce mana yang akan menghasilkan hash yang valid. Setiap percobaan independen, hasil percobaan sebelumnya tidak membantu sama sekali. Ini berarti satu-satunya keunggulan yang bisa dimiliki seseorang adalah kecepatan komputasi.

Bukti yang bisa diverifikasi

Begitu nonce ditemukan, memverifikasinya hanya butuh satu kali perhitungan hash. Node lain tinggal mengambil block header, menghitung SHA-256d, dan memeriksa apakah hasilnya memenuhi target. Satu detik, selesai. Inilah asimetrinya: butuh triliunan percobaan untuk menemukan, tapi hanya satu percobaan untuk memverifikasi.

Proof of Work bukan penemuan Satoshi. Konsep ini pertama kali diusulkan oleh Cynthia Dwork dan Moni Naor pada 1993, dan dipopulerkan oleh Adam Back dalam sistem Hashcash pada 1997 untuk melawan spam email. Satoshi mengadaptasinya sebagai mekanisme konsensus untuk Bitcoin, penggunaan yang jauh melampaui tujuan aslinya.

Simulasi interaktif — Mining Playground
Atur difficulty lalu klik "Mulai mining". Browser akan mencoba nonce satu per satu sampai menemukan hash yang dimulai dengan jumlah angka nol sesuai target. Hash dihitung menggunakan SHA-256d sungguhan via Web Crypto API.
Difficulty 2 zeros
Block header siap
data Block #882419 | prev: 000000000000 | tx: 3a7b2c...
nonce 0
SHA-256d (double SHA-256) dari block header:
—
Percobaan
0
Target
00...
Kecepatan
—
Bab 5 · 5.3
Dari transaksi ke block — proses lengkap
Mining

Kita sudah tahu bahwa miner harus menemukan nonce yang membuat hash block header memenuhi target. Tapi apa sebenarnya isi block header itu? Dan bagaimana proses mining dari awal sampai akhir?

Anatomi sebuah block

Setiap block Bitcoin terdiri dari dua bagian: header dan body. Body berisi daftar transaksi yang dikumpulkan dari mempool. Header berisi 6 field dengan total ukuran tepat 80 bytes, dan inilah yang di-hash miner triliunan kali per detik.

Proses mining dari awal sampai akhir

Pertama, miner mengumpulkan transaksi dari mempool dan memilih yang membayar fee tertinggi. Kedua, miner menyusun block candidate: menghitung Merkle Root dari semua transaksi yang dipilih dan mengisi semua field header kecuali nonce. Ketiga, miner mulai mencoba nonce dari 0, 1, 2, dan seterusnya. Kalau seluruh ruang nonce habis tanpa hasil, miner mengubah timestamp atau urutan transaksi, yang mengubah Merkle Root, lalu mulai lagi dari nonce 0. Keempat, begitu hash yang valid ditemukan, miner segera menyiarkan block ke seluruh jaringan.

Coinbase transaction

Setiap block selalu berisi satu transaksi khusus di posisi pertama: coinbase transaction. Ia tidak punya input dari UTXO manapun. Ia menciptakan bitcoin baru dari nol sebagai hadiah untuk miner yang berhasil menemukan block. Coinbase transaction juga berisi field bebas yang disebut coinbase data. Satoshi mengisi field ini dengan pesan terkenal pada genesis block: "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks."

80 bytes. Itulah ukuran block header Bitcoin. Tidak lebih, tidak kurang. Seluruh keamanan jaringan bergantung pada proses meng-hash 80 bytes ini triliunan kali per detik, di seluruh dunia, setiap sepuluh menit.

Simulasi interaktif — Anatomi block Bitcoin
Klik setiap field di header untuk melihat nilai contoh dan penjelasannya. Klik "Previous block hash" untuk melihat bagaimana rantai block terbentuk.
Block header 80 bytes total
Block body 4 transaksi
coinbase Transaksi pertama — menciptakan bitcoin baru untuk miner. Tidak punya input UTXO. 3.125 BTC
tx 3a7b2cf4e8d1a09b5c6e7f8a2d4b1c3e5f7a9b0c2d4e6f... 142 sat/vB
tx 8f3c1a2b4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d... 87 sat/vB
tx 1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b... 34 sat/vB
Total ukuran block 1.23 MB
Bab 5 · 5.4
Berapapun miner yang masuk atau keluar, selalu 10 menit
Difficulty Adjustment

Bitcoin dirancang untuk menghasilkan satu block setiap sepuluh menit. Tapi bagaimana jaringan bisa mempertahankan ritme ini ketika jumlah miner terus berubah?

Masalah yang harus dipecahkan

Kalau lebih banyak miner bergabung, hashrate jaringan naik, dan block ditemukan lebih cepat dari sepuluh menit. Kalau miner keluar, hashrate turun, dan block ditemukan lebih lambat. Tanpa mekanisme penyesuaian, interval antar block akan kacau.

Cara kerja difficulty adjustment

Setiap 2016 block, Bitcoin secara otomatis menyesuaikan difficulty. Angka 2016 bukan angka sembarang: dengan target 10 menit per block, 2016 block seharusnya membutuhkan tepat 2 minggu. Rumusnya sederhana: bandingkan waktu aktual yang dibutuhkan untuk menambang 2016 block terakhir dengan waktu idealnya. Kalau lebih cepat, difficulty naik. Kalau lebih lambat, difficulty turun.

Batas penyesuaian

Untuk mencegah perubahan yang terlalu ekstrem, Bitcoin membatasi penyesuaian maksimal 4 kali lipat naik atau 4 kali lipat turun dalam satu periode. Ini melindungi jaringan dari lonjakan atau penurunan hashrate yang sangat tiba-tiba.

Siapa yang memutuskan?

Tidak ada yang memutuskan. Setiap node menghitung adjustment ini secara mandiri menggunakan aturan yang sama, dan hasilnya selalu identik. Ini adalah contoh lain dari konsensus tanpa otoritas pusat.

Kenapa sepuluh menit?

Satoshi memilih sepuluh menit sebagai kompromi. Cukup cepat agar transaksi tidak menunggu terlalu lama, tapi cukup lambat agar block bisa menyebar ke seluruh jaringan sebelum miner lain menemukan block berikutnya.

Difficulty adjustment adalah salah satu mekanisme paling elegan di Bitcoin. Ia memastikan bahwa tidak peduli berapa banyak komputasi yang dilemparkan ke jaringan, satu block tetap muncul setiap sepuluh menit. Bitcoin tidak bisa di-spam dengan hashrate.

Simulasi interaktif — Difficulty adjustment
Setiap 2016 block (~2 minggu), jaringan membandingkan waktu aktual dengan target dan menyesuaikan difficulty. Hasilnya selalu sama: ~10 menit per block.
Timeline difficulty adjustment Bitcoin Tiga periode berurutan yang menunjukkan bagaimana difficulty menyesuaikan terhadap perubahan hashrate Periode 1 Baseline hashrate 1× diff ~10 menit/block 2016 block selesai dalam 2 minggu hashrate naik 2× diff naik Periode 2 Hashrate naik 2× hashrate 2× diff ~10 menit/block 2016 block selesai dalam 2 minggu hashrate turun 3× diff turun Periode 3 Hashrate turun 3× hashrate 0.7× diff ~10 menit/block 2016 block selesai dalam 2 minggu Berapapun hashrate yang masuk atau keluar, Bitcoin selalu menemukan keseimbangan di ~10 menit per block. Adjustment terjadi otomatis setiap 2016 block (~2 minggu) — tidak ada yang mengontrol.
Coba sendiri: apa yang terjadi kalau hashrate berubah?
1.0x
Rata-rata waktu per block
10.0 menit
Periode 2016 block selesai dalam
14.0 hari
Difficulty disesuaikan
tetap
Setelah penyesuaian
10.0 menit
Bab 5 · 5.5
Satu-satunya cara bitcoin baru masuk ke dunia
Block Reward dan Halving

Setiap kali miner berhasil menemukan block yang valid, mereka mendapat dua jenis pendapatan: block reward dan transaction fee. Tapi ada satu bagian dari block reward yang unik di Bitcoin: ia berkurang setengahnya setiap empat tahun sekali.

Block reward

Block reward adalah bitcoin baru yang diciptakan dari nol melalui coinbase transaction. Ini adalah satu-satunya cara bitcoin baru masuk ke sirkulasi. Tidak ada cara lain. Ketika Satoshi menambang genesis block pada Januari 2009, block reward adalah 50 BTC. Setiap block baru menambahkan 50 BTC ke sirkulasi.

Halving

Setiap 210.000 block, block reward dipotong setengahnya. Dengan rata-rata 10 menit per block, 210.000 block membutuhkan waktu sekitar 4 tahun. Halving pertama terjadi pada November 2012: reward turun dari 50 menjadi 25 BTC. Halving kedua pada Juli 2016: turun menjadi 12,5 BTC. Halving ketiga pada Mei 2020: turun menjadi 6,25 BTC. Halving keempat pada April 2024: turun menjadi 3,125 BTC. Proses ini akan terus berlanjut sampai sekitar tahun 2140.

Kenapa 21 juta?

Di 1.5 kita bilang tidak ada penjelasan definitif kenapa Satoshi memilih angka 21 juta. Itu masih berlaku, dan tidak bertentangan dengan yang berikut ini. Yang tidak pernah dijelaskan Satoshi adalah kenapa ia memilih 50 BTC per block dan jarak 210.000 block. Begitu dua angka itu ditetapkan, 21 juta bukan lagi pilihan, melainkan konsekuensi yang mengikuti dengan sendirinya. Kalau semua era dijumlahkan dari 50 BTC, 25 BTC, 12,5 BTC, dan seterusnya sampai tak terhingga, hasilnya mendekati tepat 21 juta BTC. Ini adalah deret geometri yang konvergen.

Rumus — Total supply Bitcoin
Rumus deret geometri total supply Bitcoin Sigma dari n=0 sampai 32 dari 210.000 dikali 50 dibagi 2 pangkat n sama dengan 21 juta BTC Total supply Bitcoin Σ n = 0 32 210.000 × 50 2 n ≈ 21.000.000 BTC Deret geometri yang konvergen — 33 era halving, reward awal 50 BTC, dipotong setengah tiap 210.000 block

Setelah reward nol

Kalau block reward nol, apa yang memotivasi miner? Transaction fee. Seiring reward turun, fee diharapkan naik karena permintaan ruang block meningkat. Ini adalah transisi bertahap selama lebih dari 100 tahun dari subsidi ke ekonomi fee murni.

Halving adalah mekanisme disinflasi yang sudah terprogram sejak awal. Perlu ditegaskan istilahnya: suplai Bitcoin tetap bertambah setiap block, hanya lajunya yang terus melambat menuju nol. Yang berkurang adalah kecepatan pencetakan, bukan jumlah yang beredar. Berbeda dengan bank sentral yang bisa mencetak uang kapanpun, jadwal emisi Bitcoin tidak bisa diubah oleh siapapun. Setiap node memverifikasi bahwa coinbase transaction tidak melebihi reward yang diizinkan.

Simulasi interaktif — Jadwal halving dan emisi Bitcoin
Bar ungu menunjukkan reward per block di setiap era. Garis hijau menunjukkan total supply yang beredar, mendekati 21 juta BTC secara asimtotik.
Kurva emisi Bitcoin: reward block berkurang setengah setiap ~4 tahun, total supply mendekati 21 juta BTC pada tahun 2140.
Block reward per block Total supply beredar
Coba sendiri: jalan menuju 21 juta, dan apa yang terjadi sesudahnya
era 4
Era dimulai sekitar
2024
Reward per block
3,125 BTC
Total beredar di akhir era
19.687.500 BTC
Persen dari 21 juta
93,75%
Bab 5 · 5.6
Ketika penyerang menguasai mayoritas hashrate
Serangan 51%

Proof of Work memastikan bahwa untuk mengubah riwayat transaksi, seseorang harus mengulangi seluruh pekerjaan komputasi yang sudah dilakukan. Tapi ada satu skenario yang sering dibahas: bagaimana kalau seseorang menguasai lebih dari separuh hashrate jaringan?

Apa yang bisa dilakukan penyerang?

Dengan lebih dari 50% hashrate, penyerang bisa melakukan double-spend. Caranya: kirim bitcoin ke pihak lain, tunggu konfirmasi, sementara itu tambang rantai alternatif secara diam-diam. Karena punya hashrate lebih besar, rantai alternatif tumbuh lebih cepat. Setelah barang diterima, siarkan rantai alternatif. Berdasarkan aturan longest chain, jaringan mengadopsi rantai baru, dan transaksi pembayaran asli menghilang. Penyerang juga bisa menyensor transaksi tertentu, menolak memasukkan transaksi dari alamat tertentu ke dalam block.

Apa yang tidak bisa dilakukan penyerang?

Banyak yang salah paham. Penyerang tidak bisa mencuri bitcoin dari wallet orang lain. Tidak bisa memalsukan tanda tangan kriptografi. Tidak bisa mencetak bitcoin baru di luar jadwal halving. Tidak bisa mengubah aturan konsensus. Kriptografi yang mendasari Bitcoin tidak tersentuh oleh serangan ini.

Kenapa serangan ini tidak masuk akal secara ekonomi?

Untuk menguasai 51% hashrate Bitcoin saat ini, penyerang harus mengoperasikan lebih banyak ASIC dari seluruh miner jujur di dunia, dengan biaya hardware, listrik, dan infrastruktur mencapai miliaran dolar. Kalau serangan berhasil dan terdeteksi, kepercayaan terhadap Bitcoin runtuh, harga jatuh, dan seluruh hardware penyerang kehilangan nilainya. Penyerang menghancurkan investasinya sendiri.

Bagaimana kalau motivasinya bukan profit, tapi kehancuran?

Ini pertanyaan yang lebih serius. Bayangkan aktor sekelas negara yang rela menggelontorkan sumber daya hampir tak terbatas hanya untuk merusak Bitcoin, tanpa peduli kerugian ekonomi. Apakah Bitcoin bisa bertahan?

Jawabannya: ya, tapi membutuhkan respons aktif dari komunitas. Serangan 51% yang berkelanjutan akan terdeteksi sangat cepat. Ribuan node di seluruh dunia akan melihat reorg besar yang tidak wajar. Komunitas developer bisa mengusulkan perubahan algoritma hashing melalui hard fork. Kalau algoritma diganti, seluruh hardware ASIC yang digunakan penyerang seketika menjadi tidak berguna. Penyerang harus membeli hardware baru lagi dari awal, sementara komunitas hanya perlu memperbarui software.

Ini adalah perang yang sangat asimetris: mempertahankan jauh lebih murah dari menyerang. Setiap serangan baru membutuhkan investasi hardware baru yang masif. Setiap respons hanya membutuhkan update kode.

Serangan 51% dan desentralisasi

Inilah kenapa desentralisasi mining bukan sekadar idealisme, tapi pertahanan nyata. Semakin tersebar hashrate di seluruh dunia di antara ribuan operator independen, semakin mahal dan semakin sulit bagi satu pihak untuk menguasai mayoritas. Tidak ada satu titik yang bisa diserang, disuap, atau dipaksa untuk menyerah.

Ketahanan Bitcoin terhadap serangan 51% bukan hanya soal biaya. Ia juga soal insentif, desentralisasi, dan kemampuan komunitas untuk beradaptasi. Sebuah jaringan yang bisa mengganti algoritma hashing dalam hitungan hari adalah jaringan yang sangat sulit dihancurkan secara permanen, bahkan oleh aktor dengan sumber daya hampir tak terbatas.

Simulasi interaktif — Race Attack
Atur hashrate penyerang lalu klik Mulai. Di bawah 50%, rantai jujur selalu menang. Di atas 50%, penyerang akan mengejar dan akhirnya berhasil. Kalau serangan berhasil, klik "Community response" dan lihat apa yang terjadi.
Hashrate penyerang 30%
Jujur
3 block
Penyerang
0 block
Atur hashrate penyerang dan klik Mulai untuk melihat race attack.
Di bawah 50%: rantai jujur selalu lebih panjang dalam jangka panjang. Di atas 50%: rantai penyerang akan mengejar dan akhirnya menang. Saat community response, algoritma diganti dan seluruh rantai penyerang menjadi tidak valid.
← Daftar Bab
BLK #915,217
Bab 6 · 6.1
Program kecil di balik setiap transaksi
Apa itu Bitcoin Script?

Setiap transaksi Bitcoin yang pernah ada menyertakan satu pertanyaan dan satu jawaban. Pertanyaannya ada di output: "Siapa yang bisa membelanjakan bitcoin ini?" Jawabannya ada di input transaksi berikutnya: "Inilah bukti bahwa saya berhak membelanjakannya." Kedua hal ini dikodekan dalam program kecil yang disebut Script.

Bagaimana Script bekerja

Script adalah bahasa berbasis stack. Tidak ada variabel, tidak ada loop, tidak ada fungsi. Yang ada hanya dua hal: data dan perintah. Data didorong ke atas tumpukan (push). Perintah mengambil data dari tumpukan, melakukan sesuatu, dan mengembalikan hasilnya (pop). Eksekusi berjalan dari kiri ke kanan, satu instruksi pada satu waktu.

Bayangkan sebuah tumpukan piring. Kamu bisa menaruh piring di atas (push) atau mengambil piring dari atas (pop). Script bekerja persis seperti ini, tapi isinya adalah data dan hasil perhitungan.

Kenapa tidak Turing complete?

Satoshi sengaja merancang Script agar tidak Turing complete. Tidak ada loop, tidak ada rekursi, tidak ada kondisi yang bisa berjalan tanpa batas. Ini bukan kekurangan, tapi keputusan desain yang sangat disengaja. Setiap node di jaringan harus memverifikasi setiap transaksi. Kalau Script bisa berisi loop tanpa batas, satu transaksi jahat bisa melumpuhkan seluruh jaringan. Dengan Script yang terbatas, waktu eksekusi selalu terprediksi dan singkat.

scriptPubKey dan scriptSig

scriptPubKey adalah "kunci gembok" yang dipasang di output. Ia mendefinisikan kondisi yang harus dipenuhi untuk membelanjakan output tersebut. scriptSig adalah "kunci" yang dibawa oleh pengirim transaksi berikutnya. Ia berisi data yang diperlukan untuk memenuhi kondisi di scriptPubKey. Untuk transaksi SegWit, scriptSig digantikan atau dilengkapi oleh witness field yang bekerja dengan prinsip yang sama tapi lebih efisien.

Script adalah salah satu bagian Bitcoin yang paling sering disalahpahami. Banyak yang mengira Bitcoin hanya bisa melakukan transaksi sederhana. Padahal dengan Script, Bitcoin bisa mengekspresikan kondisi pengeluaran yang sangat kompleks, mulai dari multisig sampai time-locked transaction, semuanya tanpa server pusat dan tanpa kepercayaan.

Simulasi interaktif — Stack visualizer
Pilih salah satu script lalu klik "Langkah berikutnya" untuk melihat eksekusi step by step. Setiap instruksi menjelaskan apa yang terjadi di stack.
Stack (bawah → atas)
kosong
Instruksi saat ini
—
Pilih script dan klik langkah berikutnya.
Bab 6 · 6.2
Perintah-perintah yang menjalankan Script
Opcodes

Script terdiri dari dua jenis elemen: data dan opcodes. Data adalah nilai yang didorong ke stack. Opcodes adalah perintah yang mengoperasikan data tersebut.

Kategori opcodes

Stack operations memanipulasi isi stack tanpa perhitungan. OP_DUP menduplikasi nilai teratas. OP_DROP membuangnya. OP_SWAP menukar dua nilai teratas. Arithmetic operations melakukan matematika sederhana: OP_ADD menjumlahkan, OP_SUB mengurangi. Comparison operations membandingkan nilai: OP_EQUAL push TRUE kalau sama, OP_EQUALVERIFY langsung gagalkan script kalau tidak sama. Crypto operations melakukan kriptografi: OP_SHA256 menghash, OP_HASH160 dipakai untuk membuat alamat, OP_CHECKSIG memverifikasi tanda tangan. Flow control mengarahkan eksekusi: OP_IF untuk kondisi, OP_VERIFY untuk memastikan nilai TRUE, OP_RETURN untuk membuat output yang tidak bisa dibelanjakan.

Opcode yang dinonaktifkan

Bitcoin pernah punya opcode yang lebih ekspresif, termasuk operasi string, perkalian, dan bitwise. Sebagian besar dinonaktifkan pada 2010 setelah ditemukan celah keamanan. Operasi seperti OP_CAT bisa membuat stack tumbuh eksponensial dan digunakan untuk serangan DoS. OP_MUL dan OP_DIV berpotensi crash node karena perilaku edge case yang tidak terdefinisi dengan baik. Ini adalah contoh bagaimana Bitcoin memilih keamanan di atas fitur.

OP_RETURN

OP_RETURN layak disebut tersendiri. Ia menghentikan eksekusi script sepenuhnya dan menandai output sebagai provably unspendable, tidak mungkin dibelanjakan, bukan karena kunci yang salah, tapi karena script-nya dirancang untuk tidak pernah menghasilkan TRUE. Dipakai untuk menyematkan data kecil ke blockchain: hash dokumen, pesan, atau metadata lainnya. Batas ukuran datanya bukan aturan konsensus, melainkan relay policy yang bisa berbeda tiap node dan implementasi — konvensi lama: 80 bytes.

Miniscript

Menulis Bitcoin Script secara manual sangat rawan kesalahan. Script yang kelihatan benar bisa punya bug halus yang menyebabkan dana terkunci selamanya atau bisa dicuri. Miniscript adalah bahasa terstruktur yang dikompilasi ke Bitcoin Script, dirancang agar script bisa dianalisis secara otomatis: apakah bisa dibelanjakan, berapa biayanya, apakah ada kondisi yang saling bertentangan?

Miniscript mendefinisikan sekumpulan "fragment" yang bisa digabungkan secara aman: kunci tunggal, multisig, timelock, hash preimage, dan kombinasinya dengan AND, OR, dan threshold. Setiap fragment punya tipe yang ketat sehingga compiler bisa memverifikasi bahwa script yang dihasilkan benar-benar bisa dieksekusi sesuai intensi. Wallet yang mendukung Miniscript bisa membaca script apapun yang dibuat dengan Miniscript dan langsung tahu kondisi-kondisi pengeluarannya.

Dengan sekitar 200 opcode yang terdefinisi, sebagian besar tidak aktif, Script Bitcoin terlihat sederhana. Tapi kesederhanaan inilah yang membuatnya aman. Setiap opcode yang aktif telah diuji dan diaudit selama lebih dari satu dekade. Tidak ada kejutan.

Simulasi interaktif — Opcode stack demo
Pilih opcode dan lihat langsung efeknya ke stack. Isi nilai input sesuai keinginan lalu klik Jalankan.
—
—
Pilih opcode di atas.
Sebelum
→
Sesudah
Referensi — Kamus opcodes
Filter berdasarkan kategori untuk melihat daftar opcode, kepanjangan, dan efeknya ke stack.
Opcode Hex Kepanjangan Kategori Efek ke stack
Bab 6 · 6.3
Format transaksi paling klasik Bitcoin
P2PKH

P2PKH adalah singkatan dari Pay-to-Public-Key-Hash. Ini adalah format transaksi Bitcoin yang paling klasik dan paling banyak dipakai sejak Bitcoin lahir. Kalau kamu pernah melihat alamat Bitcoin yang dimulai dengan angka 1, itulah P2PKH.

Bagaimana P2PKH bekerja

Idenya sederhana: alih-alih menyebutkan kunci publik penerima secara langsung di output, yang disimpan adalah hash dari kunci publik tersebut. Inilah "Public Key Hash" dalam P2PKH. Ketika seseorang ingin membelanjakan output P2PKH, mereka harus membuktikan dua hal: pertama, bahwa mereka tahu kunci publik yang menghasilkan hash tersebut. Kedua, bahwa mereka punya private key yang sesuai dengan kunci publik itu, dibuktikan dengan tanda tangan digital.

scriptPubKey P2PKH

scriptPubKey adalah "kunci gembok" yang dipasang di output. Untuk P2PKH, bentuknya selalu sama: OP_DUP OP_HASH160 <Public Key Hash> OP_EQUALVERIFY OP_CHECKSIG. Artinya: siapapun yang bisa membuktikan bahwa mereka tahu kunci publik yang hash-nya adalah ini, dan bisa menandatangani dengan private key yang sesuai, boleh membelanjakan output ini.

scriptSig P2PKH

scriptSig adalah "kunci" yang dibawa pengirim. Untuk P2PKH hanya ada dua elemen: <Tanda Tangan> <Kunci Publik>. Sangat sederhana.

Proses verifikasi

Node menggabungkan scriptSig dan scriptPubKey, lalu menjalankannya sebagai satu script. Stack dijalankan dari kiri ke kanan. OP_DUP menduplikasi kunci publik. OP_HASH160 meng-hash satu salinannya. OP_EQUALVERIFY membandingkan hasil hash dengan hash yang tersimpan di output. Kalau cocok, OP_CHECKSIG memverifikasi tanda tangan terhadap kunci publik. Kalau semua berhasil, hasilnya TRUE dan transaksi valid.

Kenapa hash, bukan kunci publik langsung?

Karena hash memberikan lapisan keamanan ekstra. Selama output belum dibelanjakan, kunci publik tidak pernah terekspos di blockchain. Yang tampil hanya hash-nya. Ini berarti bahkan kalau suatu hari nanti komputasi kuantum bisa memecahkan kriptografi kurva eliptik, bitcoin yang belum pernah dibelanjakan masih terlindungi oleh hash.

P2PKH sudah ada sejak block pertama Bitcoin. Meski sekarang ada format yang lebih efisien seperti P2WPKH, P2PKH tetap valid dan masih banyak digunakan. Kompatibilitas ke belakang adalah salah satu prinsip utama Bitcoin.

Simulasi interaktif — Verifikasi P2PKH
Klik "Langkah berikutnya" untuk melihat bagaimana scriptSig dan scriptPubKey digabung dan dijalankan step by step. Klik "Lihat raw data" untuk melihat hex sungguhan.
Script lengkap (scriptSig + scriptPubKey)
● Data — nilai yang di-push ke stack ● Opcode — perintah
Stack
kosong
Langkah saat ini
—
Klik "Langkah berikutnya" untuk mulai.
// scriptSig (dari input transaksi) "scriptSig": { "asm": "3045022100a7b3e4f1...01 03d4e8c9f2...", "hex": "483045022100a7b3e4f1c2d890ab12ef3456789012345 67890abcdef01210 3d4e8c9f2a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9" } // scriptPubKey (dari output UTXO yang dibelanjakan) "scriptPubKey": { "asm": "OP_DUP OP_HASH160 89abcdef0123456789abcdef0123456789abcdef OP_EQUALVERIFY OP_CHECKSIG", "hex": "76a91489abcdef0123456789abcdef0123456789abcdef88ac", "type": "pubkeyhash", // "address" dihitung node dari scriptPubKey, bukan data on-chain "address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa" } // Breakdown hex scriptPubKey: 76a914{20-byte PKH}88ac // 76 = OP_DUP // a9 = OP_HASH160 // 14 = push 20 bytes // 89abcdef...abcdef = Public Key Hash (20 bytes) // 88 = OP_EQUALVERIFY // ac = OP_CHECKSIG
Bagan alur — Legacy (P2PKH)
Legacy atau Pay to Public Key Hash (P2PKH)Legacy atau Pay to Public Key Hash (P2PKH)Private KeyPublic KeyPublic Key Hashmenghasilkan1hash1602Digital SignatureECDSA(dipakai untukmenandatangani transaksi)4menghasilkandiverifikasi5DicocokkanKalau cocokberarti valid.3Digital signature + public keyadalahscriptSigPubkey hashadalahscriptPubKeySetelah scriptPubKey dan scriptSig selesaibeserta tahap verifikasinyaKita lanjut ke penerimaDecode addresspenerimaAmbil public keyhash (PKH)penerimaDari PKH penerima buatscriptPubKey baruuntuk penerima
geser bagan ke samping
Perhatikan bahwa public key baru muncul saat dibelanjakan. Sebelum itu, yang tercatat di blockchain hanya hash160-nya. Inilah lapisan perlindungan yang kita bahas di 2.3, dan juga alasan kenapa memakai ulang satu address menghilangkannya.
Bab 6 · 6.4
Memisahkan tanda tangan dari transaksi
P2WPKH dan SegWit

P2PKH bekerja dengan baik selama bertahun-tahun. Tapi seiring Bitcoin tumbuh, ada masalah yang semakin mendesak: block penuh, fee mahal, dan satu celah teknis yang disebut transaction malleability.

Transaction malleability

Transaction malleability adalah kemampuan pihak ketiga untuk mengubah Transaction ID (txid) sebuah transaksi tanpa membatalkan transaksinya. Ini mungkin karena txid dihitung dari seluruh data transaksi termasuk scriptSig, dan scriptSig bisa dimodifikasi sedikit tanpa membuat tanda tangan tidak valid. Malleability membuat Lightning Network dan payment channel yang lebih kompleks sangat sulit dibangun di atas Bitcoin.

SegWit (Segregated Witness)

SegWit diaktifkan pada Agustus 2017 melalui soft fork. Idenya elegan: pisahkan data tanda tangan (witness data) dari data transaksi utama. Dalam transaksi SegWit, scriptSig dikosongkan. Data tanda tangan dipindahkan ke struktur terpisah yang disebut witness field. Karena txid sekarang hanya dihitung dari data transaksi tanpa witness data, transaction malleability sepenuhnya teratasi. Sebagai bonus, witness data mendapat diskon biaya: satu byte witness dihitung sebagai 0.25 vbyte, bukan 1 byte.

P2WPKH

P2WPKH adalah singkatan dari Pay-to-Witness-Public-Key-Hash, versi SegWit dari P2PKH. scriptPubKey-nya jauh lebih pendek: hanya OP_0 <Public Key Hash>. OP_0 menandakan ini adalah SegWit version 0, diikuti hash kunci publik 20 bytes. Tanda tangan dan kunci publik tidak lagi ada di scriptSig, keduanya ada di witness field yang diproses secara terpisah.

Alamat P2WPKH

Alamat P2WPKH menggunakan format bech32 yang dimulai dengan bc1q. Format ini hanya menggunakan huruf kecil, tidak mengandung karakter yang membingungkan seperti 0, O, I, dan l, dan punya error detection yang lebih baik dari Base58Check.

Kompatibilitas

Node lama yang tidak mengerti SegWit melihat scriptPubKey OP_0 <hash> sebagai output yang selalu bisa dibelanjakan. Ini disengaja sebagai bagian dari desain soft fork: node lama tidak perlu memvalidasi witness data, mereka hanya perlu tidak menolaknya.

SegWit adalah salah satu upgrade terbesar dalam sejarah Bitcoin. Ia menyelesaikan transaction malleability, membuat fee lebih efisien, dan membuka jalan untuk Lightning Network. Semua ini dicapai melalui soft fork, tanpa memecah jaringan.

Visualisasi — P2PKH vs P2WPKH
Perbandingan struktur transaksi P2PKH dan P2WPKH. Perhatikan bagaimana scriptSig dikosongkan dan data dipindah ke witness field.
P2PKH legacy
Input — scriptSig
Tanda tangan <sig> · 71-72 bytes
Kunci publik <pubkey> · 33 bytes
Output — scriptPubKey
Script OP_DUP OP_HASH160
PKH <20 bytes>
OP_EQUALVERIFY OP_CHECKSIG
Witness field
tidak ada
Alamat
Format 1... (Base58Check)
P2WPKH SegWit v0
Input — scriptSig
kosong — data dipindah ke witness
Output — scriptPubKey
Script OP_0
PKH <20 bytes>
Witness field
Tanda tangan <sig> · 71-72 bytes
Kunci publik <pubkey> · 33 bytes
Alamat
Format bc1q... (bech32)
Ukuran transaksi
P2PKH ~192 vbyte
P2WPKH ~110 vbyte
P2WPKH sekitar 40% lebih kecil
Keunggulan P2WPKH
✓Transaction malleability teratasi, txid tidak terpengaruh witness data
✓Fee lebih murah, witness data dihitung 0.25 vbyte per byte
✓Membuka jalan untuk Lightning Network
✓Soft fork, kompatibel dengan node lama
// Transaksi P2WPKH — getrawtransaction (decoded) { "txid": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2", "version": 2, "vin": [ { "txid": "prev_txid...", "vout": 0, // scriptSig kosong pada P2WPKH — data ada di witness "scriptSig": { "asm": "", "hex": "" }, // witness: array terpisah, tidak masuk kalkulasi txid "txinwitness": [ "3044022079be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f8179802205a...", "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" ], "sequence": 4294967295 } ], "vout": [ { "value": 0.01500000, "scriptPubKey": { // OP_0 + 20-byte PKH — jauh lebih pendek dari P2PKH "asm": "0 89abcdef0123456789abcdef0123456789abcdef", "hex": "001489abcdef0123456789abcdef0123456789abcdef", "type": "witness_v0_keyhash", // address dihitung node dari scriptPubKey, bukan data on-chain "address": "bc1q3khdp5drgztj5gwkqcnwu9stvtcm7qhkz2vc83" } } ] } // Breakdown hex scriptPubKey P2WPKH: 0014{20-byte PKH} // 00 = OP_0 (SegWit version 0) // 14 = push 20 bytes // 89abcdef...abcdef = Public Key Hash (20 bytes) // // Bandingkan dengan P2PKH: 76a914{PKH}88ac (5 bytes overhead) // P2WPKH: 0014{PKH} (2 bytes overhead)
Bagan alur — SegWit (P2WPKH)
SegWit atau Pay to Witness Public Key Hash (P2WPKH)SegWit atau Pay to Witness Public Key Hash (P2WPKH)Private KeyPublic KeyPublic Key Hashmenghasilkan1hash1602Digital SignatureECDSA(dipakai untukmenandatangani transaksi)4menghasilkandiverifikasi5DicocokkanKalau cocokberarti valid.3Digital signature + public keyadalahwitness data · scriptSig kosongPubkey hashadalahscriptPubKeySetelah scriptPubKey dan scriptSig selesaibeserta tahap verifikasinyaKita lanjut ke penerimaDecode addresspenerimaAmbil public keyhash (PKH)penerimaDari PKH penerima buatscriptPubKey baruuntuk penerima
geser bagan ke samping
Bahannya sama persis dengan P2PKH. Yang berubah cuma tempat penyimpanannya: tanda tangan dan public key pindah ke witness, scriptSig ditinggal kosong. Karena witness dihitung seperempat, ongkosnya turun tanpa mengubah satu pun langkah kriptografi.
Bab 6 · 6.5
Menyembunyikan kondisi pengeluaran yang kompleks
P2SH dan Multisig

Bayangkan sebuah perusahaan yang ingin menyimpan bitcoin dengan aturan: tidak boleh ada satu orang pun yang bisa memindahkan dana sendirian. Dibutuhkan setidaknya 2 dari 3 direktur untuk menyetujui setiap transaksi. Bagaimana Bitcoin mengekspresikan aturan ini?

P2MS (bare multisig)

Sebelum P2SH, Bitcoin punya format multisig yang disebut P2MS atau Pay-to-Multisig. Scriptnya langsung meletakkan semua kunci publik di scriptPubKey: OP_2 <pubkey1> <pubkey2> <pubkey3> OP_3 OP_CHECKMULTISIG. Masalahnya, semua kunci publik langsung terekspos di blockchain sejak output dibuat. Lebih buruk lagi, tidak ada format alamat standar untuk P2MS. Pengirim harus tahu struktur script lengkapnya, bukan sekadar alamat.

P2SH (Pay-to-Script-Hash)

P2SH diaktifkan pada 2012 sebagai soft fork. Idenya brilian: sembunyikan script yang kompleks di balik sebuah hash. Penerima membuat redeem script yang mendefinisikan kondisi pengeluaran, lalu meng-hash-nya. Hash inilah yang dimasukkan ke scriptPubKey: OP_HASH160 <redeem script hash> OP_EQUAL. Hanya 3 elemen. Script yang sebenarnya baru terungkap saat output dibelanjakan.

Alamat P2SH

Hash dari redeem script di-encode menggunakan Base58Check dengan prefix yang menghasilkan alamat dimulai dengan angka 3. Pengirim cukup tahu alamat ini tanpa perlu tahu struktur multisig di dalamnya.

Keuntungan P2SH

Pertama, privasi: script kondisi yang kompleks tidak terekspos sampai saat dibelanjakan. Kedua, standarisasi: penerima bisa memberikan alamat biasa tanpa harus menjelaskan struktur multisig mereka kepada pengirim. Ketiga, beban di penerima: biaya untuk menyertakan script yang panjang ditanggung penerima saat spending, bukan pengirim saat membuat output.

P2SH-P2WPKH

P2SH bisa juga membungkus script SegWit, disebut P2SH-P2WPKH atau wrapped SegWit. Dipakai sebagai jalan tengah untuk wallet lama yang belum mendukung bech32 tapi ingin menikmati keuntungan SegWit. Alamatnya tetap dimulai dengan 3 tapi di dalamnya berisi witness program.

P2SH mengubah cara Bitcoin mengekspresikan kondisi pengeluaran yang kompleks. Alih-alih meletakkan seluruh logika di output, logikanya disembunyikan di balik hash. Ini adalah contoh bagaimana Bitcoin berkembang melalui abstraksi yang elegan, tanpa mengubah aturan dasar.

Visualisasi — P2MS vs P2SH
Bandingkan dua pendekatan multisig. P2MS mengekspos semua kunci publik langsung di output. P2SH menyembunyikannya di balik hash — kunci publik baru terungkap saat dibelanjakan.
P2MS (bare multisig) · 2 dari 3 historis
Output — scriptPubKey (tampil on-chain)
ScriptOP_2
Kunci publik 103a1b2c3... (33 bytes) — terekspos
Kunci publik 203d4e5f6... (33 bytes) — terekspos
Kunci publik 303g7h8i9... (33 bytes) — terekspos
ScriptOP_3 OP_CHECKMULTISIG
Input — scriptSig
DummyOP_0 (bug lama OP_CHECKMULTISIG)
Tanda tangan 1<sig1>
Tanda tangan 2<sig2>
Alamat
tidak ada format alamat standar
⚠️ Semua kunci publik terekspos di blockchain sejak output dibuat. Pengirim harus tahu struktur script lengkapnya. Tidak ada format alamat standar.
// P2MS bare multisig 2-dari-3 — scriptPubKey (tampil on-chain sejak output dibuat) "scriptPubKey": { "asm": "2 03a1b2c3...b0c1 03d4e5f6...e3f4 03g7h8i9...z6 3 OP_CHECKMULTISIG", "hex": "522103a1b2c3...2103d4e5f6...2103g7h8i9...53ae", "type": "multisig" // tidak ada field "address" — P2MS tidak punya format alamat standar } // Breakdown hex scriptPubKey P2MS: // 52 = OP_2 (butuh 2 tanda tangan) // 21 = push 33 bytes // 03a1b2.. = kunci publik 1 (33 bytes) — TEREKSPOS // 21 = push 33 bytes // 03d4e5.. = kunci publik 2 (33 bytes) — TEREKSPOS // 21 = push 33 bytes // 03g7h8.. = kunci publik 3 (33 bytes) — TEREKSPOS // 53 = OP_3 (total 3 kunci publik) // ae = OP_CHECKMULTISIG // Total ukuran scriptPubKey P2MS: ~107 bytes "scriptSig": { "asm": "0 <sig1> <sig2>", "hex": "004830450221...01483045022100..." }
P2SH · saat menerima output on-chain
Output — scriptPubKey (tampil on-chain)
ScriptOP_HASH160
Redeem hash<20 bytes> — hanya hash, script tersembunyi
ScriptOP_EQUAL
Alamat
Format3... (Base58Check)
↓ saat dibelanjakan, redeem script baru terungkap
P2SH · saat membelanjakan input on-chain
Input — scriptSig
DummyOP_0
Tanda tangan 1<sig1>
Tanda tangan 2<sig2>
Redeem scriptOP_2 <pk1> <pk2> <pk3> OP_3 OP_CHECKMULTISIG
Verifikasi node
Langkah 1Hash redeem script, cocokkan dengan hash di output
Langkah 2Jalankan redeem script, verifikasi tanda tangan
✓ Kunci publik hanya terekspos saat spending. Pengirim cukup tahu alamat 3... tanpa perlu tahu struktur multisig di dalamnya.
// P2SH multisig 2-dari-3 — scriptPubKey (saat output dibuat) "scriptPubKey": { "asm": "OP_HASH160 8f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a OP_EQUAL", "hex": "a9148f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a87", "type": "scripthash", // address dihitung node dari scriptPubKey, bukan data on-chain "address": "3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5" } // Breakdown hex: a914{20-byte hash}87 — hanya 23 bytes total // a9 = OP_HASH160 // 14 = push 20 bytes // 8f1a...8f9a = hash dari redeem script (20 bytes) // 87 = OP_EQUAL // Bandingkan P2MS: 107 bytes. P2SH: 23 bytes. // scriptSig (saat dibelanjakan — redeem script baru terungkap) "scriptSig": { "asm": "0 <sig1> <sig2> 5221<pk1>21<pk2>21<pk3>53ae", "hex": "004830450221...014830450221...475221...53ae" } // Redeem script breakdown: // 52 = OP_2 (butuh 2 tanda tangan) // 21 = push 33 bytes (compressed pubkey) // 53 = OP_3 (total 3 kunci publik) // ae = OP_CHECKMULTISIG
Bagan alur — P2SH dengan multisig 2 dari 3
P2SH atau Pay to Script Hash (contoh: multisig 2 dari 3)P2SH atau Pay to Script Hash (contoh: multisig 2 dari 3)3 Private Key3 Public KeyRedeem Script(butuh 2 dari 3 tanda tangan)menghasilkan1disusun jadi2Script Hashhash16032 Digital SignatureECDSA(dari 2 pemilik kuncimana pun di antara 3)4menghasilkan5Tahap 1hash160(redeem script) dicocokkan dengan script hash6Tahap 2redeem script dijalankan, 2 tanda tangan diperiksaKalau dua-duanya lolos, barulah valid.2 tanda tangan + redeem scriptadalahscriptSigScript hashadalahscriptPubKeySetelah scriptPubKey dan scriptSig selesaibeserta dua tahap verifikasinyaKita lanjut ke penerimaDecode addresspenerima(awalan 3)Ambil script hashpenerimaDari script hash buatscriptPubKey baruuntuk penerima
geser bagan ke samping
Inilah yang membedakan P2SH dari tiga bagan sebelumnya: verifikasinya dua tahap, bukan satu. Dan perhatikan bahwa redeem script baru terungkap saat dibelanjakan. Sebelum itu, blockchain sama sekali tidak tahu ini multisig 2 dari 3, tidak tahu ada tiga kunci, bahkan tidak tahu ada aturan apa pun. Yang tercatat cuma satu hash.
Bab 6 · 6.6
Buktikan hanya yang perlu dibuktikan
Taproot dan P2TR

Taproot diaktifkan pada November 2021 melalui soft fork. Ia adalah upgrade Bitcoin terbesar sejak SegWit, dan membawa tiga perubahan sekaligus: Schnorr signature, MAST, dan sebuah format output baru bernama P2TR.

Masalah yang diselesaikan Taproot

Sebelum Taproot, ada dua masalah yang mengganggu. Pertama, privasi: transaksi multisig, lightning channel, dan transaksi sederhana terlihat berbeda di blockchain. Siapapun bisa melihat bahwa sebuah output adalah multisig atau smart contract hanya dari bentuk scriptnya. Kedua, efisiensi: script yang kompleks dengan banyak kondisi harus menyertakan seluruh kondisi saat dibelanjakan, bahkan kondisi yang tidak dipakai.

Schnorr signature

Schnorr signature menggantikan ECDSA untuk transaksi Taproot. Keunggulan utamanya adalah key aggregation: beberapa kunci publik bisa digabungkan menjadi satu kunci publik tunggal. Ini berarti multisig 3-dari-5 bisa terlihat persis sama dengan transaksi biasa satu penandatangan di blockchain. Tidak ada yang bisa membedakan keduanya hanya dari melihat output.

MAST (Merkelized Alternative Script Trees)

MAST memungkinkan sebuah output memiliki banyak kondisi pengeluaran alternatif, masing-masing sebagai cabang dari Merkle tree. Saat dibelanjakan, pengirim hanya perlu mengungkapkan cabang yang dipakai, bukan seluruh pohon. Cabang yang tidak dipakai tetap tersembunyi selamanya. Ini menghemat ruang di blockchain dan menjaga privasi kondisi yang tidak terpakai.

P2TR (Pay-to-Taproot)

P2TR menggabungkan Schnorr dan MAST dalam satu format output yang elegan. scriptPubKey-nya sangat sederhana: OP_1 <tweaked public key>. OP_1 menandakan SegWit version 1, diikuti sebuah kunci publik 32 bytes yang sudah dimodifikasi untuk menyertakan komitmen terhadap seluruh script tree. Output P2TR bisa dibelanjakan dengan key path (tanda tangan Schnorr langsung) atau script path (ungkap salah satu cabang MAST).

Alamat P2TR

Alamat P2TR menggunakan format bech32m yang dimulai dengan bc1p. Berbeda dari bech32 yang dipakai P2WPKH, bech32m mempunyai checksum yang diperbarui untuk menangani panjang witness program yang berbeda.

Tapscript

Tapscript adalah versi Script yang dipakai di dalam script path spending Taproot. Ia bukan bahasa baru, melainkan revisi dari Script lama dengan beberapa perubahan penting. OP_CHECKSIG tetap ada dan kini bekerja dengan Schnorr signature. Yang dinonaktifkan adalah OP_CHECKMULTISIG, digantikan oleh opcode baru bernama OP_CHECKSIGADD. Ini memungkinkan multisig yang lebih efisien karena semua tanda tangan bisa diperiksa secara paralel, bukan satu per satu seperti di Script lama.

Tapscript juga memperkenalkan OP_SUCCESS: sekelompok opcode yang saat ini selalu menghasilkan sukses. Ini bukan bug, melainkan desain yang disengaja untuk memudahkan upgrade Script di masa depan tanpa hard fork. Kalau suatu saat OP_SUCCESS tertentu diberi makna baru melalui soft fork, script lama yang menggunakannya otomatis mendukung semantik baru.

Taproot bukan sekadar upgrade teknis. Ia adalah perubahan filosofi: dari "buktikan semuanya" menjadi "buktikan hanya yang perlu dibuktikan." Kondisi yang tidak terpakai tidak perlu diungkapkan. Ini membuat Bitcoin lebih privat, lebih efisien, dan lebih ekspresif sekaligus.

Visualisasi — Key path vs Script path
Output P2TR bisa dibelanjakan dua cara. Key path: satu tanda tangan Schnorr, terlihat seperti transaksi biasa. Script path: ungkap satu cabang MAST beserta Merkle proof-nya.
Output P2TR · scriptPubKey SegWit v1 · sama untuk semua jenis spending
On-chain
OP_1SegWit version 1 (Taproot)
Tweaked pubkey<32 bytes> — kunci publik yang mengandung komitmen terhadap seluruh script tree
Alamatbc1p... (bech32m)
Output di atas bisa dibelanjakan dengan dua cara
Key path spending cara paling sederhana dan privat
Input — scriptSig
kosong — data ada di witness
Input — witness field (isi utama)
Tanda tangan<sig Schnorr> · 64 bytes — satu-satunya data yang diperlukan
Kunci publik
tidak disertakan — sudah terkandung di tweaked pubkey output
Hanya satu tanda tangan Schnorr 64 bytes. Tidak ada kunci publik, tidak ada script, tidak ada hint apapun tentang kondisi pengeluaran lainnya. Di blockchain, ini terlihat identik dengan transaksi P2WPKH biasa.
// P2TR key path — witness hanya 1 elemen "txinwitness": [ // tanda tangan Schnorr 64 bytes (bukan DER seperti ECDSA) "b7e153914a144f5da87aec346c38b2c0f3f58e6e6c3b5d8a7f9e2c1b4d6a8f0e3c5a7b9d1f3e5a7c9e1b3d5f7a9c1e3" ], "scriptSig": { "asm": "", "hex": "" } "scriptPubKey": { // 5120{32-byte tweaked pubkey} // 51 = OP_1 (SegWit v1 / Taproot) // 20 = push 32 bytes "hex": "512079be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", "type": "witness_v1_taproot", // address dihitung node dari scriptPubKey, bukan data on-chain "address": "bc1p0xlxvlhemja6c4dqv22uapctqupfhlxm9h8z3k2e72q4k9hcz7vqzk5jj0" } // Perbandingan ukuran witness: // P2WPKH: [sig(71b), pubkey(33b)] = 104 bytes // P2TR key path: [sig_schnorr(64b)] = 64 bytes — 38% lebih kecil
Script tree (MAST) · tersimpan di tweaked pubkey ● diungkap   ○ tersembunyi
Root
├──
Branch AB
──┤
Branch CD
● Script A: multisig 2-dari-3
○ Script B: timelock 6 bulan
○ Script C: recovery key
○ Script D: emergency
Script path · ungkap Script A Script B, C, D tetap tersembunyi
Input — scriptSig
kosong
Input — witness field
Tanda tangan 1<sig1> untuk Script A
Tanda tangan 2<sig2> untuk Script A
Script AOP_2 <pk1> <pk2> <pk3> OP_3 OP_CHECKSIGADD OP_2 OP_EQUAL
Control blockversi + internal pubkey + Merkle proof ke root
Merkle proof: hash(B) + hash(CD) → verifikasi bahwa Script A adalah bagian sah dari tree yang dikomit di tweaked pubkey
Script B, C, dan D tidak pernah terungkap di blockchain. Hanya Script A dan Merkle proof-nya yang disertakan. Node memverifikasi bahwa Script A memang bagian dari tree, lalu menjalankan Script A untuk memverifikasi tanda tangan.
// P2TR script path — witness 4 elemen "txinwitness": [ // [0] tanda tangan 1 "304402203a5b7c9d...01", // [1] tanda tangan 2 "304402201f2e3d4c...01", // [2] Script A yang diungkap "5221{pk1}21{pk2}21{pk3}535287", // [3] control block: leaf version + internal pubkey + Merkle proof "c179be667ef9...{hash_B}{hash_CD}" ] // Control block breakdown: // c1 = leaf version 0xc0 + parity bit 0x01 // 79be... = internal public key (32 bytes) // {hash_B} = hash Script B (32 bytes) — tidak diungkap // {hash_CD} = hash Branch CD (32 bytes) — tidak diungkap // Script A breakdown: 5221{pk1}21{pk2}21{pk3}535287 // 52 = OP_2, 21 = push 33 bytes, 53 = OP_3 // OP_CHECKSIGADD (0xba) menggantikan OP_CHECKMULTISIG di Taproot // 52 = OP_2, 87 = OP_EQUAL (verifikasi counter = 2)
Bagan alur — Taproot (P2TR)
Taproot atau Pay to Taproot (P2TR)Taproot atau Pay to Taproot (P2TR)Private KeyPublic Key(x-only)TweakedPublic Keymenghasilkan1SHA256 &secp256k12Digital SignatureSchnorr(dipakai untukmenandatangani transaksi)3menghasilkandiverifikasi4Digital signatureadalahwitness data · scriptSig kosongTweaked pubkeyadalahscriptPubKeySetelah scriptPubKey dan scriptSig selesaibeserta tahap verifikasinyaKita lanjut ke penerimaDecode addresspenerimaAmbil tweakedpublic keypenerimaDari tweaked pubkey buatscriptPubKey baruuntuk penerima
geser bagan ke samping
Perhatikan bahwa tahap pencocokan hash hilang. Tidak ada hash160 sama sekali. Tanda tangan Schnorr langsung diverifikasi terhadap tweaked public key yang sudah tercatat di scriptPubKey, jadi alurnya lebih pendek satu langkah dibanding dua bagan sebelumnya.
← Daftar Bab
BLK #915,217
Bab 7 · 7.1
Kenapa Bitcoin tidak bisa menangani jutaan transaksi per detik?
Masalah Skalabilitas

Bitcoin by design lambat dan mahal untuk transaksi kecil. Setiap transaksi harus dikonfirmasi di blockchain, menunggu 10 menit per block, dan bersaing dengan transaksi lain untuk ruang block yang terbatas. Di saat jaringan ramai, fee bisa mencapai puluhan dolar untuk transaksi senilai beberapa sen.

Ini bukan bug. Ini trade-off yang disengaja.

Mengapa block dibatasi?

Block size yang besar berarti node harus menyimpan dan memproses lebih banyak data. Semakin besar block, semakin mahal biaya menjalankan node. Semakin mahal biaya node, semakin sedikit orang yang mau menjalankannya. Semakin sedikit node, semakin terpusat jaringan. Sentralisasi adalah musuh utama Bitcoin.

Satoshi memahami ini. Bitcoin dirancang untuk menjadi settlement layer yang aman, bukan sistem pembayaran ritel. Setiap transaksi yang masuk ke blockchain adalah transaksi yang sudah final dan tidak bisa diubah, seperti settlement antar bank, bukan seperti gesek kartu di kasir.

Trilemma skalabilitas

Ada tiga sifat yang diinginkan dari sistem pembayaran: terdesentralisasi, aman, dan skalabel. Secara bersamaan, ketiganya tidak bisa dicapai sepenuhnya dalam satu layer. Bitcoin memilih desentralisasi dan keamanan. Skalabilitas diselesaikan di layer lain.

Layer 2 sebagai jawaban

Solusinya bukan memperbesar block, tapi membangun layer di atas Bitcoin yang bisa menangani transaksi dengan cepat dan murah, tapi tetap mewarisi keamanan Bitcoin sebagai settlement layer akhir. Lightning Network adalah implementasi paling matang dari ide ini.

Perdebatan ini bukan perdebatan teoretis. Ia sempat membelah komunitas Bitcoin pada 2017 dan berakhir dengan hard fork yang melahirkan Bitcoin Cash, sebuah jaringan terpisah dengan block yang jauh lebih besar.

Keduanya masih berjalan sampai hari ini, jadi kamu bisa melihat sendiri konsekuensi dari dua pilihan itu. Bitcoin Cash memang memberikan fee yang jauh lebih murah, persis seperti yang dijanjikan. Yang juga terjadi: hash rate yang mengamankannya tinggal sebagian kecil dari Bitcoin, dan adopsinya jauh lebih sempit. Rantai dengan hash rate lebih rendah lebih murah untuk diserang, dan itu konsekuensi aritmetika, bukan pendapat.

Apakah harga itu sepadan dengan fee yang lebih murah adalah pertanyaan yang sampai sekarang masih diperdebatkan dengan sungguh-sungguh oleh orang-orang yang paham betul apa yang mereka bicarakan. Yang penting kamu pahami dari bab ini bukan siapa yang menang, melainkan kenapa memperbesar block bukan pilihan gratis. Setiap tambahan kapasitas dibayar dengan naiknya biaya menjalankan node, dan node adalah yang membuat aturan Bitcoin bisa ditegakkan tanpa mempercayai siapapun.

Visualisasi — Trilemma skalabilitas
Pilih skenario untuk melihat bagaimana setiap pendekatan memilih trade-off yang berbeda di antara tiga sifat yang diinginkan.
Bab 7 · 7.2
Bertransaksi ribuan kali dengan dua transaksi on-chain
Payment Channel

Lightning Network dibangun di atas satu konsep sederhana: tidak semua transaksi perlu dicatat di blockchain. Yang perlu dicatat hanya dua hal: saat channel dibuka dan saat channel ditutup.

Ide dasarnya

Bayangkan dua orang, Alice dan Bob, yang sering bertransaksi satu sama lain. Daripada setiap transaksi masuk ke blockchain, mereka bisa membuka sebuah payment channel: mengunci sejumlah bitcoin di sebuah multisig address bersama, lalu bertransaksi di antara mereka secara off-chain sesuka hati, dan hanya menetapkan saldo akhir ke blockchain saat selesai. Selama channel terbuka, Alice dan Bob bisa saling mengirim bitcoin ribuan kali tanpa satu pun transaksi menyentuh blockchain. Hanya dua transaksi on-chain yang terjadi: satu untuk membuka channel, satu untuk menutupnya.

Multisig 2-dari-2: fondasi channel

Di balik setiap payment channel adalah sebuah multisig 2-dari-2. Berbeda dengan multisig biasa seperti di P2SH yang bisa 2-dari-3 atau 3-dari-5 dengan toleransi satu pihak absen, multisig Lightning tidak punya toleransi sama sekali. Kedua pihak harus menandatangani untuk menutup channel secara kooperatif. Ini bukan kelemahan, ini adalah desain yang disengaja. Tidak ada satu pihak pun yang bisa unilateral mengambil dana kecuali lewat mekanisme yang sudah disepakati sebelumnya.

Commitment transaction

Setiap kali saldo berubah di dalam channel, Alice dan Bob saling bertukar commitment transaction: transaksi yang belum disiarkan yang merepresentasikan distribusi saldo terkini. Kalau salah satu pihak ingin keluar dari channel, mereka bisa menyiarkan commitment transaction terakhir ke blockchain.

Tiga skenario penutupan channel

Pertama, penutupan kooperatif: kedua pihak setuju, menandatangani closing transaction bersama, dana langsung dibagi sesuai saldo akhir. Ini yang paling efisien. Kedua, penutupan paksa: salah satu pihak menghilang atau tidak mau kooperatif. Pihak yang jujur bisa menyiarkan commitment transaction terakhir secara unilateral, tapi harus menunggu time-lock selesai sebelum bisa mengambil dananya. Ketiga, hukuman atas kecurangan: kalau seseorang mencoba menyiarkan commitment transaction lama yang lebih menguntungkan dirinya, pihak lain punya window waktu untuk mendeteksi dan menyiarkan revocation key. Hasilnya: pihak yang curang kehilangan seluruh dananya di channel.

Insentif yang membuat curang tidak masuk akal

Kalau Alice mencoba curang dengan menyiarkan state lama, Bob bisa mengambil seluruh dana di channel sebagai hukuman, bukan hanya miliknya saja. Alice kehilangan segalanya. Ini membuat kecurangan sangat mahal dan irasional secara ekonomi.

Tapi bagaimana kalau Bob sedang tidur?

Di sinilah seluruh mekanisme hukuman tadi punya syarat yang belum kita sebut. Bob hanya bisa menghukum kalau ia melihat state lama itu muncul di blockchain, dan ia harus melihatnya sebelum timelock Alice habis, biasanya sekitar satu hari. Kalau node Bob mati, ponselnya kehabisan baterai, atau ia sedang berlibur seminggu, Alice bisa curang dan lolos begitu saja.

Ini bukan celah teoretis. Justru inilah beda paling nyata antara Bitcoin on-chain dan Lightning. Bitcoin biasa tidak menuntut apa pun darimu setelah transaksi dikonfirmasi: kamu bisa hilang sepuluh tahun dan dananya tetap aman. Lightning menuntut kehadiran, karena keamanannya bersandar pada seseorang yang mengawasi dalam jendela waktu tertentu.

Jawabannya adalah watchtower, sebuah layanan yang mengawasi blockchain menggantikan kamu. Kamu menitipkan padanya sepotong data terenkripsi untuk setiap state yang dicabut. Data itu tidak memberitahu watchtower siapa kamu, berapa saldomu, atau channel mana yang kamu punya. Ia baru berguna kalau state lama yang cocok benar-benar muncul di blockchain, dan pada saat itulah watchtower bisa menyusun penalty transaction dan menyiarkannya untukmu.

Yang menarik, kamu tidak perlu memercayai watchtower. Ia tidak bisa mencuri danamu, tidak bisa membuka channel-mu, dan tidak tahu apa-apa selama tidak ada kecurangan. Risiko terburuknya cuma satu: ia lalai dan tidak melakukan apa-apa, yang membuatmu kembali ke posisi seperti tidak punya watchtower sama sekali. Karena itu banyak pengguna menitip ke beberapa watchtower sekaligus.

Jadi kalimat "curang tidak masuk akal" tadi perlu satu tambahan supaya jujur: curang tidak masuk akal selama ada yang mengawasi. Menyediakan pengawas itu, entah lewat node yang selalu menyala atau lewat watchtower, adalah ongkos yang dibayar Lightning demi kecepatannya.

Payment channel bukan penemuan Lightning Network. Benihnya sudah ada di kode Bitcoin paling awal: Satoshi menyertakan mekanisme penggantian transaksi berbasis nSequence yang ia jelaskan lewat korespondensi, bukan lewat whitepaper. Idenya lalu dikembangkan beberapa peneliti sebelum Lightning. Kenapa mekanisme awal itu gagal bekerja, kita bahas di 15.3. Yang Lightning lakukan adalah menghubungkan banyak channel menjadi jaringan yang bisa melakukan routing pembayaran antar pihak yang tidak punya channel langsung.

Simulasi interaktif — Lifecycle channel dan Penalty Transaction
Klik setiap fase untuk melihat detail transaksi. Perhatikan berapa banyak transaksi off-chain yang terjadi dengan hanya dua transaksi on-chain.
Fase 1on-chain
Buka Channel
Funding transaction dikunci di multisig 2-dari-2
Alice0.05 BTC
Bob0.05 BTC
→
Fase 2off-chain
Transaksi dalam Channel
Saldo berubah, tidak ada yang on-chain
Alice0.03 BTC
Bob0.07 BTC
→
Fase 3on-chain
Tutup Channel
Settlement transaction mencatat saldo akhir
Alice0.03 BTC
Bob0.07 BTC
Fase 1 · Buka Channel
Klik setiap fase untuk melihat detail transaksi dan penjelasannya.
Coba curangstate terakhir: Alice 0.03 / Bob 0.07
Saldo Alice sudah turun dari 0.05 ke 0.03 BTC. Di komputernya masih tersimpan state lama waktu ia masih punya 0.05. Kenapa ia tidak menyiarkan yang itu saja? Coba saja, dan lihat apa yang terjadi.
Bab 7 · 7.3
Bayar siapapun, lewat siapapun, tanpa kepercayaan
Routing dan HTLC

Payment channel antara dua pihak sudah powerful. Tapi bayangkan ini: Alice ingin membayar Carol, tapi Alice dan Carol tidak punya channel langsung. Haruskah mereka membuka channel baru hanya untuk satu transaksi? Tentu tidak. Lightning punya cara yang lebih elegan.

Bayar lewat perantara

Kalau Alice punya channel ke Bob, dan Bob punya channel ke Carol, Alice bisa membayar Carol lewat Bob. Bob jadi perantara. Tidak perlu channel baru, tidak perlu interaksi on-chain sama sekali. Tapi ini langsung memunculkan pertanyaan yang sangat wajar: kenapa Alice harus percaya Bob? Bagaimana kalau Bob mengambil uang Alice tapi tidak meneruskannya ke Carol? Jawabannya: Alice tidak perlu percaya Bob sama sekali. Ini yang membuat Lightning luar biasa.

Kunci dan rahasia

Bayangkan sebuah gembok dengan kunci yang unik. Carol yang membuat gembok itu, dan hanya Carol yang punya kuncinya. Carol memberikan foto gembok itu kepada Alice, tapi menyimpan kuncinya untuk dirinya sendiri. Alice berkata kepada Bob: "Aku akan memberikan 0.01 BTC kepadamu, tapi hanya kalau kamu bisa menunjukkan kunci yang membuka gembok ini. Kalau dalam 24 jam kamu tidak bisa menunjukkannya, uangnya kembali ke aku." Bob tahu bahwa Carol punya kuncinya. Jadi Bob berkata kepada Carol: "Aku akan memberikan 0.01 BTC kepadamu, tapi hanya kalau kamu menunjukkan kunci itu kepadaku. Kalau dalam 12 jam tidak ada, uangnya kembali ke aku." Carol menunjukkan kuncinya kepada Bob, mengambil 0.01 BTC. Bob sekarang punya kunci itu, menunjukkannya kepada Alice, mengambil 0.01 BTC. Selesai.

Dalam bahasa teknis: HTLC

Mekanisme "gembok dan kunci" ini dalam dunia Bitcoin disebut HTLC, singkatan dari Hash Time-Locked Contract. "Gembok" adalah hash dari sebuah rahasia. "Kunci" adalah rahasia itu sendiri. HTLC bukan teknologi baru. Ia adalah Bitcoin Script biasa, kombinasi dari OP_HASH160 yang sudah kita pelajari di Bab 6 dan OP_CHECKLOCKTIMEVERIFY yang dibahas tuntas di Bab 15. Lightning tidak mengubah Bitcoin, ia hanya memanfaatkan apa yang sudah ada.

Kenapa timelock Bob lebih pendek dari Alice?

Alice memberi Bob waktu 24 jam, tapi Bob memberi Carol waktu 12 jam. Ini bukan kebetulan. Bob butuh cukup waktu untuk bereaksi setelah Carol mengungkapkan kuncinya. Kalau waktunya sama, Bob mungkin tidak sempat mengklaim dari Alice sebelum time-lock habis. Semakin panjang rantai perantara, semakin bertingkat time-lock-nya.

Privasi lewat onion routing

Setiap perantara hanya tahu satu hal: dari mana pembayaran datang dan ke mana harus diteruskan. Bob tahu ia menerima dari Alice dan harus meneruskan ke Carol, tapi Bob tidak tahu apakah Alice adalah pengirim asli atau apakah Carol adalah penerima akhir. Teknik ini disebut onion routing, sama seperti yang dipakai Tor.

HTLC adalah salah satu konstruksi kriptografi paling elegan di Bitcoin. Ia memungkinkan pembayaran melewati banyak perantara yang tidak saling percaya, tanpa satupun perantara bisa mencuri dana. Semua dijamin oleh matematika, bukan kepercayaan.

Visualisasi — Alur pembayaran HTLC
Lima langkah bagaimana Alice membayar Carol lewat Bob tanpa kepercayaan. Klik setiap langkah untuk melihat apa yang terjadi di tiap node.
Bab 7 · 7.4
Apa yang sebenarnya terjadi on-chain?
Membuka dan Menutup Channel

Di 7.2 kita sudah melihat tiga skenario penutupan channel dari sisi konsepnya. Sekarang kita lihat sisi teknisnya: transaksi apa yang sebenarnya disiarkan ke blockchain, dalam urutan apa, dan berapa ongkosnya.

Membuka channel: funding transaction

Membuka channel adalah satu transaksi Bitcoin biasa. Alice dan Bob masing-masing berkontribusi dana ke sebuah output multisig 2-dari-2. Output ini disebut funding output. Sebelum funding transaction disiarkan ke jaringan, Alice dan Bob sudah harus bertukar commitment transaction pertama mereka. Ini penting: kalau funding transaction disiarkan tanpa commitment transaction yang valid dan salah satu pihak tiba-tiba tidak kooperatif, dana bisa terjebak selamanya. Jadi urutannya: buat commitment transaction dulu, baru siarkan funding transaction.

Tiga cara menutup channel

Pertama, cooperative close: kedua pihak setuju menutup channel. Mereka menandatangani closing transaction bersama yang langsung membagi dana sesuai saldo akhir. Ini cara terbaik: cepat, murah, dan tidak perlu menunggu time-lock. Kedua, force close: salah satu pihak tidak bisa dihubungi atau tidak mau kooperatif. Pihak yang jujur menyiarkan commitment transaction terakhir. Ada time-lock yang harus ditunggu sebelum dana bisa diambil, biasanya beberapa ratus block. Ini memberi waktu bagi pihak lain untuk mendeteksi kalau ada kecurangan. Ketiga, penalty close: kalau seseorang menyiarkan commitment transaction yang sudah kedaluwarsa, pihak yang jujur bisa menyiarkan justice transaction dan mengambil seluruh dana di channel sebagai hukuman.

Biaya membuka dan menutup channel

Setiap kali membuka channel, ada satu transaksi on-chain. Setiap kali menutup channel, ada satu transaksi on-chain lagi. Jadi biaya on-chain selalu dua kali fee transaksi, tidak peduli berapa banyak transaksi terjadi di dalam channel. Ini yang membuat Lightning sangat ekonomis untuk penggunaan rutin: bayar ribuan transaksi dengan biaya on-chain dua kali saja.

Channel capacity dan likuiditas

Channel punya kapasitas terbatas. Kalau Alice membuka channel dengan 0.1 BTC, ia tidak bisa mengirim lebih dari 0.1 BTC lewat channel itu dalam total. Likuiditas adalah sumber daya yang harus dikelola dengan hati-hati di Lightning Network.

Membuka channel adalah keputusan ekonomi: berapa lama akan dipakai, seberapa besar kapasitas yang dibutuhkan, dan berapa fee on-chain yang rela dibayar. Untuk pengguna kasual, wallet Lightning modern mengelola ini secara otomatis melalui channel yang dikelola penyedia layanan.

Visualisasi — Tiga cara menutup channel
Klik setiap kartu untuk melihat detail, langkah-langkah, dan perbedaan kecepatan serta biaya dari tiap cara menutup channel.
Cooperative closeterbaik
Kecepatan
1 konfirmasi
Transaksi on-chain
1
Time-lock
Tidak ada
Biaya
Paling murah
Force closedarurat
Kecepatan
~144 block
Transaksi on-chain
2
Time-lock
Ada — harus tunggu
Biaya
Lebih mahal
Penalty closehukuman
Kecepatan
Tergantung deteksi
Transaksi on-chain
2-3
Time-lock
Window waktu terbatas
Hasil
Penyerang kehilangan semua
Bab 7 · 7.5
Scan, konfirmasi, selesai — dalam satu detik
Invoice dan Pembayaran

Sejauh ini kita sudah memahami bagaimana channel bekerja dan bagaimana pembayaran bisa dirouting. Tapi bagaimana cara pengguna sehari-hari sebenarnya melakukan pembayaran di Lightning? Jawabannya adalah invoice.

Apa itu invoice?

Invoice adalah permintaan pembayaran yang dibuat oleh penerima. Ia berisi semua informasi yang dibutuhkan pengirim untuk menyelesaikan pembayaran: jumlah yang harus dibayar, hash dari rahasia HTLC, node ID penerima, dan masa berlaku invoice. Invoice biasanya direpresentasikan sebagai string teks panjang yang dimulai dengan lnbc (untuk mainnet) atau kode QR yang bisa discan. Formatnya disebut BOLT-11, salah satu standar protokol Lightning.

Alur pembayaran

Carol ingin menerima 0.001 BTC dari Alice. Carol membuat invoice. Di balik layar, Carol membuat rahasia R dan menghitung H = hash(R), lalu memasukkan H ke dalam invoice. Carol membagikan invoice kepada Alice lewat QR code atau copy-paste. Alice membuka invoice di wallet-nya. Wallet secara otomatis menemukan rute terbaik ke Carol. Alice mengkonfirmasi. Wallet melakukan routing pembayaran HTLC. Carol mengungkapkan R untuk mengklaim pembayaran. Dari sudut pandang pengguna: scan QR, konfirmasi, selesai. Kurang dari satu detik.

Kelemahan invoice klasik

Invoice BOLT-11 punya beberapa keterbatasan. Pertama, single-use: setiap invoice hanya bisa dibayar sekali. Kedua, penerima harus online saat pembayaran datang untuk mengungkapkan R. Ketiga, tidak ada bukti pembayaran yang bisa diverifikasi pihak ketiga.

BOLT-12: offers

Standar baru yang sedang berkembang, BOLT-12, memperkenalkan konsep "offer": sebuah kode statis yang bisa digunakan berkali-kali. Saat pengirim ingin membayar, wallet mereka menghubungi node penerima untuk meminta invoice baru yang unik. Ini menyelesaikan masalah single-use dan memungkinkan pembayaran berulang seperti langganan.

LNURL: satu alamat, berkali-kali dipakai

Di luar standar BOLT, ada pendekatan lain yang sudah banyak dipakai: LNURL. Berbeda dari invoice BOLT-11 yang one-time, LNURL adalah protokol berbasis HTTP yang memungkinkan wallet pengirim untuk meminta invoice baru setiap kali ingin membayar, cukup dari satu alamat statis. Artinya penerima bisa membagikan satu kode atau alamat seperti nama@domain.com, dan pengirim bisa membayar berulang kali tanpa penerima perlu membuat invoice baru setiap saat. Penggunaan lnbc (BOLT-11) tetap jauh lebih umum di transaksi sehari-hari, tapi LNURL hadir sebagai solusi praktis untuk kasus seperti donasi, tip, atau pembayaran berulang.

Lightning invoice adalah antarmuka antara protokol yang kompleks dan pengguna yang hanya ingin scan dan bayar. Di balik QR code sederhana itu tersembunyi payment hash, routing hints, dan tanda tangan kriptografis. Abstraksi yang baik membuat teknologi yang rumit terasa seperti magic.

Visualisasi — Struktur invoice dan alur pembayaran
Tab pertama: klik setiap segmen invoice untuk melihat apa artinya. Tab kedua: alur pembayaran dari buat invoice sampai selesai.
Klik bagian invoice atau legenda untuk melihat penjelasannya:
lnbc1m1pjpp5kw5uzfmzk6wfcg9...hz02a7pqfxpj9...x36000n9rqsypp5...
Prefix jaringan
Jumlah
Timestamp
Payment hash
Node ID penerima
Masa berlaku
Tanda tangan
Pilih bagian invoice untuk melihat penjelasan
C
Carol (penerima)
Buat rahasia dan invoice
Carol membuat rahasia R, menghitung H = hash(R), lalu membuat invoice BOLT-11 yang berisi H, jumlah, dan informasi routing.
lnbc1m1pj...pp5kw5...hz02a7...0n9rq...
C
Carol (penerima)
Bagikan invoice ke Alice
Carol menampilkan QR code atau mengirim string invoice. Alice bisa scan atau copy-paste ke wallet-nya.
A
Alice (pengirim)
Buka invoice dan cari rute
Wallet Alice decode invoice, membaca jumlah dan payment hash, lalu mencari rute terbaik ke node Carol di jaringan Lightning.
A
Alice (pengirim)
Konfirmasi dan kirim HTLC
Alice konfirmasi pembayaran. Wallet memulai HTLC routing menggunakan payment hash H dari invoice. Dana terkunci di tiap hop.
C
Carol (penerima)
Ungkap R, klaim pembayaran
Carol mengungkapkan R ke node terakhir. Dana mengalir balik di tiap hop sampai Alice. Pembayaran selesai.
✓
Selesai
Pembayaran terkonfirmasi dalam kurang dari 1 detik
Tidak ada on-chain transaction. Tidak ada konfirmasi yang perlu ditunggu. R yang diungkap Carol menjadi bukti pembayaran yang tidak bisa dipalsukan.
Bab 7 · 7.6
Tidak ada solusi sempurna — hanya trade-off yang jujur
Keterbatasan dan Trade-off Lightning

Lightning Network adalah teknologi yang luar biasa, tapi bukan solusi sempurna. Memahami keterbatasannya sama pentingnya dengan memahami kelebihannya.

Likuiditas yang terkunci

Untuk membuka channel, pengguna harus mengunci bitcoin di dalamnya. Bitcoin yang terkunci ini tidak bisa dipakai untuk hal lain selama channel terbuka. Untuk node yang melakukan routing, mereka harus mengunci likuiditas di banyak channel sekaligus. Ini adalah modal yang menganggur.

Masalah inbound liquidity

Kalau Alice membuka channel ke Bob dengan 0.1 BTC, seluruh kapasitas ada di sisi Alice. Bob tidak bisa mengirim ke Alice sampai Alice mengirim sesuatu ke Bob terlebih dahulu. Untuk menerima pembayaran, pengguna butuh inbound liquidity: channel yang punya kapasitas di sisi penerima. Mendapatkan inbound liquidity tidak selalu mudah dan sering membutuhkan biaya.

Keharusan online

Untuk menerima pembayaran di Lightning klasik, node penerima harus online. Kalau ponsel mati saat seseorang mencoba membayar, pembayaran gagal. Ini berbeda dengan Bitcoin on-chain di mana penerima tidak perlu online. BOLT-12 offers mulai mengatasi ini, tapi belum sepenuhnya tersebar luas.

Watchtower: delegasi pengawasan

Untuk mendeteksi kecurangan, pengguna harus memantau blockchain secara berkala. Kalau node offline terlalu lama, pihak curang bisa menyiarkan state lama tanpa terdeteksi. Solusinya adalah watchtower: layanan pihak ketiga yang memantau blockchain atas nama pengguna. Tapi ini memperkenalkan elemen kepercayaan baru.

Routing tidak selalu berhasil

Menemukan rute yang punya cukup likuiditas di setiap hop adalah masalah yang sulit. Pembayaran besar sering gagal karena tidak ada rute dengan kapasitas yang cukup. Lightning bekerja sangat baik untuk pembayaran kecil dan rutin, tapi kurang cocok untuk transfer nilai besar.

Trade-off yang jujur

Lightning bukan pengganti Bitcoin on-chain. Ia adalah layer di atasnya untuk pembayaran yang sering, kecil, dan cepat. Untuk pembayaran besar, final, dan yang membutuhkan keamanan maksimal, on-chain tetap lebih tepat. Keduanya melayani kebutuhan yang berbeda.

Setiap teknologi punya trade-off. Yang penting adalah memahami trade-off tersebut dan memilih alat yang tepat untuk kebutuhan yang tepat. Lightning bukan Bitcoin yang lebih baik. Lightning adalah Bitcoin yang diperluas untuk kasus penggunaan yang berbeda.

Perbandingan — Lightning vs Bitcoin on-chain
Perbandingan sembilan dimensi untuk membantu memilih mana yang tepat untuk situasi tertentu.
Dimensi
Lightning Network
Bitcoin on-chain
Kecepatan konfirmasi
Kurang dari 1 detik
Instan setelah routing selesai
10 menit - beberapa jam
Tergantung fee dan kepadatan mempool
Biaya transaksi
Sangat murah
Fraction of satoshi per transaksi
Bervariasi
Bisa mahal saat jaringan ramai
Finalitas pembayaran
Probabilistik
Aman tapi perlu channel aktif
Absolut
Setelah beberapa konfirmasi, tidak bisa dibalik
Keamanan
Tinggi, dengan syarat
Butuh monitoring atau watchtower
Maksimal
Dijamin langsung oleh Proof of Work
Privasi
Lebih baik
Onion routing, tidak semua tercatat on-chain
Terbatas
Semua transaksi publik di blockchain
Penerima harus online
Ya (BOLT-11)
BOLT-12 offers mulai mengatasi ini
Tidak
Dana bisa dikirim kapanpun
Ukuran pembayaran
Mikro sampai menengah
Ideal untuk pembayaran kecil dan rutin
Semua ukuran
Cocok untuk transfer nilai besar
Kompleksitas pengguna
Tinggi
Channel, likuiditas, routing — butuh abstraksi
Menengah
Fee estimation, UTXO management
Modal yang dibutuhkan
Likuiditas terkunci
Bitcoin dikunci di channel
Tidak ada
Tidak perlu modal awal khusus
Pakai Lightning untuk...
Bayar kopi, makanan, atau belanja sehari-hari
Mikropayment: streaming sats per menit, tips konten
Transaksi berulang dengan pihak yang sama
Pembayaran yang butuh konfirmasi instan
Pakai on-chain untuk...
Simpanan jangka panjang (cold storage)
Transfer nilai besar yang butuh finalitas absolut
Kirim ke penerima yang tidak punya Lightning
Membuka atau menutup Lightning channel
Lightning bukan pengganti Bitcoin on-chain. Ia adalah layer di atasnya untuk pembayaran yang sering, kecil, dan cepat. Keduanya melayani kebutuhan yang berbeda dan saling melengkapi.
← Daftar Bab
BLK #915,217
Bab 8 · 8.1
Ribuan komputer yang menjaga aturan tanpa pemimpin
Apa itu Node Bitcoin?

Ketika orang membicarakan "Bitcoin", mereka sering hanya memikirkan harga atau wallet. Tapi di balik semua itu ada ribuan komputer di seluruh dunia yang terus berjalan, memverifikasi setiap transaksi dan menyimpan salinan lengkap blockchain. Komputer-komputer inilah yang disebut node.

Node adalah penjaga aturan

Node Bitcoin bukan sekadar database. Ia adalah penjaga aturan konsensus. Setiap node secara mandiri memverifikasi setiap transaksi dan setiap block menggunakan aturan yang sama. Tidak ada yang bisa memaksanya menerima block yang tidak valid, bahkan kalau block itu datang dari miner terbesar sekalipun. Inilah inti desentralisasi Bitcoin: tidak ada otoritas pusat yang memutuskan apa yang valid. Setiap node memutuskan sendiri, berdasarkan aturan yang sama.

Jenis-jenis node

Full node menyimpan seluruh blockchain dari genesis block sampai hari ini, lebih dari 700 GB per pertengahan 2026 dan terus bertambah puluhan GB setiap tahun. Ia memverifikasi setiap transaksi dan block secara independen. Inilah node yang memberikan keamanan paling tinggi. Pruned node adalah full node yang telah menghapus data lama setelah diverifikasi. Ia tetap memverifikasi semua aturan, tapi hanya menyimpan beberapa GB block terbaru. SPV node hanya mengunduh block header, tidak memverifikasi transaksi secara penuh. Mining node adalah full node yang juga aktif menambang block baru.

Kenapa menjalankan node sendiri?

Menjalankan full node sendiri berarti tidak perlu mempercayai siapapun. Tidak ada SPV yang bisa menipu dengan transaksi palsu kalau kamu punya node sendiri. Tidak ada exchange atau wallet provider yang bisa menyembunyikan informasi. Ini bukan sekadar soal keamanan individu. Semakin banyak orang menjalankan full node, semakin sulit bagi siapapun untuk mengubah aturan Bitcoin tanpa persetujuan mayoritas. Node adalah suara dalam demokrasi Bitcoin.

Menjalankan full node tidak membutuhkan hardware khusus. Sebuah Raspberry Pi dengan hard drive eksternal sudah cukup. Biayanya kurang dari sejuta rupiah, dan kontribusinya terhadap desentralisasi Bitcoin nyata.

Visualisasi — Jaringan P2P Bitcoin
Klik node manapun untuk melihat detail: jenis, data yang disimpan, cara verifikasi, dan fungsinya di jaringan.
Full node
Mining node
Pruned node
SPV node
Klik node manapun untuk melihat detail
Bab 8 · 8.2
Tidak ada pusat, tidak ada titik kegagalan tunggal
Jaringan P2P

Bitcoin tidak punya server pusat. Tidak ada kantor pusat, tidak ada data center yang bisa dimatikan, tidak ada satu titik yang kalau diserang akan menghancurkan semuanya. Yang ada adalah jaringan peer-to-peer: ribuan node yang terhubung langsung satu sama lain.

Apa itu jaringan P2P?

Dalam jaringan tradisional seperti bank atau media sosial, ada server pusat yang melayani semua klien. Kalau server mati, semua klien tidak bisa terhubung. Kalau pemilik server memutuskan untuk memblokir seseorang, tidak ada yang bisa dilakukan. Jaringan P2P berbeda. Setiap peserta adalah sejajar, tidak ada yang lebih "pusat" dari yang lain. Informasi menyebar dari node ke node seperti gosip. Tidak ada satu titik kegagalan.

Bagaimana node terhubung?

Saat node Bitcoin pertama kali dijalankan, ia perlu menemukan peer untuk terhubung. Ada beberapa cara: DNS seed (server yang menyediakan daftar node aktif), hardcoded seed nodes (daftar IP yang tertanam di software), dan peer exchange (bertanya ke node yang sudah terhubung untuk dikenalkan ke peer lain). Setelah terhubung, node mempertahankan sekitar 8 koneksi outbound reguler ditambah 2 koneksi khusus block, dan sisanya diisi koneksi inbound. Bitcoin Core membatasi total koneksi di angka 125, jadi ruang untuk inbound sekitar 115.

Bagaimana informasi menyebar?

Saat Alice mengirim transaksi, walletnya menyiarkan transaksi tersebut ke node yang terhubung. Node menerima transaksi, memverifikasi validitasnya, dan meneruskan ke semua peer-nya. Peer tersebut melakukan hal yang sama. Dalam hitungan detik, transaksi sudah menyebar ke ribuan node di seluruh dunia. Proses ini disebut gossiping. Setiap node hanya meneruskan transaksi yang valid.

Kenapa P2P membuat Bitcoin kuat?

Untuk menyensor Bitcoin, seorang penyerang harus memblokir koneksi ke setiap node di dunia. Selama ada satu node yang bisa diakses, Bitcoin bisa digunakan. Bitcoin sudah diblokir di berbagai negara, tapi pengguna di sana terus bisa mengakses jaringan melalui VPN, Tor, atau sambungan satelit seperti Blockstream Satellite.

Desentralisasi bukan fitur yang bisa ditambahkan belakangan. Ia adalah arsitektur fundamental Bitcoin sejak hari pertama. Jaringan P2P bukan hanya cara Bitcoin beroperasi, ia adalah alasan Bitcoin tidak bisa dihentikan.

Simulasi — Ketahanan terhadap serangan
Klik node untuk menyerangnya, klik lagi untuk memulihkan. Di jaringan P2P, menyerang satu node tidak mempengaruhi yang lain. Di jaringan terpusat, menyerang server pusat melumpuhkan segalanya.
Klik node untuk menyerangnya. Klik lagi untuk memulihkan.
Aktif: 10 / 10
Jaringan P2P berjalan penuh. Coba klik beberapa node untuk menyerangnya.
Klik node klien untuk menyerang satu node. Klik server (tengah) untuk menyerang pusat.
Aktif: 10 / 10  |  Server: online
Server pusat online. Coba serang server pusat (hijau di tengah).
Bab 8 · 8.3
Dari satu wallet ke ribuan node dalam hitungan detik
Propagasi Transaksi

Kamu menekan tombol kirim di wallet. Apa yang terjadi selanjutnya?

Dari wallet ke jaringan

Wallet membuat transaksi yang sudah ditandatangani dan menyiarkannya ke satu atau beberapa node yang terhubung. Node pertama yang menerima transaksi ini disebut node asal dari sudut pandang pengguna, meskipun jaringan tidak benar-benar mencatatnya demikian.

Verifikasi sebelum diteruskan

Node yang menerima transaksi tidak langsung meneruskannya. Ia melakukan serangkaian verifikasi terlebih dahulu: apakah format transaksi valid, apakah tanda tangan kriptografis benar, apakah UTXO yang digunakan benar-benar ada dan belum dipakai, apakah fee-nya masuk akal. Kalau semua lolos, transaksi masuk ke mempool node tersebut dan diteruskan ke semua peer-nya. Kalau gagal verifikasi, transaksi dibuang dan tidak diteruskan. Ini adalah mekanisme pertahanan alami: spam dan transaksi tidak valid mati di node pertama yang menerimanya.

Node policy vs konsensus rules

Ada perbedaan penting yang sering disalahpahami: konsensus rules dan node policy adalah dua hal yang berbeda. Konsensus rules adalah aturan yang menentukan apakah sebuah transaksi atau block valid secara protokol. Semua node harus sepakat soal ini, kalau tidak sepakat mereka akan fork. Node policy adalah keputusan individual node tentang transaksi apa yang mau diterima ke mempool dan diteruskan ke peer, terlepas dari apakah transaksi itu valid secara konsensus atau tidak.

Contoh konkret: datacarrier dan datacarriersize adalah dua pengaturan node policy yang tersedia di software node seperti Bitcoin Core dan Bitcoin Knots. datacarrier mengontrol apakah node mau meneruskan transaksi yang menggunakan OP_RETURN untuk menyematkan data arbitrer. datacarriersize menentukan batas maksimal ukuran data tersebut dalam bytes. Angka batas ini bukan aturan protokol — nilai default-nya berbeda antar implementasi dan berubah antar versi. Konvensi yang bertahan bertahun-tahun adalah 83 bytes (80 bytes data), dan sejak 2025 angka ini menjadi pusat perdebatan besar: satu kubu ingin melonggarkan batas relay, kubu lain ingin mempertahankan filter. Setiap operator node bebas menyetel nilainya sendiri. Node yang mematikan datacarrier tidak akan memasukkan transaksi OP_RETURN ke mempoolnya dan tidak meneruskannya ke peer lain. Tapi kalau miner tetap memasukkan transaksi itu ke block, node tersebut tetap menerima blocknya karena transaksi OP_RETURN valid secara konsensus. Policy berhenti di mempool, bukan di validasi block.

Ini juga yang mendasari perdebatan tentang Ocean Pool yang kita bahas di Bab 11: pool tersebut menerapkan filtering transaksi berdasarkan policy mereka sendiri, bukan karena transaksi yang difilter itu tidak valid. Satu node atau pool bisa memilih policy yang berbeda dari mayoritas tanpa melanggar konsensus, tapi konsekuensinya adalah transaksi yang mereka tolak tetap akan masuk ke blockchain melalui miner atau node lain yang tidak menerapkan filtering yang sama.

Flooding dan deduplication

Propagasi transaksi menggunakan mekanisme flooding: setiap node yang menerima transaksi valid meneruskannya ke semua peer. Tapi ini menimbulkan masalah karena sebuah node bisa menerima transaksi yang sama dari banyak peer secara bersamaan. Solusinya adalah deduplication. Setiap node menyimpan daftar transaksi yang sudah pernah dilihat. Kalau transaksi yang sama datang lagi, ia langsung dibuang tanpa diproses ulang.

Berapa lama sampai ke seluruh jaringan?

Dalam kondisi normal, sebuah transaksi menyebar ke sebagian besar node di seluruh dunia dalam waktu kurang dari 5 detik. Untuk mencapai 90% node biasanya butuh sekitar 10-15 detik. Ini jauh sebelum transaksi dikonfirmasi di blockchain yang butuh rata-rata 10 menit.

Privasi dalam propagasi

Ada masalah privasi yang menarik: node pertama yang menyiarkan transaksi kemungkinan besar adalah pengirim asli atau terhubung langsung dengannya. Pengamat yang memantau banyak node bisa mencoba mengidentifikasi asal transaksi. Solusi yang paling banyak dibahas untuk ini adalah Dandelion++: transaksi pertama kali diteruskan secara diam-diam melalui satu jalur (stem phase) sebelum akhirnya disebarkan ke seluruh jaringan (fluff phase). Ini membuat asal transaksi jauh lebih sulit dilacak. Perlu dicatat, Dandelion++ belum masuk ke Bitcoin Core, dan alasannya kita bahas di 18.6.

Propagasi transaksi adalah salah satu proses paling elegan di Bitcoin. Ribuan node yang tidak saling kenal, tidak ada koordinasi terpusat, tapi dalam hitungan detik informasi sudah tersebar ke seluruh penjuru dunia. Semua karena setiap node mengikuti aturan yang sama.

Simulasi — Propagasi transaksi di jaringan P2P
Klik "Kirim Transaksi" untuk memulai. Amati bagaimana transaksi menyebar dari node ke node, termasuk log verifikasi dan deteksi duplikat.
Node menerima: 0 / 12
0.0 dtk
—Klik "Kirim Transaksi" untuk memulai simulasi
Transaksi akan menyebar dari node pengirim ke seluruh jaringan melalui mekanisme gossiping. Setiap node memverifikasi sebelum meneruskan.
Bab 8 · 8.4
Block baru harus menyebar secepat mungkin — milidetik berarti uang
Propagasi Block

Propagasi transaksi dan propagasi block punya tujuan yang sama: menyebarkan informasi ke seluruh jaringan secepat mungkin. Tapi block jauh lebih besar dari transaksi, dan ada taruhan yang jauh lebih tinggi: miner yang menemukan block baru ingin seluruh jaringan mengakuinya secepat mungkin sebelum miner lain menemukan block berikutnya.

Dari miner ke jaringan

Saat miner menemukan nonce yang valid, ia langsung menyiarkan block baru ke semua peer-nya. Setiap node yang menerima block melakukan verifikasi penuh: apakah proof of work valid, apakah semua transaksi di dalamnya valid, apakah block header terhubung ke block sebelumnya dengan benar. Kalau semua lolos, block diterima, ditambahkan ke chain lokal, dan diteruskan ke semua peer.

Masalah: block terlalu besar

Block Bitcoin bisa berukuran hingga 4 MB dengan SegWit weight. Menyebarkan 4 MB ke ribuan node membutuhkan bandwidth yang signifikan. Di era awal Bitcoin ini tidak masalah karena block jarang penuh. Tapi saat jaringan ramai, delay propagasi bisa menyebabkan masalah serius.

Compact Block dan Header-First

Solusi utama adalah Compact Block (BIP 152): daripada mengirim seluruh block, node mengirim block header plus daftar ID transaksi yang sudah disingkat. Penerima kemungkinan besar sudah punya hampir semua transaksi tersebut di mempool-nya. Ia hanya perlu meminta transaksi yang belum dimilikinya. Ini mengurangi data yang dikirim secara drastis, dari megabytes menjadi kilobytes. Header-First propagation adalah teknik lain: node menyiarkan header block terlebih dahulu sebelum seluruh block siap, memungkinkan validasi proof of work dimulai lebih awal.

Orphan block dan kenapa kecepatan penting

Ada fenomena yang disebut orphan block: dua miner menemukan block valid di waktu yang hampir bersamaan. Jaringan sementara terpecah menjadi dua versi chain. Akhirnya chain yang lebih panjang menang, dan block di chain yang lebih pendek menjadi orphan, valid tapi tidak diakui. Semakin lambat propagasi, semakin besar kemungkinan orphan block terjadi. Compact Block sudah mengurangi orphan rate secara signifikan.

Kecepatan propagasi block adalah salah satu metrik kesehatan jaringan Bitcoin yang paling penting. Berkat Compact Block, block baru bisa menjangkau sebagian besar jaringan dalam hitungan detik saja. Di era sebelum Compact Block, proses yang sama bisa memakan waktu berkali-kali lipat lebih lama karena seluruh isi block harus dikirim ulang ke setiap peer.

Simulasi — Block biasa vs Compact Block dan Orphan Block
Tab pertama: bandingkan kecepatan dan bandwidth block biasa vs Compact Block secara bersamaan. Tab kedua: visualisasi orphan block saat dua miner menemukan block hampir bersamaan.
Block biasa (Full)
Data: 0 KB | Waktu: 0.0 dtk | Selesai: 0/8
Compact Block (BIP 152)
Data: 0 KB | Waktu: 0.0 dtk | Selesai: 0/8
Block biasa mengirim seluruh data. Compact Block hanya mengirim header + ID transaksi karena node penerima sudah punya transaksinya di mempool.
Situasi: dua miner menemukan block #840,001 hampir bersamaan
840,000
✓
→
840,001A
Miner A
→
840,002
✓
→
840,003
✓
chain terpanjang, menang
840,000
✓
→
840,001B
Miner B
orphan: valid tapi ditinggalkan
⚠️ Block 840,001B adalah orphan block. Ia valid secara kriptografis — proof of work-nya benar, transaksi di dalamnya sah. Tapi karena chain yang mengandung 840,001A lebih panjang, seluruh jaringan memilih chain itu. Miner B kehilangan seluruh block reward-nya.
Kenapa Compact Block mengurangi orphan rate?
Block biasa butuh beberapa detik untuk menyebar ke seluruh jaringan. Selama window itu, miner lain yang belum menerima block baru terus menambang di atas block lama, meningkatkan risiko orphan. Compact Block mempersingkat window ini menjadi kurang dari 1 detik dan risiko orphan turun drastis.
Apa yang terjadi dengan transaksi di orphan block?
Transaksi di orphan block dikembalikan ke mempool dan bisa dikonfirmasi di block berikutnya. Tidak ada bitcoin yang hilang. Satu-satunya yang rugi adalah miner yang menemukan orphan block.
Bab 8 · 8.5
Bagaimana node baru menemukan tempatnya di jaringan?
Koneksi dan Peer Discovery

Di 8.2 kita sebut sekilas tiga cara node menemukan peer. Section ini membedah ketiganya satu per satu, karena justru di sinilah letak salah satu jawaban kenapa Bitcoin sulit diblokir.

Node Bitcoin baru yang pertama kali dijalankan menghadapi satu masalah mendasar: bagaimana caranya menemukan node lain untuk terhubung? Ia tidak tahu alamat siapapun. Jaringan P2P tidak punya direktori terpusat. Tapi dalam hitungan menit, node baru itu sudah terhubung ke puluhan peer di seluruh dunia.

DNS Seed

Cara pertama dan paling umum adalah melalui DNS seed. Software node Bitcoin, seperti Bitcoin Core, Bitcoin Knots, atau implementasi lainnya, umumnya sudah menanam beberapa nama domain khusus di dalam kodenya. Saat node pertama kali dijalankan, ia melakukan DNS query ke domain-domain ini dan mendapat daftar IP address dari node-node yang sedang aktif. DNS seed dikelola oleh orang-orang terpercaya di komunitas Bitcoin. Ini bukan titik kepercayaan yang berbahaya karena node hanya menggunakannya untuk menemukan peer awal dan setelah itu semua verifikasi dilakukan secara mandiri.

Peer Exchange

Setelah terhubung ke beberapa node pertama, node baru bisa meminta daftar peer yang dikenal melalui pesan getaddr. Node yang menerima permintaan ini membalas dengan pesan addr yang berisi daftar alamat IP node lain yang diketahuinya. Dari sini jaringan koneksi berkembang secara organik tanpa koordinasi terpusat.

Hardcoded Seeds

Kalau DNS seed tidak bisa diakses, ada fallback: daftar IP address yang ditanam langsung di dalam kode software. Ini adalah node-node yang diketahui stabil dan sudah lama berjalan. Daftar ini diperbarui setiap beberapa rilis oleh masing-masing tim pengembang.

Mempertahankan koneksi

Node Bitcoin umumnya mempertahankan sekitar 8 koneksi outbound yang dipilihnya sendiri dan menerima koneksi inbound dari peer lain. Koneksi dijaga dengan pesan ping dan pong secara berkala. Node yang tidak merespons akan diputus dan digantikan. Node juga menyimpan database peer address secara lokal sehingga saat dimatikan dan dinyalakan kembali, ia bisa langsung terhubung ke peer yang sudah dikenal tanpa harus memulai peer discovery dari awal.

Mengapa ini penting untuk desentralisasi?

Sistem peer discovery Bitcoin dirancang untuk tidak bergantung pada satu titik. DNS seed bisa gagal atau diblokir, tapi masih ada hardcoded seeds. Hardcoded seeds bisa kadaluwarsa, tapi masih ada database peer dari sesi sebelumnya. Dan kalau semua itu gagal, pengguna bisa memasukkan alamat peer secara manual.

Salah satu cara paling efektif untuk mendukung jaringan Bitcoin adalah menjalankan node dengan koneksi inbound yang terbuka. Node seperti ini membantu node baru menemukan peer dan memperkuat ketahanan jaringan secara keseluruhan.

Visualisasi — Proses peer discovery
Lima langkah bagaimana node baru bergabung ke jaringan Bitcoin, dari terisolasi hingga terhubung penuh.
Bab 8 · 8.6
Teknis dan sosial, keduanya sama pentingnya
Menjaga Jaringan Tetap Sehat

Jaringan Bitcoin yang sehat bukan hanya soal jumlah node. Ini soal kualitas koneksi, keberagaman lokasi, keberagaman software, dan yang sering dilupakan: keberagaman manusia di balik node-node itu.

Kesehatan teknis jaringan

Ada beberapa indikator kesehatan teknis yang bisa dipantau. Jumlah full node yang reachable adalah indikator paling dasar. Semakin banyak, semakin kuat. Distribusi geografis node juga penting: jaringan yang semua node-nya terkonsentrasi di satu negara jauh lebih rentan terhadap regulasi atau pemadaman internet dibanding jaringan yang tersebar merata di seluruh dunia. Keberagaman software juga krusial. Kalau hampir semua node menjalankan satu implementasi yang sama, sebuah bug kritis di implementasi itu bisa mempengaruhi jaringan secara luas.

Apa yang bisa dilakukan sebagai node runner

Pertama, biarkan koneksi inbound terbuka. Node yang menerima koneksi inbound membantu node baru menemukan peer dan memperkuat jaringan. Kedua, jaga uptime. Node yang sering offline tidak banyak berkontribusi. Sebuah perangkat kecil yang berjalan 24 jam jauh lebih berharga dari komputer yang hanya menyala sesekali. Ketiga, perbarui software secara berkala, bukan karena mengikuti satu tim pengembang, tapi karena patch keamanan penting untuk melindungi diri sendiri dan jaringan.

Kesehatan sosial jaringan

Ini bagian yang sering diabaikan tapi sama pentingnya. Node runner adalah orang-orang yang paling berkomitmen terhadap Bitcoin. Mereka meluangkan waktu, uang, dan energi untuk menjalankan infrastruktur yang membuat Bitcoin berfungsi. Dan justru karena komitmen yang besar itulah, perdebatan di antara mereka bisa menjadi sangat panas.

Perdebatan tentang ukuran block, mempool policy, soft fork, pilihan software, cara mengoperasikan node: semua ini adalah perdebatan yang sah dan penting. Tidak setuju adalah hal yang sehat. Ketidaksetujuan adalah tanda bahwa banyak orang berpikir secara mandiri, bukan sekadar mengikuti satu pemimpin.

Tapi ada perbedaan antara tidak setuju dan tidak menghormati. Seseorang bisa memiliki pendapat yang berbeda tentang mempool policy sambil tetap menghargai bahwa orang lain telah meluangkan waktu dan energi untuk menjalankan node mereka sendiri. Seseorang bisa mengkritik keputusan teknis tanpa menyerang karakter orangnya.

Ekosistem bukan monolith

Bitcoin adalah protokol terbuka. Tidak ada satu entitas yang bisa mengklaim otoritas penuh atasnya. Tidak ada satu tim pengembang, tidak ada satu implementasi software, tidak ada satu forum diskusi yang memegang kebenaran tunggal. Ini bukan kelemahan. Ini adalah salah satu kekuatan terbesar Bitcoin. Selama orang-orang dengan pandangan berbeda masih bisa menemukan ground yang sama dalam menjalankan jaringan, Bitcoin akan terus bertahan.

Menjalankan node adalah tindakan nyata, bukan sekadar opini di internet. Apapun perdebatan yang sedang terjadi di luar sana, node yang tetap menyala adalah kontribusi yang selalu bermakna. Dan memperlakukan sesama node runner dengan hormat, walau berbeda pendapat, adalah bagian dari menjaga jaringan tetap sehat.

Dashboard — Kesehatan jaringan Bitcoin
Metrik teknis dan prinsip sosial yang sama-sama menentukan kesehatan jaringan Bitcoin dalam jangka panjang.
Node reachable
18,432
full node yang menerima koneksi inbound
Node dengan inbound terbuka
18,432
Node hanya outbound
~40,000+
Node dengan inbound terbuka membantu node baru bergabung ke jaringan.
Distribusi software
Bitcoin Core
76%
Bitcoin Knots
14%
btcd
4%
Lainnya
6%
Keberagaman software penting. Satu bug di satu implementasi tidak boleh mempengaruhi seluruh jaringan.
Distribusi geografis
Konsentrasi di satu wilayah membuat jaringan rentan terhadap regulasi atau pemadaman internet lokal.
Indikator kesehatan
Propagasi block
<1 dtk
Orphan rate
~0.1%
Node aktif 30 hari
87%
Node dengan inbound
~31%
Koneksi via Tor
~28%
Negara yang terwakili
100+
Kesehatan sosial jaringan
🤝
Tidak setuju itu sehat. Beda pendapat soal mempool policy, ukuran block, atau pilihan software adalah tanda bahwa orang berpikir mandiri, bukan sekadar mengikuti satu pemimpin.
🗣️
Kritik teknis bukan serangan personal. Seseorang bisa mengkritik keputusan teknis tanpa menyerang karakter orangnya. Perdebatan yang baik memperkuat ekosistem.
⚙️
Node yang menyala lebih bermakna dari opini di internet. Apapun perdebatan yang terjadi di luar sana, kontribusi nyata adalah infrastruktur yang tetap berjalan.
🌐
Bitcoin bukan milik satu kelompok. Tidak ada satu tim, satu software, atau satu forum yang memegang kebenaran tunggal. Jaringan paling kuat saat banyak pihak berbeda masih bisa bekerja sama.
← Daftar Bab
BLK #915,217
Bab 9 · 9.1
Ruang tunggu yang tidak terpusat
Apa itu Mempool?

Kita sudah berkenalan dengan mempool di 3.5 sebagai satu tahap dalam perjalanan transaksi. Sekarang kita berhenti lebih lama di sana, karena mempool bukan sekadar ruang tunggu: di sinilah harga sebuah transaksi terbentuk.

Setiap transaksi Bitcoin yang sudah dikirim tapi belum dikonfirmasi hidup di sebuah ruang tunggu. Ruang tunggu ini disebut mempool, kependekan dari memory pool. Setiap node punya mempool-nya sendiri, dan tidak ada "mempool global" yang tunggal.

Ruang tunggu yang tidak terpusat

Karena setiap node mengelola mempool-nya sendiri, dua node yang berbeda bisa punya isi mempool yang sedikit berbeda. Node A mungkin sudah menerima transaksi yang belum sampai ke Node B. Node C mungkin sudah menghapus transaksi yang masih ada di Node D karena keterbatasan memori. Ini normal dan disengaja. Mempool bukan database global yang tersinkronisasi, ia adalah kumpulan transaksi yang menunggu konfirmasi di setiap node secara independen.

Apa yang masuk mempool?

Tidak semua transaksi otomatis diterima ke mempool. Setiap node punya aturan sendiri yang disebut mempool policy. Aturan umum yang berlaku di sebagian besar node: transaksi harus valid secara kriptografis, UTXO yang digunakan harus ada dan belum dipakai, fee harus memenuhi minimum threshold, dan ukuran transaksi harus dalam batas yang wajar. Kalau transaksi tidak memenuhi syarat, ia ditolak dan tidak masuk mempool node tersebut.

Berapa lama transaksi bisa di mempool?

Transaksi yang tidak dikonfirmasi dalam waktu tertentu akan dihapus dari mempool. Sebagian besar node menghapus transaksi yang sudah lebih dari dua minggu. Kalau transaksi dihapus dari mempool sebelum dikonfirmasi, dana tidak hilang. UTXO yang digunakan kembali ke keadaan semula dan transaksi bisa disiarkan ulang.

Mempool dan fee market

Mempool adalah tempat di mana fee market terbentuk secara alami. Ruang dalam setiap block terbatas. Miner memilih transaksi mana yang akan dimasukkan ke block, dan mereka punya insentif ekonomi untuk memilih transaksi dengan fee tertinggi. Saat mempool ramai, pengguna yang ingin cepat dikonfirmasi harus bersaing dengan fee yang lebih tinggi.

Mempool adalah salah satu komponen Bitcoin yang paling sering disalahpahami. Banyak yang panik saat melihat transaksi mereka stuck di mempool. Padahal selama transaksi valid dan fee-nya wajar, ia akan dikonfirmasi, entah sekarang atau nanti saat jaringan lebih sepi.

Simulasi — Mempool dan seleksi transaksi
Langkah 1: tambah transaksi ke mempool. Langkah 2: tambang block untuk melihat bagaimana miner memilih transaksi berdasarkan fee rate tertinggi.
1. 2.
Mempool: 0 tx
Fee tinggi (diprioritaskan)
Fee sedang
Fee rendah (menunggu)
Mempool
Transaksi menunggu konfirmasi
Belum ada transaksi
Kapasitas mempool: 0%
Block saat ini
Dipilih miner berdasarkan fee tertinggi
Belum ada transaksi terpilih
Kapasitas block: 0%
Mulai dari langkah 1: tambah transaksi ke mempool, lalu langkah 2: tambang block untuk melihat bagaimana miner memilih transaksi berdasarkan fee tertinggi.
Bab 9 · 9.2
Bukan fee terbesar yang menang, tapi fee rate tertinggi
Fee Rate dan Prioritas

Di mempool, semua transaksi bersaing untuk masuk ke block berikutnya. Tapi bukan transaksi dengan fee total terbesar yang diprioritaskan. Yang diprioritaskan adalah transaksi dengan fee rate tertinggi.

Apa itu fee rate?

Fee rate adalah fee dibagi ukuran transaksi. Satuannya adalah satoshi per virtual byte, ditulis sat/vB. Sebuah transaksi dengan fee 1.000 satoshi dan ukuran 200 vbyte punya fee rate 5 sat/vB. Transaksi lain dengan fee 500 satoshi tapi ukuran 50 vbyte punya fee rate 10 sat/vB dan akan diprioritaskan lebih tinggi, meskipun fee totalnya lebih kecil. Ini logis dari sudut pandang miner: block punya kapasitas terbatas dalam satuan weight/vbyte, bukan jumlah transaksi. Miner ingin memaksimalkan pendapatan per unit ruang yang tersedia.

Virtual byte vs byte

Sejak SegWit diperkenalkan, ukuran transaksi diukur dalam virtual byte (vbyte) bukan byte biasa. Data witness (tanda tangan) mendapat diskon 75%: setiap 4 byte witness dihitung sebagai 1 vbyte. Ini insentif bagi pengguna untuk menggunakan address SegWit karena transaksi mereka lebih ringan dan fee rate-nya lebih kompetitif untuk fee yang sama.

Bagaimana miner memilih transaksi?

Miner mengurutkan semua transaksi di mempool berdasarkan fee rate, dari tertinggi ke terendah, lalu mengisi block dari atas sampai kapasitas habis. Dalam praktiknya lebih kompleks karena ada dependensi antar transaksi: transaksi B yang menggunakan output transaksi A harus masuk setelah A. Tapi prinsip dasarnya tetap: fee rate tertinggi berarti prioritas tertinggi.

Berapa fee rate yang tepat?

Tidak ada angka yang pasti. Fee rate yang tepat tergantung seberapa ramai mempool saat itu dan seberapa cepat transaksi perlu dikonfirmasi. Saat mempool sepi, bahkan 1 sat/vB bisa dikonfirmasi dalam block berikutnya. Saat mempool sangat ramai, fee rate bisa mencapai ratusan sat/vB. Tools seperti mempool.space membantu melihat kondisi mempool secara real-time.

Memahami fee rate adalah keterampilan dasar yang perlu dimiliki setiap pengguna Bitcoin. Terlalu rendah dan transaksi bisa stuck berminggu-minggu. Terlalu tinggi dan kamu membayar lebih dari yang perlu.

Simulasi — Kalkulator fee rate dan perbandingan Legacy vs SegWit
Tab pertama: hitung fee rate dari fee dan ukuran transaksi. Tab kedua: bandingkan efisiensi Legacy vs SegWit dengan fee yang sama.
Fee total dalam satoshi
Ukuran transaksi dalam vbyte
15.0
sat/vB
1 sat/vB1030100+
Rendah
Sedang
Tinggi
Estimasi konfirmasi
2-3 block
Fee total
2,100 sat
Prioritas di mempool
Sedang
Fee rate 15 sat/vB termasuk sedang.
Fee yang dibayar sama untuk keduanya (satoshi)
Legacy (P2PKH)
Ukuran
226 vbyte
Fee rate
13.3 sat/vB
Prioritas
Sedang
Est. konfirmasi
2-3 block
SegWit (P2WPKH)
Ukuran
140 vbyte
Fee rate
21.4 sat/vB
Prioritas
Tinggi
Est. konfirmasi
Block berikutnya
Dengan fee yang sama, transaksi SegWit punya fee rate lebih tinggi karena ukurannya lebih kecil.
Bab 9 · 9.3
Transaksi stuck? Ada dua cara untuk mengatasinya
RBF dan CPFP

Transaksi sudah dikirim tapi fee-nya terlalu rendah dan stuck di mempool. Apa yang bisa dilakukan? Ada dua mekanisme yang memungkinkan pengguna untuk mempercepat transaksi yang sudah terlanjur dikirim: RBF dan CPFP.

RBF: Replace-By-Fee

RBF memungkinkan pengirim untuk mengganti transaksi yang belum dikonfirmasi dengan versi baru yang punya fee lebih tinggi. Transaksi baru menggunakan UTXO yang sama tapi membayar fee yang lebih besar, sehingga miner lebih tertarik untuk memasukkannya ke block. Agar bisa di-replace, transaksi asli harus menandai dirinya sebagai replaceable dengan mengatur nilai sequence number ke angka tertentu. Ini disebut opt-in RBF. Node yang menerima transaksi pengganti akan membuang transaksi lama dan menggantikan dengan yang baru, selama transaksi baru memenuhi syarat: fee lebih tinggi dan fee rate lebih tinggi dari transaksi aslinya.

Full RBF

Ada juga full RBF, di mana node menerima penggantian transaksi meskipun transaksi aslinya tidak menandai dirinya sebagai replaceable. Ini kontroversial karena menyentuh asumsi bahwa transaksi unconfirmed bisa dianggap aman untuk pembayaran kecil.

CPFP: Child Pays for Parent

CPFP adalah mekanisme yang berbeda. Kalau transaksi asli (parent) stuck karena fee rendah, penerima bisa membuat transaksi baru (child) yang menggunakan output dari transaksi parent, dengan fee yang sangat tinggi. Miner yang ingin mengambil fee dari transaksi child harus memasukkan transaksi parent terlebih dahulu karena child bergantung pada parent. Secara efektif, fee tinggi dari child mensubsidi konfirmasi parent yang fee-nya rendah. Miner menghitung fee rate gabungan dari paket parent+child dan membandingkannya dengan transaksi lain di mempool.

Kapan pakai RBF vs CPFP?

RBF digunakan oleh pengirim yang ingin mengganti transaksinya sendiri. CPFP bisa digunakan oleh penerima, yang tidak bisa mengubah transaksi yang sudah dikirim kepadanya tapi bisa membuat transaksi baru yang menarik parent masuk ke block.

RBF dan CPFP adalah bukti bahwa Bitcoin bisa sangat fleksibel dalam hal manajemen fee. Dua mekanisme yang berbeda untuk menyelesaikan masalah yang sama, dengan trade-off dan asumsi yang berbeda. Memahami keduanya membuat pengguna jauh lebih percaya diri dalam mengelola transaksinya.

Sisi lain dari fleksibilitas itu

Fleksibilitas selalu punya sisi lain. Aturan yang sama yang memungkinkan kamu mempercepat transaksimu sendiri bisa diputarbalikkan untuk menahan transaksi orang lain. Namanya transaction pinning.

Kuncinya ada pada satu kenyataan yang sudah kita bahas di 9.1: mempool bukan bagian dari konsensus. Ia sekadar kebijakan masing-masing node tentang apa yang mau disimpan dan diteruskan. Kebijakan itu punya batas-batas praktis, misalnya seberapa banyak transaksi turunan yang boleh menggantung dari satu transaksi yang belum terkonfirmasi. Batas itu ada untuk melindungi node dari kebanjiran. Tapi batas yang sama bisa dipakai untuk menjebak.

Bentuknya kira-kira begini. Penyerang membuat transaksi turunan yang sangat besar dan berfee sangat rendah, menempel pada transaksi yang ingin ia hambat. Gabungan itu terlalu tidak menarik untuk ditambang, tapi sudah terlanjur memenuhi kuota kebijakan mempool. Akibatnya, korban tidak bisa lagi mengganti atau mempercepat transaksinya, karena penggantinya ditolak oleh kebijakan yang sudah kepenuhan. Transaksinya tidak dibatalkan, ia hanya dipaku di tempat, macet tanpa bisa didorong.

Untuk pembayaran biasa, ini menjengkelkan. Untuk Lightning, ini berbahaya. Ingat dari 7.2 bahwa hukuman terhadap kecurangan hanya bekerja kalau transaksi hukumannya bisa masuk ke blockchain sebelum timelock habis. Kalau penyerang bisa memaku transaksi itu di mempool sampai tenggatnya lewat, mekanisme hukuman yang tampak kokoh di simulasi tadi jadi tidak berdaya. Bukan kriptografinya yang dipatahkan, melainkan jalannya menuju blockchain yang dihalangi.

Ini contoh bagus tentang lapisan keamanan yang berbeda. Bab 4 membahas keamanan yang bersandar pada matematika, dan matematika tidak bisa ditawar. Tapi di lapisan mempool, yang berlaku bukan matematika melainkan kebijakan, dan kebijakan selalu bisa dieksploitasi oleh orang yang membacanya lebih teliti daripada yang membuatnya.

Karena itu perbaikannya juga ada di lapisan kebijakan, bukan di konsensus. Salah satunya package relay, yang membuat node menilai satu transaksi bersama turunannya sebagai satu paket, bukan satu per satu, sehingga transaksi berfee rendah yang ditemani anak berfee tinggi tidak lagi tertolak di gerbang. Ada juga pembatasan bentuk transaksi khusus untuk protokol seperti Lightning, agar ruang bagi penyerang untuk menempelkan turunan raksasa jadi jauh lebih sempit.

Perlu dicatat bahwa perbaikan semacam ini tidak butuh soft fork, karena tidak ada aturan konsensus yang berubah. Cukup node-node memperbarui kebijakannya. Itu membuatnya lebih mudah diterapkan, tapi sekaligus berarti perlindungannya bergantung pada berapa banyak node yang benar-benar memperbarui diri.

Simulasi — RBF dan CPFP
Tab RBF: lihat bagaimana transaksi stuck digantikan dengan versi baru yang fee-nya lebih tinggi. Tab CPFP: buat child transaction untuk menarik parent yang stuck masuk ke block.
Antrian mempool diurutkan berdasarkan fee rate. Transaksi kamu (merah, posisi bawah) terlalu rendah. Klik "Ganti dengan RBF" untuk mengirim versi baru dengan fee lebih tinggi.
Transaksi kamu (stuck)
TX ID
tx_a1b2c3d4
Fee rate saat ini
2.0 sat/vB
Fee rate baru (RBF)
35.0 sat/vB
Tambahan fee
+4,620 sat
Status
Stuck di mempool
Transaksi dengan fee rate 2 sat/vB akan menunggu sangat lama. RBF memungkinkan kamu mengirim ulang transaksi yang sama dengan fee lebih tinggi, menggantikan yang lama di mempool.
Kamu menerima pembayaran (parent tx) tapi transaksinya stuck karena fee rendah. Buat child tx dengan fee tinggi untuk menarik parent masuk ke block.
Paket CPFP (Parent + Child)
Parent fee rate
2.0 sat/vB
Child fee rate
belum dibuat
Fee rate gabungan
menunggu child...
Status paket
Belum ada child tx
Parent tx fee-nya terlalu rendah (2 sat/vB). Karena kamu sudah menerima output-nya, kamu bisa buat child tx dengan fee tinggi. Miner yang ingin ambil fee child HARUS memasukkan parent dulu.
Bab 9 · 9.4
Kenapa fee tiba-tiba melonjak dan apa yang bisa dilakukan
Mempool saat Jaringan Ramai

Ada saat-saat tertentu di mana mempool Bitcoin menjadi sangat ramai. Ribuan transaksi menumpuk, fee rate melonjak, dan pengguna yang membayar fee rendah harus menunggu berjam-jam atau bahkan berhari-hari. Memahami kapan dan kenapa ini terjadi membuat kamu bisa mengantisipasi dan mengambil keputusan yang lebih baik.

Apa yang menyebabkan mempool ramai?

Mempool ramai terjadi ketika laju transaksi masuk melebihi kapasitas block yang bisa dikonfirmasi. Setiap block punya kapasitas sekitar 4 juta weight unit. Weight unit adalah satuan resmi kapasitas block, dan hubungannya dengan vbyte yang kita pakai di 9.2 sederhana: 1 vbyte sama dengan 4 weight unit. Jadi 4 juta weight unit setara 1 juta vbyte. Karena data witness dihitung seperempat, satu block bisa memuat lebih banyak byte mentah daripada angka itu, biasanya sekitar 1,5 sampai 2,5 MB dalam praktik. Dengan block time rata-rata 10 menit, jaringan umumnya memproses sekitar 3 sampai 7 transaksi per detik, tergantung jenis transaksi yang sedang dominan. Beberapa kejadian yang secara historis menyebabkan lonjakan mempool: peluncuran Ordinals dan Inscriptions di 2023, bull market yang mendorong aktivitas trading tinggi, acara halving yang memicu spekulasi masif, dan serangan spam yang sengaja membanjiri jaringan dengan transaksi berbiaya rendah.

Apa yang terjadi dengan transaksi fee rendah?

Saat mempool ramai, miner dengan mudah bisa mengisi seluruh block hanya dengan transaksi fee tinggi. Transaksi fee rendah terdorong ke bagian bawah antrian dan mungkin tidak dikonfirmasi selama berhari-hari. Beberapa node bahkan akan drop transaksi fee rendah dari mempool mereka untuk menghemat memori, meskipun transaksinya valid.

Bagaimana membaca kondisi mempool?

Ada beberapa metrik yang bisa dipantau. Ukuran mempool dalam MB atau jumlah transaksi menunjukkan seberapa ramai antrian saat ini. Fee rate untuk konfirmasi dalam 1 block, 3 block, dan 6 block menunjukkan berapa yang perlu dibayar untuk kecepatan yang berbeda. Tools seperti mempool.space menampilkan visualisasi ini secara real-time dan sangat membantu.

Strategi menghadapi mempool ramai

Kalau tidak urgent, tunggu sampai mempool sepi. Biasanya akhir pekan atau tengah malam waktu Asia lebih sepi dari jam sibuk. Kalau sudah terlanjur kirim dengan fee rendah, gunakan RBF atau CPFP. Kalau mau kirim baru, pantau kondisi mempool dulu dan gunakan fee estimator yang akurat.

Mempool yang ramai bukan tanda bahwa Bitcoin rusak. Ini justru tanda bahwa Bitcoin berfungsi persis seperti yang dirancang: pasar bebas yang menentukan harga ruang block berdasarkan permintaan. Yang perlu dilakukan adalah memahami cara kerjanya dan menggunakannya dengan bijak.

Visualisasi — Mempool sepi vs ramai
Toggle antara dua kondisi untuk melihat perbedaan ukuran mempool, fee rate, dan strategi yang tepat untuk masing-masing kondisi.
Kondisi normal — transaksi mengalir lancar
Ukuran mempool
Total transaksi menunggu
~2,400 tx
Ukuran mempool
~4 MB
Fee rate untuk konfirmasi
Kondisi sepi: apa yang perlu dilakukan?
Mempool sepi. Fee rendah sudah cukup untuk konfirmasi cepat. Ini saat terbaik untuk mengirim transaksi non-urgent.
Bab 9 · 9.5
Berapa fee yang tepat untuk situasi ini?
Fee Estimation

Menentukan fee yang tepat untuk transaksi Bitcoin bukan ilmu pasti. Terlalu rendah dan transaksi bisa stuck. Terlalu tinggi dan kamu membuang uang. Fee estimation adalah proses memperkirakan fee rate minimum yang diperlukan agar transaksi dikonfirmasi dalam target waktu tertentu.

Bagaimana fee estimator bekerja?

Fee estimator yang baik menganalisis kondisi mempool saat ini dan data historis konfirmasi untuk memprediksi berapa fee rate yang dibutuhkan. Ada dua pendekatan utama. Pendekatan pertama adalah mempool-based: melihat distribusi fee rate di mempool saat ini dan memperkirakan berapa block yang dibutuhkan untuk mengosongkan antrian sampai ke level fee tertentu. Pendekatan kedua adalah history-based: menganalisis data konfirmasi historis untuk membangun model prediksi berdasarkan kondisi mempool yang serupa.

Target konfirmasi

Pengguna biasanya bisa memilih target konfirmasi: next block (paling cepat, paling mahal), 3 block (sekitar 30 menit), 6 block (sekitar 1 jam), atau bahkan 1-2 hari untuk yang tidak urgent. Fee estimator memberikan fee rate yang disarankan untuk masing-masing target.

Keterbatasan fee estimator

Fee estimator punya beberapa kelemahan penting. Pertama, mempool bisa berubah sangat cepat sehingga estimasi yang akurat 5 menit lalu bisa sudah tidak relevan. Kedua, estimator tidak bisa memprediksi block yang kebetulan kosong karena mining luck. Ketiga, beberapa wallet menggunakan fee estimator yang outdated atau terlalu konservatif, sehingga selalu merekomendasikan fee yang terlalu tinggi.

Fee sniping

Ada juga fenomena menarik yang disebut fee sniping: situasi di mana miner mungkin lebih tertarik untuk menambang ulang block sebelumnya yang punya fee tinggi daripada menambang block baru. Ini diatasi dengan time-lock pada transaksi untuk memastikan transaksi hanya valid di block ketinggian tertentu atau lebih tinggi.

Fee estimation yang baik adalah kombinasi antara data real-time dan pemahaman tentang cara kerja mempool. Tools seperti mempool.space memberikan data yang dibutuhkan, tapi tetap butuh judgment manusia untuk membaca situasi dengan benar, terutama saat kondisi mempool sedang berubah cepat.

Simulasi — Fee estimator interaktif
Pilih kondisi mempool dan target konfirmasi untuk melihat fee rate yang disarankan, estimasi waktu, dan penjelasan bagaimana angka itu didapat.
Kondisi mempool saat ini
Seberapa ramai antrian transaksi?
Sepi
~4 MB
Normal
~50 MB
Ramai
~200 MB
Sangat ramai
>350 MB
Target konfirmasi
Seberapa cepat transaksi perlu dikonfirmasi?
Block berikutnya
~10 menit
3 block
~30 menit
6 block
~1 jam
Tidak urgent
~1 hari
Fee rate yang disarankan
2
sat/vB
Estimasi konfirmasi
Block berikutnya (~10 menit)
Fee untuk tx 140 vbyte
280 sat (~$0.02)
Tingkat kepercayaan
Tinggi
Posisi di antrian (tiap kotak = 1 block):
Mempool sepi. Hampir semua transaksi dikonfirmasi dalam block berikutnya bahkan dengan fee sangat rendah.
1 input
Bab 9 · 9.6
Ketika block reward habis, siapa yang membayar miner?
Masa Depan Fee Market

Bitcoin dirancang agar block reward terus berkurang setiap halving. Pada akhirnya, sekitar tahun 2140, semua 21 juta bitcoin sudah ditambang dan block reward menjadi nol. Satu-satunya kompensasi untuk miner adalah fee transaksi. Inilah salah satu pertanyaan paling fundamental tentang keberlanjutan Bitcoin jangka panjang.

Apakah fee cukup untuk menggantikan block reward?

Ini adalah pertanyaan terbuka yang belum ada jawaban pasti. Kubu optimis berpendapat bahwa seiring adopsi Bitcoin meluas, volume transaksi akan terus meningkat. Lebih banyak transaksi berarti lebih banyak kompetisi untuk ruang block, yang berarti fee rate lebih tinggi. Lightning Network dan layer lain tidak menghilangkan fee on-chain: setiap pembukaan dan penutupan channel tetap butuh transaksi on-chain. Kubu skeptis berpendapat bahwa tekanan untuk efisiensi selalu ada. Batching transaksi, SegWit, Taproot, dan teknologi lain terus mengurangi ukuran transaksi. Kalau fee terlalu rendah, miner akan keluar dari bisnis, hash rate turun, dan keamanan jaringan terancam.

Fee market dan keamanan

Ada hubungan langsung antara fee market dan keamanan jaringan yang sering disalahpahami. Banyak orang berpikir: kalau miner keluar, difficulty adjustment akan menyesuaikan, jadi jaringan tetap aman. Ini benar sebagian, tapi melewatkan poin yang lebih penting.

Difficulty adjustment memang memastikan jaringan tetap berfungsi. Kalau hash rate turun 50%, difficulty turun 50%, dan block time kembali ke 10 menit. Transaksi tetap dikonfirmasi, jaringan tidak berhenti. Yang difficulty adjustment tidak lakukan adalah membuat serangan lebih mahal. Justru sebaliknya: kalau hash rate turun karena miner tidak profitable, biaya untuk melancarkan serangan 51% ikut turun secara proporsional.

Analoginya sederhana: bayangkan sistem keamanan sebuah gedung. Kalau separuh satpam dipecat karena anggaran habis, gedung tetap buka dan orang tetap bisa masuk. Tapi gedung itu jauh lebih mudah dirampok. Difficulty adjustment adalah mekanisme yang memastikan gedung tetap buka, bukan mekanisme yang mempertahankan jumlah satpam. Inilah mengapa fee market yang sehat bukan sekadar soal kenyamanan pengguna. Ini adalah fondasi dari keamanan jaringan jangka panjang.

Tidak semua fee sama awetnya

Tidak semua demand untuk ruang block itu setara nilainya dalam jangka panjang. Demand yang paling sehat datang dari adopsi Bitcoin yang organik dan meluas: semakin banyak orang bertransaksi, semakin banyak Lightning channel dibuka dan ditutup, semakin banyak institusi melakukan settlement on-chain. Fee tinggi dari sumber ini adalah tanda ekosistem yang tumbuh sehat, dan ini persis skenario yang diinginkan: jutaan pengguna biasa yang kebutuhan transaksinya menciptakan kompetisi alami untuk ruang block.

Sumber lain bersifat musiman. Gelombang Ordinals dan Inscriptions di 2023 yang kita sebut di 9.4 adalah contohnya: fee melonjak tinggi selama beberapa bulan, lalu surut. Untuk anggaran keamanan yang harus bertahan puluhan tahun, lonjakan seperti ini sulit dijadikan sandaran, karena tidak ada yang bisa memastikan gelombang berikutnya akan datang.

Di sinilah muncul salah satu perdebatan paling panas di Bitcoin belakangan ini, dan kamu berhak tahu kedua sisinya. Satu pihak berpendapat bahwa transaksi adalah transaksi: protokol Bitcoin tidak pernah membedakan tujuan, siapapun yang membayar fee berhak atas ruang block, dan miner tetap dibayar entah datanya berupa pembayaran atau gambar. Pihak lain berpendapat bahwa ruang block terbatas, dan ketika ia terisi oleh hal yang tidak butuh sifat-sifat khusus Bitcoin, orang yang butuh mengirim uang jadi terdorong keluar oleh fee yang melonjak.

Buku ini tidak akan memutuskan untukmu. Yang bisa dipegang sebagai alat analisis: yang menentukan keamanan jangka panjang bukan seberapa tinggi fee hari ini, melainkan seberapa bisa diandalkan fee itu datang lagi tahun depan dan sepuluh tahun lagi. Setiap kali kamu membaca berita tentang lonjakan fee, pertanyaan yang berguna adalah apakah ini gelombang atau permukaan air yang naik.

Block space sebagai komoditas

Ruang block Bitcoin adalah komoditas langka. Ada permintaan dari berbagai sumber yang sah: transaksi keuangan, Lightning channel management, protokol layer dua, dan aplikasi yang memberikan nilai nyata. Selama permintaan yang bermakna melebihi kapasitas, fee market akan tetap aktif secara organik.

Keberlanjutan fee market Bitcoin adalah salah satu eksperimen ekonomi terbesar yang pernah ada. Yang bisa dilakukan adalah memahami insentif yang terlibat, membedakan demand yang sehat dari yang tidak, dan mengamati bagaimana pasar merespons seiring waktu.

Visualisasi — Proyeksi fee market jangka panjang
Ilustrasi konseptual, bukan prediksi. Tab pertama menunjukkan tren block reward vs fee. Tab kedua membandingkan dua skenario adopsi.
Block reward
Fee revenue (proyeksi)
Total pendapatan miner
Halving events:
2009 — 50 BTC
2012 — 25 BTC
2016 — 12.5 BTC
2020 — 6.25 BTC
2024 — 3.125 BTC
2032 — 0.78 BTC
2036+ — ...
Ini adalah ilustrasi konseptual, bukan prediksi. Yang penting adalah tren: block reward terus turun, dan fee harus tumbuh untuk mengimbanginya agar keamanan jaringan terjaga.
Skenario optimis
Asumsi: adopsi Bitcoin terus tumbuh secara organik
Miliaran pengguna Lightning membuka dan menutup channel secara reguler
Institusi dan negara melakukan settlement on-chain skala besar
Demand organik melebihi kapasitas, fee market tetap kompetitif
Miner tetap profitable tanpa block reward
Skenario pesimis
Asumsi: efisiensi tumbuh lebih cepat dari adopsi
Batching, SegWit, Taproot, dan protokol masa depan terus mengurangi kebutuhan ruang block
Layer 2 terlalu efisien, jarang perlu settlement on-chain
Fee tidak cukup mempertahankan hash rate yang aman
Tekanan pada keamanan jaringan jangka panjang
Skenario optimis
Skenario pesimis
Block reward (referensi)
Kedua skenario ini adalah ilustrasi konseptual. Kenyataan kemungkinan ada di antara keduanya. Fee market yang sehat harus datang dari adopsi nyata, bukan aktivitas artifisial.
← Daftar Bab
BLK #915,217
Bab 10 · 10.1
Bitcoin tidak menyimpan saldo — ia menyimpan output
Apa itu UTXO Set?

Bitcoin tidak menyimpan saldo. Ini salah satu hal yang paling sering disalahpahami oleh orang yang baru mengenal Bitcoin. Wallet kamu tidak punya "saldo 0.5 BTC" yang tersimpan di suatu tempat. Yang ada adalah kumpulan output transaksi yang belum dihabiskan, yang jika dijumlahkan, memberikan angka yang kita sebut saldo.

Rekap UTXO

Setiap transaksi Bitcoin mengonsumsi UTXO yang ada sebagai input dan menciptakan UTXO baru sebagai output. UTXO yang sudah dipakai tidak bisa dipakai lagi. UTXO yang baru dibuat menunggu untuk dipakai di transaksi berikutnya. UTXO set adalah kumpulan semua UTXO yang saat ini ada di seluruh jaringan Bitcoin, yaitu semua output yang sudah dibuat tapi belum dihabiskan. Ini adalah "state" Bitcoin saat ini.

Mengapa UTXO set penting?

UTXO set adalah sumber kebenaran tunggal tentang kepemilikan bitcoin. Setiap full node menyimpan salinan lengkap UTXO set dan memperbarui setiap kali ada block baru. Saat kamu mengirim transaksi, node memverifikasi bahwa UTXO yang kamu klaim sebagai input benar-benar ada di UTXO set dan belum dihabiskan. Ini adalah mekanisme yang mencegah double spend: kalau kamu mencoba menggunakan UTXO yang sama dua kali, node akan mendeteksi bahwa UTXO itu sudah tidak ada di UTXO set setelah transaksi pertama dikonfirmasi.

Ukuran UTXO set

UTXO set jauh lebih kecil dari blockchain penuh. Blockchain menyimpan seluruh sejarah semua transaksi sejak genesis block, yang per pertengahan 2026 sudah lebih dari 700 GB. UTXO set hanya menyimpan output yang belum dihabiskan, yang ukurannya sekitar 11 GB. Ini yang memungkinkan full node bisa memverifikasi transaksi baru dengan sangat cepat tanpa perlu membaca seluruh blockchain.

UTXO set dan memori

Full node menyimpan UTXO set di memori atau database yang dioptimalkan untuk akses cepat. Setiap kali block baru masuk, node menghapus UTXO yang dihabiskan dan menambahkan UTXO baru. Operasi ini harus sangat efisien karena terjadi setiap 10 menit.

UTXO set adalah salah satu desain paling elegan di Bitcoin. Dengan hanya menyimpan "apa yang ada sekarang" bukan "semua yang pernah terjadi", Bitcoin memungkinkan verifikasi transaksi yang cepat dan efisien tanpa harus membaca seluruh sejarah blockchain.

Simulasi — UTXO Set
Lihat bagaimana UTXO dikonsumsi dan UTXO baru dibuat saat transaksi terjadi. UTXO set selalu mencerminkan state terkini kepemilikan bitcoin.
UTXO: 8 output
Total: 4.850 BTC
UTXO Set — semua output yang belum dihabiskan
Klik "Kirim Transaksi" untuk melihat bagaimana UTXO dikonsumsi dan UTXO baru dibuat. UTXO set selalu mencerminkan state terkini kepemilikan bitcoin.
Bab 10 · 10.2
Setiap block mengubah state Bitcoin secara deterministik
Bagaimana UTXO Set Diperbarui

Setiap kali block baru ditambahkan ke blockchain, UTXO set harus diperbarui. Ini adalah operasi yang terjadi ribuan kali sehari di setiap full node di seluruh jaringan, dan harus berjalan dengan sangat efisien.

Dua operasi dasar

Ada dua operasi yang terjadi saat UTXO set diperbarui: penghapusan dan penambahan. Setiap transaksi dalam block mengonsumsi beberapa UTXO sebagai input, dan UTXO-UTXO ini dihapus dari set. Setiap transaksi juga menciptakan UTXO baru sebagai output, dan UTXO-UTXO ini ditambahkan ke set. Setelah semua transaksi dalam block diproses, UTXO set mencerminkan state Bitcoin yang baru.

Urutan pemrosesan

Urutan pemrosesan dalam sebuah block penting. Transaksi pertama dalam setiap block selalu coinbase transaction: transaksi khusus yang tidak punya input dan hanya punya output. Ini adalah cara miner mendapatkan block reward plus semua fee transaksi dalam block tersebut. UTXO dari coinbase transaction ditambahkan ke UTXO set, tapi ada aturan khusus: UTXO coinbase tidak bisa dihabiskan selama 100 block ke depan. Ini disebut coinbase maturity. Transaksi-transaksi berikutnya diproses secara berurutan. Kalau transaksi B menggunakan output transaksi A dalam block yang sama, A harus muncul lebih dulu. Ini disebut topological ordering.

Rollback saat reorganisasi

Kadang terjadi reorganisasi chain: node menemukan chain yang lebih panjang yang berbeda dari chain yang sedang diikutinya. Saat ini terjadi, node harus melakukan rollback UTXO set ke state sebelumnya, lalu menerapkan block-block dari chain baru. Ini adalah operasi yang kompleks dan membutuhkan node untuk menyimpan informasi tentang perubahan UTXO set di setiap block agar bisa di-undo.

Efisiensi database

UTXO set disimpan dalam database key-value yang dioptimalkan untuk lookup cepat. Kuncinya adalah pasangan (txid, output index) yang secara unik mengidentifikasi setiap UTXO. Nilainya adalah data UTXO: jumlah satoshi, script yang harus dipenuhi untuk membelanjakannya, dan block height saat UTXO dibuat. Lookup ini harus selesai dalam milidetik karena node harus memverifikasi setiap input dari setiap transaksi yang masuk.

Proses pembaruan UTXO set adalah jantung dari operasi full node. Setiap node di seluruh dunia melakukan operasi yang sama persis saat memproses block yang sama, dan hasilnya selalu identik. Dari state yang sama, input yang sama selalu menghasilkan state yang sama.

Simulasi — Pembaruan UTXO set per block
Proses block #840,512 dan lihat bagaimana setiap transaksi memperbarui UTXO set secara berurutan, dimulai dari coinbase transaction.
Sebelum: 12 UTXO
Perubahan: -
Sesudah: 12 UTXO
Block #840,5124 transaksi
UTXO Set saat ini
Log perubahan
Klik "Proses Block" untuk melihat bagaimana setiap transaksi dalam block memperbarui UTXO set secara berurutan, dimulai dari coinbase transaction.
Bab 10 · 10.3
Node memverifikasi transaksi hanya dengan data lokal
UTXO Set dan Verifikasi Transaksi

Salah satu fungsi paling kritis dari UTXO set adalah memungkinkan verifikasi transaksi yang cepat dan andal. Saat sebuah transaksi baru tiba di node, node tidak perlu membaca seluruh blockchain untuk memverifikasinya. Ia hanya perlu memeriksa UTXO set.

Apa yang diverifikasi?

Saat node menerima transaksi baru, ada beberapa hal yang diperiksa secara berurutan. Pertama, apakah setiap UTXO yang diklaim sebagai input benar-benar ada di UTXO set? Kalau tidak ada, transaksi ditolak karena mencoba membelanjakan sesuatu yang tidak ada. Kedua, apakah total nilai input lebih besar atau sama dengan total nilai output? Selisihnya adalah fee untuk miner. Ketiga, apakah script locking di setiap UTXO terpenuhi oleh script unlocking yang disediakan pengirim? Ini adalah verifikasi kriptografis bahwa pengirim memang berhak membelanjakan UTXO tersebut.

Kecepatan verifikasi

Karena UTXO set disimpan dalam database yang dioptimalkan untuk lookup cepat, verifikasi ini bisa selesai dalam hitungan milidetik bahkan untuk transaksi dengan banyak input. Node tidak perlu menelusuri seluruh sejarah blockchain, cukup query UTXO set dengan txid dan output index sebagai kunci.

Double spend detection

Double spend adalah upaya menggunakan UTXO yang sama lebih dari sekali. UTXO set membuat ini mustahil untuk transaksi yang sudah dikonfirmasi: begitu UTXO dikonsumsi dan dihapus dari set, ia tidak bisa digunakan lagi. Untuk transaksi unconfirmed di mempool, node memantau apakah ada dua transaksi yang mengklaim UTXO yang sama dan menolak yang datang belakangan.

Coinbase maturity

Ada satu pengecualian khusus dalam verifikasi: coinbase UTXO. UTXO yang berasal dari coinbase transaction tidak bisa dibelanjakan selama 100 block setelah block di mana coinbase itu ada. Ini disebut coinbase maturity. Tujuannya adalah memberi buffer waktu kalau terjadi reorganisasi chain yang menghapus block tersebut. Sebelum 100 block, coinbase UTXO memang ada di UTXO set tapi node menolak transaksi yang mencoba menggunakannya.

Desain UTXO set yang memungkinkan verifikasi cepat adalah salah satu alasan Bitcoin bisa beroperasi sebagai sistem desentralisasi tanpa server pusat. Setiap node bisa memverifikasi setiap transaksi secara mandiri, hanya dengan data lokal yang jauh lebih kecil dari blockchain penuh.

Simulasi — Verifikasi transaksi dan deteksi double spend
Tab pertama: lihat proses verifikasi transaksi yang valid step by step. Tab kedua: lihat bagaimana double spend terdeteksi saat UTXO sudah tidak ada di set.
tx_f1a2b3c4 — masuk ke node menunggu verifikasi
Input
u_A1 — 1.500 BTC
u_B1 — 0.750 BTC
→
Output
Carol: 2.100 BTC
Alice (kembalian): 0.135 BTC
Fee: 0.015 BTC
Klik "Verifikasi Transaksi" untuk melihat bagaimana node memeriksa transaksi ini step by step menggunakan UTXO set.
tx_9x8y7z6w — masuk ke node menunggu verifikasi
Input
u_A1 — 1.500 BTC
u_C1 — 0.650 BTC
→
Output
Eve: 2.100 BTC
Fee: 0.050 BTC
Konteks: u_A1 sudah dikonsumsi oleh tx_f1a2b3c4 sebelumnya dan sudah tidak ada di UTXO set.
Klik "Verifikasi Transaksi" untuk melihat bagaimana node mendeteksi double spend saat u_A1 sudah tidak ada di UTXO set.
Bab 10 · 10.4
Setiap UTXO yang tidak perlu adalah beban kecil yang ditanggung seluruh jaringan
Ukuran dan Pertumbuhan UTXO Set

UTXO set bukan angka yang statis. Ia terus berubah seiring aktivitas jaringan. Memahami bagaimana ukuran UTXO set tumbuh dan bagaimana hal itu mempengaruhi node adalah bagian penting dari memahami ekonomi dan teknis Bitcoin jangka panjang.

Berapa besar UTXO set saat ini?

Per pertengahan 2026, UTXO set Bitcoin berisi lebih dari 170 juta UTXO dengan ukuran total sekitar 11 GB. Ini jauh lebih kecil dari blockchain penuh yang sudah lebih dari 700 GB. Tapi tidak berarti UTXO set tidak bisa menjadi masalah di masa depan.

Apa yang membuat UTXO set bertumbuh?

UTXO set bertumbuh saat lebih banyak UTXO dibuat daripada yang dikonsumsi. Ini terjadi dalam beberapa situasi: transaksi yang menghasilkan banyak output kecil tanpa batching yang baik, dust output yang tidak ekonomis untuk dihabiskan karena fee-nya lebih besar dari nilainya sendiri, dan lost coins yaitu UTXO yang private key-nya sudah hilang dan tidak akan pernah dikonsumsi tapi tetap ada di UTXO set selamanya.

UTXO bloat dan dust

Dust adalah UTXO dengan nilai satoshi yang sangat kecil, sering di bawah 546 satoshi untuk transaksi P2PKH. Output ini muncul di UTXO set tapi mungkin tidak pernah bisa dibelanjakan secara ekonomis. Setiap node harus menyimpan entry ini di database mereka. Seiring waktu, dust yang terakumulasi berkontribusi pada pertumbuhan UTXO set yang tidak produktif.

Mengapa ukuran UTXO set penting?

UTXO set harus bisa diakses dengan cepat, idealnya seluruhnya di RAM atau SSD yang cepat. Kalau UTXO set tumbuh terlalu besar, node dengan hardware terbatas akan kesulitan. Ini adalah salah satu alasan kenapa ada tekanan untuk menjaga UTXO set tetap ramping: semakin kecil UTXO set, semakin mudah menjalankan full node, dan semakin kuat desentralisasi jaringan.

UTXO consolidation

Saat fee mempool sedang rendah, pengguna bisa melakukan UTXO consolidation: mengirim banyak UTXO kecil ke dirinya sendiri dalam satu transaksi untuk menggabungkannya menjadi satu UTXO yang lebih besar. Ini mengurangi jumlah UTXO di set dan mempersiapkan diri untuk fee yang lebih efisien di masa depan saat mempool ramai.

UTXO set yang ramping adalah kepentingan bersama seluruh jaringan. Setiap UTXO yang tidak perlu dibuat adalah beban kecil yang harus ditanggung setiap full node di dunia. Praktik seperti batching transaksi dan UTXO consolidation bukan hanya efisiensi personal, tapi kontribusi nyata terhadap kesehatan jaringan.

Visualisasi — Pertumbuhan dan konsolidasi UTXO set
Lihat UTXO set dengan berbagai ukuran dan trend pertumbuhannya. Klik "Konsolidasi UTXO Kecil" untuk menggabungkan UTXO kecil dan dust menjadi satu UTXO yang lebih efisien.
20 UTXO
Total: 12.845 BTC
Dust: 6 UTXO
Besar (>0.5 BTC)
Sedang (0.01-0.5 BTC)
Kecil (<0.01 BTC)
Dust (<546 sat)
UTXO Set kamu
Trend ukuran UTXO set jaringan
Jumlah UTXO (jutaan)
UTXO kecil dan dust menambah beban pada setiap full node. Klik "Konsolidasi UTXO Kecil" untuk menggabungkan UTXO kecil menjadi satu saat fee sedang rendah.
Bab 10 · 10.5
Cara kamu mengelola UTXO bisa mengungkapkan lebih banyak dari yang kamu sadari
UTXO Set dan Privacy

UTXO set bukan hanya soal teknis dan efisiensi. Ada dimensi privasi yang penting untuk dipahami. Karena UTXO set adalah data publik yang bisa dianalisis oleh siapapun, cara kamu mengelola UTXO-mu bisa mengungkapkan lebih banyak informasi tentang keuanganmu daripada yang kamu sadari.

UTXO sebagai jejak

Setiap UTXO punya sejarah yang bisa dilacak. Dari mana asalnya, transaksi apa yang menciptakannya, dan siapa yang mungkin terlibat. Analisis blockchain bisa menghubungkan UTXO-UTXO yang berbeda ke pemilik yang sama dengan beberapa heuristik. Heuristik paling umum adalah common input ownership: kalau dua UTXO digunakan sebagai input dalam transaksi yang sama, analis blockchain berasumsi keduanya dimiliki oleh orang yang sama. Ini masuk akal karena untuk menggunakan UTXO, kamu harus membuktikan kepemilikan dengan menandatangani.

Change output dan privasi

Saat kamu mengirim Bitcoin dan ada kembalian, kembalian itu menciptakan UTXO baru di address-mu. Address mana yang merupakan kembalian dan mana yang merupakan pembayaran seringkali bisa ditebak oleh analis: biasanya kembalian adalah output dengan nilai yang tidak bulat, sementara pembayaran adalah angka yang lebih bulat.

Address reuse

Salah satu kesalahan privasi paling umum adalah menggunakan address yang sama berulang kali. Kalau kamu menerima Bitcoin di address yang sama dua kali, analis bisa menghubungkan kedua penerimaan itu dan mulai membangun gambaran tentang berapa total bitcoin yang kamu miliki. Wallet modern menggunakan HD wallet yang menghasilkan address baru untuk setiap transaksi, tapi tidak semua pengguna mengerti kenapa ini penting.

UTXO consolidation dan privasi

UTXO consolidation yang kita bahas di 10.4 sangat berguna secara teknis, tapi punya trade-off privasi. Saat kamu menggabungkan banyak UTXO dalam satu transaksi, kamu mengonfirmasi kepada analis bahwa semua UTXO tersebut milik orang yang sama. Kalau UTXO-UTXO itu berasal dari sumber yang berbeda, konsolidasi bisa mengungkapkan pola yang tidak ingin kamu ungkapkan.

CoinJoin sebagai solusi

CoinJoin adalah teknik di mana beberapa pengguna menggabungkan transaksi mereka menjadi satu transaksi bersama. Hasilnya adalah transaksi dengan banyak input dari banyak pengguna berbeda dan banyak output dengan nilai yang sama. Analis tidak bisa lagi menggunakan heuristik common input ownership karena input memang berasal dari banyak orang. Ini akan dibahas lebih dalam di Bab 12.

Privasi di Bitcoin bukan tentang menyembunyikan sesuatu yang ilegal. Ini tentang hak dasar untuk mengelola informasi keuanganmu sendiri. Sama seperti kamu tidak ingin semua orang tahu berapa saldo rekening bankmu, kamu juga berhak memilih siapa yang tahu berapa bitcoin yang kamu miliki dan dari mana asalnya.

Visualisasi — Analisis UTXO dan heuristik privasi
Tab pertama: lihat bagaimana analis menghubungkan UTXO lewat common input heuristik. Tab kedua: bandingkan address reuse vs address baru setiap transaksi.
Empat UTXO dari address berbeda. Analis belum tahu siapa pemiliknya. Klik "Kirim Transaksi" untuk menggabungkan dua UTXO sebagai input dan lihat bagaimana analis langsung menghubungkannya.
Tidak diketahui
Teridentifikasi sama
Transaksi
UTXO A dan B belum diketahui hubungannya. Begitu digunakan bersama dalam satu transaksi, analis blockchain akan langsung menghubungkan keduanya.
Bandingkan dua pendekatan: address yang sama digunakan berulang vs address baru setiap transaksi.
reused1A2B3C...xyzmenerima 4x — analis tahu total saldo
reused1A2B3C...xyztransaksi ke-2 — terhubung ke yang lain
reused1A2B3C...xyztransaksi ke-3 — pola terlihat jelas
reused1A2B3C...xyztransaksi ke-4 — total: 2.350 BTC terlacak
freshbc1q...a1b2transaksi ke-1 — address unik
freshbc1q...c3d4transaksi ke-2 — address berbeda
freshbc1q...e5f6transaksi ke-3 — tidak terhubung
freshbc1q...g7h8transaksi ke-4 — analis tidak bisa gabungkan
Wallet modern (HD wallet) menghasilkan address baru secara otomatis untuk setiap transaksi. Ini tidak mempersulit pemakaian — wallet tetap melacak semua address milikmu — tapi mempersulit analis untuk menghubungkan transaksimu.
Bab 10 · 10.6
Tantangan dan solusi untuk UTXO set jangka panjang
Masa Depan UTXO Set

UTXO set adalah komponen yang akan terus berevolusi seiring Bitcoin berkembang. Ada beberapa tantangan dan solusi yang sedang didiskusikan atau dikembangkan terkait bagaimana UTXO set dikelola di masa depan.

Pertumbuhan jangka panjang

Bayangkan sebuah buku catatan yang harus disalin ulang oleh setiap orang yang ingin memverifikasi transaksi Bitcoin. Semakin tebal buku itu, semakin lama proses penyalinannya dan semakin besar ruang yang dibutuhkan. Itulah analogi UTXO set. Kalau Bitcoin terus diadopsi secara masif, jumlah UTXO akan terus bertumbuh. UTXO set bisa mencapai puluhan gigabyte dalam beberapa dekade. Ini masih jauh lebih kecil dari blockchain penuh, tapi cukup untuk menjadi hambatan bagi node dengan hardware terbatas, terutama di negara berkembang di mana hardware mahal dan koneksi internet lambat.

Stateless validation dan UTXO commitments

Saat ini, untuk memverifikasi sebuah transaksi, node harus punya salinan lengkap UTXO set di komputernya sendiri. Ini seperti kasir yang harus hafal seluruh daftar barang di gudang sebelum bisa melayani pembeli. Ada ide yang sedang didiskusikan bernama stateless validation: daripada node yang menyimpan UTXO set, pengirim transaksilah yang membuktikan bahwa UTXO mereka memang ada dan valid. Bukti ini disebut UTXO commitment, semacam sertifikat kriptografis yang bisa diverifikasi tanpa perlu mengecek database lokal. Analoginya: daripada kasir hafal semua stok, pembeli membawa nota resmi dari gudang yang membuktikan barang itu ada. Kasir cukup verifikasi notanya. Ini masih dalam tahap penelitian dan membutuhkan perubahan signifikan pada protokol Bitcoin.

Assumevalid dan assumeutxo

Bitcoin sudah punya beberapa cara untuk mempercepat node baru bergabung ke jaringan tanpa harus memverifikasi ulang seluruh sejarah dari awal. Assumevalid adalah optimasi pertama: node baru bisa melewati verifikasi tanda tangan kriptografis untuk block-block yang sudah sangat lama. Alasannya masuk akal secara ekonomis: kalau jutaan node sudah sepakat bahwa block-block lama itu valid, hampir tidak mungkin semuanya salah. Assumeutxo adalah optimasi yang lebih baru dan lebih canggih: node baru bisa langsung menggunakan snapshot UTXO set yang sudah diverifikasi sebelumnya, dan mulai beroperasi normal dalam hitungan menit. Sementara itu, di latar belakang, node perlahan-lahan memverifikasi seluruh sejarah blockchain dari awal untuk memastikan snapshot itu memang benar.

Archival node vs pruned node

Tidak semua node menyimpan seluruh sejarah Bitcoin. Archival node menyimpan segalanya dari genesis block hingga hari ini dan inilah yang benar-benar menopang jaringan: tanpa cukup archival node, node baru tidak bisa bergabung karena tidak ada yang menyediakan data historis. Pruned node hanya menyimpan UTXO set dan beberapa ratus block terbaru. Ia bisa memverifikasi transaksi untuk dirinya sendiri, tapi tidak bisa membantu node lain yang baru sync. Pruned node berguna untuk keperluan verifikasi pribadi, bukan pengganti archival node.

UTXO set sebagai ukuran kesehatan

Ukuran dan komposisi UTXO set adalah salah satu indikator kesehatan jaringan yang bisa dipantau. UTXO set yang tumbuh terlalu cepat bisa mengindikasikan spam atau aktivitas yang tidak efisien. UTXO set yang stabil atau bahkan menyusut menunjukkan pengguna yang efisien dalam mengelola output mereka. Dust limit, batas minimum nilai UTXO yang diterima oleh node sebagai bagian dari mempool policy, adalah salah satu mekanisme untuk mencegah UTXO set dibanjiri output yang tidak berguna.

UTXO set adalah salah satu batasan sumber daya paling nyata dalam Bitcoin. Tidak seperti blockchain yang hanya perlu disimpan, UTXO set harus bisa diakses dan diquery dengan cepat. Ini menciptakan tekanan alami untuk tetap efisien, tekanan yang pada akhirnya menguntungkan seluruh pengguna jaringan.

Visualisasi — Perbandingan tipe node
Klik tiap card untuk melihat detail storage, kemampuan, dan peran masing-masing tipe node dalam jaringan Bitcoin. Perhatikan perbedaan fundamental antara archival dan pruned node.
🗄️
Archival Node
Simpan segalanya — tulang punggung jaringan
›
Storage dibutuhkan
600+ GB
Waktu sync pertama
2-5 hari
Verifikasi mandiri
Penuh
Menopang jaringan
Ya, penuh
Kemampuan:
✓Memverifikasi semua transaksi baru secara mandiri
✓Menyediakan data historis ke node lain yang sync
✓Membantu node baru bergabung ke jaringan
✓Mendukung riset, audit, dan block explorer
Archival node menyimpan seluruh sejarah Bitcoin sejak block pertama tahun 2009. Storage besar dan sync lama, tapi ini adalah kontribusi nyata ke jaringan. Tanpa cukup archival node, node baru tidak bisa bergabung dan jaringan melemah.
✂️
Pruned Node
Verifikasi mandiri, tapi tidak menopang jaringan
›
Storage dibutuhkan
10-15 GB
Waktu sync pertama
1-2 hari
Verifikasi mandiri
Untuk diri sendiri
Menopang jaringan
Tidak
Kemampuan:
✓Memverifikasi transaksi baru untuk diri sendiri
✓Menyimpan UTXO set lengkap
✗Tidak bisa membantu node baru sync ke jaringan
✗Tidak menyediakan data historis ke node lain
Pruned node memverifikasi seluruh blockchain saat sync awal, tapi kemudian membuang data historis lama. Ia bisa memverifikasi transaksi untuk dirinya sendiri, tapi tidak bisa membantu node lain yang baru bergabung.
⚠️ Pruned node bukan pengganti archival node. Kalau semua orang hanya menjalankan pruned node, jaringan akan kesulitan menerima anggota baru karena tidak ada yang bisa menyediakan data historis. Pruned node berguna untuk verifikasi pribadi, bukan untuk menopang jaringan.
⚡
AssumeUTXO
Optimasi startup — bukan tipe node tersendiri
›
Storage dibutuhkan
10-15 GB+
Mulai beroperasi
Hitungan menit
Verifikasi mandiri
Penuh (bertahap)
Menopang jaringan
Tergantung konfigurasi
Cara kerja:
✓Langsung bisa verifikasi transaksi baru dari snapshot
✓Verifikasi sejarah penuh berjalan di background
~Kepercayaan penuh setelah verifikasi background selesai
~Bisa dikombinasikan dengan archival atau pruned
AssumeUTXO adalah optimasi cara node baru memulai, bukan kategori node yang berdiri sendiri. Node yang menggunakan AssumeUTXO bisa langsung beroperasi dalam menit menggunakan snapshot UTXO set, sambil memverifikasi sejarah penuh di background. Apakah ia menopang jaringan atau tidak tergantung apakah ia archival atau pruned.
Perbandingan ringkas
TipeStorageVerifikasi mandiriMenopang jaringan
🗄️ Archival600+ GBPenuhYa
✂️ Pruned10-15 GBUntuk diri sendiriTidak
⚡ AssumeUTXO10-15 GB+BertahapTergantung konfigurasi
Jaringan Bitcoin membutuhkan archival node yang cukup agar node baru bisa bergabung. Kalau semua orang hanya menjalankan pruned node, jaringan akan kesulitan menerima anggota baru. Menjalankan archival node adalah salah satu kontribusi paling nyata yang bisa dilakukan seseorang untuk Bitcoin.
← Daftar Bab
BLK #915,217
Bab 11 · 11.1
Di Bab 5 kita tahu mengapa mining ada — kini kita lihat bagaimana industrinya bekerja
Dari Protokol ke Industri

Di Bab 5 kita sudah memahami mengapa mining ada: Proof of Work adalah mekanisme konsensus yang memungkinkan Bitcoin mencapai kesepakatan tanpa otoritas pusat. Setiap block yang valid merepresentasikan kerja nyata yang sudah dilakukan, dan kerja nyata itu membutuhkan energi nyata.

Di bab ini kita tidak akan mengulang mekanisme itu. Yang akan kita bahas adalah bagaimana mining beroperasi sebagai industri nyata: hardware seperti apa yang digunakan, bagaimana miner berkolaborasi dalam pool, bagaimana ekonominya bekerja, dan apa implikasinya terhadap energi dan desentralisasi.

Mining di tahun 2009 vs sekarang

Ketika Satoshi Nakamoto menambang block pertama pada Januari 2009, ia menggunakan CPU laptop biasa. Tidak ada persaingan, tidak ada hardware khusus, tidak ada perusahaan mining. Satu orang, satu komputer, dan sebuah protokol yang baru lahir.

Hari ini, mining Bitcoin adalah industri global senilai miliaran dolar. Perusahaan-perusahaan mining publik tercatat di bursa saham. Fasilitas mining berukuran gudang besar beroperasi di negara-negara dengan listrik murah. Hardware yang digunakan adalah ASIC (Application-Specific Integrated Circuit), chip yang dirancang dari nol khusus untuk satu tujuan: menghitung SHA-256 hash secepat mungkin. Chip ini tidak bisa digunakan untuk hal lain.

Mengapa industrialisasi ini terjadi?

Jawabannya sederhana: insentif ekonomi. Selama block reward bernilai cukup besar, ada motivasi kuat untuk berinvestasi dalam hardware yang lebih efisien. Miner yang lebih efisien mendapat porsi reward yang lebih besar dengan biaya lebih rendah. Kompetisi ini mendorong inovasi hardware yang luar biasa cepat.

Tapi industrialisasi ini juga membawa konsekuensi yang perlu dipikirkan. Mining yang dulu bisa dilakukan siapapun di rumah kini membutuhkan modal besar dan akses ke listrik murah dalam skala industri. Ini menciptakan tekanan sentralisasi yang bertentangan dengan semangat awal Bitcoin sebagai sistem yang bisa dipartisipasi semua orang.

Mining Bitcoin bukan sekadar "komputer yang memecahkan teka-teki." Ini adalah industri dengan supply chain global, pasar hardware yang kompleks, dan dinamika ekonomi yang unik. Memahami industri ini membantu kita memahami ketahanan dan kerentanan jaringan Bitcoin di dunia nyata.

Visualisasi — Mining 2009 vs sekarang
Betapa dramatisnya perubahan industri mining dalam 15 tahun: dari laptop di kamar tidur ke fasilitas industri dengan ribuan ASIC.
Mining 2009
Era Satoshi
Hardware
CPU laptop biasa
Bisa dipakai untuk hal lain
Hash rate tipikal
~5 MH/s
5 juta percobaan per detik
Konsumsi daya
~65 Watt
Daya laptop standar
Modal awal
$0 ekstra
Pakai komputer yang sudah ada
Siapa yang bisa?
Siapapun
Satoshi, Hal Finney, dan siapapun yang install software
Karakteristik:
✓Tidak butuh modal khusus
✓Bisa dilakukan dari rumah
✓Hardware serbaguna
~Hash rate rendah, tapi persaingan juga rendah
Mining 2024
Era Industri
Hardware
ASIC (Antminer S21)
Chip khusus SHA-256, tidak bisa dipakai untuk hal lain
Hash rate tipikal
200 TH/s
200 triliun percobaan per detik
Konsumsi daya
~3.500 Watt
54x lebih besar, tapi jauh lebih efisien per hash
Modal awal
$3.000-5.000+
Belum termasuk infrastruktur listrik dan cooling
Siapa yang kompetitif?
Perusahaan besar
Fasilitas industri dengan ribuan ASIC dan listrik murah
Karakteristik:
✓Hash rate sangat tinggi, jaringan sangat aman
✓Efisiensi energi per hash jauh lebih baik
✗Butuh modal besar dan listrik murah
✗Terdominasi pemain institusional
Perbandingan hash rate (skala logaritmik)
CPU 2009
5 MH/s
5 MH/s
ASIC 2024
200 TH/s
200 TH/s
ASIC modern 40 miliar kali lebih cepat dari CPU 2009 — setara perbedaan berlari kaki dengan kecepatan cahaya.
Industrialisasi ini adalah konsekuensi alami dari insentif ekonomi Bitcoin. Tapi ia juga menciptakan pertanyaan penting: kalau mining hanya bisa dilakukan oleh perusahaan besar, seberapa "terdesentralisasi" jaringan Bitcoin sesungguhnya? Pertanyaan ini akan terus kita bahas di bab ini.
Bab 11 · 11.2
Dari laptop ke pabrik — 15 tahun evolusi hardware yang paling dramatis dalam sejarah komputasi
Evolusi Hardware Mining

Sejarah hardware mining Bitcoin adalah salah satu kisah evolusi teknologi yang paling dramatis dalam sejarah komputasi. Dalam waktu kurang dari 15 tahun, efisiensi mining meningkat triliunan kali lipat.

Era CPU (2009-2010)

Di awal Bitcoin, semua orang mining dengan CPU laptop atau desktop biasa. Satoshi Nakamoto sendiri mining dengan CPU. Hash rate seluruh jaringan waktu itu sangat rendah sehingga siapapun bisa mining block dengan komputer biasa. Tidak ada persaingan berarti dan satu block bisa ditemukan dalam hitungan menit dengan laptop standar.

Era GPU (2010-2013)

Seseorang menyadari bahwa GPU (Graphics Processing Unit), chip yang biasanya digunakan untuk rendering grafis game, jauh lebih efisien untuk menghitung SHA-256 dibanding CPU. GPU bisa melakukan ribuan operasi paralel sekaligus. Hash rate melonjak drastis dan CPU mining praktis tidak lagi menguntungkan.

Era FPGA (2011-2013)

FPGA (Field-Programmable Gate Array) adalah chip yang bisa diprogram ulang untuk tugas tertentu. Lebih efisien dari GPU untuk SHA-256, tapi masih bisa diprogram ulang untuk keperluan lain. Era ini singkat karena segera digantikan oleh ASIC.

Era ASIC (2013-sekarang)

ASIC (Application-Specific Integrated Circuit) adalah chip yang dirancang dari nol hanya untuk satu tujuan: menghitung SHA-256 hash secepat dan seefisien mungkin. Tidak bisa digunakan untuk hal lain sama sekali. ASIC modern seperti Antminer S21 bisa mencapai lebih dari 200 TH/s (terahash per detik) dengan konsumsi energi sekitar 3.500 watt. Ini berarti ratusan triliun percobaan hash setiap detik.

Dampak ASIC pada desentralisasi

ASIC menciptakan paradoks: di satu sisi, ASIC membuat jaringan jauh lebih aman karena hash rate yang sangat tinggi membuat serangan 51% sangat mahal. Di sisi lain, ASIC membuat mining semakin terpusat pada pemain yang punya modal besar untuk membeli hardware dan membayar listrik dalam skala industri. Mining yang dulu bisa dilakukan siapapun di rumah kini didominasi oleh perusahaan mining besar dengan fasilitas khusus.

Evolusi hardware mining mencerminkan hukum ekonomi yang sederhana: selama ada insentif finansial yang cukup besar, inovasi akan terus mendorong batas efisiensi. Yang menarik adalah bagaimana hal ini secara tidak sengaja mengubah siapa yang bisa berpartisipasi dalam proses mining Bitcoin.

Timeline — Evolusi hardware mining
Klik tiap era untuk melihat spesifikasi, efisiensi energi, dan konteks historisnya. Chart logaritmik di bawah menunjukkan betapa dramatisnya perbedaan antar era.
💻
CPU
2009-2010
🎮
GPU
2010-2013
🔧
FPGA
2011-2013
⚡
ASIC
2013-kini
Perbandingan hash rate (skala logaritmik)
Tiap era berbeda miliaran kali lipat — skala log digunakan agar perbedaannya terlihat
CPU
~10 MH/s
~10 MH/s
GPU
~500 MH/s
~500 MH/s
FPGA
~1 GH/s
~1 GH/s
ASIC
200+ TH/s
200+ TH/s
Skala nyata: ASIC modern sekitar 20 juta kali lebih cepat dari GPU generasi pertama, dan lebih dari 20 miliar kali lebih cepat dari CPU era awal.
Bab 11 · 11.3
Daripada berjuang sendiri, bergabunglah dan bagi hasilnya
Mining Pool

Ketika mining menjadi sangat kompetitif, miner individu menghadapi masalah yang mirip dengan penjudi: mereka bisa saja tidak pernah menemukan block meskipun sudah bekerja keras berbulan-bulan. Probabilitas menemukan block bagi satu miner kecil sangat rendah, dan pendapatan mereka menjadi sangat tidak pasti. Mining pool hadir sebagai solusi.

Apa itu mining pool?

Mining pool adalah kelompok miner yang menggabungkan hash rate mereka dan berbagi reward secara proporsional. Daripada masing-masing berjuang sendiri untuk menemukan block, mereka bekerja bersama. Ketika pool menemukan block, reward dibagi ke semua anggota berdasarkan kontribusi hash rate masing-masing. Analoginya seperti tiket lotere: daripada satu orang membeli satu tiket dengan peluang menang sangat kecil, seratus orang patungan membeli seratus tiket dan berbagi hasilnya. Peluang menang jauh lebih tinggi, dan meski hadiahnya dibagi, pendapatan menjadi jauh lebih konsisten.

Bagaimana pool bekerja?

Pool memberikan pekerjaan kepada miner anggotanya berupa tugas yang lebih mudah dari target jaringan sesungguhnya. Tugas-tugas ini disebut shares. Miner mengirimkan shares yang berhasil mereka temukan ke pool sebagai bukti bahwa mereka benar-benar bekerja. Sesekali, sebuah share yang ditemukan miner ternyata juga memenuhi target jaringan yang sesungguhnya, artinya block baru ditemukan dan pool mendapat reward.

Metode pembayaran

Ada beberapa cara pool membagi reward. PPS (Pay Per Share): miner dibayar untuk setiap share yang valid, terlepas dari apakah pool menemukan block atau tidak, dan pool menanggung risiko variance. PPLNS (Pay Per Last N Shares): pembayaran berdasarkan shares yang dikontribusikan dalam periode terakhir sebelum block ditemukan, lebih volatile tapi menguntungkan saat pool beruntung. FPPS (Full Pay Per Share): seperti PPS tapi juga memperhitungkan fee transaksi dalam pembagian.

Dampak pool terhadap desentralisasi

Mining pool menciptakan kekhawatiran sentralisasi: beberapa pool besar menguasai porsi signifikan dari total hash rate jaringan. Tapi perlu dicatat bahwa miner individu dalam pool tetap bebas pindah pool kapan saja. Kalau sebuah pool bertindak curang, miner akan meninggalkannya dan pindah ke pool lain atau mining sendiri. Stratum V2 adalah protokol terbaru yang memberi miner lebih banyak kontrol, termasuk kemampuan memilih sendiri transaksi yang dimasukkan ke block.

Mining pool adalah inovasi yang membuat mining lebih mudah diakses oleh miner kecil, tapi sekaligus menciptakan tekanan sentralisasi. Ini adalah trade-off yang terus diperdebatkan dalam komunitas Bitcoin. Stratum V2 adalah salah satu upaya untuk menjaga desentralisasi sambil tetap memungkinkan kolaborasi efisien.

Simulasi — Solo mining vs Pool mining
Kamu punya 1% dari hash rate jaringan. Simulasikan 20 block dan lihat perbedaan pendapatan antara solo mining dan bergabung ke pool.
⛏ Solo Mining
Pendapatan per block (sangat tidak menentu)
Block ditemukan
0 / 20
Total pendapatan
0 BTC
Variance
Sangat tinggi
🤝 Pool Mining
Pendapatan per block (konsisten)
Reward diterima
0 / 20
Total pendapatan
0 BTC
Variance
Rendah
Shares yang dikirim ke pool (ungu = milikmu, hijau = share yang jadi block)
Share dari miner lain
Share milikmu (1% dari pool)
Share yang jadi block
Kamu punya 1% dari hash rate jaringan. Sebagai solo miner, probabilitas menemukan block sangat rendah. Bergabung ke pool memastikan pendapatan kecil tapi konsisten setiap block.
Bab 11 · 11.4
Mining adalah bisnis — pendapatan harus lebih besar dari biaya
Ekonomi Mining

Mining Bitcoin adalah bisnis. Seperti bisnis lainnya, keberhasilannya ditentukan oleh satu persamaan sederhana: pendapatan harus lebih besar dari biaya. Tapi ekonomi mining jauh lebih kompleks dari bisnis biasa karena beberapa variabel kuncinya terus berubah secara dinamis.

Sumber pendapatan miner

Miner mendapat dua sumber pendapatan. Pertama, block reward: saat ini 3.125 BTC per block, dan akan terus berkurang setiap halving. Kedua, fee transaksi: semua fee dari transaksi yang dimasukkan ke block. Saat mempool ramai, fee bisa menjadi porsi signifikan dari total pendapatan. Pendapatan total miner dihitung dalam USD atau mata uang lokal, sehingga harga BTC sangat menentukan profitabilitas.

Biaya operasional

Biaya terbesar dalam mining adalah listrik. ASIC modern membutuhkan ribuan watt untuk beroperasi, dan harus berjalan 24 jam sehari 7 hari seminggu. Biaya listrik per kilowatt-hour (kWh) adalah faktor yang paling membedakan miner yang profitable dari yang tidak. Miner dengan akses ke listrik murah (0.03-0.05 USD/kWh) bisa tetap profitable bahkan saat harga BTC sedang rendah. Miner dengan listrik mahal (0.10-0.15 USD/kWh) bisa rugi bahkan saat harga BTC tinggi. Biaya lain termasuk hardware ASIC yang perlu diganti setiap beberapa tahun, infrastruktur cooling, sewa fasilitas, dan tenaga kerja.

Hash rate dan difficulty

Semakin banyak miner bergabung ke jaringan dengan hardware baru, hash rate total naik dan difficulty menyesuaikan agar block time tetap 10 menit. Ini berarti setiap miner mendapat porsi reward yang lebih kecil. Ekonomi mining adalah zero-sum game dalam jangka pendek: kalau miner lain menjadi lebih efisien, miner yang kurang efisien semakin tertekan.

Hashprice dan break-even price

Hashprice adalah metrik yang menghitung berapa USD yang dihasilkan per terahash per detik per hari. Ini memungkinkan miner membandingkan profitabilitas terlepas dari ukuran operasinya. Break-even price adalah harga BTC minimum agar operasi mining tidak rugi, tergantung biaya listrik dan efisiensi hardware yang digunakan.

Halving dan dampaknya

Setiap halving, block reward dipotong setengah. Kalau harga BTC tidak naik cukup untuk mengimbangi, miner yang tidak efisien akan mematikan hardware mereka. Hash rate bisa turun sementara, difficulty menyesuaikan turun, dan miner yang tersisa menjadi lebih profitable. Halving adalah salah satu momen paling menegangkan dalam siklus ekonomi mining Bitcoin.

Ekonomi mining adalah sistem yang sangat dinamis dan self-correcting. Profitabilitas yang tinggi menarik lebih banyak miner, yang menaikkan difficulty, yang mengurangi profitabilitas. Profitabilitas yang rendah mendorong miner keluar, yang menurunkan difficulty, yang meningkatkan profitabilitas bagi yang tersisa. Ini adalah keseimbangan yang terus bergerak.

Kalkulator — Profitabilitas mining
Masukkan harga BTC, biaya listrik, dan spesifikasi hardware untuk melihat estimasi profit harian, break-even price, dan sensitivitas profit terhadap perubahan harga BTC.
Preset hardware:
Harga BTC dalam USD
Biaya listrik USD per kWh
Hash rate TH/s
Konsumsi daya watt
Profit harian (estimasi)
+$0.00
Pendapatan harian (BTC)
0.00000000 BTC
Pendapatan harian (USD)
$0.00
Biaya listrik harian
$0.00
Efisiensi hardware
0 W/TH
Break-even BTC price
$0
Hashprice
$0.00 / TH/day
Margin profit:
Profit harian vs harga BTC (garis merah = break-even):
Isi input di atas untuk melihat estimasi profitabilitas mining.
Bab 11 · 11.5
Konsumsi energi yang besar — sia-sia atau bermakna?
Mining dan Energi

Tidak ada topik dalam ekosistem Bitcoin yang lebih sering diperdebatkan dari konsumsi energi mining. Kritik datang dari berbagai arah, dan pertahanannya juga beragam. Yang penting adalah memahami fakta-faktanya sebelum mengambil kesimpulan.

Berapa banyak energi yang digunakan Bitcoin?

Konsumsi energi jaringan Bitcoin tidak bisa diukur langsung, karena tidak ada meteran yang terpasang di jaringan. Yang ada cuma perkiraan, dan dua perkiraan paling sering dikutip berbeda cukup jauh. Per pertengahan 2026, Cambridge Centre for Alternative Finance memperkirakan sekitar 138 TWh per tahun, sedangkan Digiconomist sekitar 204 TWh. Selisihnya 66 TWh, dan itu bukan kecerobohan.

Kenapa dua angka yang sama-sama kredibel bisa berbeda sejauh itu

Karena keduanya menjawab pertanyaan yang sedikit berbeda. Cambridge menyusun dari bawah: mensurvei perusahaan mining, mendata hardware yang benar-benar dipakai, lalu menghitung kebutuhan listriknya. Digiconomist menyusun dari sisi ekonomi: mengandaikan miner membelanjakan porsi tetap dari pendapatannya untuk listrik, lalu menghitung mundur. Akibatnya angka Digiconomist ikut naik saat harga naik, sedangkan angka Cambridge lebih terikat pada perangkat keras yang nyata. Tidak ada yang salah di antara keduanya. Yang salah adalah mengutip satu angka tanpa menyebut model mana yang dipakai.

Untuk konteks, angka itu kira-kira setara konsumsi listrik negara berukuran sedang seperti Polandia atau Thailand, dan berada di kisaran setengah persen dari seluruh listrik dunia. Sebagai pembanding lain, pusat data global menghabiskan sekitar 485 TWh pada 2025 dan tumbuh sekitar 15 persen per tahun, sementara angka Bitcoin relatif mendatar.

Yang tidak akan berubah, apa pun angkanya nanti

Angka di atas pasti menua, dan bagian mana pun dari buku ini yang menyebut TWh sebaiknya kamu perlakukan sebagai potret bertanggal. Tapi tiga hal berikut tidak ikut menua. Pertama, konsumsi energi Bitcoin mengikuti pendapatan miner, bukan jumlah transaksi. Menambah atau mengurangi transaksi dalam satu block tidak mengubah energinya sedikit pun, karena yang dibayar adalah menemukan block, bukan mengisinya. Itu sebabnya angka "energi per transaksi" yang sering dikutip media menyesatkan: penyebutnya bisa berubah tanpa pembilangnya bergerak.

Kedua, karena mengikuti pendapatan, ia ikut naik turun bersama harga. Ini bukan teori: pada Desember 2025 perkiraan tahunan sempat mendekati 190 TWh di puncak pasar, lalu turun kembali ke kisaran 130-an setelah harga melemah pada 2026 dan miner yang kurang efisien berhenti beroperasi. Ketiga, efisiensi hardware terus membaik, dari sekitar 98 J/TH pada 2016 menjadi sekitar 13,5 J/TH pada 2026. Artinya energi per hash turun terus, tapi jumlah hash naik terus, dan yang menentukan hasil akhirnya adalah harga.

Kalau kamu ingin angka terkini, yang perlu dicari bukan berita, melainkan salah satu dari dua indeks itu langsung, dan yang perlu kamu catat adalah tanggal serta model mana yang kamu kutip.

Energi dan keamanan

Energi yang digunakan dalam mining bukan sia-sia dari perspektif Bitcoin. Ia adalah biaya yang secara langsung mengamankan jaringan. Semakin banyak energi yang digunakan untuk mining, semakin mahal biaya untuk menyerang jaringan. Ini adalah mekanisme keamanan yang disengaja: work dalam proof of work harus nyata dan mahal.

Sumber energi mining

Komposisi sumber energi mining sudah bergeser secara signifikan. Karena miner mencari listrik termurah, mereka sering menuju ke sumber energi yang murah karena berlebihan atau terisolasi: energi hidro yang berlebih, gas buang dari sumur minyak (flared gas), energi geotermal, dan sumber terbarukan lainnya. Estimasi terkini menunjukkan sekitar 50-60% energi mining berasal dari sumber terbarukan atau rendah karbon, meskipun angka ini diperdebatkan karena metodologi yang berbeda.

Perbandingan dengan sistem lain

Sering diabaikan dalam perdebatan adalah konsumsi energi sistem keuangan tradisional: bank, ATM, kantor, data center, pencetakan uang fisik, dan pengiriman uang tunai. Perbandingan ini sulit dilakukan secara apel-ke-apel karena ruang lingkup yang berbeda, tapi penting untuk menjaga perspektif yang seimbang.

Mining sebagai pembeli energi fleksibel

Ada argumen yang menarik bahwa mining bisa berperan positif dalam grid energi. Miner bisa bertindak sebagai pembeli energi yang sangat fleksibel: mereka bisa dinyalakan saat ada surplus energi dan dimatikan saat permintaan tinggi. Ini membantu stabilisasi grid dan bisa membuat proyek energi terbarukan lebih ekonomis dengan menjadi pembeli energi yang selalu ada bahkan di luar jam puncak.

Perdebatan energi Bitcoin tidak punya jawaban sederhana. Seberapa mahal sebuah sistem keamanan moneter yang desentralisasi layak untuk dibayar? Ini adalah pertanyaan nilai, bukan hanya teknis. Yang bisa dilakukan adalah memastikan perdebatan ini didasarkan pada fakta yang akurat, bukan angka yang diambil tanpa konteks.

Visualisasi — Energi mining: sumber dan perbandingan
Tab pertama: komposisi sumber energi yang digunakan mining Bitcoin. Tab kedua: perbandingan konsumsi energi Bitcoin dengan sistem dan industri lain.
Konsumsi tahunan Bitcoin
~138-204 TWh
Setara konsumsi negara berukuran sedang seperti Polandia atau Thailand
Estimasi energi terbarukan
~50-60%
Metodologi berbeda menghasilkan angka yang berbeda pula
Hidro
26%
Angin & Solar
17%
Gas alam
25%
Batu bara
22%
Lainnya
10%
Flared gas (gas buang dari pengeboran minyak yang sebelumnya dibakar sia-sia) semakin banyak digunakan untuk mining. Ini secara paradoks mengurangi emisi karena gas yang tadinya dibakar langsung ke atmosfer kini dikonversi menjadi listrik terlebih dahulu.
Estimasi konsumsi energi tahunan berbagai sistem dan industri (TWh/tahun).
Sistem perbankan global
~4.000+ TWh
~4.000 TWh
Data center global
~200-250 TWh
~200-250 TWh
AC rumah tangga (AS)
~185 TWh
~185 TWh
Industri emas (mining)
~130 TWh
~130 TWh
Bitcoin mining
~138-204 TWh
~138-204 TWh
Perbandingan ini perlu kehati-hatian. Sistem perbankan global melayani miliaran orang dengan ribuan layanan berbeda. Bitcoin saat ini melayani sebagian kecil populasi dunia. Perbandingan yang adil harus mempertimbangkan skala layanan, bukan hanya angka energi absolut.
Sumber: Cambridge Centre for Alternative Finance (CCAF), Galaxy Digital, IEA. Semua angka adalah estimasi dengan rentang ketidakpastian yang signifikan.
Bab 11 · 11.6
Antara tekanan sentralisasi dan semangat desentralisasi — ke mana mining akan pergi?
Masa Depan Mining dan Desentralisasi

Mining Bitcoin berada di persimpangan antara dua kekuatan yang saling bertentangan: tekanan menuju sentralisasi yang didorong oleh ekonomi skala, dan tekanan menuju desentralisasi yang didorong oleh semangat protokol Bitcoin itu sendiri. Ke mana arah industri ini ke depannya?

Konsentrasi hash rate saat ini

Hari ini, sebagian besar hash rate jaringan Bitcoin terkonsentrasi di beberapa pool besar. Ini bukan berarti jaringan dikontrol oleh segelintir pihak, karena miner individu dalam pool bebas pindah kapan saja. Tapi konsentrasi ini tetap menciptakan risiko teoritis dan pertanyaan tentang ketahanan jangka panjang. Secara geografis, China pernah mendominasi dengan lebih dari 60% hash rate, tapi larangan mining pada 2021 mendorong redistribusi besar-besaran. Kini hash rate tersebar ke Amerika Serikat, Kazakhstan, Rusia, Kanada, dan banyak negara lain. Distribusi geografis yang lebih luas ini secara umum positif untuk ketahanan jaringan.

Siapa yang memilih transaksi?

Dalam setup pool tradisional, operator pool yang memutuskan transaksi mana yang masuk ke block, bukan miner individu yang menjalankan hardware. Selama ini hal ini jarang menjadi masalah karena pool umumnya memilih transaksi berdasarkan fee tertinggi tanpa memfilter konten.

Tapi Ocean Pool mengubah dinamika ini. Ocean adalah pool yang secara eksplisit menerapkan transaction filtering: mereka menolak transaksi tertentu yang mereka anggap tidak sesuai dengan penggunaan Bitcoin yang sah, termasuk beberapa jenis Ordinals dan transaksi yang menggunakan OP_RETURN secara berlebihan. Ini bukan kecurangan dalam artian teknis. Secara protokol, miner memang punya hak memilih transaksi mana yang dimasukkan ke block.

Tapi ini membuka perdebatan yang lebih dalam: kalau pool besar mulai menyensor transaksi tertentu berdasarkan konten bukan hanya validitas teknis, apakah sifat censorship-resistance Bitcoin terancam? Di satu sisi, ada yang berargumen miner berhak memilih berdasarkan preferensi mereka. Di sisi lain, ada yang khawatir ini menciptakan preseden berbahaya: kalau satu pool boleh menyensor berdasarkan konten, apa yang mencegah pool lain menyensor berdasarkan kriteria lain yang lebih politis?

Stratum V2 dan desentralisasi pemilihan transaksi

Stratum V2 hadir sebagai jawaban struktural terhadap pertanyaan ini. Sebagai upgrade protokol komunikasi antara pool dan miner, Stratum V2 memberi miner individu kemampuan untuk memilih sendiri transaksi yang ingin mereka masukkan ke block. Ini adalah perubahan fundamental: bahkan kalau hash rate terkonsentrasi di pool besar, kekuatan untuk memilih transaksi terdistribusi kembali ke miner individu. Kalau Stratum V2 diadopsi luas, skenario seperti Ocean Pool yang memfilter transaksi atas nama seluruh miner dalam pool menjadi lebih sulit terjadi tanpa persetujuan eksplisit miner.

Mining rumahan dan small-scale mining

Ada gerakan yang tumbuh untuk membawa mining kembali ke skala kecil. Perangkat seperti Bitaxe adalah ASIC open-source berukuran kecil yang bisa dijalankan di rumah dengan daya beberapa watt. Hash rate-nya sangat kecil dibanding ASIC industri, tapi kontribusinya ke desentralisasi jaringan lebih besar dari angkanya. Argumennya: jaringan yang punya jutaan miner kecil yang tersebar geografis lebih tahan terhadap serangan dan regulasi daripada jaringan yang bergantung pada beberapa ratus fasilitas industri besar.

Fee transaksi sebagai insentif jangka panjang

Block reward akan terus berkurang setiap halving. Pada akhirnya, tidak akan ada lagi block reward. Insentif miner akan sepenuhnya bergantung pada fee transaksi. Kalau Bitcoin berhasil menjadi sistem yang digunakan miliaran orang, volume dan fee aggregate mungkin lebih dari cukup. Tapi kalau tidak, hash rate bisa turun dan keamanan jaringan melemah. Ini adalah salah satu pertanyaan paling fundamental tentang keberlanjutan jangka panjang Bitcoin, dan tidak ada yang tahu jawabannya dengan pasti.

Masa depan mining Bitcoin bergantung pada keseimbangan antara insentif ekonomi, inovasi teknologi, dan keputusan komunitas. Pertanyaan tentang siapa yang berhak memilih transaksi, seberapa terdesentralisasi hash rate harus, dan apakah fee cukup menggantikan block reward adalah pertanyaan yang akan terus diperdebatkan. Yang menarik adalah semua ini terjadi tanpa ada pihak tunggal yang bisa memutuskan jawabannya.

Visualisasi — Distribusi hash rate
Tab pertama: distribusi hash rate per mining pool. Tab kedua: distribusi geografis setelah redistribusi besar pasca larangan China 2021.
Konsentrasi pool tinggi, tapi miner dalam pool tetap bebas pindah kapan saja. Kekuatan pool bergantung pada kepercayaan miner yang bisa ditarik sewaktu-waktu. Ocean Pool (tidak termasuk di atas karena share kecil) adalah contoh pool yang menerapkan transaction filtering secara eksplisit.
Estimasi berdasarkan block yang ditemukan ~Q1 2024. Distribusi berubah setiap hari. Sumber: mempool.space, BTC.com.
Setelah China melarang mining pada 2021, hash rate terdistribusi ulang secara masif ke berbagai negara. Distribusi geografis yang lebih luas ini positif untuk ketahanan jaringan terhadap regulasi di satu negara.
Estimasi distribusi geografis ~2024. Sumber: CCAF Cambridge Bitcoin Electricity Consumption Index.
← Daftar Bab
BLK #915,217
Bab 12 · 12.1
Bitcoin bukan anonim, ia pseudonim — dan perbedaannya sangat besar
Mengapa Privasi di Bitcoin Itu Sulit

Bitcoin sering disebut sebagai mata uang anonim. Ini adalah kesalahpahaman yang cukup serius. Bitcoin bukan anonim, ia pseudonim. Setiap transaksi tercatat permanen di blockchain yang bisa dibaca siapapun. Yang tersembunyi hanyalah identitas di balik address, bukan transaksinya itu sendiri.

Transparansi sebagai fitur, bukan bug

Transparansi penuh blockchain adalah pilihan desain yang disengaja. Tanpa transparansi ini, node tidak bisa memverifikasi bahwa tidak ada bitcoin yang dibuat dari nol atau dibelanjakan dua kali. Transparansi adalah harga yang dibayar untuk desentralisasi dan verifikasi tanpa kepercayaan. Tapi transparansi ini punya konsekuensi privasi yang serius. Kalau seseorang mengetahui satu address milikmu, mereka bisa melihat semua transaksi yang masuk dan keluar dari address itu. Dan dengan analisis heuristik seperti yang kita bahas di Bab 10, mereka bisa mulai menghubungkan address-address lain yang kemungkinan milikmu juga.

Heuristik analisis blockchain

Ada beberapa heuristik yang digunakan analis blockchain untuk menghubungkan address dan mengidentifikasi pemilik. Common input ownership: kalau dua UTXO digunakan bersama sebagai input, kemungkinan besar keduanya milik orang yang sama. Change output detection: kembalian transaksi biasanya bisa diidentifikasi dari nilai yang tidak bulat atau dari tipe script yang sama dengan pengirim. Address reuse: kalau address yang sama muncul lebih dari sekali, semua transaksinya terhubung.

Kenapa ini penting

Privasi finansial bukan tentang menyembunyikan sesuatu yang ilegal. Ini tentang hak dasar: kamu tidak ingin employer-mu tahu berapa gajimu dari pekerjaan sampingan, kamu tidak ingin competitor-mu tahu dengan siapa kamu bertransaksi, kamu tidak ingin penyerang tahu berapa banyak bitcoin yang kamu miliki. Di negara dengan pemerintahan yang tidak stabil, privasi finansial bisa menjadi masalah keselamatan nyata.

Blockchain Bitcoin adalah buku besar publik permanen. Setiap kesalahan privasi yang kamu buat hari ini bisa dianalisis ulang bertahun-tahun kemudian dengan tools yang lebih canggih. Privasi yang baik harus dibangun dari awal, bukan ditambal setelahnya.

Yang bocor bukan cuma siapa, tapi juga pakai apa

Heuristik yang kita bahas tadi berusaha menjawab pertanyaan "UTXO ini milik siapa". Ada lapisan lain yang lebih halus dan jarang disadari: transaksimu juga membocorkan wallet apa yang kamu pakai. Namanya wallet fingerprinting.

Penyebabnya sederhana. Protokol Bitcoin memberi banyak kebebasan tentang bagaimana sebuah transaksi disusun, dan setiap wallet mengambil keputusan yang sedikit berbeda. Keputusan itu konsisten, dan konsistensi itulah yang menjadi sidik jari.

Beberapa yang paling mudah dibaca: urutan output, apakah kembalian selalu ditaruh di posisi pertama atau diacak. Nomor versi transaksi, ada yang memakai 1, ada yang 2. Nilai nSequence yang kita bahas di 15.3, apakah wallet menandai transaksinya replaceable atau tidak. Cara membulatkan fee, apakah selalu angka bulat atau hasil perhitungan presisi. Dan yang paling terang, jenis alamat: wallet yang membelanjakan dari bc1q lalu mengirim kembalian ke bc1q juga menyempit pilihannya sendiri.

Satu ciri saja tidak berarti banyak. Tapi digabungkan, kombinasinya sering cukup untuk menebak wallet apa yang dipakai, dan kadang versinya. Bagi pengamat, itu petunjuk berharga. Kalau ia tahu kamu memakai wallet tertentu, ia tahu pola kembalianmu, tahu apakah kamu mungkin memakai fitur privasi tertentu, dan bisa menyaring transaksi lain di blockchain yang punya sidik jari sama.

Ada akibat yang lebih tidak enak lagi. Sidik jari itu bisa dipakai untuk memecahkan CoinJoin yang kita bahas di 12.2. Kalau dari sepuluh peserta sebuah CoinJoin hanya satu yang memakai wallet dengan ciri tertentu, anonimitas yang seharusnya didapat dari berbaur bersama sembilan orang lain ikut menipis.

Yang bisa kamu lakukan terbatas, dan jujur saja tidak banyak. Memakai wallet yang populer membuatmu berbaur dengan lebih banyak orang. Memakai jenis alamat yang sama dengan mayoritas jaringan juga membantu. Tapi pada dasarnya ini bukan sesuatu yang bisa diperbaiki pengguna sendiri: yang perlu berubah adalah wallet-nya, dan sebagian pengembang memang sedang menyeragamkan perilaku mereka agar sidik jarinya melebur.

Visualisasi — Heuristik analisis blockchain
Pilih salah satu heuristik untuk melihat bagaimana analis blockchain mengidentifikasi pemilik address dan menghubungkan transaksi.
Pilih heuristik analisis:
Pilih salah satu heuristik di atas untuk melihat bagaimana analis blockchain mengidentifikasi pemilik address.
Bab 12 · 12.2
Privasi tanpa kepercayaan — beberapa pengguna, satu transaksi
CoinJoin — Mencampur tanpa Kepercayaan

CoinJoin adalah teknik privasi paling fundamental di Bitcoin. Ide dasarnya sederhana tapi powerful: beberapa pengguna menggabungkan transaksi mereka menjadi satu transaksi bersama dengan banyak input dari banyak pengguna dan banyak output dengan nilai yang sama.

Bagaimana CoinJoin bekerja

Bayangkan Alice ingin mengirim 0.1 BTC dan Bob juga ingin mengirim 0.1 BTC. Daripada membuat dua transaksi terpisah, mereka bergabung dalam satu transaksi: dua input dari Alice dan Bob, dua output 0.1 BTC ke penerima masing-masing. Analis blockchain tidak bisa lagi menggunakan heuristik common input ownership karena input memang dari dua orang berbeda. Dan karena outputnya sama nilainya, tidak bisa ditentukan mana output Alice dan mana output Bob.

Tanpa kepercayaan

Yang membuat CoinJoin elegan adalah tidak ada yang perlu dipercaya. Setiap peserta menandatangani transaksi hanya setelah memverifikasi bahwa output mereka ada di transaksi tersebut. Kalau ada yang mencoba memanipulasi output, tanda tangan tidak valid dan transaksi batal. Tidak ada pihak yang bisa mencuri dana peserta lain.

Implementasi CoinJoin

Ada beberapa implementasi CoinJoin yang berbeda. Wasabi Wallet menggunakan WabiSabi, protokol CoinJoin yang memungkinkan output dengan nilai yang berbeda-beda, bukan hanya satu denominasi. JoinMarket adalah marketplace di mana market maker menyediakan likuiditas untuk CoinJoin dengan imbalan fee kecil. Whirlpool dari Samourai Wallet menggunakan denominasi tetap dan memungkinkan pengguna untuk melakukan multiple mixing rounds.

Keterbatasan CoinJoin

CoinJoin bukan solusi sempurna. Pertama, butuh koordinasi antara beberapa pengguna yang mau join di waktu yang sama. Kedua, kalau pengguna kemudian menggabungkan output CoinJoin dengan UTXO lain yang tidak di-CoinJoin, privasi yang sudah dibangun bisa bocor. Ketiga, beberapa exchange dan layanan mulai menolak bitcoin yang berasal dari CoinJoin, menciptakan masalah fungibilitas yang serius.

Catatan tentang Samourai Wallet

Pada April 2024, pendiri Samourai Wallet ditangkap oleh pihak berwenang AS dengan tuduhan money laundering dan pengoperasian layanan pengiriman uang tanpa izin. Ini adalah contoh nyata bagaimana tools privasi Bitcoin berada di wilayah yang masih diperdebatkan secara hukum. Whirlpool tidak lagi aktif sebagai layanan terpusat sejak itu, meskipun protokolnya masih bisa dijalankan secara mandiri.

CoinJoin adalah bukti bahwa privasi bisa dibangun di atas Bitcoin tanpa mengubah protokol dasarnya. Tapi kasus Samourai menunjukkan bahwa batasan antara tools privasi dan layanan keuangan yang perlu regulasi masih menjadi perdebatan aktif di berbagai yurisdiksi.

Visualisasi — Tanpa CoinJoin vs Dengan CoinJoin
Tab pertama: Alice dan Bob bertransaksi secara terpisah, semuanya terlacak jelas. Tab kedua: keduanya bergabung dalam satu CoinJoin, analis tidak bisa lagi menentukan mana output siapa.
Alice dan Bob masing-masing membuat transaksi terpisah. Analis bisa melacak setiap transaksi dengan jelas.
Alice · TX_a1b2
Input
0.15 BTC
Output (Carol)
0.10 BTC
Kembalian
0.04 BTC
Fee
0.01 BTC
Bob · TX_c3d4
Input
0.12 BTC
Output (Dave)
0.10 BTC
Kembalian
0.01 BTC
Fee
0.01 BTC
Apa yang bisa dilihat analis blockchain
✗ TX_a1b2: input Alice jelas milik satu orang, kembalian teridentifikasi, Carol sebagai penerima terlacak
✗ TX_c3d4: input Bob jelas milik satu orang, kembalian teridentifikasi, Dave sebagai penerima terlacak
✗ Kedua transaksi bisa dilacak secara independen dan lengkap
Tanpa CoinJoin, setiap transaksi adalah jendela terbuka ke aktivitas finansial penggunanya. Analis dengan mudah bisa menentukan siapa membayar siapa.
Alice dan Bob menggabungkan transaksi mereka menjadi satu CoinJoin. Output dibuat sama nilainya sehingga analis tidak bisa menentukan mana milik siapa.
CoinJoin TX_e5f6 — Alice + Bob 2 peserta
Input
Alice: 0.15 BTC
Bob: 0.12 BTC
→
Output (sama nilai)
0.10 BTC (siapa?)
0.10 BTC (siapa?)
0.04 BTC (kembalian?)
0.01 BTC (kembalian?)
Apa yang bisa dilihat analis blockchain
✗ Heuristik common input ownership gagal: input memang dari dua orang berbeda
✗ Tidak bisa ditentukan output 0.10 BTC mana yang milik Alice dan mana milik Bob
✗ Tidak bisa ditentukan kembalian mana yang kembali ke Alice dan mana ke Bob
✓ Tidak ada dana yang dicuri: setiap peserta menandatangani hanya setelah memverifikasi outputnya ada
CoinJoin memutus rantai pelacakan tanpa membutuhkan kepercayaan ke pihak ketiga. Validitas transaksi tetap bisa diverifikasi oleh semua node, tapi asal-usul dana menjadi jauh lebih sulit ditentukan.
Bab 12 · 12.3
Privasi yang tidak meninggalkan jejak yang bisa dikenali
Payjoin — Privasi yang Tidak Terlihat

CoinJoin membutuhkan koordinasi antara beberapa pengguna yang tidak saling kenal. Payjoin mengambil pendekatan yang berbeda: privasi dibangun langsung ke dalam transaksi pembayaran biasa antara pengirim dan penerima.

Apa itu Payjoin?

Payjoin (juga disebut P2EP atau Pay-to-End-Point) adalah protokol di mana penerima pembayaran ikut berkontribusi input ke transaksi. Dalam transaksi biasa, hanya pengirim yang menyediakan input. Dalam Payjoin, penerima juga menambahkan satu atau lebih UTXO sebagai input tambahan. Hasilnya: transaksi terlihat seperti transaksi biasa dari luar, tapi heuristik common input ownership sekarang memberikan kesimpulan yang salah. Analis yang melihat transaksi ini akan berasumsi semua input milik satu orang, padahal sebenarnya input berasal dari dua pihak berbeda.

Kenapa ini lebih baik dari CoinJoin biasa?

CoinJoin mudah diidentifikasi oleh analis blockchain karena pola transaksinya khas: banyak input dari banyak address dan banyak output dengan nilai yang sama persis. Walau isi transaksinya tidak bisa dideobfuskasi, keberadaan CoinJoin sendiri bisa dideteksi dan ditandai. Beberapa exchange menolak bitcoin yang pernah melalui CoinJoin bahkan tanpa bisa membuktikan dana itu terkait aktivitas ilegal. Payjoin tidak memiliki pola yang bisa diidentifikasi. Dari luar, transaksi Payjoin terlihat persis seperti transaksi pembayaran biasa.

Bagaimana Payjoin bekerja secara teknis

Prosesnya dimulai dari pengirim yang ingin membayar. Pengirim mengontak penerima melalui endpoint khusus, biasanya URL yang disediakan wallet penerima. Penerima merespons dengan menambahkan UTXO miliknya ke transaksi yang sedang dikonstruksi. Pengirim kemudian memverifikasi dan menandatangani transaksi lengkap. Hasilnya adalah satu transaksi yang tampak normal tapi mengandung input dari kedua pihak.

Keterbatasan Payjoin

Payjoin membutuhkan penerima yang mendukung protokol ini. Kalau merchant atau wallet penerima tidak mendukung Payjoin, transaksi dilakukan seperti biasa tanpa manfaat privasi. Adopsi masih terbatas: BIP 78 mendefinisikan protokol standar Payjoin, dan beberapa wallet seperti BTCPay Server, Wasabi Wallet, dan JoinMarket sudah mendukungnya, tapi masih jauh dari universal.

Payjoin adalah teknik privasi yang elegan karena tidak meninggalkan jejak yang bisa diidentifikasi. Kalau adopsinya luas, ia bisa meningkatkan privasi seluruh pengguna Bitcoin bahkan yang tidak secara aktif menggunakannya, karena analis tidak bisa lagi mengasumsikan semua input dalam satu transaksi milik satu orang.

Visualisasi — Transaksi biasa vs Payjoin
Dua transaksi yang dari luar terlihat hampir identik. Klik "Terapkan Heuristik" untuk melihat mengapa analis mendapat kesimpulan yang benar pada transaksi biasa tapi salah pada Payjoin.
UTXO milik Pengirim A
UTXO milik Penerima B
Kembalian
Transaksi Biasa
hanya Pengirim A yang punya input
UTXO A1: 0.800 BTC
UTXO A2: 0.350 BTC
keduanya milik Pengirim A
Penerima B: 1.100 BTC
Kembalian A: 0.040 BTC
Payjoin
Pengirim A dan Penerima B sama-sama punya input
UTXO A1: 0.800 BTC
UTXO B1: 0.350 BTC
A1 milik Pengirim A, B1 milik Penerima B
Penerima B: 1.100 BTC
Kembalian A: 0.040 BTC
Klik "Terapkan Heuristik Common Input" untuk melihat mengapa analis mendapat kesimpulan yang berbeda dari dua transaksi yang terlihat hampir sama.
Bab 12 · 12.4
Satu alamat statis, tak terbatas pembayaran, tidak ada yang bisa menghubungkannya
Silent Payments — Privasi tanpa Koordinasi

CoinJoin butuh koordinasi antar pengguna. Payjoin butuh penerima yang mendukung protokol. Silent Payments mengambil pendekatan yang lebih radikal: privasi yang tidak butuh koordinasi sama sekali dari pengirim atau penerima.

Apa itu Silent Payments?

Silent Payments (BIP 352) adalah protokol yang memungkinkan seseorang mempublikasikan satu alamat statis yang bisa digunakan oleh siapapun untuk mengirim pembayaran, tapi setiap pembayaran yang diterima akan masuk ke address on-chain yang berbeda-beda dan tidak bisa dihubungkan satu sama lain hanya dengan melihat blockchain. Analoginya: bayangkan kamu punya satu nomor rekening bank yang kamu bagikan ke semua orang, tapi setiap kali seseorang mentransfer ke nomor itu, uangnya masuk ke sub-rekening berbeda yang tidak terlihat satu sama lain dari luar.

Bagaimana cara kerjanya?

Pengirim menggunakan kunci publik penerima yang ada di alamat statis bersama dengan kunci privat pengirim untuk menghasilkan alamat pembayaran unik melalui operasi kriptografis yang disebut Elliptic Curve Diffie-Hellman. Alamat ini unik untuk setiap pengirim dan tidak bisa dikaitkan dengan alamat pembayaran dari pengirim lain, bahkan oleh orang yang tahu alamat statis penerima. Penerima kemudian men-scan blockchain menggunakan kunci privatnya untuk menemukan pembayaran yang ditujukan untuknya.

Kelebihan Silent Payments

Tidak perlu koordinasi: pengirim cukup tahu alamat statis penerima, tidak perlu komunikasi tambahan. Tidak ada address reuse: setiap pembayaran menghasilkan address on-chain yang unik, bahkan dari alamat statis yang sama. Tidak ada server pihak ketiga yang perlu dipercaya. Alamat statis bisa dipublikasikan secara terbuka seperti alamat email, tapi lebih aman dari segi privasi karena tidak mengekspos riwayat transaksi.

Keterbatasan

Scanning blockchain untuk menemukan pembayaran lebih berat secara komputasi. Light wallet yang mengandalkan server pihak ketiga akan kesulitan mengimplementasikan Silent Payments tanpa kehilangan privasi. Masih cukup baru: diimplementasikan di Cake Wallet dan beberapa wallet lain, tapi belum tersedia di mayoritas wallet populer.

Silent Payments adalah salah satu inovasi privasi paling menarik dalam ekosistem Bitcoin belakangan ini. Ia mengatasi salah satu masalah fundamental: bagaimana kamu bisa menerima pembayaran dari siapapun tanpa mengungkapkan riwayat transaksimu, dan tanpa harus berkoordinasi dengan pengirim terlebih dahulu.

Simulasi — Bagaimana Silent Payments bekerja
Satu alamat statis, tiga pengirim berbeda. Lihat bagaimana setiap pengirim menghasilkan address on-chain yang unik, dan mengapa analis tidak bisa menghubungkannya, tapi penerima bisa menemukan semuanya.
Alamat statis penerima (dipublikasikan sekali, dipakai selamanya):
Silent Payment Address
sp1qqgste7k9hx0qx9gqd3d5hmfyj2xzakvka6yh3dkqvgzr4k5q3...
Bisa dipublikasikan di website, profil, kartu nama — aman
Tiga pengirim berbeda mengirim ke alamat statis yang sama:
Alice
0.05 BTC
↓
Address on-chain unik:
bc1p...a3f7
Bob
0.12 BTC
↓
Address on-chain unik:
bc1p...9k2m
Carol
0.03 BTC
↓
Address on-chain unik:
bc1p...x8r1
Yang terlihat di blockchain (oleh siapapun)
Transaksi #1
bc1p...a3f7 menerima 0.05 BTC pemilik tidak diketahui
Transaksi #2
bc1p...9k2m menerima 0.12 BTC pemilik tidak diketahui
Transaksi #3
bc1p...x8r1 menerima 0.03 BTC pemilik tidak diketahui
Yang ditemukan penerima saat scanning dengan kunci privatnya
bc1p...a3f7 — 0.05 BTC dari Alice milikku
bc1p...9k2m — 0.12 BTC dari Bob milikku
bc1p...x8r1 — 0.03 BTC dari Carol milikku
Klik "Simulasikan Pengiriman" untuk melihat bagaimana tiga pengirim yang berbeda menghasilkan address on-chain yang berbeda-beda dari satu alamat statis yang sama.
Bab 12 · 12.5
Lightning bukan hanya lebih cepat dan murah — ia juga lebih privat
Lightning Network dan Privasi

Lightning Network bukan hanya solusi skalabilitas. Ia juga membawa karakteristik privasi yang sangat berbeda dari transaksi on-chain. Memahami perbedaan ini penting untuk membuat keputusan yang tepat tentang kapan menggunakan Lightning dan kapan menggunakan on-chain.

Privasi Lightning vs on-chain

Transaksi on-chain tercatat permanen di blockchain yang bisa dibaca siapapun. Transaksi Lightning tidak tercatat di blockchain sama sekali. Yang tercatat hanyalah pembukaan dan penutupan channel. Seluruh pembayaran yang terjadi di dalam channel tetap privat dari publik. Kalau Alice dan Bob punya channel Lightning dan melakukan ribuan transaksi, yang terlihat di blockchain hanyalah dua transaksi, bukan ribuan transaksi individual.

Onion routing di Lightning

Lightning menggunakan onion routing mirip dengan Tor: setiap node di jalur pembayaran hanya tahu dari mana pembayaran datang dan ke mana ia harus diteruskan, tapi tidak tahu keseluruhan jalur. Node pertama tahu pengirim tapi tidak tahu penerima akhir. Node terakhir tahu penerima tapi tidak tahu pengirim asal. Ini memberikan privasi yang lebih baik dari transaksi on-chain biasa, tapi bukan sempurna.

Tantangan privasi Lightning

Ada beberapa tantangan privasi yang spesifik untuk Lightning. Channel balance visibility: node yang terhubung ke kamu bisa melihat saldo channel yang kamu miliki bersama mereka. Invoice reuse: kalau kamu menggunakan invoice yang sama untuk menerima beberapa pembayaran, pembayar bisa saling mengetahui. Routing node surveillance: node besar yang merutekan banyak pembayaran bisa mengumpulkan data tentang pola pembayaran di jaringan.

BOLT 12 dan Offers

BOLT 12 adalah standar baru yang memperkenalkan konsep offers, pengganti invoice Lightning yang lebih privat. Offers memungkinkan penerima mempublikasikan satu kode yang bisa digunakan berkali-kali untuk menerima pembayaran, mirip seperti Silent Payments tapi di layer Lightning. Setiap pembayaran menghasilkan invoice unik secara kriptografis, mencegah korelasi antar pembayaran.

Lightning memberikan privasi yang lebih baik dari on-chain untuk sebagian besar transaksi sehari-hari, tapi bukan tanpa kelemahan. Pilihan terbaik bergantung pada konteks: untuk nilai besar yang butuh finalitas on-chain, gunakan on-chain. Untuk transaksi kecil yang sering, Lightning menawarkan privasi lebih baik sekaligus biaya lebih rendah.

Visualisasi — Privasi Lightning vs on-chain
Tab pertama: bandingkan apa yang terlihat di blockchain saat Alice mengirim 10 pembayaran ke Bob via on-chain vs Lightning. Tab kedua: lihat bagaimana onion routing menyembunyikan jalur pembayaran dari node perantara.
Alice mengirim 10 pembayaran ke Bob. Bandingkan apa yang terlihat di blockchain pada masing-masing metode.
On-chain
semua transaksi publik
Blockchain — terlihat oleh semua orang
TX #1 — 0.01 BTC
TX #2 — 0.05 BTC
TX #3 — 0.02 BTC
TX #4 — 0.03 BTC
TX #5 — 0.01 BTC
TX #6 — 0.08 BTC
TX #7 — 0.02 BTC
TX #8 — 0.04 BTC
TX #9 — 0.01 BTC
TX #10 — 0.03 BTC
Lightning
hanya channel open/close yang publik
Blockchain — terlihat oleh semua orang
Channel open — 0.5 BTC
10 pembayaran — privat
Channel close — settlement
Klik "Simulasikan 10 Pembayaran" untuk melihat perbedaan visibilitas antara pembayaran on-chain dan Lightning.
Lightning menggunakan onion routing: setiap node perantara hanya tahu satu langkah sebelum dan sesudahnya, tidak tahu keseluruhan jalur.
Alice
Pengirim
Tahu:
tujuan akhir (Bob)
→
Node 1
Perantara
Tahu:
dari Alice
ke Node 2
→
Node 2
Perantara
Tahu:
dari Node 1
ke Bob
→
Bob
Penerima
Tahu:
menerima dari
seseorang
Yang diketahui tiap node tentang pembayaran ini
Node
Tahu pengirim?
Tahu penerima?
Tahu jumlah asli?
Alice (pengirim)
Ya (dirinya)
Ya (Bob)
Ya
Node 1
Ya (Alice)
Tidak
Tidak pasti
Node 2
Tidak
Ya (Bob)
Tidak pasti
Bob (penerima)
Tidak tahu siapa
Ya (dirinya)
Ya
Node perantara hanya tahu satu langkah sebelum dan sesudahnya. Tidak ada node tunggal yang punya gambaran lengkap tentang siapa membayar siapa, kecuali pengirim dan penerima sendiri.
Bab 12 · 12.6
Privasi bergantung pada threat model kamu, bukan satu solusi untuk semua
Privasi adalah Spektrum, Bukan Tombol On/Off

Setelah membahas berbagai teknik privasi di bab ini, penting untuk memahami satu hal: privasi di Bitcoin bukan sesuatu yang bisa langsung diaktifkan atau dinonaktifkan. Ia adalah spektrum yang bergantung pada banyak keputusan kecil yang kamu buat setiap kali bertransaksi.

Tidak ada solusi sempurna

Setiap teknik yang kita bahas punya keterbatasan. CoinJoin bisa diidentifikasi polanya dan beberapa exchange menolaknya. Payjoin butuh penerima yang mendukung protokol. Silent Payments belum tersedia di semua wallet. Lightning punya keterbatasan sendiri untuk transaksi besar. Tidak ada satu teknik yang bisa menyelesaikan semua masalah privasi sekaligus.

Threat model: ancaman dari siapa?

Pertanyaan pertama yang harus dijawab sebelum memikirkan privasi adalah: kamu ingin melindungi diri dari siapa? Dari perusahaan analitik blockchain yang melacak pola transaksi? Dari exchange yang mungkin membekukan dana karena tainted coins? Dari orang-orang di sekitarmu yang tidak perlu tahu berapa banyak bitcoin yang kamu miliki? Jawaban yang berbeda membutuhkan strategi yang berbeda.

Praktik dasar yang bisa dilakukan semua orang

Ada beberapa langkah sederhana yang bisa dilakukan siapapun tanpa membutuhkan tools khusus. Gunakan HD wallet yang menghasilkan address baru secara otomatis untuk setiap transaksi. Hindari menggabungkan UTXO dari sumber berbeda dalam satu transaksi kalau tidak perlu. Gunakan Lightning untuk pembayaran kecil dan rutin. Berhati-hati dengan siapa kamu berbagi informasi tentang address atau transaksimu.

Privasi dan fungibilitas

Ada hubungan yang erat antara privasi dan fungibilitas Bitcoin. Fungibilitas berarti setiap satoshi bitcoin seharusnya diperlakukan sama, terlepas dari sejarahnya. Kalau beberapa bitcoin bisa di-taint karena pernah digunakan dalam aktivitas yang dicurigai dan exchange bisa menolak bitcoin tersebut, maka bitcoin tidak lagi sepenuhnya fungibel. Privasi yang baik membantu mempertahankan fungibilitas: kalau sejarah transaksi tidak bisa dilacak, tidak ada bitcoin yang bisa di-taint.

Masa depan privasi Bitcoin

Komunitas Bitcoin terus bekerja pada peningkatan privasi di level protokol. Silent Payments sudah mulai diadopsi. BOLT 12 sedang dalam proses implementasi. Ada diskusi tentang cross-input signature aggregation yang bisa membuat semua transaksi terlihat lebih seragam. Privasi Bitcoin di masa depan kemungkinan akan jauh lebih baik dari hari ini, tapi ini adalah proses yang lambat dan hati-hati karena setiap perubahan protokol membutuhkan konsensus komunitas yang luas.

Privasi bukan tentang menjadi kriminal. Ini tentang mempertahankan hak dasar untuk mengelola informasi finansialmu sendiri. Sama seperti kamu tidak mempublikasikan rekening bank ke semua orang, kamu juga tidak perlu mempublikasikan seluruh riwayat transaksi Bitcoinmu. Privasi yang baik adalah fondasi dari kebebasan finansial yang sejati.

Panduan — Threat model dan rekomendasi privasi
Pilih profil yang paling sesuai dengan situasimu untuk melihat rekomendasi teknik privasi yang relevan berdasarkan threat model masing-masing.
👤
Pengguna Kasual
Ingin privasi dasar, tidak mau ribet
🏪
Pedagang / Merchant
Menerima pembayaran dari pelanggan
📈
Investor Jangka Panjang
Menyimpan Bitcoin dalam jumlah signifikan
🛡️
Privasi Tinggi
Di negara represif atau butuh privasi kuat
← Daftar Bab
BLK #915,217
Bab 13 · 13.1
Bagaimana protokol yang tidak punya pemilik bisa berubah?
Apa itu Soft Fork dan Hard Fork?

Istilah soft fork dan hard fork sudah kita kenalkan sekilas di 5.1 waktu membahas konsensus. Di sini kita bongkar keduanya sampai tuntas, karena seluruh Bab 13 berdiri di atas perbedaan ini. Kalau bagian ini terasa familiar di awal, itu memang disengaja.

Bitcoin adalah protokol yang hidup. Ia perlu berevolusi untuk memperbaiki bug, menambah fitur, atau merespons ancaman baru. Tapi bagaimana caranya mengubah sebuah protokol yang tidak punya pemilik, tidak punya CEO, dan dijalankan oleh ribuan node independen di seluruh dunia? Di sinilah konsep fork menjadi penting.

Hard fork vs soft fork

Hard fork adalah perubahan protokol yang tidak kompatibel ke belakang. Node yang tidak upgrade tidak bisa lagi mengikuti chain yang baru. Kalau sebagian node upgrade dan sebagian tidak, jaringan akan terbagi menjadi dua chain yang terpisah permanen. Keduanya punya rantai terpanjangnya sendiri, tapi tidak berkompetisi satu sama lain karena block satu pihak tidak relevan bagi pihak lain. Hard fork membutuhkan koordinasi hampir universal dari seluruh ekosistem.

Soft fork adalah perubahan protokol yang kompatibel ke belakang. Node lama yang tidak upgrade masih bisa mengikuti chain baru, karena aturan baru hanya memperketat aturan yang sudah ada. Block yang valid menurut aturan baru juga valid menurut aturan lama. Ini berarti masih satu jaringan dengan dua kandidat chain, dan yang terpanjang menang. Karena mayoritas hash rate biasanya ada di node yang sudah upgrade, chain mereka yang selalu terpanjang.

Analogi sederhana

Bayangkan permainan kartu dengan aturan: "kartu bernilai lebih dari 5 menang." Hard fork adalah mengubah aturan menjadi "kartu bernilai lebih dari 3 menang", pemain lama yang tidak tahu aturan baru tidak bisa bermain di meja yang sama. Soft fork adalah mengubah aturan menjadi "kartu bernilai lebih dari 5 menang, dan harus berwarna merah", aturan jadi lebih ketat, tapi pemain lama masih bisa bermain di meja yang sama meski bermain suboptimal.

Mengapa Bitcoin lebih memilih soft fork

Soft fork lebih aman karena tidak memaksa semua pengguna untuk upgrade sekaligus. Node lama tetap bisa berpartisipasi dalam jaringan. Ini mengurangi risiko perpecahan komunitas dan memungkinkan perubahan dilakukan secara bertahap. Hard fork di Bitcoin dianggap sangat berisiko dan hampir tidak pernah dilakukan untuk fitur baru, hanya untuk perbaikan kritis yang benar-benar tidak bisa dilakukan dengan soft fork.

Pilihan antara soft fork dan hard fork bukan hanya teknis, tapi juga politis dan sosial. Soft fork memungkinkan perubahan tanpa memaksa konsensus universal, tapi juga berarti fitur baru harus dirancang dengan sangat hati-hati agar kompatibel ke belakang. Ini adalah salah satu alasan mengapa pengembangan Bitcoin terasa lambat dibanding proyek kripto lain.

Visualisasi — Hard fork vs Soft fork
Hard fork membelah jaringan jadi dua secara permanen. Soft fork tetap satu jaringan — kandidat chain yang tidak conforming ditinggalkan karena kalah terpanjang.
Hard fork: dua jaringan terpisah. Masing-masing punya rantai terpanjangnya sendiri — tapi keduanya tidak berkompetisi karena block satu pihak tidak relevan bagi pihak lain.
Block bersama (sebelum fork)
Chain A — node upgrade
Chain B — node lama
Block chain A tidak relevan bagi node B, dan sebaliknya — bukan karena kalah terpanjang, tapi karena aturannya sudah berbeda. Tidak ada kompetisi antar chain.
Node upgrade (Jaringan A)
Jaringan A punya rantai terpanjangnya sendiri. Block dari jaringan B tidak relevan.
Jaringan terpisah
Node lama (Jaringan B)
Jaringan B punya rantai terpanjangnya sendiri. Block dari jaringan A tidak relevan.
Jaringan terpisah
Hard fork = dua jaringan, dua konsensus. Bitcoin Cash (2017) adalah contoh nyata. Setelah fork, tidak ada "pemenang" antar chain — keduanya hidup sendiri-sendiri.
Soft fork: satu jaringan, dua kandidat chain. Yang terpanjang menang — dan karena mayoritas hash rate ada di node yang sudah upgrade, chain mereka yang selalu terpanjang.
Block bersama
Block valid di kedua aturan (mayoritas)
Block non-conforming (ditolak mayoritas)
Ini masih satu jaringan. Node lama bisa mengikuti chain mayoritas. Yang terpanjang menang — dan mayoritas selalu lebih cepat tumbuh karena hash rate lebih besar.
Mayoritas (node upgrade)
Hash rate terbesar, chain tumbuh paling cepat. Block non-conforming dari minoritas ditolak. Chain ini selalu jadi yang terpanjang.
✓ Chain terpanjang — menang
Minoritas (tidak upgrade)
Block non-conforming mereka ditolak mayoritas. Hash rate kecil membuat chain mereka selalu lebih pendek dan ditinggalkan.
Chain lebih pendek — ditinggalkan
Soft fork menjaga satu jaringan. Selama mayoritas hash rate mendukung aturan baru, chain non-conforming tidak pernah bisa jadi terpanjang.
Bab 13 · 13.2
Tidak ada CEO, tapi ada proses — begitu ide masuk ke Bitcoin
BIP — Bagaimana Ide Masuk ke Bitcoin

Bitcoin tidak punya CEO, tidak punya kantor pusat, tidak punya dewan direksi. Tapi Bitcoin bukan tanpa proses. Ada mekanisme formal untuk mengusulkan, mendiskusikan, dan mengimplementasikan perubahan pada protokol. Mekanisme ini disebut BIP, singkatan dari Bitcoin Improvement Proposal.

Apa itu BIP?

BIP adalah dokumen tertulis yang mengusulkan perubahan atau penambahan pada protokol Bitcoin, proses pengembangannya, atau standar yang digunakan. BIP pertama kali diperkenalkan oleh Amir Taaki pada 2011, terinspirasi dari Python Enhancement Proposals (PEP) yang digunakan komunitas Python. Setiap BIP punya nomor unik: BIP 32 untuk HD wallet, BIP 141 untuk SegWit, BIP 340-342 untuk Taproot, BIP 352 untuk Silent Payments. Nomor ini menjadi cara komunitas mereferensikan proposal secara konsisten.

Siapa yang bisa mengajukan BIP?

Siapapun. BIP bukan dokumen eksklusif developer inti. Siapapun bisa menulis dan mengajukan BIP. Tapi kualitas argumen, kejelasan spesifikasi teknis, dan dukungan dari komunitas yang menentukan apakah BIP akan dipertimbangkan serius atau diabaikan.

Proses BIP

BIP yang diajukan pertama kali melewati review oleh BIP editor yang memastikan format dan kelengkapan dokumen. Editor tidak memutuskan apakah BIP bagus atau buruk secara teknikal. Setelah diterima sebagai draft, BIP mulai didiskusikan di berbagai forum: mailing list bitcoin-dev, GitHub, forum, dan konferensi. Diskusi ini bisa berlangsung berbulan-bulan bahkan bertahun-tahun. Tidak ada voting formal, tidak ada keputusan tunggal. Konsensus terbentuk secara organik dari diskusi yang panjang.

Jenis-jenis BIP

Ada tiga jenis BIP. Standards Track BIP adalah yang paling penting: mengusulkan perubahan pada protokol Bitcoin yang mempengaruhi kompatibilitas, dibagi lagi menjadi beberapa lapisan mulai dari consensus layer hingga applications layer. Informational BIP memberikan informasi atau panduan tanpa mengusulkan fitur baru. Process BIP mengusulkan perubahan pada proses pengembangan Bitcoin itu sendiri.

Mengapa proses ini lambat?

Karena Bitcoin tidak punya otoritas pusat yang bisa memutuskan. Setiap perubahan pada protokol yang digunakan oleh jutaan orang dan menyimpan nilai miliaran dolar harus dipertimbangkan dengan sangat hati-hati. Satu bug dalam kode konsensus bisa berakibat bencana. Kelambatan adalah fitur, bukan bug.

BIP adalah cara komunitas terdesentralisasi mengkoordinasikan perubahan tanpa otoritas pusat. Prosesnya lambat dan sering penuh perdebatan, tapi itulah yang membuat legitimasi hasilnya bergantung pada konsensus nyata, bukan keputusan satu pihak.

Visualisasi — Lifecycle dan jenis-jenis BIP
Tab pertama: lifecycle sebuah BIP dari draft hingga final, dengan contoh BIP terkenal yang bisa diklik. Tab kedua: tiga jenis BIP dan perbedaannya.
✍️
Draft
Ditulis, diajukan ke editor
💬
Proposed
Diskusi komunitas, review teknis
🔍
Review
Implementasi, testing, feedback
✅
Final
Diterima dan diimplementasi
✗
Rejected
Ditolak atau ditarik
Contoh BIP terkenal — klik untuk detail:
BIP 32
Hierarchical Deterministic Wallets
2012 · Pieter Wuille · Standards Track
Final
BIP 141
Segregated Witness (SegWit)
2015 · Eric Lombrozo, Johnson Lau, Pieter Wuille · Standards Track
Final
BIP 148
UASF — Mandatory activation of segwit
2017 · Shaolin Fry · Standards Track
Final
BIP 340
Schnorr Signatures (bagian dari Taproot)
2020 · Pieter Wuille, Jonas Nick, Tim Ruffing · Standards Track
Final
BIP 352
Silent Payments
2022 · josibake, Ruben Somsen · Standards Track
Active
Ada tiga jenis BIP. Masing-masing punya tujuan dan bobot yang berbeda dalam ekosistem Bitcoin.
⚙️
Standards Track BIP
Paling penting
Mengusulkan perubahan pada protokol Bitcoin, format transaksi, atau standar teknis yang mempengaruhi kompatibilitas antar implementasi. Dibagi menjadi beberapa lapisan:
Consensus layer
Mengubah aturan konsensus. Butuh soft fork atau hard fork. Contoh: SegWit, Taproot.
Peer Services layer
Cara node berkomunikasi satu sama lain di jaringan P2P.
API/RPC layer
Standar komunikasi antara software dan node Bitcoin.
Applications layer
Standar untuk wallet, address, transaksi. Contoh: BIP 32 (HD wallet), BIP 173 (bech32).
BIP 32 — HD Wallet BIP 141 — SegWit BIP 340-342 — Taproot BIP 352 — Silent Payments
📄
Informational BIP
Panduan dan referensi
Memberikan informasi, panduan, atau dokumentasi untuk komunitas Bitcoin tanpa mengusulkan fitur baru atau perubahan protokol. Tidak membutuhkan konsensus untuk diadopsi — bebas diikuti atau diabaikan.
BIP 1 — BIP Purpose and Guidelines BIP 44 — Derivation path untuk HD wallet multi-akun
🔄
Process BIP
Meta dan tata kelola
Mengusulkan perubahan pada proses pengembangan Bitcoin itu sendiri, bukan protokolnya. Termasuk panduan atau prosedur yang berdampak pada cara komunitas mengembangkan Bitcoin. Mirip Informational BIP tapi lebih bersifat mengikat dalam praktik komunitas.
BIP 2 — BIP Workflow (revisi proses BIP)
Bab 13 · 13.3
Siapa yang punya kekuatan untuk mengaktifkan perubahan?
Jenis-jenis Soft Fork Activation

Soft fork sudah jelas lebih aman dari hard fork. Tapi bagaimana tepatnya sebuah soft fork "diaktifkan"? Ternyata ada beberapa mekanisme aktivasi yang berbeda, masing-masing dengan trade-off yang berbeda antara kecepatan, keamanan, dan siapa yang punya kekuatan untuk mengaktifkan perubahan.

MASF: Miner Activated Soft Fork

MASF adalah mekanisme aktivasi yang paling awal digunakan. Miner menandai block yang mereka buat dengan sinyal dukungan terhadap soft fork tertentu. Sinyal ini ditempatkan di field version pada block header. Kalau threshold tertentu, misalnya 95% dari 2016 block dalam satu difficulty period, tercapai maka soft fork otomatis diaktifkan. Keunggulan MASF adalah prosesnya terukur dan ada kepastian kapan aktivasi terjadi. Kelemahannya: miner punya veto de facto.

UASF: User Activated Soft Fork

UASF adalah respons terhadap kelemahan MASF. Node ekonomi, pengguna, exchange, dan bisnis yang menggunakan Bitcoin mengaktifkan aturan baru pada tanggal tertentu, terlepas dari apakah miner sudah mensinyalkan atau belum. Ini menciptakan tekanan balik terhadap miner: kalau miner tidak ikut aturan baru, block mereka akan ditolak oleh mayoritas ekonomi jaringan, dan reward mereka tidak akan bernilai. BIP 148 yang mengaktifkan SegWit pada 2017 adalah contoh UASF yang paling terkenal dan berhasil.

URSF: User Resisted Soft Fork

URSF adalah kebalikan UASF. Kalau UASF adalah pengguna yang memaksa aktivasi, URSF adalah pengguna yang memaksa penolakan. Node ekonomi berkoordinasi untuk menolak soft fork yang sudah diaktifkan oleh miner tapi tidak diinginkan oleh komunitas pengguna. URSF belum pernah digunakan secara penuh dalam sejarah Bitcoin, tapi keberadaannya sebagai opsi menunjukkan bahwa pengguna punya kekuatan untuk menolak perubahan yang dipaksakan miner.

Version Bits: Bagaimana Miner Mensinyalkan

Soft fork modern menggunakan mekanisme version bits yang didefinisikan di BIP 9. Block header punya field version 32 bit. Setiap bit bisa digunakan untuk mensinyalkan dukungan terhadap soft fork tertentu. Ini memungkinkan beberapa soft fork berjalan secara paralel tanpa konflik. Sinyal miner bersifat indikatif, bukan mengikat: miner bisa mensinyalkan tanpa benar-benar mengimplementasikan aturan baru.

Speedy Trial: Evolusi MASF

Speedy Trial adalah variasi MASF yang digunakan untuk mengaktifkan Taproot pada 2021. Ide utamanya: berikan window aktivasi yang lebih pendek sekitar 3 bulan dengan threshold 90%. Kalau threshold tercapai dalam window itu, soft fork diaktifkan. Kalau tidak, prosesnya bisa diulang dengan mekanisme berbeda. Speedy Trial berhasil: Taproot diaktifkan pada November 2021 setelah miner mencapai threshold dalam waktu yang relatif singkat, tanpa drama seperti SegWit.

Pilihan mekanisme aktivasi bukan hanya masalah teknis. Ia mencerminkan siapa yang dianggap paling berhak memutuskan perubahan dalam jaringan terdesentralisasi: miner yang menyediakan komputasi, atau pengguna yang memberikan nilai ekonomi. Sejarah Bitcoin menunjukkan bahwa keduanya saling membutuhkan, dan tidak ada satu pihak yang bisa memaksakan kehendak sepenuhnya.

Simulasi interaktif — Mekanisme aktivasi soft fork
Pilih salah satu mekanisme untuk melihat bagaimana prosesnya bekerja, siapa yang punya kekuatan, dan contoh nyatanya dalam sejarah Bitcoin.
MASF
Miner Activated
Miner mensinyalkan lewat block header, threshold tercapai lalu aktif
UASF
User Activated
Node ekonomi mengaktifkan pada tanggal tertentu, miner dipaksa ikut
URSF
User Resisted
Node ekonomi menolak soft fork yang dipaksakan miner
Speedy Trial
Speedy Trial
Variasi MASF dengan window aktivasi pendek, dipakai untuk Taproot
Coba sendiri: berapa banyak miner yang harus setuju?
70%
0%50%90%95%100%
Bab 13 · 13.4
Dua tahun perang politik yang mengubah cara Bitcoin membuat keputusan
SegWit — Soft Fork Paling Kontroversial

Kalau ada satu momen dalam sejarah Bitcoin yang benar-benar menguji apakah jaringan terdesentralisasi bisa membuat keputusan sulit tanpa otoritas pusat, itu adalah perdebatan SegWit. Berlangsung dari 2015 hingga 2017, ini bukan hanya debat teknis, ini adalah perang politik yang melibatkan developer, miner, exchange, pengguna, dan bisnis Bitcoin di seluruh dunia.

Apa itu SegWit?

SegWit, kependekan dari Segregated Witness, adalah soft fork yang memisahkan data tanda tangan (witness data) dari data transaksi utama. Secara teknis, ini memindahkan witness data ke bagian terpisah dari block yang tidak dihitung dalam batasan ukuran block 1 MB. Hasilnya: transaksi dengan SegWit menjadi lebih kecil secara efektif, meningkatkan kapasitas jaringan tanpa mengubah batas 1 MB secara eksplisit. Selain kapasitas, SegWit juga memperbaiki transaction malleability, kelemahan yang menjadi salah satu hambatan utama implementasi Lightning Network.

Mengapa kontroversial?

Perdebatan dimulai bukan karena SegWit sendiri, tapi karena konteks yang lebih besar: scaling debate Bitcoin. Sebagian komunitas, terutama beberapa miner dan bisnis besar, menginginkan solusi yang lebih sederhana: langsung naikkan batas block dari 1 MB menjadi 2 MB atau lebih melalui hard fork. Mereka melihat SegWit sebagai solusi yang terlalu rumit dan tidak cukup. Di sisi lain, core developer dan sebagian besar pengguna menginginkan SegWit karena selain kapasitas, ia membawa perbaikan penting lainnya dan bisa dilakukan tanpa hard fork yang berisiko.

New York Agreement dan UASF

Pada Mei 2017, sekelompok besar bisnis dan miner Bitcoin menandatangani New York Agreement, berjanji untuk mengaktifkan SegWit sekaligus menaikkan batas block menjadi 2 MB melalui hard fork, yang dikenal sebagai SegWit2x. Tapi banyak developer Bitcoin Core dan pengguna menolak bagian hard fork ini. Ketika miner tampak tidak akan mengaktifkan SegWit tanpa jaminan hard fork, komunitas pengguna meluncurkan BIP 148: UASF. Node yang menjalankan BIP 148 akan menolak block miner yang tidak mendukung SegWit mulai 1 Agustus 2017.

Hasilnya

Tekanan berhasil. Miner mengaktifkan SegWit sebelum deadline 1 Agustus. SegWit resmi aktif pada 24 Agustus 2017 di block 481.824. Bagian hard fork dari New York Agreement, SegWit2x, akhirnya dibatalkan pada November 2017 karena tidak cukup dukungan. Sebagian komunitas yang menginginkan block besar memisahkan diri membuat Bitcoin Cash melalui hard fork pada 1 Agustus 2017.

SegWit mengajarkan beberapa pelajaran penting tentang governance Bitcoin: miner tidak punya veto absolut, pengguna dan node ekonomi punya kekuatan nyata melalui UASF, dan konsensus di Bitcoin tidak bisa dipaksakan oleh satu pihak manapun. Tapi prosesnya juga menunjukkan betapa sulitnya membuat keputusan kolektif tanpa otoritas pusat.

Timeline — Perdebatan SegWit 2015 hingga 2017
Klik tiap event untuk melihat detail. Filter berdasarkan pihak yang terlibat.
Semua
Developer
Miner
Komunitas
Hasil
Developer
Miner
Komunitas
Hasil
Split
Des 2015
Developer
BIP 141 diajukan — SegWit pertama kali diperkenalkan
Pieter Wuille, Eric Lombrozo, dan Johnson Lau mengajukan proposal SegWit sebagai soft fork.
SegWit memisahkan witness data dari transaksi utama. Ini memperbaiki transaction malleability dan meningkatkan kapasitas jaringan secara efektif tanpa mengubah batas 1 MB secara eksplisit. Proposal ini diterima dengan baik oleh developer tapi langsung memicu perdebatan di komunitas yang lebih luas.
2016
Komunitas
Scaling debate memanas — block size war dimulai
Sebagian komunitas menginginkan solusi lebih sederhana: naikkan batas block langsung melalui hard fork.
Dua kubu terbentuk. Kubu big blocks dipimpin miner besar dan bisnis seperti Roger Ver, menginginkan hard fork menaikkan batas block. Kubu small blocks bersama Bitcoin Core developer menginginkan SegWit sebagai solusi yang lebih hati-hati. Perdebatan berlangsung sengit di forum, media sosial, dan konferensi.
2016-2017
Miner
Miner tidak mensinyalkan SegWit — deadlock
Meskipun SegWit sudah siap secara teknis, sebagian besar miner menolak mensinyalkan dukungan.
Miner besar, terutama yang berbasis di China, menolak mensinyalkan SegWit tanpa jaminan bahwa batas block juga akan dinaikkan. Ini menciptakan deadlock: developer tidak mau hard fork, miner tidak mau SegWit tanpa hard fork. Fee transaksi mulai melonjak karena kapasitas jaringan penuh.
Mar 2017
Komunitas
BIP 148 diajukan — UASF sebagai senjata pengguna
Shaolin Fry mengajukan BIP 148: node yang mendukung akan menolak block miner yang tidak mendukung SegWit mulai 1 Agustus 2017.
BIP 148 adalah gerakan dari bawah, bukan dari developer inti. Pengguna, exchange, dan bisnis yang lelah dengan deadlock mengancam untuk menggunakan kekuatan ekonomi mereka. Jika cukup banyak node menjalankan BIP 148, miner yang tidak mensinyalkan SegWit akan menghasilkan block yang ditolak oleh jaringan ekonomi.
Mei 2017
Komunitas
New York Agreement — kompromi yang tidak bertahan
Lebih dari 50 perusahaan Bitcoin menandatangani perjanjian: aktifkan SegWit, lalu naikkan block size menjadi 2 MB (SegWit2x).
New York Agreement ditandatangani oleh mayoritas hash rate dan banyak bisnis Bitcoin. Rencananya: aktifkan SegWit via MASF, lalu dalam 3 bulan lakukan hard fork menaikkan block menjadi 2 MB. Developer Bitcoin Core menolak terlibat karena menentang bagian hard fork. Perjanjian ini menciptakan ilusi konsensus yang rapuh.
Jul 2017
Miner
Miner mulai mensinyalkan SegWit — tekanan UASF berhasil
Di bawah ancaman BIP 148, miner mulai mengaktifkan sinyal SegWit sebelum deadline 1 Agustus.
Dalam minggu-minggu menjelang 1 Agustus, persentase sinyal SegWit dari miner melonjak drastis. Bukan karena keyakinan, tapi karena kalkulasi ekonomi: menghasilkan block yang mungkin ditolak jaringan ekonomi adalah risiko yang tidak worth it. Momen ini membuktikan bahwa miner tidak punya veto absolut.
1 Agt 2017
Split
Bitcoin Cash lahir — hard fork oleh kubu big blocks
Komunitas yang menginginkan block besar memisahkan diri dan membuat Bitcoin Cash dengan batas block 8 MB.
Pada block 478.558, Bitcoin Cash memisahkan diri dari Bitcoin. Ini adalah hard fork nyata pertama yang signifikan dalam sejarah Bitcoin. Pemegang Bitcoin otomatis mendapat jumlah BCH yang sama. Bitcoin Cash menggunakan replay protection untuk memastikan transaksi di satu chain tidak valid di chain lain.
24 Agt 2017
Hasil
SegWit resmi aktif di Bitcoin — block 481.824
Setelah hampir dua tahun perdebatan, SegWit akhirnya diaktifkan di jaringan Bitcoin utama.
SegWit lock-in terjadi pada 8 Agustus 2017 setelah threshold tercapai, dan aktif penuh pada 24 Agustus di block 481.824. Ini membuka jalan untuk Lightning Network dan perbaikan teknis lainnya. Kapasitas efektif jaringan meningkat dan transaction malleability terperbaiki.
Nov 2017
Hasil
SegWit2x dibatalkan — hard fork tidak jadi terjadi
Bagian hard fork dari New York Agreement resmi dibatalkan karena tidak cukup dukungan komunitas.
Para penandatangan New York Agreement mengumumkan pembatalan SegWit2x pada 8 November 2017. Alasannya: tidak cukup dukungan untuk membagi komunitas. Ini mengakhiri babak paling dramatis dalam sejarah Bitcoin. SegWit berjalan tanpa hard fork, persis seperti yang diinginkan developer Bitcoin Core dari awal.
Bab 13 · 13.5
Dari konsep ke aktivasi dalam 3 tahun, tanpa satu pun drama
Taproot — Soft Fork yang Lebih Mulus

Setelah drama SegWit, komunitas Bitcoin belajar banyak tentang bagaimana tidak seharusnya sebuah upgrade besar dilakukan. Taproot adalah kesempatan untuk membuktikan bahwa Bitcoin bisa berubah dengan cara yang lebih dewasa dan terkoordinasi.

Apa itu Taproot?

Taproot adalah paket tiga BIP yang diaktifkan bersamaan pada November 2021: BIP 340 (Schnorr Signatures), BIP 341 (Taproot sendiri), dan BIP 342 (Tapscript). Ketiganya saling terkait dan dirancang untuk bekerja bersama. Schnorr Signatures menggantikan ECDSA sebagai skema tanda tangan Bitcoin. Schnorr lebih efisien secara matematis dan memungkinkan signature aggregation: beberapa tanda tangan dalam satu transaksi bisa digabungkan menjadi satu tanda tangan tunggal. Ini mengurangi ukuran transaksi dan meningkatkan privasi karena transaksi multi-signature terlihat seperti transaksi biasa dari luar.

Tapscript memperkenalkan cara baru untuk menulis smart contract di Bitcoin menggunakan struktur MAST (Merkelized Alternative Script Trees). Dengan MAST, hanya cabang script yang benar-benar dieksekusi yang perlu diungkapkan di blockchain. Kontrak kompleks dengan banyak kondisi terlihat seperti pembayaran biasa dari luar selama jalur yang dieksekusi adalah "happy path".

Mengapa lebih mulus dari SegWit?

Taproot diaktifkan menggunakan Speedy Trial dengan window aktivasi pendek dan threshold 90%. Tidak ada drama UASF, tidak ada ancaman, tidak ada perpecahan. Miner mencapai threshold dalam waktu hanya 6 minggu setelah window dibuka. Beberapa faktor berkontribusi: semua pihak sudah lelah dengan drama SegWit, tidak ada trade-off yang kontroversial seperti block size debate, manfaat teknis Taproot jelas, dan Speedy Trial memberikan mekanisme yang fair dengan batas waktu yang jelas.

Apa yang berubah setelah Taproot?

Taproot aktif pada block 709.632 di tanggal 14 November 2021. Adopsi awalnya lambat karena wallet dan layanan perlu diupdate untuk mendukung format address baru P2TR (Pay-to-Taproot). Taproot membuka jalan untuk Lightning Network yang lebih privat dengan PTLCs (Point Time Lock Contracts) menggantikan HTLCs, dan untuk ekosistem smart contract yang lebih kaya di Bitcoin.

Taproot adalah bukti bahwa Bitcoin bisa berubah tanpa konflik besar. Tapi ini bukan berarti governance Bitcoin sudah sempurna. Taproot berhasil karena manfaatnya tidak kontroversial dan tidak ada kepentingan ekonomi besar yang terancam. Upgrade berikutnya yang lebih kontroversial bisa saja membutuhkan proses yang sama sulitnya seperti SegWit.

Visualisasi — Taproot: sebelum, sesudah, dan aktivasi
Tab pertama: perbandingan transaksi sebelum dan sesudah Taproot. Tab kedua: timeline aktivasi via Speedy Trial dari 2018 hingga November 2021.
Taproot membawa tiga perubahan besar sekaligus. Dari luar, transaksi yang kompleks sekarang terlihat seperti transaksi biasa.
BIP 340
Schnorr Signatures
Menggantikan ECDSA. Lebih efisien, memungkinkan signature aggregation.
BIP 341
Taproot
Script kompleks bisa disembunyikan. Hanya jalur yang dieksekusi yang terlihat.
BIP 342
Tapscript
Update bahasa script Bitcoin untuk mendukung Schnorr dan fitur baru.
Sebelum Taproot
ECDSA, script terekspos
Skema tanda tangan
ECDSA
Setiap input punya tanda tangan sendiri. Transaksi multi-sig dengan 3 penandatangan punya 3 tanda tangan terpisah yang semuanya terlihat di blockchain.
Transaksi 2-of-3 Multi-sig (terlihat di blockchain)
Script type
P2SH multisig
Sig #1
3045022100a4...3044
Sig #2
3044021f5b...2201
Redeem script
OP_2 key1 key2 key3 OP_3
Privasi
Terekspos — jelas ini multi-sig
Ukuran
250-350 vbytes
Smart contract / kondisi script
Semua kondisi script terekspos di blockchain, bahkan kondisi yang tidak digunakan.
Sesudah Taproot
Schnorr, script tersembunyi
Skema tanda tangan
Schnorr + MuSig2
Signature aggregation: beberapa tanda tangan bisa digabung menjadi satu. Transaksi multi-sig 3 penandatangan terlihat persis seperti transaksi 1 penandatangan biasa.
Transaksi 2-of-3 Multi-sig via Taproot (terlihat di blockchain)
Script type
P2TR (Pay-to-Taproot)
Signature
a1b2c3d4...e5f6 (64 bytes)
Jumlah sig
1 (diagregasi)
Script
tersembunyi
Privasi
Terlihat seperti tx biasa
Ukuran
57 vbytes (key-path spend)
Smart contract / kondisi script
Dengan MAST, hanya cabang script yang dieksekusi yang perlu diungkapkan. Kondisi lain tetap tersembunyi.
Kunci insight Taproot: kalau semua pihak setuju (happy path), transaksi apapun terlihat identik dari luar, baik itu pembayaran biasa, 2-of-3 multisig, Lightning channel close, atau smart contract kompleks.
Taproot diaktifkan menggunakan Speedy Trial, window aktivasi pendek 3 bulan dengan threshold 90%. Berbeda jauh dari drama 2 tahun SegWit.
1
Jan 2018 — awal
Pieter Wuille mulai mengerjakan Schnorr/Taproot
Ide dasar Taproot pertama kali dipresentasikan secara informal. Butuh waktu 3 tahun dari konsep ke aktivasi.
2
Jan 2020
BIP 340, 341, 342 diajukan secara resmi
Tiga BIP diajukan sekaligus sebagai paket. Review teknis berlangsung hampir setahun penuh.
3
Okt 2020
Bitcoin Core 0.21.1 merilis kode Taproot
Kode siap diimplementasi tapi mekanisme aktivasi masih didiskusikan. Komunitas sepakat menggunakan Speedy Trial.
4
1 Mei 2021
Speedy Trial window dibuka — miner mulai mensinyalkan
Window aktivasi 3 bulan dimulai. Threshold: 90% dari 2016 block dalam satu retarget period harus mensinyalkan.
5
12 Jun 2021
Threshold 90% tercapai — Taproot lock-in
Hanya 6 minggu setelah window dibuka, threshold tercapai. Taproot dikunci dan tidak bisa dibatalkan.
6
14 Nov 2021
Taproot aktif — block 709.632
Taproot resmi aktif di jaringan Bitcoin. Grace period antara lock-in dan aktivasi memberi waktu semua node untuk upgrade.
Taproot: dari window dibuka ke aktivasi kurang dari 6 bulan. Bandingkan dengan SegWit yang butuh hampir 2 tahun penuh perdebatan.
Bab 13 · 13.6
Tidak ada yang memutuskan — semua orang mempengaruhi
Governance Bitcoin — Siapa yang Sebenarnya Memutuskan?

Setelah mempelajari BIP, soft fork, UASF, SegWit, dan Taproot, pertanyaan yang wajar muncul: siapa sebenarnya yang punya kekuatan untuk mengubah Bitcoin? Jawabannya tidak sederhana, dan itulah yang membuatnya menarik.

Tidak ada yang memutuskan, semua orang mempengaruhi

Bitcoin tidak punya governance formal. Tidak ada voting, tidak ada dewan direksi, tidak ada mekanisme keputusan yang terdefinisi. Tapi perubahan tetap terjadi, melalui proses organik di mana berbagai pihak saling mempengaruhi dan pada akhirnya mencapai konsensus atau tidak.

Developer

Developer yang berkontribusi ke berbagai implementasi Bitcoin seperti Bitcoin Core, Bitcoin Knots, dan lainnya adalah orang-orang yang menulis dan mereview kode yang dijalankan node. Mereka punya pengaruh besar karena merekalah yang mengimplementasikan perubahan teknis. Tapi mereka tidak bisa memaksa siapapun menjalankan kode mereka, dan siapapun bebas fork implementasi tersebut.

Miner

Miner adalah pihak yang memproduksi block dan mengamankan jaringan. Dalam MASF, sinyal miner menentukan kapan soft fork diaktifkan. Tapi kasus UASF SegWit membuktikan bahwa miner bisa dipaksa oleh node ekonomi: block yang ditolak node ekonomi tidak menghasilkan pendapatan nyata.

Node

Node adalah aktor yang paling sering diabaikan tapi paling fundamental dalam governance Bitcoin. Ada dua jenis: node independen yang dijalankan oleh individu, komunitas, atau organisasi tanpa motif ekonomi langsung, dan node ekonomi yang dijalankan oleh exchange, wallet, dan bisnis. Yang penting: satu node rumahan punya bobot yang sama dengan satu exchange besar dalam hal validasi dan penegakan aturan konsensus. Merekalah penjaga aturan yang sesungguhnya.

Pengguna dan Pelaku Ekonomi

Pengguna biasa adalah yang paling sulit diukur pengaruhnya, tapi dalam jangka panjang mereka yang menentukan nilai Bitcoin. Pelaku ekonomi dan bisnis seperti exchange, merchant, payment processor, dan institusi punya kekuatan ekonomi yang signifikan: exchange bisa menentukan chain mana yang mendapat likuiditas, merchant yang menerima Bitcoin memberi nilai nyata pada jaringan. Tapi mereka juga punya keterbatasan, bergantung pada kepercayaan pengguna dan tidak bisa memaksa perubahan protokol secara langsung.

Mengapa tidak ada yang bisa memaksa?

Karena Bitcoin bersifat opt-in. Setiap node bebas memilih software apa yang dijalankan. Kalau suatu implementasi merilis versi baru yang tidak disukai komunitas, orang bisa terus menjalankan versi lama atau fork implementasinya. Proses governance yang tidak formal ini punya kelebihan: tidak ada single point of failure dan tidak ada yang bisa membajak Bitcoin untuk kepentingan sendiri. Kekurangannya: prosesnya sangat lambat dan perdebatan bisa berlangsung bertahun-tahun.

Governance Bitcoin bukan demokrasi, bukan otokrasi, dan bukan anarki. Ia adalah sistem di mana kekuatan tersebar di antara banyak pihak yang tidak saling mempercayai, tapi terpaksa berkoordinasi karena mereka semua bergantung pada jaringan yang sama. Ini mungkin adalah eksperimen governance yang paling menarik di era digital.

Peta Kekuatan — Governance Bitcoin
Tidak ada satu pihak yang punya otoritas absolut. Klik tiap aktor untuk melihat kekuatan, keterbatasan, dan contoh nyata pengaruh mereka dalam sejarah Bitcoin.
💻
Developer
Berbagai implementasi Bitcoin
Tinggi
⛏️
Miner
Produksi block, sinyal aktivasi
Sedang
🖥️
Node
Independen dan node ekonomi
Sangat tinggi
👤
Pengguna
Penentu nilai jangka panjang
Sedang
🏢
Pelaku Ekonomi dan Bisnis
Exchange, merchant, institusi, payment processor
Tinggi
Governance Bitcoin bukan demokrasi, bukan otokrasi, dan bukan anarki. Kekuatan tersebar di antara banyak pihak yang tidak saling mempercayai, tapi terpaksa berkoordinasi karena semua bergantung pada jaringan yang sama.
← Daftar Bab
BLK #915,217
Bab 14 · 14.1
184 miliar bitcoin yang tercipta dalam satu block — dan diperbaiki dalam 5 jam
Nilai Overflow Bug 2010

Pada 15 Agustus 2010, seseorang menemukan bug kritis di kode Bitcoin: integer overflow. Dengan mengeksploitasi bug ini, pelaku berhasil membuat transaksi yang seolah-olah menciptakan bitcoin jauh di luar aturan protokol. Transaksi ini sempat dikonfirmasi di block #74.638 sebelum di-rollback oleh komunitas dalam waktu sekitar 5 jam. Penting untuk dipahami: ini adalah bug di implementasi kode, bukan bug di protokol Bitcoin itu sendiri. Suplai 21 juta BTC tidak pernah benar-benar terancam.

Dua hal yang perlu dibedakan

Bitcoin punya dua batasan yang berbeda dan sering dikacaukan. Pertama, MAX_MONEY: ini adalah aturan konsensus protokol Bitcoin yang menetapkan tidak ada output transaksi yang boleh melebihi total suplai 21 juta BTC (2,1 kuadriliun satoshi). Kedua, MAX_INT64: ini adalah batas matematis tipe data integer 64-bit di komputer, yaitu 9,223,372,036,854,775,807. Angka ini tidak ada hubungannya dengan aturan Bitcoin, ia hanya batas teknis penyimpanan angka di memori komputer. Bug ini bukan tentang melanggar MAX_INT64, tapi tentang kode yang lupa memeriksa MAX_MONEY sebelum melakukan penjumlahan.

Bagaimana bug ini bekerja

Kode Bitcoin saat itu tidak memeriksa apakah nilai setiap output transaksi melebihi MAX_MONEY sebelum menjumlahkannya. Penyerang memanfaatkan ini dengan membuat dua output yang masing-masing jauh melebihi 21 juta BTC. Ketika keduanya dijumlahkan, total melampaui MAX_INT64 dan terjadi integer overflow: angka "membungkus" menjadi bilangan negatif besar. Kode validasi kemudian memeriksa apakah total output lebih kecil dari total input, dan karena total output sudah menjadi bilangan negatif, kondisi ini selalu terpenuhi. Transaksi lolos validasi padahal seharusnya tidak.

Respons komunitas

Satoshi Nakamoto sendiri yang merespons insiden ini. Dalam waktu sekitar 5 jam, Satoshi merilis patch yang menambahkan pemeriksaan: kalau nilai output kurang dari nol atau melebihi MAX_MONEY, transaksi langsung ditolak. Komunitas Bitcoin saat itu yang masih sangat kecil berhasil mengorganisir soft fork darurat: node-node upgrade dan mulai mengabaikan block #74.638. Chain yang bersih menjadi yang dominan. Bitcoin yang seolah-olah "tercipta" itu tidak pernah eksis secara nyata karena langsung di-rollback sebelum bisa digunakan siapapun.

Bug ini adalah contoh perbedaan penting antara bug protokol dan bug implementasi. Protokol Bitcoin mendefinisikan aturan dengan benar, tapi kode yang mengimplementasikan aturan tersebut punya celah. Ini salah satu alasan mengapa kode konsensus Bitcoin diaudit dengan sangat ketat: satu baris kode yang hilang bisa menciptakan celah yang berbahaya.

Delapan tahun kemudian, nyaris terulang

Mudah menganggap insiden 2010 sebagai penyakit masa muda: kode masih mentah, penggunanya sedikit, wajar ada lubang. Tapi pada September 2018 Bitcoin nyaris kehilangan batas 21 juta untuk kedua kalinya, dan kali ini di era yang sudah matang, dengan kode yang ditinjau jauh lebih ketat.

Bug itu tercatat sebagai CVE-2018-17144. Asalnya bukan dari fitur baru, melainkan dari sebuah optimasi. Pada Bitcoin Core 0.14.0 yang rilis Maret 2017, ada pemeriksaan input ganda yang dihapus karena dianggap sudah dilakukan di tempat lain, jadi mengulangnya cuma memperlambat. Anggapan itu keliru. Akibatnya node bersedia memproses sebagian block yang membelanjakan satu input yang sama lebih dari sekali.

Di versi 0.14.x, akibatnya "hanya" node mati mendadak, karena ada pemeriksaan pengaman yang sengaja menghentikan program saat menemui keadaan mustahil. Tapi pemeriksaan itu ditulis ulang di versi 0.15.0, dan sejak saat itu node tidak lagi berhenti. Ia melanjutkan. Artinya seorang miner bisa membelanjakan satu output dua kali dalam satu block, lalu mengklaim nilainya dua kali juga. Diulang berkali-kali, itu adalah pencetakan Bitcoin dari udara.

Bug itu diam selama sekitar satu setengah tahun. Yang akhirnya menemukannya bukan tim inti, melainkan seorang pengembang beralias awemany dari kubu Bitcoin Cash, saat ia membaca kode yang diwarisi proyeknya dari Bitcoin Core. Ia melaporkannya secara tertutup pada 17 September 2018, bukan hanya ke Bitcoin Core tapi juga ke proyek lain yang memakai kode yang sama.

Yang ia laporkan cuma bug crash. Justru pengembang Bitcoin Core yang kemudian menyadari bahwa akar yang sama membawa akibat jauh lebih parah: inflasi. Di titik itu mereka menghadapi pilihan yang tidak nyaman. Mengumumkan penuh berarti memberi tahu semua orang cara mencetak Bitcoin sebelum sebagian besar node sempat memperbarui diri. Diam saja berarti membiarkan lubang menganga.

Jalan yang diambil adalah pengungkapan bertahap: umumkan dan tambal bug crash yang lebih ringan secara terbuka supaya orang punya alasan mendesak untuk segera memperbarui, sambil diam-diam menghubungi miner dan bisnis besar soal yang sebenarnya. Perbaikannya rilis pada 18 September dalam versi 0.16.3, kurang dari sehari setelah laporan masuk. Dampak penuhnya baru diumumkan 20 September, setelah sebagian besar jaringan aman.

Bug ini tidak pernah dieksploitasi. Tapi pelajarannya lebih tajam daripada insiden 2010, dan ada tiga. Pertama, perubahan paling berbahaya sering bukan penambahan fitur, melainkan penghapusan sesuatu yang dikira tidak perlu. Kedua, yang menemukannya justru orang dari proyek saingan yang membaca kode warisan, jadi keterbukaan kode bukan sekadar cita-cita melainkan mekanisme pertahanan yang nyata bekerja. Ketiga, keamanan Bitcoin tidak berhenti pada matematika yang kita bahas di Bab 4. Ia juga bergantung pada manusia yang membaca kode dengan teliti, dan pada penilaian sulit soal kapan sebuah bahaya sebaiknya diumumkan.

Simulasi — Bagaimana integer overflow bekerja
Dua hal yang perlu dibedakan: MAX_MONEY adalah aturan protokol Bitcoin (21 juta BTC), sedangkan MAX_INT64 adalah batas tipe data komputer. Bug terjadi karena kode tidak memeriksa MAX_MONEY sebelum menjumlahkan nilai.
Aturan Protokol Bitcoin
MAX_MONEY
21 juta BTC = 2,100,000,000,000,000 satoshi. Tidak ada output transaksi yang boleh melebihi ini. Ini adalah aturan konsensus.
Batas Tipe Data Komputer
MAX_INT64
9,223,372,036,854,775,807. Batas matematis integer 64-bit. Tidak ada hubungannya dengan aturan Bitcoin, hanya batas teknis penyimpanan angka.
Representasi 64-bit signed integer — bit paling kiri adalah bit tanda (0=positif, 1=negatif):
Nilai: 0 satoshi
Klik "Simulasikan Bug" untuk melihat bagaimana nilai yang melampaui MAX_MONEY lolos validasi karena kode tidak memeriksanya.
Bab 14 · 14.2
Ketika sejarah Bitcoin ditulis ulang — dan mengapa itu normal
Reorganisasi Chain (Reorg)

Reorg, kependekan dari chain reorganization, terjadi ketika node menemukan bahwa ada chain alternatif yang lebih panjang dari chain yang sedang mereka ikuti. Node kemudian beralih ke chain yang lebih panjang, membuang block-block yang tidak lagi menjadi bagian dari chain terpanjang. Block yang dibuang ini disebut orphan block.

Reorg kecil adalah normal

Reorg 1-2 block adalah kejadian rutin yang terjadi hampir setiap hari di Bitcoin. Ini bisa terjadi ketika dua miner menemukan block valid hampir bersamaan: jaringan sementara terbagi karena sebagian node menerima block dari miner A lebih dulu, sementara sebagian lainnya menerima dari miner B lebih dulu. Begitu salah satu miner menemukan block berikutnya, chainnya menjadi lebih panjang dan seluruh jaringan konvergen ke chain tersebut. Miner yang kalah kehilangan reward block tapi jaringan tetap aman.

Reorg besar adalah berbahaya

Reorg yang dalam, 6 block atau lebih, membutuhkan hash rate yang sangat besar dan bisa dimanfaatkan untuk double spend. Penyerang dengan cukup hash rate bisa menambang chain alternatif secara diam-diam, melakukan transaksi besar di chain utama (misalnya menjual bitcoin ke exchange), lalu merilis chain alternatif yang lebih panjang yang tidak mengandung transaksi tersebut. Merchant atau exchange yang sudah menganggap transaksi final bisa menjadi korban.

Sejarah reorg di Bitcoin

Reorg terdalam yang pernah tercatat di Bitcoin mainnet bukan hasil serangan, melainkan buntut dari bug software. Rollback bug overflow 2010 yang kita bahas di 14.1 membutuhkan pembalikan puluhan block, dan chain split Maret 2013 yang akan kita bahas di 14.3 berlangsung sepanjang 24 block. Di luar dua insiden itu, reorg di Bitcoin hampir selalu hanya 1 sampai 2 block. Reorg dalam yang disengaja pernah terjadi pada jaringan lain seperti Ethereum Classic (reorg 100+ block pada 2019) dan Bitcoin Gold, tapi keduanya memiliki hash rate yang jauh lebih kecil dari Bitcoin sehingga biaya serangan jauh lebih rendah.

Standar "6 konfirmasi" yang sering disebut dalam Bitcoin bukan angka sembarangan. Ini adalah estimasi bahwa setelah 6 block, biaya untuk melakukan reorg yang cukup dalam untuk membatalkan transaksi tersebut menjadi sangat tidak ekonomis bagi penyerang manapun. Untuk transaksi kecil sehari-hari, 1-3 konfirmasi sudah cukup aman.

Simulasi — Bagaimana reorg terjadi
Tab pertama: simulasi step-by-step reorg 1 block antara dua miner. Tab kedua: tabel risiko reorg berdasarkan kedalaman dan jumlah konfirmasi.
Reorg terjadi saat node menemukan chain alternatif yang lebih panjang. Node beralih ke chain terpanjang dan membuang block yang kalah. Klik "Langkah Berikut" untuk melihat prosesnya.
Langkah 0 / 4
Klik "Langkah Berikut" untuk memulai simulasi reorg step by step.
Reorg kecil (1-2 block) adalah normal dan rutin terjadi. Reorg besar bisa dimanfaatkan untuk double spend. Jumlah konfirmasi yang kamu tunggu menentukan seberapa aman transaksimu.
Kedalaman reorg vs risiko double spend
Kedalaman reorg
Hash rate dibutuhkan
Risiko
Contoh nyata
1-2 block
Rendah — kebetulan
Normal, rutin terjadi
Setiap hari di Bitcoin
3-5 block
Sedang
Jarang, perlu hash rate besar
Bitcoin: reorg 4 block (2012)
6+ block
Sangat tinggi (51%+)
Berbahaya, double spend mungkin
Ethereum Classic, Bitcoin Gold
100+ block
Hampir mustahil di Bitcoin
Tidak pernah terjadi di Bitcoin
Hanya pada jaringan dengan hash rate sangat kecil
Merchant yang menerima pembayaran besar tanpa menunggu konfirmasi cukup adalah target potensial double spend via reorg. Standar umum: 6 konfirmasi untuk transaksi bernilai tinggi, 1-3 konfirmasi untuk transaksi kecil.
Bab 14 · 14.3
Ketika dua versi software menghasilkan dua realitas berbeda selama 6 jam
March 2013 Chain Split

Pada 11 Maret 2013, terjadi chain split yang tidak disengaja antara node yang menjalankan Bitcoin 0.7 dan Bitcoin 0.8. Ini bukan serangan, bukan eksploitasi bug yang disengaja, tapi sebuah konsekuensi tak terduga dari perbedaan implementasi database antara dua versi software yang keduanya mengklaim mengikuti aturan yang sama.

Akar masalah: BerkeleyDB vs LevelDB

Bitcoin 0.8 mengganti database penyimpanan dari BerkeleyDB ke LevelDB sebagai optimasi performa. Yang tidak disadari: BerkeleyDB memiliki batasan 10.000 kunci yang bisa dikunci secara bersamaan. Ini bukan bagian dari aturan konsensus Bitcoin, hanya detail implementasi. LevelDB tidak punya batasan yang sama. Block #225.430 yang ditambang pada malam 11 Maret mempengaruhi status lebih dari 5.000 transaksi sekaligus, membutuhkan lebih dari 10.000 kunci BerkeleyDB secara bersamaan. Node 0.7 tidak bisa memproses block ini dan menolaknya. Node 0.8 menerimanya tanpa masalah.

Enam jam dengan dua Bitcoin

Selama sekitar 6 jam, ada dua versi Bitcoin yang berjalan secara paralel. Chain 0.8 punya sekitar 60% hash rate sehingga tumbuh lebih cepat. Split berlangsung selama 24 block sebelum diselesaikan. Split ini tidak langsung terdeteksi: baru sekitar satu jam kemudian, pada 23:10 GMT, seorang pengguna bernama thermoman melaporkan anomali di IRC bitcoin-dev. Satu menit kemudian, Mark Karpelès dari Mt. Gox langsung menghentikan pemrosesan block sebagai langkah pencegahan.

Solusi yang tidak biasa

Komunitas harus memilih: upgrade semua ke 0.8, atau kembali ke 0.7? Keputusannya adalah kembali ke 0.7, bukan karena 0.7 lebih benar secara teknis, tapi karena lebih mudah mengkoordinasi segelintir mining pool besar untuk downgrade daripada memaksa seluruh ekosistem untuk upgrade sekaligus. BTCGuild dan Slush Pool downgrade meskipun harus merelakan reward yang sudah mereka hasilkan di chain 0.8. Pada block #225.454, chain 0.7 berhasil melampaui chain 0.8 dan jaringan bersatu kembali.

Double spend yang tercatat

Selama periode split, tercatat satu double spend. Tapi berdasarkan BIP 50, post-mortem resmi yang ditulis Gavin Andresen, ini dilakukan oleh seseorang yang sedang bereksperimen untuk menguji apakah itu mungkin, bukan dengan niat mencuri.

Insiden ini mengajarkan pelajaran penting: dua implementasi yang mengklaim mengikuti aturan yang sama bisa tetap menghasilkan perilaku berbeda karena detail implementasi yang tersembunyi. Ini salah satu alasan mengapa Bitcoin sangat berhati-hati dalam mengubah kode konsensus, dan mengapa ada effort besar untuk memastikan semua implementasi berperilaku identik pada semua edge case.

Visualisasi — March 2013 Chain Split
Tiga tab: diagram split bident, kronologi kejadian dengan waktu GMT yang akurat berdasarkan BIP 50, dan perbandingan sebab teknis serta alasan di balik keputusan kembali ke chain 0.7.
11 Maret 2013: Bitcoin 0.7 dan 0.8 menghasilkan chain berbeda selama 24 block (~6 jam). Chain 0.8 sempat lebih panjang karena punya ~60% hash rate, tapi komunitas memilih kembali ke chain 0.7.
Solusi yang tidak biasa: bukan dengan mengupgrade semua ke 0.8, tapi meminta miner yang sudah upgrade untuk downgrade sementara ke 0.7. BTCGuild dan Slush Pool merugi reward yang sudah mereka hasilkan di chain 0.8 demi memulihkan jaringan.
Semua waktu dalam GMT, 11-12 Maret 2013. Sumber: BIP 50 (post-mortem resmi oleh Gavin Andresen).
~22:00
Pemicu
Block #225.430 ditambang — membutuhkan lebih dari 10.000 kunci BerkeleyDB
Block ini mempengaruhi status lebih dari 5.000 transaksi sekaligus, melampaui batas 10.000 kunci BerkeleyDB. Node 0.7 tidak bisa memprosesnya dan menolak. Node 0.8 menerimanya tanpa masalah.
~22:00
Split
Dua chain terbentuk secara diam-diam
Node 0.8 mining di atas block #225.430. Node 0.7 mining di chain alternatif. Chain 0.8 punya sekitar 60% hash rate dan tumbuh lebih cepat.
23:10
Terdeteksi
"thermoman" melaporkan anomali di IRC bitcoin-dev
Sekitar satu jam setelah split dimulai, baru ada yang melaporkan anomali di channel IRC bitcoin-dev.
23:11
Exchange
Mark Karpelès (Mt. Gox) menghentikan import block Bitcoin
Satu menit setelah laporan pertama, Mark Karpelès langsung menghentikan pemrosesan block di Mt. Gox sebagai langkah pencegahan.
23:18
Diskusi
Pieter Wuille menginformasikan masalah ke mailing list
Pieter Wuille mengirim email ke bitcoin-dev mailing list tapi awalnya menyarankan upgrade sebagai solusi. Downgrade adalah solusi yang benar, tapi itu baru jelas 45 menit kemudian.
~00:00 (12 Mar)
Solusi
BTCGuild dan Slush Pool downgrade ke 0.7
Setelah diskusi intensif, komunitas sepakat kembali ke chain 0.7. BTCGuild dan Slush Pool downgrade meski harus merelakan reward yang sudah mereka hasilkan di chain 0.8.
~04:00 (12 Mar)
Selesai
Chain 0.7 menang di block #225.454 — jaringan bersatu kembali
Setelah 24 block (~6 jam), chain 0.7 melampaui chain 0.8. Semua node 0.8 melakukan reorg. Tercatat satu double spend selama split, tapi dilakukan oleh seseorang yang bereksperimen untuk menguji apakah itu mungkin, bukan dengan niat mencuri.
Perbedaan implementasi database antara dua versi menyebabkan split yang tidak disengaja.
Bitcoin 0.7 — BerkeleyDB
Database: BerkeleyDB (lama)
Batas kunci: maksimum 10.000 kunci bersamaan
Block besar: gagal saat perlu lebih dari 10.000 kunci sekaligus
Hash rate: sekitar 40% saat split
Menolak block #225.430 — chain 0.7 terbentuk
Bitcoin 0.8 — LevelDB
Database: LevelDB (baru, lebih efisien)
Batas kunci: tidak punya batasan yang sama
Block besar: menerima block tanpa masalah
Hash rate: sekitar 60% saat split
Menerima block #225.430 — chain 0.8 terbentuk
Mengapa kembali ke 0.7? Lebih mudah mengkoordinasi segelintir mining pool besar untuk downgrade daripada memaksa seluruh ekosistem untuk upgrade sekaligus. Kecepatan koordinasi lebih penting dari logika teknis dalam situasi darurat.
Pelajaran: dua implementasi yang mengklaim mengikuti aturan yang sama bisa menghasilkan perilaku berbeda karena detail implementasi tersembunyi. Edge case bisa muncul dari tempat yang tidak terduga.
Bab 14 · 14.4
Strategi mining yang menguntungkan di atas kertas — tapi belum pernah terbukti berhasil
Selfish Mining

Selfish mining adalah strategi di mana miner dengan hash rate signifikan menyembunyikan block yang berhasil mereka temukan dan tidak langsung menyiarkannya ke jaringan. Dengan menahan block ini, mereka mendapat keunggulan: mereka bisa mulai mining di atas block tersembunyi sementara jaringan masih mining di block sebelumnya.

Bagaimana selfish mining bekerja

Kalau miner curang berhasil menemukan block berikutnya sebelum jaringan tahu tentang block tersembunyi mereka, mereka bisa merilis dua block sekaligus dan membuat block jujur lainnya menjadi orphan. Miner jujur yang sudah bekerja keras menemukan block kehilangan rewardnya, sementara miner curang mendapat reward dua block sekaligus.

Analisis formal dan ambang batas

Serangan ini pertama kali dianalisis secara formal oleh Ittay Eyal dan Emin Gun Sirer dalam paper mereka pada 2013. Mereka menunjukkan bahwa dengan hash rate sekitar 33%, selfish mining bisa menguntungkan secara ekonomi. Dengan hash rate lebih besar, keuntungan teoritis semakin besar.

Risiko teknis yang nyata

Meski terlihat menguntungkan di atas kertas, selfish mining punya risiko teknis yang serius. Pertama, kerahasiaan block sulit dipertahankan di jaringan P2P: begitu block ditemukan, sinyal propagasi di jaringan bisa bocor sebelum miner curang siap merilis chain tersembunyinya. Kedua, kalau miner jujur menemukan block sebelum miner curang merilis chainnya, seluruh pekerjaan tersembunyi menjadi sia-sia dan miner curang kehilangan semua reward yang sudah diinvestasikan. Ketiga, semakin lama menyembunyikan block, semakin besar risiko chain tersembunyi tidak pernah bisa menyalip chain publik. Keempat, pola orphan yang tidak normal bisa terdeteksi oleh komunitas dan menyebabkan boikot terhadap pool yang mencurigakan.

Mengapa belum pernah terjadi di Bitcoin

Dalam praktiknya, selfish mining belum pernah terbukti terjadi dalam skala signifikan. Ada beberapa alasan: sulit mempertahankan kerahasiaan dalam jaringan peer-to-peer, risiko kehilangan reward jauh lebih nyata dari keuntungan teoritis, landscape mining pool yang terdistribusi membuat sangat sulit satu entitas mencapai 33% hash rate tanpa diketahui, dan incentif ekonomi untuk mining jujur tetap lebih kuat dalam jangka panjang.

Selfish mining adalah pengingat bahwa insentif ekonomi Bitcoin dirancang untuk membuat ketidakjujuran lebih mahal dari kejujuran. Tapi ini bukan jaminan absolut: kalau landscape mining berubah drastis dan satu entitas mendominasi hash rate, dinamika insentif ini bisa berubah.

Simulasi — Bagaimana selfish mining bekerja
Tab pertama: simulasi 5 langkah selfish mining dari block tersembunyi hingga orphan. Tab kedua: syarat teknis, risiko, dan realita di Bitcoin mainnet.
Miner curang menyembunyikan block yang berhasil ditemukan. Mereka mining di atas block tersembunyi sementara miner jujur masih mining di block sebelumnya.
Langkah 0 / 4
Klik "Langkah Berikut" untuk melihat bagaimana strategi selfish mining bekerja step by step.
Selfish mining secara teori menguntungkan, tapi punya risiko teknis serius dan belum pernah terbukti terjadi dalam skala signifikan di Bitcoin.
Syarat agar selfish mining menguntungkan
Faktor
Threshold teoritis
Realita di Bitcoin
Hash rate minimum
~33% dari total
Tidak ada pool yang mencapai ini secara konsisten
Kerahasiaan block
Harus 100% tersembunyi
Sulit dipertahankan di jaringan P2P terdistribusi
Risiko vs keuntungan
Keuntungan kecil, risiko besar
Lebih menguntungkan mining jujur jangka panjang
Deteksi komunitas
Pola bisa terdeteksi
Pool yang mencoba akan diboikot komunitas
Risiko teknis spesifik:
⚠️ Propagasi bocor: sinyal block yang ditemukan bisa terdeteksi oleh node lain di jaringan P2P sebelum miner curang siap merilis chainnya
⚠️ Race condition: kalau miner jujur menemukan block sebelum chain tersembunyi dirilis, seluruh pekerjaan tersembunyi menjadi sia-sia dan reward hilang sepenuhnya
⚠️ Akumulasi risiko: semakin panjang chain tersembunyi, semakin kecil probabilitas bisa menyalip chain publik yang terus tumbuh
⚠️ Deteksi pola: tingkat orphan yang tidak normal di sekitar pool tertentu bisa terdeteksi dan memicu investigasi atau boikot komunitas
Selfish mining paling berbahaya jika digabungkan dengan eclipse attack: miner curang mengisolasi node tertentu dan memaksa mereka mengikuti chain yang salah. Tapi kombinasi ini membutuhkan sumber daya dan koordinasi yang sangat besar.
Bukti empiris: selfish mining belum pernah terbukti terjadi dalam skala signifikan di Bitcoin mainnet. Incentif ekonomi untuk mining jujur tetap lebih kuat dalam jangka panjang selama tidak ada satu entitas yang mendominasi hash rate.
Bab 14 · 14.5
Serangan yang mengisolasi satu node, bukan seluruh jaringan
Eclipse Attack

Eclipse attack adalah serangan di mana penyerang mengontrol semua koneksi peer dari sebuah node target, sehingga node tersebut hanya berkomunikasi dengan node-node yang dikendalikan penyerang. Penting untuk dipahami sejak awal: ini adalah serangan terhadap satu node spesifik, bukan terhadap jaringan Bitcoin secara keseluruhan. Jaringan Bitcoin tetap berjalan normal.

Analogi sederhana

Bayangkan kamu tinggal di kota besar tapi semua sumber informasimu, tetangga, teman, radio, dan TV, diganti oleh agen penyerang yang menyampaikan berita palsu. Kamu masih di kota yang sama, tapi tidak tahu apa yang sebenarnya terjadi. Kota itu sendiri tetap berjalan normal tanpa kamu. Itulah eclipse attack: node yang diserang hidup di realita palsu yang dikontrol penyerang, sementara ribuan node lain di jaringan tetap beroperasi dengan benar.

Bagaimana eclipse attack bekerja

Setiap node Bitcoin mempertahankan sejumlah koneksi ke peer lain. Kalau penyerang bisa mengisi semua slot koneksi ini dengan node yang mereka kendalikan, node target tidak bisa lagi berkomunikasi dengan jaringan nyata. Penyerang melakukan ini dengan cara membanjiri jaringan dengan alamat IP yang mereka kendalikan, menunggu node target me-restart dan memilih peer baru, atau mengeksploitasi kelemahan dalam mekanisme pemilihan peer.

Dampak yang mungkin terjadi

Node yang di-eclipse bisa ditipu untuk menerima transaksi palsu (double spend terhadap merchant), membuang hash rate ke chain palsu (untuk miner), atau mengekspos informasi transaksi ke penyerang sebelum disiarkan ke jaringan nyata. Tapi sekali lagi, semua dampak ini hanya terjadi pada node yang berhasil diisolasi, bukan pada jaringan secara keseluruhan.

Mitigasi di Bitcoin Core

Bitcoin Core sudah mengimplementasikan beberapa mitigasi. Anchor connections mempertahankan 2 koneksi outbound ke node terpercaya bahkan saat restart. Batasan koneksi dari satu subnet IP yang sama mempersulit penyerang mendominasi semua slot. Dukungan Tor dan multiple network interfaces mempersulit identifikasi dan isolasi node target.

Eclipse attack bukan bukti bahwa Bitcoin mudah diserang atau desentralisasinya lemah. Ini adalah serangan yang membutuhkan upaya besar untuk menarget satu node spesifik, dan Bitcoin Core terus meningkatkan ketahanan koneksi peer untuk mempersulit serangan ini. Jaringan secara keseluruhan justru sangat sulit diserang justru karena terdistribusi di ribuan node yang tidak saling bergantung.

Visualisasi — Normal vs Eclipse
Tab pertama: perbandingan node yang terhubung normal vs node yang di-eclipse. Tab kedua: dampak spesifik dan mitigasi yang sudah diimplementasikan Bitcoin Core.
Analogi sederhana
Bayangkan kamu tinggal di kota besar, tapi semua sumber informasimu diganti oleh agen penyerang yang menyampaikan berita palsu. Kamu masih di kota yang sama, tapi tidak tahu apa yang sebenarnya terjadi. Kota itu sendiri tetap berjalan normal tanpa kamu. Itulah eclipse attack: serangan terhadap satu node spesifik, bukan terhadap jaringan Bitcoin secara keseluruhan.
Kiri: node yang terhubung normal ke banyak peer beragam. Kanan: node yang di-eclipse, semua koneksinya dikuasai penyerang.
Node Bitcoin jujur
Node target (normal)
Node penyerang
✓ Jaringan Bitcoin secara keseluruhan tetap berjalan normal. Ribuan node lain tetap terhubung dan memvalidasi transaksi dengan benar. Eclipse attack hanya menyerang satu node spesifik.
⚠ Node yang di-eclipse hidup di "realita palsu" — hanya menerima informasi dari penyerang. Ia tidak tahu ada jaringan Bitcoin nyata yang beroperasi di luar sana.
Eclipse attack tidak membutuhkan hash rate besar. Yang dibutuhkan hanya kemampuan mengontrol semua koneksi jaringan satu node target.
💥
Double spend terhadap merchant yang menggunakan node yang di-eclipse
Penyerang mengirim transaksi palsu yang terlihat sah ke node target. Merchant mengira pembayaran sudah dikonfirmasi, padahal di jaringan nyata transaksi itu tidak ada. Penyerang lalu membelanjakan bitcoin yang sama di tempat lain.
💥
Miner yang di-eclipse membuang hash rate ke chain palsu
Miner yang nodenya di-eclipse akan mining di atas block palsu dari penyerang. Seluruh listrik dan komputasi terbuang sia-sia karena block yang dihasilkan tidak akan diakui jaringan nyata.
💥
Penyerang memantau transaksi sebelum disiarkan
Semua transaksi yang dikirim node target harus melewati node penyerang dulu, mengekspos informasi finansial yang seharusnya privat.
🛡️
Anchor connections: mempertahankan 2 koneksi ke node terpercaya
Bitcoin Core menyimpan 2 koneksi outbound ke node yang sudah dikenal bahkan saat restart, mempersulit penyerang mengganti semua koneksi sekaligus.
🛡️
Batasan koneksi dari satu subnet IP
Membatasi koneksi inbound dari subnet IP yang sama mempersulit penyerang mendominasi semua slot koneksi hanya dari satu blok alamat.
🛡️
Jalankan node via Tor atau alamat IP berbeda
Node yang berjalan via Tor atau multiple network interfaces jauh lebih sulit diisolasi karena penyerang tidak bisa mengidentifikasi semua titik masuk koneksi.
Eclipse attack bukan akhir dari desentralisasi Bitcoin. Ini adalah serangan yang sangat spesifik dan tertarget, hanya berdampak pada satu node. Ribuan node lain di seluruh dunia tetap bekerja normal. Bitcoin Core terus memperbaiki ketahanan koneksi peer untuk mempersulit serangan ini.
Node paling rentan: node rumahan dengan sedikit peer outbound atau yang jarang dirawat. Solusi paling sederhana adalah menjalankan node dengan koneksi ke banyak peer yang beragam secara geografis.
Bab 14 · 14.6
Bukan sistem yang sempurna — tapi sistem yang sudah battle-tested selama 15+ tahun
Apa yang Membuat Bitcoin Tetap Kuat?

Setelah mempelajari bug overflow, chain split, reorg, selfish mining, dan eclipse attack, pertanyaan yang wajar muncul: kalau semua ancaman ini ada, mengapa Bitcoin masih berdiri sampai hari ini?

Insentif ekonomi yang selaras

Menyerang Bitcoin dengan sukses membutuhkan biaya yang jauh melebihi keuntungan yang bisa didapat. Selfish mining lebih mahal dari mining jujur dalam jangka panjang. Eclipse attack butuh sumber daya besar untuk target yang sangat spesifik. 51% attack butuh biaya listrik dan hardware yang astronomis. Miner yang jujur mendapat reward lebih besar dan lebih konsisten dari yang curang karena sistem memang dirancang demikian.

Redundansi jaringan yang ekstrem

Tidak ada single point of failure di Bitcoin. Kalau satu node diserang, ribuan node lain tetap berjalan. Kalau satu implementasi punya bug, implementasi lain bisa jadi rujukan. Kalau satu pool mining dikompromikan, hash rate yang tersisa tetap mengamankan jaringan. Tidak ada server pusat, tidak ada CEO yang bisa ditekan, tidak ada tombol mati.

Komunitas yang waspada dan responsif

Bug 2010 ditemukan, dilaporkan, dan diperbaiki dalam 5 jam. Chain split 2013 dideteksi dalam satu jam dan diselesaikan dengan koordinasi luar biasa antara developer, pool mining, dan exchange. Developer, miner, node operator, dan pengguna semua punya insentif untuk menjaga jaringan tetap sehat karena nilai Bitcoin bergantung pada kepercayaan terhadap jaringan.

Open source dan transparansi total

Kode Bitcoin bisa diperiksa siapapun, kapanpun. Tidak ada celah yang bisa disembunyikan lama karena ribuan mata terus memperhatikan. Setiap perubahan diaudit secara ketat sebelum diimplementasikan. Kelemahan yang ditemukan diperbaiki secara terbuka dan hasilnya menjadi pelajaran bagi seluruh ekosistem.

Bitcoin bukan sistem yang sempurna. Ia adalah sistem yang sudah battle-tested sejak 2009, diserang dari berbagai arah, dan tetap berdiri. Setiap kelemahan yang ditemukan menjadi pelajaran. Setiap serangan yang gagal membuktikan ketahanan arsitekturnya. Dan setiap insiden yang berhasil diselesaikan membuktikan bahwa komunitas yang terdistribusi bisa berkoordinasi tanpa otoritas pusat.

Ringkasan — Insiden, Respons, dan Pelajaran
Klik tiap baris untuk melihat detail insiden, bagaimana komunitas merespons, dan pelajaran yang dipetik. Di bawah tabel: empat pilar ketahanan Bitcoin.
Insiden
Tahun
Status
Nilai Overflow Bug
2010
Diperbaiki
Apa yang terjadi
Penyerang mengeksploitasi bug di kode yang tidak memeriksa MAX_MONEY sebelum menjumlahkan output transaksi. Nilai yang sangat besar menyebabkan integer overflow dan transaksi ilegal dikonfirmasi di block #74.638.
Respons komunitas
Satoshi Nakamoto merilis patch dalam 5 jam. Komunitas melakukan soft fork darurat: node upgrade dan mengabaikan block yang bermasalah. Chain yang bersih menjadi dominan.
Pelajaran
Kode konsensus harus memeriksa MAX_MONEY sebelum menjumlahkan nilai. Satu baris kode yang hilang bisa menciptakan celah kritis. Sejak saat itu validasi nilai menjadi standar.
March 2013 Chain Split
2013
Diselesaikan
Apa yang terjadi
Perbedaan implementasi database antara Bitcoin 0.7 (BerkeleyDB) dan 0.8 (LevelDB) menyebabkan dua chain berjalan paralel selama 24 block (~6 jam). Chain 0.8 sempat lebih panjang karena punya 60% hash rate.
Respons komunitas
BTCGuild dan Slush Pool downgrade ke 0.7 meski harus merelakan reward. Komunitas memilih kembali ke chain 0.7 karena lebih mudah koordinasi. Jaringan bersatu di block #225.454.
Pelajaran
Dua implementasi yang mengklaim mengikuti aturan yang sama bisa menghasilkan perilaku berbeda. Perubahan infrastruktur database harus diuji pada semua edge case. Koordinasi pool mining bisa menyelesaikan krisis dengan cepat.
Reorg Terbesar di Bitcoin
2012
Normal
Apa yang terjadi
Reorg 4 block terjadi di Bitcoin mainnet pada 2012 karena bug software, bukan serangan yang disengaja. Ini adalah reorg terdalam yang pernah terjadi di Bitcoin.
Respons komunitas
Protokol secara otomatis menyelesaikannya dengan mengikuti chain terpanjang. Tidak diperlukan intervensi manual. Ini membuktikan mekanisme konsensus bekerja sesuai rancangan.
Pelajaran
Standar 6 konfirmasi terbukti memberikan keamanan yang cukup. Reorg dalam skala ini tidak bisa dieksploitasi untuk double spend tanpa hash rate yang sangat besar.
Selfish Mining
Teoritis
Belum terbukti
Apa yang terjadi
Ittay Eyal dan Emin Gun Sirer memformalkan analisis selfish mining pada 2013. Mereka menunjukkan bahwa dengan hash rate sekitar 33%, strategi ini secara teoritis menguntungkan.
Respons komunitas
Komunitas mendiskusikan berbagai mitigasi. Insentif ekonomi terbukti lebih kuat: tidak ada pool yang secara terbukti melakukan selfish mining dalam skala signifikan di Bitcoin mainnet.
Pelajaran
Insentif ekonomi adalah pertahanan terkuat Bitcoin. Strategi yang menguntungkan di atas kertas seringkali tidak layak secara praktis karena risiko dan biaya tersembunyi yang lebih besar.
Eclipse Attack
Aktif diteliti
Dimitigasi
Apa yang terjadi
Peneliti keamanan mendemonstrasikan bahwa node Bitcoin bisa diisolasi dari jaringan dengan mengontrol semua koneksi peer-nya. Node yang terisolasi bisa ditipu untuk menerima informasi palsu.
Respons komunitas
Bitcoin Core mengimplementasikan anchor connections, batasan koneksi per subnet, dan dukungan Tor yang lebih baik. Riset terus berlanjut untuk memperkuat ketahanan koneksi peer.
Pelajaran
Diversifikasi peer adalah perlindungan terbaik. Node yang terhubung ke banyak peer dari berbagai lokasi geografis jauh lebih sulit diisolasi. Open source memungkinkan mitigasi dilakukan secara transparan.
Empat pilar ketahanan Bitcoin:
💰
Insentif Ekonomi
Menyerang Bitcoin lebih mahal dari keuntungannya. Sistem dirancang agar kejujuran selalu lebih menguntungkan dari kecurangan dalam jangka panjang.
🌐
Redundansi Jaringan
Tidak ada single point of failure. Ribuan node di seluruh dunia yang tidak saling bergantung membuat jaringan sangat sulit dimatikan.
👥
Komunitas Waspada
Setiap insiden besar direspons cepat. Developer, miner, dan pengguna semua punya insentif untuk menjaga jaringan sehat karena nilai Bitcoin bergantung padanya.
🔓
Open Source
Kode terbuka untuk diperiksa siapapun. Tidak ada celah yang bisa disembunyikan lama. Setiap perubahan diaudit oleh banyak mata sebelum diimplementasikan.
← Daftar Bab
BLK #915,217
Bab 15 · 15.1
Tanpa jam server, tanpa otoritas waktu — tapi seluruh jaringan tetap sepakat
Waktu di Bitcoin — Bukan Jam Dinding

Kalau kamu pernah bertanya-tanya bagaimana Bitcoin "tahu" kapan sebuah transaksi boleh atau tidak boleh diproses, jawabannya ada di cara Bitcoin mendefinisikan waktu. Dan cara ini sangat berbeda dari jam yang kamu pakai sehari-hari.

Masalahnya: siapa yang kamu percaya untuk tahu waktu?

Di dunia nyata, kamu percaya jam di HP kamu, atau server waktu yang disinkronisasi secara global. Tapi Bitcoin adalah sistem tanpa otoritas pusat. Tidak ada server waktu yang bisa dipercaya semua orang. Kalau kamu membiarkan satu pihak menentukan "waktu sekarang", kamu baru saja menciptakan titik kegagalan terpusat yang bisa diserang atau dimanipulasi.

Solusi Bitcoin: jangan bergantung pada jam dinding sama sekali. Gunakan dua cara mengukur waktu yang bisa diverifikasi oleh semua node secara independen.

Cara pertama: Block Height

Block height adalah nomor urut block dalam blockchain. Block pertama adalah block #0, block berikutnya #1, dan seterusnya. Setiap block baru yang ditemukan menambah satu angka. Analoginya seperti halaman buku: kalau kamu ingin merujuk ke "bab 5", kamu tidak perlu tahu kapan buku itu ditulis, cukup tahu "halaman 120". Block height bekerja sama: "setelah block 800.000" adalah titik waktu yang spesifik dan bisa diverifikasi siapapun yang punya salinan blockchain.

Kelebihannya: sangat sederhana dan tidak bisa dimanipulasi. Kekurangannya: tidak berhubungan langsung dengan waktu nyata karena block tidak selalu datang tepat 10 menit (bisa 2 menit, bisa 25 menit).

Cara kedua: Median Time Past (MTP)

Setiap block Bitcoin mengandung timestamp, yaitu angka yang menunjukkan kapan block itu ditambang. Tapi miner bisa sedikit berbohong tentang timestamp ini dalam batas yang diizinkan protokol. Kalau Bitcoin langsung mempercayai timestamp satu block, miner bisa memanipulasi "waktu" untuk keuntungan mereka.

Solusinya: ambil 11 block terakhir, ambil nilai tengah (median) dari timestamp mereka. Inilah Median Time Past (MTP). Analoginya seperti mengukur suhu rata-rata satu minggu terakhir daripada mempercayai termometer hari ini yang mungkin rusak. Satu bacaan yang salah tidak merusak gambaran keseluruhan. Dengan menggunakan median 11 block, satu miner yang berbohong tentang timestampnya tidak bisa menggeser MTP secara signifikan.

Mengapa ini penting?

Dari dua cara mengukur waktu ini, Bitcoin bisa membangun kontrak berbasis waktu yang berlaku otomatis tanpa perlu hakim, notaris, atau pihak ketiga. Kamu bisa berkata ke jaringan Bitcoin: "uang ini tidak boleh disentuh sampai block 900.000" atau "transaksi ini hanya valid setelah 6 bulan dari sekarang" dan seluruh jaringan akan menegakkannya secara otomatis.

Bitcoin mendefinisikan waktu secara konsensus, bukan berdasarkan jam server. Ini bukan keterbatasan, melainkan pilihan desain yang membuat sistem tetap terdesentralisasi. Hasilnya adalah mekanisme waktu yang bisa dipercaya oleh semua pihak tanpa harus mempercayai siapapun secara khusus.

Visualisasi — Dua cara Bitcoin mengukur waktu
Tab pertama: block height sebagai garis waktu — tambah block dan tandai titik referensi. Tab kedua: Median Time Past — geser slider untuk memalsukan satu timestamp dan lihat mengapa MTP sulit dimanipulasi.
Block height adalah cara paling sederhana Bitcoin mengukur waktu. Seperti nomor halaman buku: "setelah halaman 800.000" adalah titik yang spesifik dan tidak bisa dipalsukan. Klik "Tambah Block Baru" untuk melihat chain bertumbuh.
Block terbaru
—
Klik "Tambah Block Baru" untuk memulai.
Keunggulan block height: deterministik dan tidak bisa dipalsukan. Kelemahannya: tidak berhubungan langsung dengan waktu nyata karena block bisa datang dalam 2 menit atau 25 menit.
Setiap block punya timestamp yang dicantumkan miner. Tapi miner bisa sedikit berbohong. Solusi Bitcoin: ambil 11 block terakhir, pakai nilai TENGAH (median). Geser slider untuk memalsukan timestamp satu block dan lihat seberapa besar MTP bergeser.
11 block terakhir — tinggi bar = nilai timestamp. Bar merah = block yang dimanipulasi. Garis hijau = MTP.
Manipulasi timestamp block #6:
+0 menit
Median Time Past (MTP) saat ini
—
—
MTP dipakai untuk timelock berbasis waktu. Karena menggunakan median 11 block, satu miner yang berbohong tentang timestampnya tidak bisa mengubah MTP secara signifikan.
Bab 15 · 15.2
Selama ribuan tahun manusia butuh notaris untuk mengatur waktu dalam kontrak — Bitcoin tidak
nLockTime — Cek yang Belum Bisa Dicairkan

Bayangkan kamu menulis cek tapi kamu tulis tanggal bulan depan di pojok kanan atas. Bank tidak akan memproses cek itu sampai tanggal tersebut tiba. nLockTime bekerja persis seperti itu, tapi bukan bank yang menegakkan aturannya, melainkan seluruh jaringan Bitcoin secara otomatis, tanpa bisa diintervensi siapapun. Bahkan si pengirim sendiri tidak bisa membatalkan atau mempercepatnya setelah transaksi dibuat.

Selama ribuan tahun, manusia butuh pihak ketiga untuk mengatur waktu dalam kontrak: notaris, bank, pengacara, atau hakim. Mereka yang memastikan "cek ini baru bisa dicairkan bulan depan" atau "dana escrow ini dikembalikan kalau tidak ada yang klaim dalam 6 bulan." nLockTime menghilangkan kebutuhan itu. Kepercayaan kepada manusia diganti oleh matematika.

Apa itu nLockTime?

nLockTime adalah field 4-byte yang ada di setiap transaksi Bitcoin sejak hari pertama. Nilainya menentukan kapan transaksi itu boleh dimasukkan ke dalam block. Kalau miner mencoba memasukkan transaksi dengan nLockTime yang belum tercapai, seluruh node di jaringan akan menolak block tersebut secara otomatis.

Dua mode: block atau waktu

Ini adalah keputusan desain awal Satoshi yang masih bertahan sampai sekarang. Cara Bitcoin membedakan apakah kamu bicara tentang "block ke berapa" atau "jam berapa" adalah dengan melihat angkanya saja. Kalau nilai nLockTime di bawah 500.000.000, ia diinterpretasikan sebagai block height. Nilai 800.000 artinya "transaksi ini tidak valid sebelum block #800.000." Kalau nilainya di atas atau sama dengan 500.000.000, ia diinterpretasikan sebagai Unix timestamp yaitu jumlah detik sejak 1 Januari 1970. Angka 500.000.000 dalam Unix time adalah sekitar tahun 1985, jauh sebelum Bitcoin ada, jadi aman dipakai sebagai batas pemisah.

Satu syarat penting yang sering dilupakan

nLockTime hanya efektif kalau setidaknya satu input transaksi punya nSequence yang bukan 0xFFFFFFFF (nilai maksimum). Ini adalah detail teknis yang sering mengejutkan developer baru. Kalau semua input punya nSequence 0xFFFFFFFF, node akan mengabaikan nLockTime sepenuhnya dan transaksi bisa dimasukkan kapanpun. Di simulasi di bawah, kamu bisa mencoba mematikan nSequence dan lihat apa yang terjadi.

Mengapa ini powerful?

Scheduled payment: kamu bisa membuat transaksi yang hanya bisa dikonfirmasi mulai bulan depan. Tidak ada risiko kontraktor tidak mau kerja setelah dibayar, tidak ada risiko kamu tidak mau bayar setelah kerja selesai. Escrow dengan batas waktu: selama ini escrow butuh pihak ketiga yang kamu percaya. Dengan nLockTime, kepercayaan itu diganti oleh matematika. Dana tidak bisa kemana-mana sampai kondisi waktu terpenuhi. Dead man's switch: warisan digital yang tidak bisa diblokir oleh siapapun, tidak oleh bank, tidak oleh pemerintah, tidak bahkan oleh orang yang membuat kontraknya.

nLockTime adalah fitur paling sederhana dari arsenal timelock Bitcoin. Ia sudah ada sejak hari pertama dan sudah terbukti bekerja. Tapi kekuatannya terbatas karena ia hanya bekerja di level transaksi. Untuk kondisi yang lebih kompleks seperti "Alice bisa klaim kapanpun ATAU Bob bisa klaim setelah 6 bulan", kita butuh CLTV yang akan dibahas di 15.4.

Simulasi — nLockTime Builder
Pilih skenario nyata atau atur parameter sendiri. Setiap perubahan langsung menampilkan artinya dalam bahasa manusia, nilai hex dalam transaksi, dan efek nSequence.
Coba skenario nyata:
Mode nLockTime:
Bitcoin membedakan dua mode hanya dari angkanya: di bawah 500 juta = block height, di atas 500 juta = waktu (Unix timestamp).
Artinya dalam bahasa manusia:
—
—
Field nLockTime dalam transaksi (4 byte, little-endian):
—
—
nSequence: nLockTime AKTIF
nSequence input = 0xFFFFFFFE (nLockTime aktif)
nLockTime akan ditegakkan. Transaksi tidak bisa masuk block sebelum waktu yang ditentukan.
Bab 15 · 15.3
Field yang dirancang untuk satu tujuan, gagal, lalu menjadi fondasi Lightning Network
nSequence — Dari Ide yang Gagal ke Relative Timelock

Ada satu field di setiap input transaksi Bitcoin yang punya sejarah paling berliku dari semua field di protokol. Namanya nSequence. Ia dirancang untuk satu tujuan, gagal mencapainya, lalu didaur ulang menjadi sesuatu yang jauh lebih berguna.

Ide awal yang tidak berhasil

Satoshi merancang nSequence sebagai mekanisme untuk memperbarui transaksi yang belum dikonfirmasi. Idenya: kalau dua pihak sedang bernegosiasi, mereka bisa terus mengupdate transaksi dengan menaikkan nilai nSequence. Miner seharusnya hanya memasukkan versi dengan nSequence tertinggi. Masalahnya: tidak ada insentif bagi miner untuk mengikuti aturan ini. Miner bisa saja langsung memasukkan versi pertama transaksi kalau fee-nya cukup menarik. Tanpa mekanisme enforcement, ide ini tidak bisa bekerja. nSequence lalu menjadi field yang hampir tidak berguna selama bertahun-tahun.

Beda dengan nLockTime

Sebelum membahas lebih jauh, penting untuk memahami perbedaan mendasar antara nLockTime dan nSequence. Bayangkan kamu punya dua jenis "cek tertanggal." Cek pertama tertulis: "berlaku mulai 1 Januari 2026", ini nLockTime, waktu absolut yang tidak bergantung pada kapan ceknya dipegang. Cek kedua tertulis: "berlaku 30 hari setelah diserahkan ke bank", ini nSequence, waktu relatif yang baru mulai berjalan setelah transaksi dikonfirmasi. Perbedaan ini terdengar kecil, tapi sangat krusial untuk membangun kontrak yang lebih fleksibel.

BIP 68: nSequence mendapat makna baru

Pada 2016, BIP 68 — diaktifkan bersamaan dengan BIP 112 dan BIP 113 dalam soft fork CSV — memberikan nSequence makna baru yaitu relative timelock. Alih-alih membuat field baru yang akan membutuhkan hard fork, komunitas Bitcoin mendaur ulang field lama yang hampir tidak terpakai.

Tiga "tombol" dalam nSequence

nSequence adalah angka 32-bit, tapi cara membacanya seperti perangkat dengan tiga tombol. Tombol pertama adalah on/off: satu bit yang menentukan apakah nSequence punya makna timelock sama sekali. Kalau tombol ini off, sisanya diabaikan. Tombol kedua adalah pilihan satuan: apakah jeda waktu diukur dalam block (sekitar 10 menit per block) atau dalam satuan waktu (512 detik per unit). Tombol ketiga adalah nilainya: angka 16-bit yang menentukan berapa lama jedanya, maksimum 65.535 unit.

Analoginya seperti mengatur alarm HP: pilih on/off, pilih AM/PM, isi jamnya. Tidak perlu memahami binary untuk menggunakan konsepnya.

Mengapa relative timelock powerful?

nLockTime tidak bisa bergantung pada kapan sebuah UTXO dikonfirmasi, ia hanya tahu waktu absolut. nSequence bisa. Ini sangat penting untuk Lightning Network: ketika channel ditutup secara paksa, ada periode tunggu berbasis nSequence yang mulai berjalan dari saat commitment transaction dikonfirmasi, bukan dari waktu absolut yang tidak bisa diprediksi. Periode ini memberikan waktu bagi pihak lain untuk mendeteksi kecurangan dan mengajukan penalty transaction.

nSequence adalah contoh indah dari mendaur ulang apa yang sudah ada. Daripada menambahkan field baru ke format transaksi (yang akan butuh hard fork), BIP 68 mendaur ulang field lama yang hampir tidak terpakai dan memberikannya fungsi baru yang sangat berguna. Ini adalah cara Bitcoin berevolusi: dengan hati-hati, backward-compatible, dan tanpa membuang warisan yang sudah ada.

Simulasi — nSequence: Atur dan Pahami
Atur tiga "tombol" nSequence dan lihat artinya secara langsung. Pilih skenario umum atau eksplorasi sendiri. Bit visualizer di bawah menunjukkan representasi teknisnya.
Coba skenario umum:
Tombol 1 — Aktifkan relative timelock?
Kalau dimatikan, nSequence tidak punya makna timelock. Nilai 0xFFFFFFFF juga menonaktifkan nLockTime di level transaksi.
Timelock AKTIF
(bit 31 = 0)
Tombol 2 — Satuan waktu
Pilih apakah jeda waktu diukur dalam block (~10 menit per block) atau dalam satuan 512 detik (~8.5 menit).
Tombol 3 — Berapa lama jedanya?
Maksimum 65.535 unit. Untuk kebanyakan use case, nilai 144 block (1 hari) hingga 4.032 block (28 hari) sudah mencukupi.
1144 (~1 hari)1.008 (~1 minggu)4.032 (~28 hari)
144 block
Artinya dalam bahasa manusia:
—
—
Nilai nSequence (hex) dan representasi bit:
—
Bab 15 · 15.4
Waktu bukan lagi pembatas eksternal, melainkan menjadi bagian dari logika kontrak itu sendiri
CLTV — Ketika Script Sendiri yang Menjaga Waktu

Sampai sekarang kita sudah melihat dua mekanisme timelock: nLockTime yang bekerja di level transaksi, dan nSequence yang bekerja di level input. Keduanya adalah pembatas di luar script. Tapi bagaimana kalau kita ingin waktu menjadi bagian dari kondisi script itu sendiri? Bagaimana kalau kita ingin berkata: "Alice bisa mengambil dana ini kapanpun, ATAU Bob bisa mengambilnya setelah 6 bulan"? Untuk itu kita butuh OP_CHECKLOCKTIMEVERIFY.

Analogi: petugas keamanan vs brankas

nLockTime seperti petugas keamanan di pintu masuk gedung: ia memeriksa apakah kamu boleh masuk berdasarkan jam. Tapi begitu kamu masuk, siapapun bisa mengambil barang di dalam. CLTV seperti brankas di dalam gedung yang punya kunci kombinasi waktu tersendiri. Tidak peduli kapan kamu masuk gedungnya, brankas itu tidak akan terbuka sebelum waktunya. Dan yang lebih powerful: brankas itu bisa punya aturan berbeda untuk orang berbeda.

Bagaimana CLTV bekerja

OP_CHECKLOCKTIMEVERIFY adalah opcode yang ditambahkan ke Script Bitcoin melalui BIP 65 pada 2015. Ketika dieksekusi, ia membandingkan nilai yang ada di stack dengan nilai nLockTime dari transaksi yang sedang diverifikasi. Kalau nilai stack lebih besar dari nLockTime transaksi, script gagal. Artinya: siapapun yang ingin membelanjakan UTXO dengan CLTV harus membuat transaksi yang berkomitmen "saya tidak akan membelanjakan ini sebelum waktu X."

Mengapa ini powerful untuk kehidupan nyata?

Bayangkan skenario ini: kamu mengirim dana untuk anakmu yang masih kuliah, tapi tidak ingin ia bisa mengaksesnya sampai lulus 4 tahun lagi. Dengan CLTV kamu bisa membuat script: "anakku bisa mengambil ini setelah block X (sekitar 4 tahun), ATAU aku bisa mengambilnya kembali kapanpun dengan kunci emergency." Tidak ada bank, tidak ada pengacara, tidak ada wali amanat. Matematika yang menegakkannya.

Atau bayangkan pembayaran milestone untuk kontraktor: "kontraktor bisa mengklaim pembayaran setelah tanggal pengiriman yang disepakati, tapi kalau kontraktor tidak hadir dalam 6 bulan, klien bisa refund." Escrow otomatis tanpa escrow agent.

HTLC: CLTV yang menggerakkan Lightning Network

Hash Time Lock Contract (HTLC) adalah kombinasi CLTV dengan hash preimage. Penerima bisa klaim dana dengan mengungkap sebuah rahasia yang sudah di-hash sebelumnya. Kalau rahasia tidak diungkap sebelum timeout, pengirim bisa refund. Mekanisme sederhana ini, tanpa pihak ketiga, adalah fondasi dari setiap pembayaran yang melintas di Lightning Network.

CLTV adalah lompatan besar dari "kapan transaksi bisa dibuat" ke "kapan UTXO bisa dibelanjakan." Perbedaan ini membuka ruang untuk kontrak yang jauh lebih ekspresif. Dengan CLTV, waktu bukan lagi pembatas eksternal, melainkan menjadi bagian dari logika kontrak itu sendiri.

Simulasi — CLTV Script Builder
Pilih skenario dan lihat script yang terbentuk beserta penjelasan tiap baris. Timeline di bawah menunjukkan siapa bisa klaim kapan.
Siapa yang bisa klaim kapan:
Script Bitcoin (locking script / scriptPubKey):
Bab 15 · 15.5
Tanpa CSV, Lightning Network dalam bentuknya saat ini tidak mungkin ada
CSV — Relative Timelock yang Menggerakkan Lightning

Kalau CLTV adalah "tidak sebelum tanggal X", maka CSV adalah "tidak sebelum X hari setelah ini dikonfirmasi." Perbedaan yang terdengar kecil ini ternyata sangat krusial untuk membangun sistem pembayaran yang aman tanpa kepercayaan.

Analogi dua jenis kontrak

Bayangkan dua jenis kontrak sewa apartemen. Kontrak pertama: "kamu boleh pindah keluar mulai 1 Januari 2026." Ini seperti CLTV, yaitu tanggal absolut yang tidak bergantung pada kapan kontrak ditandatangani. Kontrak kedua: "kamu boleh pindah keluar 30 hari setelah memberikan notice." Ini seperti CSV, yaitu periode relatif yang baru mulai berjalan setelah aksi tertentu terjadi. Perbedaan ini terdengar kecil, tapi sangat penting untuk kontrak yang tidak bisa memprediksi kapan aksinya akan terjadi.

OP_CHECKSEQUENCEVERIFY

BIP 112 menambahkan opcode CSV ke Script Bitcoin, diaktifkan bersamaan dengan BIP 68 pada 2016. CSV bekerja mirip CLTV tapi menggunakan nSequence: ia memverifikasi bahwa nSequence dari input yang membelanjakan UTXO ini sudah mencapai nilai minimum yang ditentukan. Dengan kata lain, CSV memaksa pihak yang ingin mengklaim UTXO untuk menunggu minimal X block atau X waktu sejak UTXO itu dikonfirmasi.

Mengapa CSV adalah jantung Lightning Network

Lightning Network memungkinkan dua pihak untuk melakukan banyak transaksi off-chain dengan hanya dua transaksi on-chain: pembukaan dan penutupan channel. Keamanan sistem ini bergantung pada kemampuan untuk menghukum pihak yang mencoba curang dengan commitment transaction lama.

Begini cara kerjanya: ketika Alice dan Bob membuka payment channel, mereka membuat commitment transaction yang merepresentasikan state terbaru. Setiap kali state diperbarui, commitment lama harus direvoke dengan memberikan revocation key. Kalau Bob mencoba menutup channel dengan commitment lama yang lebih menguntungkan baginya, Alice punya waktu untuk mendeteksi kecurangan dan mengajukan penalty transaction yang mengambil seluruh dana channel.

Waktu yang Alice punya untuk mendeteksi kecurangan inilah yang diatur oleh CSV. Biasanya 144 block (sekitar 1 hari). Selama periode ini, dana Bob terkunci di output yang bisa diambil oleh Alice kalau Bob terbukti curang. Tanpa CSV, Bob bisa langsung klaim sebelum Alice sempat bereaksi.

CSV di luar Lightning

Di luar Lightning, CSV berguna untuk vault dengan periode cooldown sebelum dana bisa dipindahkan, escrow yang otomatis refund setelah periode tunggu relatif, dan sistem multisig dengan backup key yang baru aktif setelah periode tidak aktif tertentu.

CSV memberikan mekanisme keadilan yang memungkinkan dua pihak yang tidak saling percaya untuk bertransaksi berulang kali tanpa perlu mempercayai satu sama lain. Cukup mempercayai matematika dan protokol Bitcoin. Tanpa CSV, Lightning Network dalam bentuknya saat ini tidak mungkin ada.

Visualisasi — CSV dalam Lightning: Jujur vs Curang
Tab pertama: force close yang jujur — CSV sebagai periode verifikasi. Tab kedua: Bob mencoba curang dengan commitment lama — CSV memberi Alice waktu untuk mendeteksi dan menghukum.
Ketika channel ditutup secara paksa secara jujur, CSV memberikan periode tunggu sebelum dana bisa diambil. Ini bukan hukuman — ini waktu yang diberikan sistem untuk memastikan semua pihak aman.
CSV Window (144 block = ~1 hari)
Mulai setelah commitment transaction dikonfirmasi.
Langkah 0 / 4
Klik "Langkah Berikut" untuk melihat proses force close yang jujur.
Bob mencoba menutup channel dengan commitment transaction LAMA yang lebih menguntungkan baginya. CSV memberikan Alice waktu untuk mendeteksi dan mengajukan penalty transaction.
CSV Window — Waktu Alice untuk Bertindak
Alice harus bertindak sebelum window habis.
Langkah 0 / 5
Klik "Langkah Berikut" untuk melihat apa yang terjadi ketika Bob mencoba curang.
Script to_local output dalam commitment transaction Lightning:
OP_IF
Pilihan jalur pertama (jalur revocation)
<revocation_pubkey>
Alice bisa klaim SEKARANG kalau punya revocation key — bukti Bob curang
OP_ELSE
Jalur normal untuk Bob
<144> OP_CSV
Bob harus tunggu 144 block — inilah yang memberi Alice waktu
OP_DROP
Buang nilai dari stack
<bob_pubkey> OP_CHECKSIG
Bob bisa klaim dengan tanda tangannya — setelah 144 block
OP_ENDIF
Tutup percabangan
Bab 15 · 15.6
Timelock bukan fitur eksotis — ia adalah fondasi dari sistem keuangan yang benar-benar tanpa kepercayaan
Timelock dalam Praktik — dari Warisan hingga Vaulting

Setelah memahami nLockTime, nSequence, CLTV, dan CSV, saatnya melihat bagaimana semua mekanisme ini bisa dikombinasikan untuk membangun use case nyata yang powerful. Timelock bukan fitur eksotis untuk developer kriptografi, melainkan fondasi dari banyak hal yang membuat Bitcoin lebih dari sekadar sistem pembayaran sederhana.

Dead man's switch: warisan digital yang tidak bisa diblokir

Bayangkan kamu ingin memastikan bahwa kalau kamu tidak aktif selama 1 tahun, bitcoinmu bisa diakses oleh orang yang kamu percaya. Di sistem perbankan tradisional, ini butuh surat wasiat, notaris, proses hukum, dan potensi konflik keluarga. Di Bitcoin, ini bisa diimplementasikan dengan script: "key utama bisa memindahkan dana kapanpun, ATAU key cadangan bisa mengklaim setelah 52.560 block sejak UTXO terakhir disentuh." Pemilik cukup secara berkala memindahkan dana untuk mereset clock. Kalau tidak aktif selama 1 tahun, key cadangan yang dipegang ahli waris bisa mengklaim dana secara otomatis.

Vault: lapisan keamanan tambahan

Vault adalah pola di mana dana tidak bisa langsung dipindahkan begitu saja. Ada periode cooldown yang memberikan waktu untuk membatalkan kalau private key dikompromikan. Pola sederhananya: untuk membelanjakan dana dari vault, kamu harus dulu membuat "unvault transaction" yang terkunci CSV selama 144 block. Selama 144 block itu, kamu masih bisa membatalkan dengan emergency key dan mengirim dana kembali ke cold storage. Kalau hacker mencuri private key, kamu punya waktu sekitar 1 hari untuk menyadari dan membatalkan.

Escrow dan pembayaran milestone

Dengan kombinasi nLockTime, multisig, dan CLTV, kamu bisa membangun sistem escrow yang benar-benar trustless. Tidak perlu mempercayai arbiter, platform, atau siapapun. Pembayaran milestone memungkinkan kontraktor mendapat pembayaran otomatis setelah tanggal yang disepakati tanpa perlu menunggu "persetujuan" klien yang bisa saja diingkari.

Batasan yang perlu dipahami

Script Bitcoin tidak bisa melihat kondisi di luar chain. Ia tidak tahu apakah barang sudah dikirim atau pekerjaan sudah selesai. Timelock hanya bisa mengatur waktu, bukan kondisi dunia nyata. Untuk menghubungkan kondisi off-chain ke on-chain, dibutuhkan oracle atau kepercayaan minimal pada pihak ketiga. Selain itu, script yang kompleks cenderung lebih besar dan membutuhkan fee lebih tinggi, meski Taproot sudah membantu menyembunyikan kompleksitas ini.

Timelock adalah bukti bahwa Bitcoin bukan sekadar sistem "kirim dan terima." Ia adalah bahasa pemrograman untuk mengekspresikan kondisi kepemilikan yang kompleks, tanpa membutuhkan pengacara, bank, atau pihak ketiga yang harus dipercaya. Setiap use case yang dibangun di atas timelock adalah satu langkah lebih jauh menuju sistem keuangan yang benar-benar tanpa kepercayaan.

Use Case Explorer — Timelock dalam Praktik
Klik setiap kartu untuk melihat detail use case, komponen timelock yang digunakan, siapa bisa melakukan apa kapan, dan keterbatasannya.
🔐
Dead Man's Switch
Warisan digital yang otomatis berpindah kalau kamu tidak aktif selama setahun
🏦
Vault dengan Cooldown
Dana tidak bisa langsung dicuri — ada jeda waktu yang bisa dipakai untuk membatalkan
🤝
Escrow Trustless
Pembayaran yang otomatis selesai atau refund — tanpa perlu mempercayai siapapun
📅
Pembayaran Milestone
Bayar bertahap sesuai pencapaian — dijamin oleh protokol, bukan kepercayaan
← Daftar Bab
BLK #915,217
Bab 16 · 16.1
Sebelum bisa dipercaya, node harus membaca semua sejarah Bitcoin dari awal
Initial Block Download — Bagaimana Node Baru Mengenal Bitcoin

Bayangkan kamu baru pindah ke kota baru dan harus membaca semua koran dari 15 tahun terakhir sebelum bisa mengikuti berita hari ini. Itulah yang dilakukan node Bitcoin baru: ia harus memvalidasi setiap block sejak genesis block sebelum bisa dianggap synced dan dipercaya.

Proses ini disebut Initial Block Download (IBD). Untuk node baru saat ini, ini berarti memvalidasi ratusan ribu block yang berisi ratusan juta transaksi. Tergantung hardware, proses ini bisa memakan waktu beberapa jam hingga beberapa hari.

Headers-first: strategi yang cerdas

Software Bitcoin client (seperti Bitcoin Core atau Bitcoin Knots) tidak langsung mendownload semua block dari awal. Ia pertama-tama mendownload semua header block, yaitu 80 byte per block, dari peer. Untuk seluruh blockchain, ini hanya sekitar 70MB. Dari header, node bisa memverifikasi chain of proof-of-work tanpa perlu data transaksi sama sekali.

Setelah tahu mana chain terpanjang yang valid, barulah node mendownload block-block secara paralel dari banyak peer sekaligus. Ini jauh lebih efisien dari pendekatan lama yang hanya mendownload satu block dari satu peer secara sequential.

Apa yang diverifikasi selama IBD?

Untuk setiap block, node memverifikasi: proof-of-work valid, timestamp dalam range yang diizinkan, ukuran block tidak melebihi batas, semua transaksi valid secara kriptografi, tidak ada double spend, dan total coinbase output tidak melebihi reward yang diizinkan. Ini bukan proses yang ringan dan itulah mengapa IBD membutuhkan waktu dan CPU yang signifikan.

assumevalid: shortcut yang aman

Banyak implementasi Bitcoin client menyertakan hash dari block tertentu yang sudah diverifikasi oleh komunitas luas sebagai "titik aman yang diasumsikan valid." Untuk block sebelum titik ini, node tetap mendownload dan mengeksekusi semua transaksi untuk membangun UTXO set, tapi tidak lagi memverifikasi signature kriptografi yang merupakan bagian paling CPU-intensive. Ini mempersingkat IBD secara signifikan tanpa mengorbankan keamanan UTXO set.

Penting: assumevalid bukan kepercayaan buta. Node masih memverifikasi seluruh struktur block dan UTXO set. Yang di-skip hanya verifikasi signature untuk block lama yang sudah terbukti valid oleh jutaan node lain.

Selama IBD berlangsung, node tidak boleh digunakan untuk memverifikasi pembayaran. Ia belum punya gambaran penuh tentang blockchain dan bisa ditipu untuk menerima transaksi yang sudah double-spend di block yang belum ia validasi. Cek field "initialblockdownload" via RPC untuk memastikan node sudah siap.

RPC Terminal — Monitoring IBD
Command-command di bawah adalah RPC Bitcoin client yang nyata untuk memonitor proses IBD. Pilih command dan klik "Jalankan" untuk melihat output JSON dengan penjelasan tiap field.
Pilih command untuk dijalankan:
bitcoin-cli getblockchaininfo
Status sync node secara lengkap
bitcoin-cli -getinfo
Ringkasan status node (cepat)
bitcoin-cli getpeerinfo | grep synced_blocks
Monitor peer yang dipakai untuk IBD
bitcoin-cli getnetworkinfo
Info koneksi jaringan node
bitcoin-cli — Terminal
satoshi@node:~$ _
Bab 16 · 16.2
Node tidak mempercayai siapapun — ia memverifikasi segalanya sendiri
Verifikasi Block — Apa yang Dicek Node Setiap Kali Block Baru Datang

Setiap kali block baru tiba dari jaringan, node tidak langsung menerimanya begitu saja. Ia menjalankan serangkaian pemeriksaan yang panjang dan ketat sebelum memutuskan apakah block itu valid atau tidak. Proses inilah yang membuat Bitcoin trustless: kamu tidak perlu mempercayai siapapun karena node kamu sendiri yang memverifikasi segalanya.

Dua lapisan verifikasi

Verifikasi block terjadi dalam dua lapisan. Pertama adalah verifikasi header: node memeriksa proof-of-work, timestamp, dan struktur dasar block tanpa perlu melihat transaksi di dalamnya. Ini cepat dan ringan. Kedua adalah verifikasi penuh: node memeriksa setiap transaksi satu per satu, memastikan tidak ada double spend, semua signature valid, dan semua aturan konsensus terpenuhi.

Apa saja yang diperiksa?

Proof-of-work: hash dari header block harus di bawah target difficulty saat ini. Ini tidak bisa dipalsukan tanpa mengeluarkan energi nyata. Timestamp: tidak lebih dari 2 jam di masa depan dari waktu node, dan harus lebih besar dari Median Time Past (MTP). Ukuran block: total weight tidak melebihi 4 juta weight units. Coinbase transaction: reward yang diklaim miner tidak melebihi block subsidy ditambah total fee transaksi. Setiap transaksi: semua input merujuk ke UTXO yang ada dan belum dibelanjakan, semua signature valid secara kriptografi, tidak ada transaksi yang membelanjakan lebih dari yang diterima.

Script validation: lapisan paling kompleks

Untuk setiap input transaksi, node harus menjalankan script Bitcoin dan memverifikasi bahwa kondisi locking script terpenuhi oleh unlocking script yang diberikan. Ini melibatkan eksekusi stack-based virtual machine untuk setiap input di setiap transaksi di setiap block. Inilah bagian yang paling CPU-intensive dari seluruh proses verifikasi.

Verifikasi paralel

Software Bitcoin client modern memverifikasi signature secara paralel menggunakan semua core CPU yang tersedia. Ini adalah salah satu alasan mengapa hardware yang lebih baik mempercepat IBD secara signifikan. Semakin banyak core, semakin cepat proses validasi signature yang jumlahnya bisa puluhan ribu per block.

Setiap node yang menjalankan verifikasi ini adalah satu suara independen yang menegakkan aturan konsensus Bitcoin. Tidak ada satu entitas pun yang bisa memaksa node-node ini untuk menerima block yang melanggar aturan, sekalipun block itu punya proof-of-work yang valid.

Block Inspector — Checklist Verifikasi & RPC
Tab pertama: ikuti 8 pemeriksaan yang dilakukan node saat menerima block baru. Tab kedua: command RPC untuk menginspeksi block langsung dari node — klik command untuk langsung eksekusi.
Setiap kali block baru tiba, node menjalankan 8 pemeriksaan secara berurutan. Klik "Verifikasi Berikutnya" untuk melihat tiap pemeriksaan persis seperti urutan yang dilakukan node.
0 / 8 pemeriksaan
Klik "Verifikasi Berikutnya" — node baru saja menerima block #870.142 dari peer.
Klik command untuk langsung menjalankan dan melihat output beserta penjelasan tiap field.
Klik command untuk eksekusi:
bitcoin-cli — Block Inspector
Bab 16 · 16.3
Kalau kamu hanya boleh menyimpan satu folder dari seluruh Bitcoin — simpan chainstate
Chainstate Database — Jantung State Bitcoin

Kalau kamu menghapus semua block dari hard drive node kamu tapi menyimpan satu folder kecil bernama chainstate, maka node kamu masih bisa memverifikasi apakah transaksi baru valid atau tidak. Folder itulah yang menyimpan seluruh "keadaan terkini" Bitcoin, yaitu semua UTXO yang ada saat ini, siapa yang memilikinya, dan berapa nilainya.

Apa itu chainstate?

Chainstate adalah database yang menyimpan UTXO set: kumpulan semua output transaksi yang belum pernah dibelanjakan. Setiap kali block baru divalidasi, node memperbarui chainstate, yaitu output baru ditambahkan, output yang dibelanjakan dihapus. Ini adalah snapshot dari kepemilikan Bitcoin saat ini.

LevelDB: Lemari Arsip yang Sangat Terorganisir

Di disk, chainstate disimpan menggunakan LevelDB, yaitu database key-value yang dibuat oleh Google dan sangat efisien untuk akses cepat. Bayangkan kamu punya 184 juta lembar dokumen, di mana setiap lembar adalah satu UTXO. Kalau dokumen-dokumen itu ditumpuk sembarangan, mencari satu dokumen bisa butuh waktu lama. LevelDB mengorganisir dokumen-dokumen itu secara terurut berdasarkan kuncinya, sehingga pencarian bisa dilakukan dalam hitungan milidetik meski ada ratusan juta entri. Itulah mengapa node bisa memverifikasi transaksi baru dengan sangat cepat tanpa menelusuri seluruh blockchain.

Kuncinya adalah outpoint (txid + index output), nilainya adalah informasi tentang UTXO tersebut: nilai dalam satoshi, script locking, apakah coinbase, dan di block mana ia dikonfirmasi.

Mengapa ukuran UTXO set penting?

Saat ini UTXO set berisi sekitar 184 juta entri dan berukuran sekitar 11 GB di disk setelah kompresi LevelDB. Semakin besar UTXO set, semakin besar RAM yang dibutuhkan node untuk operasi yang efisien. Ini adalah salah satu alasan mengapa komunitas Bitcoin sangat memperhatikan "UTXO bloat" yaitu praktik membuat banyak output kecil yang tidak efisien.

dbcache: Ukuran Meja Kerja di RAM

Salah satu parameter konfigurasi paling penting di bitcoin.conf adalah dbcache, yaitu ukuran cache untuk chainstate database dalam MB. Bayangkan LevelDB sebagai lemari arsip fisik di gudang (hard disk). Setiap kali node butuh mengecek UTXO, ia harus berjalan ke gudang, buka laci, ambil dokumen, baca, lalu kembalikan. dbcache adalah meja kerja di depan gudang, semakin besar mejanya, semakin banyak dokumen yang bisa langsung diakses tanpa bolak-balik ke disk. Default-nya hanya 450 MB, tapi dengan RAM yang cukup, menaikkannya ke 4-8 GB bisa mempercepat IBD secara dramatis.

Undo data: cara node bisa mundur

Selain chainstate, node juga menyimpan undo data untuk setiap block yaitu data yang diperlukan untuk membalik efek block tersebut kalau terjadi reorg. Undo data berisi semua UTXO yang dibelanjakan dalam block itu, sehingga kalau block tersebut harus di-disconnect, node bisa mengembalikan UTXO-UTXO tersebut ke chainstate.

Total semua UTXO di chainstate harus sama persis dengan total supply Bitcoin yang beredar. Ini bisa diverifikasi siapapun kapanpun dengan menjalankan gettxoutsetinfo. Tidak ada bank sentral, tidak ada audit eksternal yang dibutuhkan, matematika yang membuktikannya.

Chainstate Explorer — UTXO Set & LevelDB
Tab pertama: statistik UTXO set, visualisasi LevelDB, dan simulator dbcache. Tab kedua: command RPC untuk mengakses chainstate — klik command untuk langsung eksekusi.
Total UTXO
184,2 juta
Entri di database chainstate saat ini
Total Supply Terverifikasi
19,72 juta BTC
Jumlah semua UTXO = total BTC yang ada
Ukuran di Disk
~11 GB
Setelah kompresi LevelDB
Transaksi Unik
~152 juta
Transaksi dengan output belum dibelanjakan
Chainstate vs Full Blockchain:
Chainstate (~11 GB) jauh lebih kecil dari full blockchain (~650 GB). Node bisa memverifikasi transaksi baru hanya dengan chainstate, tanpa perlu semua block lama.
Struktur key-value LevelDB untuk UTXO:
KEY (outpoint)
txid + index output — contoh: a1b2c3...0001
VALUE (utxo)
nilai (satoshi) + locking script + block height + apakah coinbase
Analogi lemari arsip: LevelDB seperti lemari arsip raksasa dengan 184 juta laci, masing-masing diberi label unik (outpoint). Karena laci-laci ini diurutkan berdasarkan labelnya, menemukan satu laci dari 184 juta hanya butuh beberapa milidetik, tanpa harus memeriksa satu per satu.
dbcache — Ukuran "meja kerja" di RAM
Semakin besar dbcache, semakin banyak UTXO yang bisa diakses langsung dari RAM tanpa bolak-balik ke disk. Geser untuk lihat dampaknya.
450 MB 8 GB
450 MB
Default (450 MB): Meja kerja sangat kecil. Node sering bolak-balik ke disk saat IBD, proses sync lebih lambat. Cocok hanya kalau RAM terbatas.
Klik command untuk langsung eksekusi dan lihat output beserta penjelasan tiap field.
Klik command untuk eksekusi:
bitcoin-cli — Chainstate
Bab 16 · 16.4
Node yang hemat storage tapi tidak berkompromi dengan keamanan verifikasi
Pruning — Buang Block Lama, Tetap Fully Validating

Ada miskonsepsi umum tentang menjalankan Bitcoin node: bahwa kamu butuh ratusan gigabyte storage untuk melakukannya. Ini tidak sepenuhnya benar. Bitcoin punya fitur bernama pruning yang memungkinkan node membuang block lama dari disk setelah memvalidasinya, sambil tetap bisa memverifikasi transaksi baru sepenuhnya.

Apa itu pruned node?

Node yang berjalan dalam mode pruning tetap mendownload dan memvalidasi setiap block sejak genesis block selama IBD, tidak ada jalan pintas. Tapi setelah block divalidasi dan UTXO set diperbarui, block tersebut bisa dihapus dari disk. Yang tersisa hanyalah chainstate (UTXO set) dan beberapa block terbaru sebagai buffer. Hasilnya: node yang butuh minimal sekitar 550 MB storage alih-alih 700+ GB untuk full archival node.

Yang hilang saat pruning

Pruned node tidak bisa melayani block lama kepada peer lain yang sedang IBD. Ini berarti pruned node tidak berkontribusi penuh sebagai relay untuk jaringan. Selain itu, ada beberapa command RPC yang tidak bisa dijalankan di pruned node karena data yang dibutuhkan sudah tidak ada di disk. Ini yang paling sering membingungkan pengguna baru.

Tapi yang terpenting tetap ada

Pruned node adalah node yang fully validating, bukan light client dan bukan SPV node. Kemampuan memverifikasi transaksi baru, memvalidasi block baru, menolak transaksi dan block yang tidak valid, dan menjaga UTXO set yang akurat semuanya tetap ada. Keamanan verifikasi tidak berkurang sama sekali.

Konfigurasi pruning

Di bitcoin.conf, pruning dikonfigurasi dengan parameter prune dalam satuan MB, dengan minimum 550 MB. Nilai 0 berarti pruning dimatikan. Ada dua mode: otomatis di mana node mengelola sendiri berdasarkan target size, dan manual di mana pruning dilakukan via RPC ke block height tertentu.

Pruned node sangat cocok untuk pengguna yang ingin memverifikasi transaksi sendiri tanpa bergantung pada pihak ketiga, tapi punya keterbatasan storage. Kalau storage cukup, menjalankan full archival node lebih baik untuk kesehatan jaringan karena bisa membantu node baru yang sedang IBD.

Pruning Visualizer — Timeline & RPC
Tab pertama: visualisasi blockchain timeline dengan slider prune target. Tab kedua: command RPC untuk pruning — termasuk command yang TIDAK bisa dipakai di pruned node beserta error message-nya.
Pruned node tetap memvalidasi SETIAP block sejak genesis. Setelah divalidasi, block lama boleh dihapus. Geser slider untuk mengatur ukuran prune target.
Blockchain timeline — block yang masih ada vs yang sudah di-prune:
Genesis #0 Prune height Tip #870.142
Block divalidasi lalu dihapus
Block masih ada di disk (buffer)
Block terbaru (selalu ada)
prune = ? (ukuran target di bitcoin.conf, dalam MB)
Minimum 550 MB. Nilai 0 = pruning mati (full archival ~650 GB).
550 MB ~100 GB
550 MB
Block dihapus
~869.000
Sudah divalidasi, tidak perlu lagi
Storage dihemat
~649 GB
Dari total ~650 GB blockchain
Storage dibutuhkan
~550 MB
Chainstate + buffer block
Pruned node TETAP bisa:
Memvalidasi semua transaksi baru
Memvalidasi semua block baru
Menjaga UTXO set yang akurat
Menolak transaksi invalid
Menerima koneksi inbound
Pruned node TIDAK bisa:
Melayani block lama ke peer IBD
getblock untuk block yang di-prune
getrawtransaction tanpa txindex
Menjalankan txindex/blockfilterindex
Klik command untuk langsung eksekusi. Command dengan label ERROR menunjukkan apa yang terjadi kalau kamu mencoba RPC yang tidak didukung di pruned node.
Klik command untuk eksekusi:
bitcoin-cli — Pruning
Bab 16 · 16.5
Sync lebih cepat bukan berarti lebih tidak aman — kalau didesain dengan benar
assumevalid dan assumeUTXO — Sync Lebih Cepat Tanpa Mengorbankan Trustlessness

assumevalid sudah kita singgung di 16.1 sebagai salah satu alasan IBD bisa dipersingkat. Section ini menjelaskan cara kerjanya secara utuh, bersama saudaranya assumeUTXO, dan menjawab keberatan yang paling sering muncul: apakah ini artinya kita balik mempercayai developer?

IBD bisa memakan waktu berjam-jam atau bahkan berhari-hari. Dua fitur Bitcoin, yaitu assumevalid dan assumeUTXO, dirancang untuk mempercepat proses ini secara signifikan. Tapi keduanya sering disalahpahami: bukan kepercayaan buta kepada developer, melainkan pilihan desain yang sangat hati-hati dengan mekanisme verifikasi yang tetap kuat.

assumevalid: Skip Verifikasi Signature untuk Block Lama

Selama IBD, bagian yang paling memakan CPU adalah verifikasi signature kriptografi untuk setiap input transaksi. Untuk blockchain sepanjang ratusan ribu block dengan ratusan juta transaksi, ini pekerjaan yang sangat berat dan bisa memakan waktu puluhan jam.

assumevalid adalah hash dari block tertentu yang di-hardcode ke dalam software Bitcoin client. Untuk semua block sebelum hash ini, node tetap mendownload semua data, memvalidasi struktur block, dan membangun UTXO set secara penuh, tapi tidak memverifikasi signature kriptografi. Logikanya: kalau jutaan node lain sudah memvalidasi signature ini dan blockchain tetap berjalan normal, signature pasti valid.

Penting: kamu bisa menimpa ini kapanpun. Dengan menjalankan flag -assumevalid=0, node akan memverifikasi setiap signature dari block 0 tanpa pengecualian. Ini butuh waktu jauh lebih lama tapi memberikan verifikasi paling menyeluruh.

assumeUTXO: Mulai dari Snapshot UTXO Set

assumeUTXO adalah fitur yang lebih baru dan lebih radikal. Alih-alih membangun UTXO set dari genesis block, node bisa memuat snapshot UTXO set yang sudah jadi dari file eksternal. Node langsung bisa digunakan untuk memverifikasi transaksi baru sambil memverifikasi blockchain historis di background.

Analoginya: bayangkan kamu baru bergabung di sebuah perusahaan. Daripada membaca semua email dari 15 tahun lalu sebelum bisa mulai kerja, kamu membaca ringkasan situasi terkini dulu (snapshot UTXO), langsung mulai kerja, sambil perlahan membaca arsip historis di waktu luang.

Apakah ini aman?

Untuk assumevalid: kalau developer jahat memasukkan hash block yang salah, node akan membangun UTXO set yang berselisih dengan jaringan dan langsung ketahuan. Ribuan developer dan pengguna yang mengaudit source code menjadi lapisan verifikasi sosial yang kuat.

Untuk assumeUTXO: hash snapshot di-hardcode dan bisa diaudit siapapun. Kalau snapshot berisi UTXO yang salah, verifikasi historis di background akhirnya akan menemukan inkonsistensi. Desainnya memastikan bahwa bahkan kalau snapshot salah, node akan self-correct.

assumevalid dan assumeUTXO bukan jalan pintas yang mengorbankan keamanan, melainkan keduanya adalah optimisasi yang dirancang dengan sangat hati-hati. Keamanan Bitcoin tidak bergantung pada satu node yang memverifikasi segalanya, melainkan pada ribuan node independen yang semuanya menjalankan aturan konsensus yang sama.

Simulasi — Perbandingan Metode Sync
Tab pertama: pilih metode sync dan lihat perbandingan waktu, fase yang dijalankan, dan analisis kepercayaan. Tab kedua: command RPC untuk mengontrol dan memonitor sync.
Pilih metode sync untuk melihat perbandingan waktu, fase yang dijalankan, dan trade-off kepercayaan.
IBD Penuh — Verifikasi Semua dari Genesis
Setiap signature diverifikasi, setiap block divalidasi. Paling lambat, paling menyeluruh. Flag: -assumevalid=0
IBD + assumevalid — Skip Signature Lama
Block tetap didownload dan UTXO set tetap dibangun penuh — tapi signature untuk block lama di-skip. Default di semua implementasi utama.
assumeUTXO — Langsung Pakai dari Snapshot
Muat snapshot UTXO set yang sudah jadi. Node langsung bisa beroperasi sambil verifikasi historis berjalan di background.
Perbandingan waktu sync (estimasi, hardware rata-rata + SSD):
IBD Penuh
~24-72 jam
~24-72j
+ assumevalid
~4-8 jam
~4-8j
assumeUTXO
~10m
~10 menit
Command RPC untuk mengontrol dan memonitor metode sync. Klik command untuk langsung eksekusi.
Klik command untuk eksekusi:
bitcoin-cli — assumevalid & assumeUTXO
Bab 16 · 16.6
Tanpa node sendiri, kamu harus mempercayai seseorang — dan itu bertentangan dengan seluruh ide Bitcoin
Mengapa Menjalankan Node Sendiri — dan 10 Command Harian

Setelah memahami IBD, chainstate, verifikasi block, pruning, dan assumevalid, saatnya menjawab pertanyaan paling fundamental: mengapa kamu harus repot-repot menjalankan node sendiri?

"Jangan percaya, verifikasi": Bukan Slogan Kosong

Kalau kamu tidak menjalankan node sendiri, kamu harus mempercayai seseorang. Mungkin exchange tempat kamu membeli bitcoin. Mungkin block explorer yang kamu pakai untuk melihat transaksi. Mungkin wallet yang terhubung ke node orang lain. Setiap kali kamu mempercayai pihak ketiga untuk memverifikasi transaksi Bitcoin, kamu menciptakan titik kegagalan yang bisa dimanipulasi, bisa di-hack, atau bisa berbohong.

Node sendiri menghilangkan semua ketergantungan itu. Kamu verifikasi sendiri bahwa transaksi yang kamu terima benar-benar ada di blockchain, bahwa tidak ada inflasi tersembunyi, bahwa aturan konsensus yang kamu setujui benar-benar ditegakkan.

Apa yang node kamu verifikasi setiap hari?

Setiap block baru: proof-of-work valid, tidak ada transaksi yang membelanjakan UTXO yang tidak ada, tidak ada miner yang mengklaim reward lebih dari yang seharusnya, semua aturan konsensus terpenuhi. Setiap transaksi yang kamu terima: benar-benar ada di blockchain, sudah dikonfirmasi sebanyak yang kamu lihat, tidak ada manipulasi data dari pihak ketiga.

Node adalah suara kamu di jaringan

Kalau suatu hari ada proposal untuk mengubah aturan konsensus Bitcoin, misalnya menaikkan batas supply atau mengubah algoritma mining, node kamu adalah yang menentukan apakah kamu mengikuti perubahan itu atau tidak. Node yang tidak di-upgrade akan otomatis menolak block yang melanggar aturan lama. Ini adalah mekanisme yang membuat perubahan konsensus di Bitcoin sangat sulit dilakukan tanpa persetujuan luas dari para pengguna.

Kontribusi ke jaringan

Setiap node yang berjalan memperkuat jaringan Bitcoin. Node archival membantu node baru yang sedang IBD. Node yang menerima koneksi inbound membantu peer baru menemukan jaringan. Semakin banyak node independen yang berjalan, semakin sulit bagi siapapun untuk menyensor transaksi atau memanipulasi data.

Menjalankan node sendiri adalah bentuk partisipasi paling fundamental dalam Bitcoin. Bukan karena memberi keuntungan finansial langsung, tapi karena itulah cara kamu benar-benar memiliki dan memverifikasi bitcoin yang kamu pegang, tanpa mempercayai siapapun.

10 Command RPC Harian — Referensi Lengkap
10 command paling berguna untuk memantau dan mengoperasikan node sehari-hari. Klik command untuk melihat output realistis, kapan menggunakannya, dan penjelasan field penting.
Klik command untuk eksekusi:
bitcoin-cli — Daily Commands
← Daftar Bab
BLK #915,217
Bab 17 · 17.1
Satoshi sudah memikirkan ini sejak 2008 — bagaimana HP bisa memverifikasi Bitcoin
Masalah yang Dipecahkan SPV

Bayangkan kamu ingin memverifikasi bahwa sebuah cek benar-benar dikeluarkan oleh bank yang sah. Ada dua cara: pertama, kamu bergabung menjadi karyawan bank dan mengakses seluruh sistem database untuk memverifikasi sendiri. Kedua, kamu minta bank menunjukkan bukti transaksi yang disertai stempel resmi yang bisa kamu verifikasi keasliannya tanpa harus masuk ke sistem.

Full node adalah cara pertama, yaitu verifikasi penuh tapi butuh komitmen besar. SPV adalah cara kedua, yaitu verifikasi yang lebih ringan tapi tetap bisa diandalkan untuk kebanyakan use case.

Konteks sejarah: Satoshi sudah memikirkan ini

Di bagian 8 whitepaper Bitcoin (2008), Satoshi menulis tentang Simplified Payment Verification. Ia menyadari bahwa tidak semua orang akan atau bisa menjalankan full node. Untuk pengguna sehari-hari yang hanya ingin menerima dan mengirim pembayaran, ada cara yang lebih ringan: cukup verifikasi bahwa transaksi kamu ada di dalam block yang valid, tanpa perlu memvalidasi seluruh blockchain.

Kuncinya ada di header block. Header block Bitcoin hanya 80 byte per block, tapi mengandung merkle root yaitu sebuah hash yang merepresentasikan seluruh transaksi dalam block tersebut. Dengan menggunakan hanya header block (sekitar 70 MB untuk seluruh blockchain) plus merkle proof untuk transaksi tertentu, kamu bisa membuktikan bahwa transaksi tersebut ada di dalam block yang valid.

Apa yang bisa diverifikasi SPV?

SPV client bisa memverifikasi bahwa transaksi ada di dalam block tertentu via merkle proof, block tersebut punya proof-of-work yang valid via header, dan block tersebut adalah bagian dari chain terpanjang via header chain. Yang tidak bisa diverifikasi oleh SPV tanpa kepercayaan tambahan: apakah aturan konsensus lainnya terpenuhi, apakah transaksi tersebut double-spend sebelum masuk block, dan apakah total supply Bitcoin valid.

Asumsi kepercayaan yang dibutuhkan SPV

SPV bukan trustless seperti full node. Ia bergantung pada asumsi bahwa mayoritas hashrate jujur. Kalau mayoritas miner bersekongkol, mereka bisa membuat block palsu yang menipu SPV client. Tapi asumsi ini sama dengan asumsi keamanan Bitcoin secara keseluruhan, yaitu selama majority honest, SPV aman untuk pembayaran sehari-hari.

Untuk siapa SPV cocok?

Untuk pembayaran sehari-hari dengan jumlah moderat, SPV memberikan keseimbangan yang baik antara keamanan dan kemudahan. Untuk pembayaran dengan nilai sangat besar atau untuk keperluan yang membutuhkan verifikasi penuh, full node tetap menjadi pilihan terbaik.

SPV bukan kompromi yang buruk, melainkan ia adalah trade-off yang disengaja dan sudah dipikirkan Satoshi sejak awal. Dalam sistem yang mayoritas jujur, SPV memberikan verifikasi yang cukup kuat untuk kebanyakan use case. Kuncinya adalah memahami batasannya dan memilih tingkat verifikasi yang sesuai dengan kebutuhan dan nilai yang dipertaruhkan.

Visualisasi — Full Node vs SPV Client
Dua tab: perbandingan lengkap Full Node vs SPV dari sisi storage, verifikasi, dan kepercayaan yang dibutuhkan — plus diagram bagaimana keduanya berinteraksi dengan jaringan Bitcoin.
Full Node
Verifikasi penuh, tidak perlu mempercayai siapapun
Yang didownload
Semua block (~650 GB) + semua header
~650 GB
Yang diverifikasi
Setiap transaksi, setiap signature, setiap aturan konsensus
Verifikasi penuh
Storage dibutuhkan
~650 GB (full) atau ~550 MB minimum (pruned)
650 GB / 550 MB
RAM dibutuhkan
Minimal 2 GB, disarankan 4-8 GB
2-8 GB RAM
Kepercayaan
Tidak perlu mempercayai siapapun
Zero trust
Waktu setup
4-72 jam (IBD) tergantung hardware
4-72 jam
SPV Client
Verifikasi ringan, cocok untuk mobile
Yang didownload
Hanya header (~70 MB) + merkle proof transaksi relevan
~70 MB
Yang diverifikasi
Proof-of-work header + merkle proof bahwa tx ada di block
Verifikasi parsial
Storage dibutuhkan
~70 MB header, bertambah ~4 MB/tahun
~70 MB
RAM dibutuhkan
Sangat ringan — cocok untuk HP
< 100 MB RAM
Kepercayaan
Percaya mayoritas hashrate jujur
Majority honest
Waktu setup
Beberapa menit — hanya download header chain
~5 menit
SPV client bisa dan tidak bisa:
SPV BISA memverifikasi:
Transaksi ada di dalam block tertentu
Block punya proof-of-work yang valid
Block adalah bagian dari chain terpanjang
Berapa konfirmasi yang sudah diterima
SPV TIDAK BISA verifikasi:
Apakah semua aturan konsensus terpenuhi
Apakah total supply Bitcoin masih valid
Apakah transaksi double-spend sebelum masuk block
Apakah miner tidak overclaim reward
Bab 17 · 17.2
Membuktikan satu transaksi dari jutaan — hanya dengan beberapa lusin byte
Merkle Proof — Bukti Keanggotaan yang Efisien

Bayangkan kamu tinggal di kota dengan 10.000 penduduk dan perlu membuktikan bahwa namamu ada di buku kependudukan resmi. Ada dua cara: pertama, tunjukkan seluruh buku (650 halaman) kepada orang yang ingin memverifikasi. Kedua, tunjukkan satu jalur kecil dari namamu hingga ke cap resmi di halaman pertama, hanya 13 langkah untuk 10.000 penduduk, bukan 10.000 halaman.

Itulah merkle proof. Bukan bukti dengan menunjukkan seluruh data, melainkan bukti dengan menunjukkan jalur yang bisa diverifikasi secara kriptografi.

Sudut pandang yang berbeda dari Bab 3

Di Bab 4 kita melihat merkle tree sebagai struktur kriptografi, yaitu bagaimana hash-hash transaksi dikombinasikan menjadi satu merkle root. Di sini kita melihatnya dari sudut pandang SPV client: bagaimana HP kamu membuktikan bahwa transaksi kamu ada di block yang tidak pernah kamu download sepenuhnya.

Struktur merkle proof

Misalkan sebuah block punya 8 transaksi. Untuk membuktikan bahwa Tx3 ada di block ini, kamu tidak perlu semua 8 transaksi. Kamu hanya butuh: hash dari Tx4 (pasangan Tx3 di level pertama), hash dari H(Tx1+Tx2) (pasangan di level kedua), dan hash dari H(Tx5+Tx6+Tx7+Tx8) (pasangan di level ketiga). Tiga hash ini, dikombinasikan dengan Tx3, cukup untuk merekonstruksi merkle root. Kalau hasilnya cocok dengan merkle root di header block yang sudah diverifikasi proof-of-work-nya, transaksi tersebut terbukti ada di block itu.

Efisiensi yang luar biasa

Untuk block dengan n transaksi, merkle proof hanya membutuhkan log₂(n) hash. Block Bitcoin modern bisa berisi lebih dari 3.000 transaksi. Merkle proof-nya hanya butuh sekitar 12 hash yaitu masing-masing 32 byte, totalnya sekitar 384 byte. Bandingkan dengan mengdownload seluruh block yang bisa mencapai 1-2 MB. Kalau transaksi dalam block berlipat ganda dari 3.000 menjadi 6.000, proof hanya butuh satu hash tambahan.

Cara SPV client menggunakan merkle proof

Ketika SPV wallet kamu menerima pembayaran, ini yang terjadi di belakang layar: node yang terhubung mengirimkan transaksi beserta merkle proof-nya. SPV client mengambil hash transaksi, mengikuti jalur merkle proof, dan merekonstruksi merkle root. Kemudian membandingkan dengan merkle root yang ada di header block yang sudah diverifikasi proof-of-work-nya. Kalau cocok, transaksi terbukti ada di block tersebut.

Keterbatasan merkle proof

Merkle proof membuktikan bahwa transaksi ADA di block, tapi tidak membuktikan bahwa transaksi tersebut VALID. Input transaksi bisa saja sudah dibelanjakan sebelumnya dan block yang mengandung transaksi tersebut tetap valid dari sudut pandang proof-of-work. Untuk mendeteksi double spend, dibutuhkan akses ke UTXO set yang hanya dimiliki oleh full node.

Merkle proof adalah salah satu konstruksi kriptografi paling elegan di Bitcoin. Dengan hanya beberapa lusin byte, siapapun bisa membuktikan bahwa sebuah transaksi ada di dalam block yang mengandung jutaan byte data. Ini adalah konsekuensi matematika dari sifat hash function yang deterministic dan collision-resistant.

Merkle Proof Visualizer
Pilih transaksi yang ingin dibuktikan. Tree akan menampilkan jalur proof yang dibutuhkan SPV client — hanya sebagian kecil data dari seluruh block.
Pilih transaksi target (klik salah satu):
Jalur merkle proof:
Ukuran proof
128 byte
3 sibling + 1 target
Ukuran block
~1.5 MB
8 transaksi (simulasi)
Efisiensi
99.99%
Data dihemat vs download penuh
Pilih transaksi di atas untuk melihat merkle proof-nya.
Bab 17 · 17.3
Solusi yang elegan secara matematis tapi ternyata bocor dari sisi privasi
Bloom Filters — Cara Lama yang Bermasalah

SPV client perlu memberitahu full node: "kirimkan saya transaksi yang relevan dengan address saya." Tapi kalau SPV langsung berkata "saya punya address bc1q...xyz, kirimkan transaksi ke address itu," privasi langsung bocor karena full node tahu persis address mana yang kamu miliki.

Bloom filter adalah solusi pertama Bitcoin untuk masalah ini. Diperkenalkan di BIP 37 pada 2012, ia memungkinkan SPV client memberitahu node tentang transaksi yang relevan tanpa mengungkap address secara langsung.

Apa itu bloom filter?

Bloom filter adalah struktur data probabilistik yang menjawab satu pertanyaan: "apakah elemen X ada dalam set ini?" Jawaban "tidak" selalu tepat, kalau bloom filter bilang tidak ada, memang tidak ada. Tapi jawaban "ya" bisa salah (false positive), bloom filter bisa bilang "ya" untuk elemen yang sebenarnya tidak ada di set. Ini disengaja: false positive menciptakan ambiguitas yang melindungi privasi.

Cara kerja bloom filter

Bloom filter adalah array bit, dimulai dengan semua bit nol. Untuk menambahkan elemen, kamu hash elemen tersebut dengan beberapa hash function berbeda, lalu set bit-bit yang dihasilkan menjadi 1. Untuk query "apakah X ada?", hash X dengan hash function yang sama. Kalau semua bit yang dihasilkan sudah 1, X mungkin ada. Kalau ada satu bit yang masih 0, X pasti tidak ada. SPV client membuat bloom filter berisi address-address miliknya dan mengirimkannya ke node. Node menyaring transaksi dan hanya mengirimkan yang cocok.

Masalah privasi yang membuat BIP 37 deprecated

Terlepas dari desain yang cerdas, bloom filter punya masalah serius. Ukuran dan komposisi filter bisa mengungkap informasi tentang berapa banyak address yang dimiliki klien. Node yang jahat bisa menguji jutaan address Bitcoin ke filter dan melakukan analisis statistik untuk mengidentifikasi address yang sebenarnya dimiliki. Implementasi awal BIP 37 bahkan punya kelemahan yang memungkinkan full node menentukan address klien dengan akurasi yang mengejutkan.

Selain masalah privasi, BIP 37 juga membebani full node secara tidak proporsional, karena node harus memfilter setiap transaksi untuk setiap klien SPV yang terhubung, yang bisa menjadi serangan DoS.

Status saat ini

BIP 37 sekarang dianggap deprecated. Banyak node menonaktifkan dukungan BIP 37 secara default. Solusi yang lebih baik, yaitu compact block filters (BIP 157/158), sudah tersedia dan akan dibahas di 17.4.

Bloom filter adalah contoh menarik dari solusi yang elegan secara matematis tapi tidak cukup baik dalam praktik keamanan. Privasi adalah properti yang sangat sulit dipertahankan, bahkan sistem yang dirancang untuk melindungi privasi bisa bocor informasi melalui cara-cara yang tidak terduga.

Bloom Filter — Cara Kerja & Masalah Privasi
Tab pertama: coba sendiri cara kerja bloom filter — tambah address, lihat bit yang di-set, dan temukan false positive. Tab kedua: bagaimana node jahat bisa mengeksploitasi filter untuk mengetahui address yang kamu miliki.
Bloom filter memungkinkan SPV client memberitahu node transaksi yang relevan tanpa mengungkap address langsung. Tambah address ke filter, lalu query untuk lihat hasilnya — termasuk false positive.
Bit array (32 bit) — bit yang di-set menjadi 1 saat address ditambahkan:
Belum ada address. Tambahkan di atas.
Tambahkan address ke filter lalu query untuk melihat hasilnya.
Walau bloom filter dirancang untuk melindungi privasi, analisis statistik bisa mengungkap address yang sebenarnya dimiliki SPV client. Inilah mengapa BIP 37 sekarang deprecated.
Langkah 1: SPV client mengirim filter ke node
Alice mengirim bloom filter yang berisi 3 address miliknya ke full node. Filter berukuran 64 byte dengan false positive rate 1%.
filter: 0x4A2F8C...3D1E (64 byte) | fp_rate: 0.01 | num_hash: 4
Langkah 2: Node menganalisis ukuran filter
Dari ukuran filter dan false positive rate yang diminta, node bisa memperkirakan berapa banyak address yang ada di filter. Filter 64 byte dengan fp 1% biasanya berisi 3-5 address.
estimasi: ~3-5 address dalam filter
Langkah 3: Node menguji address satu per satu
Node jahat menguji jutaan address Bitcoin ke filter Alice. Setiap address yang cocok (termasuk false positive) mempersempit kemungkinan. Dengan cukup banyak query, address yang benar-benar dimiliki Alice bisa diidentifikasi.
tested: 1.847.293 address | matched: 47 (fp + true positives)
Langkah 4: Analisis on-chain memperparah situasi
Address yang teridentifikasi dicocokkan dengan data blockchain publik. Clustering analysis bisa mengidentifikasi address lain milik Alice yang bahkan tidak ada di filter.
identified: bc1q...alice1, bc1q...alice2 → linked to 4 more addresses
Perbandingan privasi antar metode:
Full node
100% — verifikasi mandiri
BIP 37 (awal)
~60%
BIP 37 (dianalisis)
~15%
BIP 157/158
~85% — jauh lebih baik
BIP 37 dinonaktifkan secara default di banyak node sejak 2021. Kalau wallet kamu masih menggunakan BIP 37, pertimbangkan beralih ke wallet yang mendukung BIP 157/158 atau terhubung ke node kamu sendiri. Detail BIP 157/158 dibahas di 17.4.
Bab 17 · 17.4
Kalau kamu tidak perlu memberitahu siapapun apa yang kamu cari, jangan lakukan itu
BIP 157/158 — Compact Block Filters: Solusi Privasi yang Lebih Baik

BIP 37 membiarkan node memfilter untuk klien, sehingga node tahu apa yang dicari klien. BIP 157/158 membalik logika ini: klien yang mendownload filter dan memfilter sendiri. Pergeseran sederhana ini menciptakan perbedaan privasi yang sangat besar.

Logika yang terbalik

Dengan BIP 37: SPV client berkata ke node "saya punya address ini, tolong filter untuk saya." Node tahu address yang dicari. Dengan BIP 157/158: node membuat filter kompak untuk setiap block yang merangkum semua data dalam block tersebut. SPV client mendownload filter ini dan mengecek sendiri apakah ada data yang relevan. Kalau ada, baru klien mendownload block lengkapnya. Node tidak pernah tahu apa yang dicari klien.

Apa itu compact block filter?

BIP 158 mendefinisikan format filter kompak menggunakan struktur data bernama Golomb-Coded Set (GCS). GCS adalah probabilistic data structure yang lebih efisien dari bloom filter dengan false positive rate yang lebih terprediksi. Untuk setiap block, node membuat filter yang mengandung semua scriptPubKey dari output transaksi dalam block tersebut. Filter ini berukuran sekitar 10-20 KB untuk block dengan ribuan transaksi.

BIP 157: Protokol Distribusi Filter

BIP 157 mendefinisikan bagaimana filter ini didistribusikan di jaringan P2P. Ada dua jenis pesan baru: getcfheaders untuk minta header dari filter, dan getcfilters untuk minta filter untuk range block tertentu. Klien bisa mendownload filter headers secara ringan terlebih dahulu, lalu mendownload filter lengkap hanya untuk block yang dibutuhkan.

Trade-off yang perlu dipahami

SPV client dengan BIP 157/158 harus mendownload filter untuk setiap block, total bisa beberapa ratus MB hingga beberapa GB untuk seluruh chain. Ini lebih besar dari BIP 37 yang hanya mendownload transaksi relevan. Sebagai gantinya, privasi yang didapat jauh lebih baik. Ini adalah trade-off yang disengaja: tukar bandwidth untuk privasi.

Status implementasi

BIP 157/158 sudah diimplementasikan di software Bitcoin client utama. Neutrino adalah implementasi light client Go yang menggunakan BIP 157/158 dan dipakai oleh Lightning Network mobile wallet seperti Phoenix dan Breez.

BIP 157/158 menunjukkan bagaimana desain protokol yang lebih baik bisa membalik asumsi kepercayaan. Dengan memindahkan pekerjaan filtering dari node ke klien, privasi meningkat drastis tanpa mengorbankan keamanan. Kalau kamu tidak perlu memberitahu siapapun apa yang kamu cari, jangan lakukan itu.

Simulasi — BIP 37 vs BIP 157/158 & Compact Filter
Tab pertama: perbandingan alur data, privasi, dan bandwidth antara BIP 37 dan BIP 157/158. Tab kedua: simulasi compact block filter — klik address untuk cek apakah ada di filter block.
BIP 37 membiarkan node memfilter untuk klien. BIP 157/158 membalik logikanya: klien yang memfilter sendiri. Perbedaan ini sangat besar untuk privasi.
BIP 37 — Deprecated
Node memfilter untuk klien
Klien →
"Saya punya address bc1q...alice. Tolong filter transaksi untuk saya." (bloom filter dikirim ke node)
↕
Node ⚠
Node mengetahui address yang dicari klien. Memfilter setiap transaksi khusus untuk klien ini. Beban CPU per klien.
↕
Klien ←
Menerima transaksi yang "cocok" — tapi node sudah tahu terlalu banyak.
BIP 157/158 — Modern
Klien memfilter sendiri
Node →
Membuat compact filter untuk setiap block (dibuat sekali, berlaku untuk semua klien). Filter ~10-20 KB per block.
↕
Klien ←
Mendownload filter dan mengecek sendiri apakah ada data relevan. Node tidak tahu apa yang dicari klien.
↕
Klien →
Hanya request block lengkap kalau filter menunjukkan ada transaksi relevan. Node hanya tahu block mana yang diminta.
BIP 37 — Node tahu:
❌Address yang dimiliki klien
❌Berapa banyak address yang dimiliki
❌Transaksi mana yang relevan
❌Pola aktivitas finansial klien
BIP 157/158 — Node tahu:
✅Block mana yang di-request klien
✅IP address klien (bisa atasi dengan Tor)
🔒Address yang dimiliki? Tidak tahu
🔒Transaksi yang relevan? Tidak tahu
Trade-off bandwidth — untuk wallet dengan 5 address aktif:
BIP 37 (hanya tx relevan)
~5 MB/bulan
~5 MB
BIP 157/158 (semua filter)
~500 MB - 2 GB total
~500 MB+
BIP 157/158 butuh lebih banyak bandwidth, tapi privasi yang didapat jauh lebih baik. Ini adalah trade-off yang disengaja: tukar bandwidth untuk privasi.
Compact block filter menggunakan Golomb-Coded Set (GCS). Untuk setiap block, node membuat filter yang berisi semua scriptPubKey output dalam block. Klien cek sendiri apakah address mereka ada di filter.
Simulasi block #870.142 — output transaksi dalam block:
ScriptPubKey (address penerima) dalam block:
bc1q...alice
bc1q...bob
3J98t...carol
bc1p...dave
1BvB...miner
bc1q...exchange
3Kzh...pool
↓ dikompres menjadi GCS filter
Compact Block Filter (GCS):
01a4f8...c3d2e1...9b7f4a...2e8c1d...f6a3b9...7d4e2f
Ukuran: ~14 KB (vs ~1.5 MB block penuh) — hemat 99%
SPV client mengecek: apakah address ini ada di filter block #870.142?
Klik address di atas untuk mengecek apakah ada di filter block ini.
Node membuat filter SATU KALI untuk setiap block dan menyebarkannya ke semua klien. Klien mengecek sendiri — node tidak pernah tahu address mana yang dicari. Kalau filter menunjukkan "mungkin ada", klien baru request block lengkapnya.
Bab 17 · 17.5
SPV bisa ditipu dalam skenario tertentu — tapi seberapa realistis dan seberapa mahal?
Trade-off SPV vs Full Node — Seberapa Besar Risiko SPV Bisa Ditipu?

SPV tidak memverifikasi semua aturan konsensus. Tapi seberapa besar risiko nyatanya? Ini pertanyaan yang sering salah dijawab di dua arah: ada yang bilang SPV sama amannya dengan full node, ada yang bilang SPV tidak bisa dipercaya sama sekali. Keduanya salah.

Apa yang bisa dilakukan attacker terhadap SPV client?

Skenario serangan paling realistis adalah eclipse attack, yaitu attacker mengisolasi SPV client dari jaringan jujur dan hanya menghubungkannya ke node-node milik attacker. Dari posisi ini, attacker bisa menyembunyikan transaksi yang masuk atau memperlihatkan chain yang berbeda. Untuk double spend, attacker butuh eclipse attack DAN hashrate yang signifikan untuk menghasilkan chain alternatif, sangat mahal dan jarang terjadi.

Apa yang TIDAK bisa dilakukan attacker?

Tanpa mengontrol mayoritas hashrate jaringan, attacker tidak bisa membuat transaksi yang membelanjakan bitcoin yang tidak dimilikinya karena butuh private key, membuat bitcoin dari tidak ada karena melanggar konsensus yang bisa dideteksi full node manapun, atau meyakinkan SPV client menerima block tanpa proof-of-work yang valid karena SPV tetap memverifikasi PoW header.

Konfirmasi sebagai mitigation

Semakin banyak konfirmasi yang kamu tunggu, semakin mahal bagi attacker untuk melakukan serangan. Untuk transaksi sehari-hari dengan nilai kecil, 1-3 konfirmasi sudah sangat cukup. Untuk nilai besar, 6+ konfirmasi memberikan keamanan yang jauh lebih kuat bahkan untuk SPV.

Kesimpulan praktis

Untuk 99% penggunaan Bitcoin sehari-hari oleh individu yaitu beli kopi, terima gaji, kirim ke teman, SPV memberikan keamanan yang lebih dari cukup. Full node tetap ideal untuk menerima pembayaran bernilai besar, menjalankan bisnis yang menerima Bitcoin, dan siapapun yang ingin verifikasi mandiri penuh tanpa asumsi kepercayaan apapun.

Keamanan Bitcoin bukan biner antara "aman" dan "tidak aman", melainkan ia adalah spektrum trade-off antara kemudahan, resource, dan level verifikasi. SPV adalah titik yang valid di spektrum itu, bukan kompromi yang memalukan. Yang penting adalah memahami di mana titik itu berada dan memilih dengan sadar.

Attack Scenario Visualizer
Pilih skenario serangan untuk melihat apa yang bisa dan tidak bisa dilakukan attacker terhadap SPV client, seberapa sulit serangannya, dan cara mitigasinya. Plus slider konfirmasi untuk lihat dampaknya terhadap keamanan.
🌑
Eclipse Attack — Isolasi SPV dari Jaringan Jujur
Attacker mengisolasi SPV client agar hanya terhubung ke node milik attacker
💸
Double Spend Attack — Bayar Dua Kali dengan Satu Bitcoin
Attacker mencoba mengirim bitcoin ke merchant, lalu membalikkan transaksi
🚫
Invalid Block — Mencoba Menipu SPV dengan Block Palsu
Attacker mencoba membuat SPV menerima block yang melanggar aturan konsensus
Konfirmasi sebagai mitigation — berapa konfirmasi yang kamu tunggu?
0 12
1 konfirmasi
1 konfirmasi: cukup untuk transaksi kecil sehari-hari (beli kopi, top-up). Biaya serangan masih relatif rendah, tapi untuk nilai kecil tidak worth it bagi attacker.
Bab 17 · 17.6
SPV di whitepaper dan SPV di app store adalah dua hal yang berbeda
Light Client di Dunia Nyata — Electrum, Neutrino, dan Wallet Modern

Semua yang kita pelajari di Bab 17 tentang SPV, merkle proof, bloom filter, dan compact block filters bukan konsep teoretis, melainkan semuanya diimplementasikan di wallet Bitcoin yang dipakai jutaan orang setiap hari. Tapi implementasi di dunia nyata sering kali lebih kompleks dan beragam dari model SPV murni yang Satoshi gambarkan di whitepaper.

Electrum: SPV Hybrid dengan Server

Electrum adalah salah satu wallet Bitcoin paling populer sejak 2011. Electrum tidak mengimplementasikan SPV murni, melainkan ia terhubung ke jaringan server Electrum yang sudah memproses blockchain dan menyimpan UTXO set. Klien Electrum bisa query server untuk balance, transaksi historis, dan UTXO dengan sangat cepat. Kalau kamu menjalankan Electrum server sendiri di atas full node, kamu mendapat kecepatan query Electrum dengan privasi setara full node.

Neutrino: BIP 157/158 yang Sebenarnya

Neutrino adalah implementasi light client Bitcoin dalam Go yang dikembangkan Lightning Labs. Ia mengimplementasikan BIP 157/158 (compact block filters) secara penuh. Neutrino dipakai sebagai backend untuk beberapa Lightning Network wallet mobile seperti Phoenix Wallet dan Breez. Untuk membayar Lightning invoice, wallet tersebut menggunakan Neutrino untuk memverifikasi state channel di Bitcoin blockchain tanpa mendownload seluruh blockchain.

Wallet Mobile "SPV" Biasa: Mayoritas Pakai Server

Banyak wallet mobile yang mengklaim "SPV" sebenarnya terhubung ke server backend yang dikontrol developer wallet tersebut. Mereka tidak mendownload header chain atau melakukan verifikasi PoW sama sekali, melainkan hanya query API server developer untuk mendapat balance dan transaksi. Ini bukan SPV, ini adalah custodial-lite: kamu pegang private key tapi verifikasi dilakukan oleh orang lain.

Memilih yang tepat

Tidak ada satu jawaban benar untuk semua orang. Untuk 99% pengguna sehari-hari dengan jumlah kecil, wallet mobile biasa sudah cukup aman. Untuk pengguna yang peduli privasi dan verifikasi, Electrum dengan server sendiri atau Neutrino adalah pilihan yang jauh lebih baik. Untuk nilai besar atau keperluan bisnis, full node tetap pilihan terbaik.

Yang terpenting adalah memahami model kepercayaan dari wallet yang kamu gunakan. "Self-custody" tidak selalu berarti "trustless", karena banyak wallet self-custody yang diam-diam membutuhkan kepercayaan kepada server operator atau developer. Pilih dengan sadar sesuai dengan nilai yang kamu simpan dan tingkat kepercayaan yang kamu butuhkan.

Wallet Explorer — Perbandingan Light Client di Dunia Nyata
Klik wallet atau implementasi untuk melihat model verifikasi, privasi, trust model, cocok untuk siapa, dan trade-off utamanya.
← Daftar Bab
BLK #915,217
Bab 18 · 18.1
Di balik setiap transaksi Bitcoin yang kamu kirim, ada percakapan biner yang sangat ketat antara ribuan komputer
Arsitektur P2P & Struktur Pesan Wire

Bab 8 sudah menjelaskan jaringan P2P Bitcoin dari sisi apa yang terjadi. Bab 18 membahas sisi bagaimana: byte apa persisnya yang berpindah antar node. Kalau Bab 8 adalah peta kota, Bab 18 adalah rambu dan aturan lalu lintasnya.

Bayangkan dua orang bicara lewat walkie-talkie dengan protokol militer. Setiap transmisi harus dimulai dengan kode identifikasi stasiun, diikuti kode perintah, lalu isi pesan, lalu kode verifikasi. Tidak bisa asal bicara; kalau formatnya salah, transmisi diabaikan. Bitcoin wire protocol bekerja persis seperti itu, hanya saja bukan suara manusia yang dikirim, melainkan byte-byte biner yang mengikuti aturan yang sangat ketat.

Kalau kamu membuka Wireshark dan melihat traffic antara dua node Bitcoin, kamu tidak akan melihat HTTP, tidak ada JSON, tidak ada REST API. Yang kamu lihat adalah stream byte mentah, yaitu format biner yang dirancang untuk efisiensi maksimal, bukan keterbacaan manusia.

Jaringan tanpa server pusat

Bitcoin berjalan di atas jaringan peer-to-peer murni yang tidak terstruktur. Tidak ada server pusat, tidak ada koordinator, tidak ada single point of failure. Setiap node adalah klien sekaligus server, ia menerima data dari peer lain sekaligus melayani data ke peer lain. Ini berbeda dari cara kerja internet biasa di mana kamu adalah klien dan Google, YouTube, atau bank kamu adalah server.

Setiap node mempertahankan dua jenis koneksi. Outbound connections (8 koneksi reguler + 2 block-only) adalah koneksi yang kamu inisiasi sendiri, kamu yang memilih peer-nya. Inbound connections (sekitar 115, karena Bitcoin Core membatasi total koneksi di 125 dan 10 di antaranya sudah dipakai outbound) adalah koneksi yang diinisiasi peer lain yang datang kepadamu, kalau port 8333 terbuka. Outbound connections lebih dipercaya karena kamu yang memilih dengan siapa berbicara, bukan pasif menerima siapapun yang datang mengetuk pintu.

Bagaimana node menemukan teman bicara?

Saat pertama kali dijalankan, node Bitcoin belum kenal siapapun. Ia menggunakan DNS seeds, seperti buku telepon khusus, untuk mendapatkan daftar IP node-node aktif. Ada beberapa DNS seed yang dikelola kontributor terpercaya. Setelah terhubung ke beberapa peer, node bertukar daftar kenalan via pesan addr, seperti teman yang saling merekomendasikan kenalan baru. Daftar ini disimpan di peers.dat untuk digunakan saat restart.

Anatomi satu pesan Bitcoin

Setiap pesan P2P Bitcoin, apapun isinya, selalu punya struktur header yang sama persis. Ini seperti amplop standar yang selalu punya kolom "pengirim", "penerima", dan "isi" di tempat yang sama, sehingga siapapun yang menerima amplop langsung tahu cara membacanya.

Magic bytes (4 byte) adalah kode pengenal jaringan. Seperti kode area di nomor telepon: 0xF9BEB4D9 artinya "ini pesan Bitcoin mainnet." Kalau byte pertama yang diterima node berbeda dari yang diharapkan, koneksi langsung ditutup tanpa membaca sisanya.

Command (12 byte) adalah nama perintah dalam teks ASCII. "version", "inv", "tx", "block", selalu dipadding dengan null bytes sampai 12 karakter. Seperti subjek email yang selalu punya panjang persis sama.

Length (4 byte) memberitahu penerima berapa byte payload yang akan datang. Ini penting agar penerima tahu kapan satu pesan selesai dan pesan berikutnya dimulai di stream byte yang terus mengalir.

Checksum (4 byte) adalah 4 byte pertama dari SHA256(SHA256(payload)). Kalau payload rusak di tengah perjalanan, checksum tidak akan cocok dan pesan diabaikan. Seperti nomor seri di uang kertas yang bisa mendeteksi pemalsuan.

Services Flags: Kartu Nama Kapabilitas Node

Di dalam pesan version, setiap node mengiklankan apa yang bisa ia lakukan via services flags. Ini seperti profil LinkedIn yang menampilkan skill: NODE_NETWORK berarti "saya punya full blockchain dan bisa melayani block historis", NODE_COMPACT_FILTERS berarti "saya mendukung BIP 157/158 untuk SPV client modern", NODE_WITNESS berarti "saya mendukung SegWit." Peer membaca flags ini untuk memutuskan apa yang bisa diminta dari node tersebut.

Format wire Bitcoin yang biner dan minimal ini adalah keputusan desain yang disengaja. Tidak ada overhead dari format teks seperti HTTP atau JSON, setiap byte punya makna spesifik. Ini memungkinkan node memproses ribuan pesan per detik dengan overhead CPU yang sangat kecil. Kesederhanaan di level protokol adalah yang memungkinkan kompleksitas di level jaringan.

Wire Message Inspector & Topologi Jaringan P2P
Tab pertama: pilih jenis pesan Bitcoin dan lihat breakdown byte per byte — tiap field dijelaskan dengan analogi sehari-hari. Tab kedua: diagram bagaimana node kamu terhubung ke jaringan P2P Bitcoin.
Setiap pesan P2P Bitcoin adalah stream byte biner dengan format yang sama: magic bytes, command, length, checksum, lalu payload. Pilih jenis pesan untuk melihat breakdown byte per byte beserta analogi yang membantu.
Pilih jenis pesan:
Bitcoin Wire Protocol — Hex View
Magic (4B)
Command (12B)
Length (4B)
Checksum (4B)
Payload
Jaringan P2P Bitcoin adalah unstructured P2P — tidak ada hierarki, tidak ada node yang lebih penting. Setiap node mempertahankan outbound connections yang dipilih sendiri dan menerima inbound connections dari peer lain.
Topologi node kamu di jaringan Bitcoin:
Services flags — kapabilitas yang diiklankan node:
Bab 18 · 18.2
Sebelum bisa bertukar data, dua node harus menyelesaikan ritual tiga langkah terlebih dahulu
Handshake & Message Flow — Bahasa yang Dipakai Dua Node yang Baru Bertemu

Bayangkan dua diplomat dari negara berbeda yang bertemu untuk pertama kalinya. Ada protokol yang harus diikuti sebelum bisa membahas urusan penting: perkenalan formal, verifikasi identitas, konfirmasi bahwa keduanya berbicara bahasa yang sama, baru kemudian masuk ke substansi. Bitcoin node bekerja persis seperti itu.

Handshake: tiga langkah sebelum bisa bicara

Ketika dua node pertama kali terhubung, mereka tidak langsung bertukar transaksi atau block. Ada ritual tiga langkah yang harus diselesaikan dulu. Node yang menginisiasi koneksi mengirim pesan version berisi versi software, services flags, timestamp, user agent, dan block height tertinggi yang diketahui. Node penerima membalas dengan version miliknya sendiri. Kemudian keduanya mengirim verack sebagai konfirmasi. Setelah kedua verack diterima, handshake selesai dan sesi komunikasi resmi dimulai.

Nonce di pesan version punya fungsi khusus: mendeteksi self-connection. Kalau node menerima version dengan nonce yang sama dengan yang ia kirim, berarti ia tidak sengaja terhubung ke dirinya sendiri melalui relay atau konfigurasi jaringan yang aneh. Koneksi langsung ditutup.

Lifecycle transaksi: dari wallet ke jaringan

Ketika kamu mengirim transaksi Bitcoin dari wallet, tiga pesan P2P bekerja secara berurutan. Pertama, node mengumumkan txid via inv tanpa mengirim data penuh, seperti poster "ada produk baru" tanpa memaksa semua orang mengambilnya. Peer yang belum punya transaksi tersebut membalas dengan getdata. Baru kemudian transaksi penuh dikirim via tx. Peer yang sudah punya transaksi dari node lain tidak perlu merespons sama sekali, sehingga tidak ada pengiriman data yang redundan.

Propagasi berlangsung seperti riak di air: satu transaksi bisa mencapai seluruh jaringan dalam hitungan detik via proses flooding ini.

Propagasi block: tiga generasi mekanisme

Saat miner menemukan block baru, propagasi harus secepat mungkin. Setiap detik keterlambatan meningkatkan risiko block lain ditemukan sebelum block ini menyebar, menyebabkan stale block yang membuang reward miner.

Cara lama menggunakan inv/getdata/block klasik, block penuh 1-2 MB harus dikirim ke setiap peer yang meminta. Cara yang lebih baik adalah headers-first: kirim header 80 byte dulu agar peer bisa memvalidasi proof-of-work sebelum memutuskan apakah perlu block penuh. Cara terbaik adalah compact blocks (BIP 152) yang dibahas di 18.4: kirim sketsa block yang bisa direkonstruksi dari mempool, sehingga hanya sebagian kecil data yang perlu ditransfer.

Pesan-pesan pendukung lainnya

getheaders meminta header block dari peer untuk membangun gambaran chain secara cepat tanpa mendownload block penuh. addr dan addrv2 berbagi daftar alamat IP peer yang dikenal, melanjutkan proses peer discovery yang dimulai dari DNS seeds. feefilter memungkinkan node memberitahu peer minimum fee yang ia terima di mempool sehingga transaksi dengan fee terlalu rendah tidak dikirimkan sama sekali.

Desain inv/getdata yang memisahkan pengumuman dari pengiriman data adalah keputusan efisiensi yang sangat penting. Tanpanya, setiap transaksi baru akan langsung dikirim penuh ke semua peer secara redundan. Dengan inv/getdata, setiap data hanya dikirim ke peer yang benar-benar butuh, menghemat bandwidth jaringan secara signifikan.

Handshake Timeline & Message Flow
Tiga tab: handshake dan lifecycle transaksi step-by-step, propagasi block dari cara lama ke compact blocks, dan referensi lengkap semua pesan P2P Bitcoin.
Handshake tiga langkah lalu lifecycle transaksi. Klik "Langkah Berikutnya" untuk maju satu langkah.
Node Kamu (Initiator)
yang menginisiasi koneksi
Peer (Responder)
yang menerima koneksi
Menunggu
Koneksi TCP baru saja dibuka
Dua node baru saja terhubung di level TCP. Handshake harus diselesaikan sebelum komunikasi Bitcoin bisa dimulai.
0 / 9 langkah
Evolusi mekanisme propagasi block dari cara lama ke compact blocks. Klik untuk melihat tiap langkah.
Miner / Node Pertama
yang pertama punya block baru
Node Lain
yang belum punya block ini
Menunggu
Miner baru saja menemukan block #870.143
Block baru valid. Harus disebarkan ke seluruh jaringan secepat mungkin sebelum miner lain menemukan block di height yang sama.
0 / 8 langkah
Ringkasan semua pesan P2P Bitcoin yang penting, dikelompokkan berdasarkan fungsinya.
HANDSHAKE
version — perkenalan: versi, services, height
verack — konfirmasi handshake selesai
TRANSAKSI
inv — umumkan txid yang dimiliki
getdata — minta data spesifik dari peer
tx — kirim transaksi penuh
mempool — minta daftar tx di mempool peer
BLOCK & SYNC
block — kirim block penuh (~1-2 MB)
headers — kirim header saja (80 byte/block)
getheaders — minta headers dari peer
getblocks — minta inv dari block yang belum dimiliki
cmpctblock — compact block (BIP 152)
getblocktxn — minta tx yang hilang dari compact block
NETWORK & MISC
ping / pong — keepalive koneksi
addr / addrv2 — berbagi daftar peer
getaddr — minta daftar peer dari node lain
feefilter — set minimum fee yang diterima
sendcmpct — negosiasi compact block mode
wtxidrelay — aktifkan relay via witness txid
Bab 18 · 18.3
Node baru tidak bisa begitu saja percaya data dari satu peer — ia harus tahu chain mana yang benar sebelum mulai download
Block Sync — Dari Satu Block ke Seluruh Blockchain

Di Bab 16 kita membahas IBD dari sudut pandang node: apa yang diverifikasi dan berapa lama. Di sini kita lihat dari sudut pandang yang berbeda: pesan-pesan P2P apa yang sebenarnya dikirim selama proses sync, dan mengapa ada dua strategi sync yang sangat berbeda efisiensinya.

Strategi 1: Blocks-first sync, cara yang sudah ditinggalkan

Cara paling naif adalah meminta block satu per satu dari satu peer. Node mengirim getblocks dengan block locator, peer membalas dengan inv berisi hingga 500 hash block berikutnya, lalu node meminta setiap block via getdata dan menunggu divalidasi sebelum meminta berikutnya. Masalahnya: seluruh sync bergantung pada satu peer. Kalau peer lambat, semuanya lambat. Node juga tidak bisa tahu apakah ia sedang di chain yang benar sampai sudah terlanjur download banyak block.

Strategi 2: Headers-first sync, cara modern sejak 2015

Headers-first memecahkan masalah ini dengan memisahkan dua fase. Fase pertama: download semua header via getheaders. Peer membalas dengan hingga 2.000 header setiap respons (setiap header 80 byte plus 1 byte varint, total sekitar 162 KB per respons). Dalam beberapa menit, node sudah punya semua header dari genesis hingga tip, sekitar 70 MB total. Dari header chain ini, node bisa menghitung accumulated proof-of-work dari setiap chain yang ditawarkan berbagai peer dan tahu mana yang valid, bahkan sebelum mendownload satu block penuh pun.

Fase kedua: download block secara paralel dari banyak peer berbeda. Karena urutan sudah diketahui dari header chain, node bisa minta block dari peer manapun tanpa risiko ditipu urutan yang salah.

Block locator algorithm

Block locator adalah daftar hash yang cerdas dan hemat. Node tidak mengirimkan hash semua block yang dimilikinya, melainkan memilih secara exponentially sparse: 10 block terbaru satu per satu, lalu setiap 2 block, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, dan seterusnya hingga genesis block. Ini memungkinkan peer menemukan titik divergensi chain dengan efisien meski ada reorg yang sangat panjang, hanya dengan sekitar 40 hash, bahkan untuk chain sepanjang ratusan ribu block.

Minimum chain work threshold

Untuk keamanan tambahan, node modern punya minimum chain work threshold: jumlah accumulated proof-of-work minimum yang harus dimiliki sebuah chain sebelum dianggap layak diikuti. Ini mencegah node tertipu untuk mengikuti chain palsu yang sangat pendek dengan PoW yang sangat sedikit, bahkan sebelum header chain selesai diverifikasi sepenuhnya.

Pergeseran dari blocks-first ke headers-first adalah salah satu peningkatan terbesar dalam sejarah Bitcoin Core (versi 0.10.0, 2015). Dengan memisahkan verifikasi chain dari download data, IBD menjadi jauh lebih cepat, lebih aman, dan lebih tahan terhadap peer yang berperilaku buruk.

Block Sync Visualizer
Tab pertama: bandingkan blocks-first vs headers-first — klik untuk lihat fase, pesan, dan perbandingan kecepatan. Tab kedua: visualisasi block locator algorithm yang menentukan hash mana yang dikirim saat sync.
Pilih strategi sync untuk melihat urutan langkah, pesan P2P yang digunakan, dan mengapa headers-first jauh lebih efisien.
🐌
Blocks-first Sync — Cara Lama
Download block satu per satu dari satu peer. Lambat, tidak bisa paralel, rentan ke peer yang lambat atau tidak jujur.
🚀
Headers-first Sync — Cara Modern (sejak 2015)
Download semua header dulu (~70 MB), lalu download block paralel dari banyak peer. Lebih cepat dan lebih aman.
Perbandingan waktu sync:
Blocks-first (lama)
~3-7 hari IBD (hardware rata-rata)
~3-7 hari
Headers-first (modern)
~4-24 jam
~4-24 jam
Header chain saja
~5 menit
~5 menit
Block locator memilih hash secara exponentially sparse — 10 terbaru dense, lalu semakin jarang ke belakang. Hanya ~30-40 hash untuk chain 870.000 block.
Visualisasi block locator dari node di block #870.142:
Cara locator dipilih:
10 block terbaru satu per satu (#870.142 sampai #870.133), lalu setiap 2 block, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048... hingga genesis block #0. Total hanya ~30-40 hash untuk chain 870.000 block.
Mengapa ini cerdas:
Reorg pendek (1-5 block) langsung terdeteksi dari hash dense di awal. Reorg panjang terdeteksi dari hash sparse. Peer hanya perlu kirim headers mulai dari titik divergensi, tanpa transfer data besar.
Pesan yang digunakan:
getheaders — dikirim dengan block locator, minta headers dari titik divergensi hingga tip (max 2.000 per respons, ~162 KB).
headers — balasan peer dengan hingga 2.000 header.
getblocks — versi lama: minta inv block (max 500 per respons).
Analogi block locator: daripada menyebutkan setiap pohon yang dilewati (ribuan), kamu sebut 10 pohon terakhir secara detail, lalu setiap persimpangan besar, lalu setiap desa besar yang diingat. Tim penyelamat langsung tahu dari mana mulai mencari.
Bab 18 · 18.4
Mengapa harus download data yang sudah kamu punya? Compact blocks memecahkan inefisiensi terbesar dalam propagasi block
Compact Blocks — Mempercepat Propagasi Block (BIP 152)

Bayangkan seseorang mengirimkanmu salinan koran 200 halaman, padahal kamu sudah punya 198 halamannya. Buang-buang waktu dan kertas, bukan? Itulah yang terjadi dengan propagasi block sebelum compact blocks: setiap node harus mendownload block penuh (~1-2 MB) meski sudah mengetahui hampir semua transaksi di dalamnya dari mempoolnya sendiri.

Masalah yang dipecahkan

Node yang terhubung baik ke jaringan biasanya sudah punya 95-99% transaksi yang ada di dalam block sebelum block ditemukan. Ini karena transaksi disebarkan ke seluruh jaringan saat pertama kali dikirim, jauh sebelum masuk ke dalam block. Compact blocks (BIP 152, 2016) memanfaatkan fakta ini: daripada kirim seluruh block, kirim daftar ID pendek transaksi saja dan biarkan penerima merekonstruksi sisanya dari mempool lokalnya.

Format pesan cmpctblock

Pesan cmpctblock berisi tiga komponen utama. Header block (80 byte) yang sama seperti biasa, berisi proof-of-work, merkle root, dan timestamp. Shortids berukuran 6 byte untuk setiap transaksi dalam block (jauh lebih kecil dari txid 32 byte), dibuat dengan SipHash-2-4 menggunakan nonce unik per block sehingga hanya valid untuk block ini saja. Prefill transactions yaitu beberapa transaksi yang dikirim langsung tanpa shortid, terutama coinbase transaction yang dipastikan tidak ada di mempool manapun.

Penerima mencocokkan setiap shortid dengan transaksi di mempoolnya. Transaksi yang ditemukan langsung dipakai untuk rekonstruksi block. Kalau ada shortid yang tidak cocok, penerima mengirim getblocktxn berisi daftar index transaksi yang dibutuhkan, dan pengirim membalas dengan blocktxn berisi hanya transaksi tersebut.

High-bandwidth vs low-bandwidth mode

Dua mode ini dinegosiasikan via pesan sendcmpct saat handshake. High-bandwidth mode (sendcmpct(1)): node langsung mengirimkan cmpctblock tanpa diminta begitu block baru ditemukan, cocok untuk maksimum 3 peer dengan koneksi terpercaya dan latensi rendah. Low-bandwidth mode (sendcmpct(0)): node mengumumkan via inv atau headers dulu, dan hanya mengirim cmpctblock kalau peer memintanya via getdata.

Dampak nyata

Compact blocks mengurangi data yang ditransfer dari ~1.500 KB menjadi ~20-60 KB dalam kondisi normal. Ini setara dengan pengurangan 95-98% bandwidth untuk propagasi block. Latensi propagasi block turun drastis karena lebih sedikit data yang harus ditransfer dan diverifikasi.

Compact blocks adalah contoh elegan dari prinsip "jangan kirim data yang sudah dimiliki penerima." Dengan memanfaatkan fakta bahwa mempool node-node yang terhubung baik hampir selalu sinkron, BIP 152 mengubah propagasi block dari operasi yang membutuhkan bandwidth besar menjadi operasi yang hampir real-time.

Compact Block Simulator
Tab pertama: geser slider untuk lihat berapa data yang harus ditransfer dengan compact blocks vs block penuh, tergantung berapa persen tx yang sudah ada di mempool. Tab kedua: perbedaan high-bandwidth dan low-bandwidth mode.
Compact blocks memanfaatkan fakta bahwa node yang terhubung baik sudah punya hampir semua transaksi di mempoolnya. Geser slider untuk lihat dampaknya.
Analogi
Daripada mengirimkan salinan lengkap koran 200 halaman, temanmu cukup mengirimkan daftar nomor halaman yang ada di edisi itu. Kamu cocokkan dengan koran lama yang sudah kamu punya — dan hanya minta halaman yang belum ada. Transfer dari 200 halaman menjadi hanya 2-3 halaman.
Berapa persen transaksi yang sudah ada di mempool node penerima?
Node yang terhubung baik ke jaringan biasanya sudah punya 95-99% transaksi sebelum block ditemukan.
80% 100%
97% sudah ada
Total transaksi di block
3.000 tx
Block tipikal Bitcoin modern
Sudah ada di mempool
2.910 tx
Rekonstruksi lokal, tidak perlu download
Perlu didownload
90 tx
Via getblocktxn + blocktxn
Perbandingan data yang ditransfer:
Block penuh (cara lama)
~1.500 KB (block penuh)
~1.500 KB
cmpctblock (header+shortids)
blocktxn (tx belum dikenal)
Total compact blocks
Breakdown komponen cmpctblock:
Header block
80 byte
Header 80 byte yang sama seperti biasa — proof-of-work, merkle root, timestamp
Shortids (6 byte × 3.000 tx)
18.000 byte
ID pendek 6 byte per transaksi. Dibuat dengan SipHash-2-4 + nonce unik per block — hanya valid untuk block ini
Prefill tx (coinbase + beberapa)
~500 byte
Tx yang pasti tidak ada di mempool (coinbase) dikirim langsung tanpa diminta
blocktxn (tx yang belum dikenal)
~45.000 byte
Dikirim via getblocktxn/blocktxn hanya kalau ada tx yang tidak ditemukan di mempool
Total compact vs block penuh
~63 KB vs 1.500 KB
Hemat ~96% bandwidth.
Dua mode dinegosiasikan via sendcmpct saat handshake. Node bisa pakai mode berbeda untuk peer yang berbeda.
Analogi
High-bandwidth: langsung WhatsApp 3 teman terpercaya begitu ada berita baru, tanpa nunggu mereka tanya. Low-bandwidth: posting di status dulu, dan hanya yang bertanya aktif yang kamu kirimi detail lengkap.
HIGH-BANDWIDTH MODE
sendcmpct(1) — Langsung kirim
Node langsung mengirimkan cmpctblock ke peer saat block baru ditemukan, tanpa menunggu peer meminta.
Latensi paling rendah — block sampai dalam milidetik
Dipakai untuk maksimum 3 peer per node
Cocok untuk peer dengan koneksi cepat dan latensi rendah
Seperti push notification — langsung diberitahu tanpa perlu cek sendiri
LOW-BANDWIDTH MODE
sendcmpct(0) — Kirim kalau diminta
Node umumkan via inv atau headers dulu. Peer yang tertarik meminta cmpctblock via getdata.
Latensi lebih tinggi tapi bandwidth lebih hemat
Peer yang sudah dapat dari tempat lain tidak perlu minta
Default untuk sebagian besar koneksi
Seperti headline berita — lihat judul dulu, baru klik kalau tertarik
Flow pesan per mode:
High-bandwidth:
Node → cmpctblock
[jika ada tx hilang:]
Peer → getblocktxn
Node → blocktxn
Low-bandwidth:
Node → inv / headers
Peer → getdata (MSG_CMPCT_BLOCK)
Node → cmpctblock
[jika ada tx hilang:]
Peer → getblocktxn
Node → blocktxn
Bab 18 · 18.5
Kalau compact blocks memecahkan propagasi block, Erlay memecahkan propagasi transaksi — dengan pendekatan matematika yang sangat elegan
Erlay — Propagasi Transaksi yang Lebih Efisien (BIP 330)

Bayangkan kamu tinggal di kampung dengan 1.000 warga. Ada berita baru: "Pak RT menikah lagi." Cara lama: setiap orang yang tahu langsung memberitahu semua tetangganya. Berita yang sama bisa didengar seseorang dari 10 orang berbeda sebelum sempat meneruskannya. Buang-buang waktu ngobrol. Erlay adalah cara yang lebih cerdas: tukar daftar berita secara periodik, dan hanya ceritakan yang benar-benar baru.

Masalah flooding yang ada sekarang

Saat ini propagasi transaksi menggunakan mekanisme flooding via inv/getdata/tx. Setiap transaksi baru di-announce ke semua peer via inv. Hasilnya: setiap transaksi di-announce rata-rata 8-16 kali ke setiap node, hampir semua redundan. Di jaringan dengan 10.000+ node dan ratusan ribu transaksi per hari, overhead bandwidth dari redundansi ini sangat signifikan dan membatasi berapa banyak koneksi yang bisa dipelihara node tanpa bandwidth yang besar.

Set reconciliation: ide inti Erlay

Erlay (BIP 330) memperkenalkan teknik bernama set reconciliation. Untuk sebagian kecil peer terpilih, node tetap menggunakan flooding seperti biasa (fanout) untuk memastikan propagasi cepat. Untuk peer lainnya, node secara periodik bertukar sketch yang sangat compact dari set transaksinya menggunakan struktur data bernama minisketch. Dari dua sketch yang dipertukarkan, keduanya bisa mengetahui transaksi mana yang hanya dimiliki salah satu pihak, tanpa perlu kirim daftar penuh.

Minisketch: matematika yang cerdas

Minisketch adalah implementasi PinSketch, sebuah teknik set reconciliation berbasis kode BCH. Ia memungkinkan dua pihak mengetahui perbedaan set mereka hanya dengan mentransfer data sebesar perbedaannya, bukan sebesar set totalnya. Kalau node A dan node B masing-masing punya 10.000 transaksi dan hanya berbeda 50 transaksi, sketch yang dikirim hanya sebesar ~50 elemen, bukan 10.000. Ini seperti "sidik jari" koleksi yang kecil tapi cukup untuk mengungkap perbedaan secara matematis.

Dampak jangka panjang

Erlay mengurangi bandwidth propagasi transaksi sekitar 40%. Yang lebih penting: karena setiap koneksi peer butuh lebih sedikit bandwidth, node bisa memelihara lebih banyak koneksi peer tanpa overhead yang proporsional. Lebih banyak koneksi berarti jaringan lebih terdesentralisasi dan lebih tahan terhadap eclipse attack. Latensi propagasi transaksi hampir tidak berubah karena fanout ke beberapa peer tetap dilakukan.

Erlay adalah contoh bagaimana teori matematika (kode koreksi galat dan set reconciliation) bisa diterapkan untuk memecahkan masalah praktis di jaringan P2P. Hasilnya bukan hanya penghematan bandwidth, tapi peningkatan desentralisasi jaringan yang merupakan salah satu properti paling berharga dari Bitcoin.

Erlay Visualizer — Flooding vs Set Reconciliation
Tab pertama: perbandingan visual flooding vs Erlay — berapa banyak panah redundan yang dihilangkan. Tab kedua: cara kerja set reconciliation langkah per langkah dengan analogi yang mudah dipahami.
Setiap transaksi baru harus disebarkan ke ribuan node. Flooding menghasilkan banyak duplikasi. Erlay menggantikan sebagian besar flooding dengan set reconciliation yang jauh lebih efisien.
Analogi
Flooding: Dapat berita baru dan langsung cerita ke semua 8 tetangga. Hasilnya banyak orang dapat berita yang sama dari banyak orang berbeda.
Erlay: Cerita ke 2-3 tetangga terdekat saja. Sisanya: secara periodik tukar "daftar berita" dengan tetangga. Hanya yang benar-benar baru yang diceritakan. Hasilnya sama, 40% lebih hemat.
Flooding (Cara Lama)
~16 inv per tx per node
~93% redundan
Erlay (BIP 330)
2-3 fanout langsung
sisanya via sketch
~40% hemat bandwidth
Rata-rata announce redundan (flooding)
~8-16×
Setiap tx di-announce ke node yang sudah punya
Penghematan bandwidth Erlay
~40%
Untuk propagasi transaksi di seluruh jaringan
Manfaat utama
+koneksi
Bandwidth hemat = bisa maintain lebih banyak peer
Perbandingan bandwidth propagasi transaksi:
Flooding (cara lama)
100% bandwidth
100%
Erlay (BIP 330)
~60% bandwidth
~60%
Erlay tidak memperlambat propagasi transaksi. Transaksi tetap menyebar cepat via fanout ke beberapa peer langsung. Yang dihemat adalah pengiriman redundan ke peer yang sudah punya transaksi tersebut.
Set reconciliation memungkinkan dua node mengetahui perbedaan koleksi transaksi mereka hanya dengan tukar data sangat kecil — tanpa kirim seluruh daftar.
Analogi minisketch
Kamu dan temanmu masing-masing punya 10.000 lagu. Kalian ingin tahu lagu mana yang hanya dimiliki salah satu pihak, tapi tidak mau kirim daftar 10.000 lagu. Minisketch memungkinkan kalian menukar "sidik jari" koleksi yang sangat kecil (~50 entri). Dari dua sidik jari itu, kalian tahu persis: "kamu punya lagu X dan Y yang saya tidak punya" — tanpa pernah kirim daftar lengkap.
Cara kerja Erlay langkah per langkah:
1
Fanout: announce langsung ke 2-3 peer terpilih
Seperti biasa (inv/getdata/tx), transaksi baru langsung dikirim ke sejumlah kecil peer terpilih untuk memastikan propagasi cepat ke jaringan.
Seperti cerita ke 2-3 teman terpercaya dulu agar berita cepat menyebar.
2
Akumulasi: kumpulkan perbedaan selama ~2 detik
Untuk peer lain, node mengakumulasi transaksi baru yang dimiliki tapi belum dikirimkan. Setiap ~2 detik, dilakukan satu putaran rekonsiliasi.
Seperti mencatat semua berita baru selama 2 detik sebelum berbagi daftar dengan tetangga.
3
Sketch: kirim "sidik jari" set transaksi via minisketch
Node mengirim sketch compact dari set transaksinya menggunakan minisketch (implementasi PinSketch). Ukurannya sebanding dengan jumlah perbedaan, bukan ukuran set total.
Seperti tukar sidik jari koleksi lagu — kecil tapi cukup untuk tahu perbedaannya.
4
Decode: temukan perbedaan dari dua sketch via XOR
Penerima menggabungkan sketch yang diterima dengan sketch miliknya. Operasi XOR mengungkapkan set perbedaan tanpa perlu kirim data lebih besar.
Dua sidik jari digabungkan menghasilkan daftar perbedaan langsung secara matematis.
5
Request: minta hanya transaksi yang benar-benar belum ada
Setelah tahu perbedaannya, node meminta via getdata hanya txid yang belum dimiliki. Tidak ada redundansi.
Baru setelah tahu lagu mana yang belum ada, kamu minta spesifik lagu itu saja.
Dampak Erlay terhadap desentralisasi:
Karena setiap koneksi peer butuh lebih sedikit bandwidth dengan Erlay, node bisa memelihara lebih banyak koneksi peer tanpa overhead yang proporsional. Lebih banyak koneksi berarti jaringan lebih terdesentralisasi dan lebih tahan terhadap eclipse attack.
Status implementasi (per 2025):
Erlay sudah di-merge ke Bitcoin Core sebagai fitur opsional. Kedua peer harus mendukung BIP 330 untuk menggunakan set reconciliation. Selama masa transisi, node yang mendukung Erlay tetap bisa beroperasi normal dengan node lama menggunakan flooding biasa.
Bab 18 · 18.6
Kamu bisa memverifikasi transaksi tanpa diketahui identitasmu — tapi propagasi transaksi bisa mengekspos IP address-mu sebelum transaksi masuk block
Dandelion & Transaction Privacy (BIP 156)

Dandelion sempat kita sebut di 8.3 sebagai solusi yang paling banyak dibahas untuk masalah privasi propagasi. Di sini kita lihat cara kerjanya, dan juga kenapa sampai sekarang ia belum masuk ke Bitcoin Core.

Bayangkan kamu berdiri di tengah kerumunan dan berteriak "Saya punya surat ini!" Semua orang langsung tahu kamu pengirimnya. Itulah yang terjadi dengan propagasi transaksi Bitcoin saat ini: node yang pertama menyebarkan transaksi ke jaringan hampir pasti adalah node pengirimnya.

Bagaimana propagasi transaksi mengekspos IP pengirim

Saat kamu membuat transaksi, node kamu adalah yang pertama menyebarkannya via flooding. Attacker yang menjalankan banyak node bisa mengamati dari node mana transaksi pertama terlihat. Node yang pertama menyiarkan transaksi ke banyak peer berbeda kemungkinan besar adalah sumber aslinya. Ini bukan serangan teoritis, dan perusahaan analitik blockchain sudah lama menggunakan teknik ini untuk menghubungkan transaksi Bitcoin dengan IP address pengirimnya.

Dandelion: stem phase dan fluff phase

Dandelion (BIP 156) memecahkan masalah ini dengan cara yang elegan. Namanya diambil dari bunga dandelion: batang tipis di awal, lalu meledak menyebar ke segala arah. Dalam stem phase, transaksi baru tidak langsung di-flood ke semua peer. Sebaliknya, ia diteruskan ke satu peer secara acak, lalu peer itu ke satu peer lagi, selama beberapa hop. Selama stem phase, transaksi tidak masuk ke mempool normal, melainkan hanya diteruskan secara senyap. Dalam fluff phase, setelah beberapa hop, salah satu node secara acak memutuskan untuk mulai menyebarkan transaksi secara normal via flooding. Node yang memulai fluff bukan pengirim asli, sehingga attacker tidak bisa menentukan sumber sebenarnya.

Dandelion++: Penyempurnaan dari Versi Asli

BIP 156 asli punya kelemahan: kalau attacker ada di stem path, ia bisa melacak jalurnya. Dandelion++ memperbaiki ini dengan memilih stem peer yang berbeda untuk setiap transaksi dari subset peer yang stabil dan acak, sehingga attacker tidak bisa memprediksi atau mempengaruhi stem path.

Status implementasi

Dandelion++ belum di-merge ke Bitcoin Core karena kompleksitas implementasi dan kekhawatiran tentang potensi serangan DoS baru yang bisa dieksploitasi via stem phase. Sebagai gantinya, Bitcoin Core menggunakan teknik yang lebih sederhana: transaksi dikirim dengan delay acak untuk mempersulit timing analysis, meski tidak seefektif Dandelion.

Privasi di Bitcoin bukan hanya tentang menyembunyikan jumlah transaksi atau identitas on-chain, melainkan juga tentang menyembunyikan dari mana transaksi berasal di level jaringan P2P. Dandelion adalah salah satu upaya paling cerdas untuk memecahkan masalah ini tanpa mengorbankan kecepatan propagasi transaksi.

Dandelion Visualizer — Stem Phase & Fluff Phase
Tab pertama: perbandingan flooding biasa vs Dandelion — seberapa sulit attacker menentukan sumber transaksi. Tab kedua: cara kerja stem phase dan fluff phase secara visual.
Saat kamu mengirim transaksi, siapapun yang memonitor jaringan bisa melihat dari node mana transaksi pertama muncul. Dandelion menyembunyikan sumber asli dengan menyebarkan transaksi secara senyap dulu sebelum di-flood.
Analogi
Flooding biasa: Kamu berdiri di tengah kerumunan dan berteriak "Saya punya surat ini!" Semua orang langsung tahu kamu pengirimnya.

Dandelion: Kamu bisikkan surat ke satu orang. Dia bisikkan ke orang berikutnya. Setelah beberapa bisikan, barulah seseorang mengumumkannya keras-keras. Tidak ada yang tahu surat itu berasal dari kamu.
Flooding Biasa — Sumber Mudah Dilacak
sumber langsung terlihat
IP mudah dilacak
Dandelion — Sumber Tersembunyi
stem phase tersembunyi
fluff dari node acak
sumber tidak jelas
Kemampuan attacker menentukan sumber transaksi:
Flooding biasa
~90% akurat — hampir pasti bisa dilacak
~90%
Dandelion (BIP 156)
~12%
~12%
Random delay (Bitcoin Core)
~55% — lebih sulit tapi masih bisa
~55%
Status implementasi (per 2025):
Dandelion++ belum di-merge ke Bitcoin Core karena kompleksitas dan kekhawatiran potensi serangan DoS via stem phase. Bitcoin Core saat ini menggunakan random delay sederhana. Beberapa node software lain sudah mengimplementasikan Dandelion++.
Dandelion membagi propagasi transaksi menjadi dua fase yang sangat berbeda. Stem phase tersembunyi, fluff phase seperti flooding biasa tapi dari titik yang tidak terduga.
Mengapa disebut Dandelion (bunga dandelion)?
Bunga dandelion punya batang tipis dan panjang (stem), lalu di ujungnya biji-biji kecil menyebar ke segala arah saat angin bertiup (fluff). Transaksi Bitcoin dalam Dandelion bergerak persis seperti itu: senyap dan linear di awal, lalu meledak menyebar ke seluruh jaringan dari satu titik yang tidak terduga.
FASE 1 — STEM PHASE
Batang Dandelion — Propagasi Senyap
Transaksi diteruskan satu per satu secara linear, tidak masuk mempool normal.
Node pilih satu peer secara acak
Peer itu teruskan ke satu peer lagi
Berlanjut selama ~2-10 hop
Tidak ada flooding, tidak ada mempool
Attacker tidak bisa bedakan sumber asli dari forwarder
Seperti berbisik dari telinga ke telinga — tidak ada yang bisa dengar dari luar
FASE 2 — FLUFF PHASE
Meledak Dandelion — Flooding Normal
Setelah beberapa hop, satu node memutuskan untuk mulai flooding seperti biasa.
Node pilih secara acak: terus stem atau mulai fluff
Probabilitas fluff: ~10% per hop
Saat fluff: transaksi masuk mempool dan di-flood ke semua peer
Dari sini, propagasi seperti biasa
Node yang mulai fluff bukan pengirim asli
Seperti seseorang di tengah kerumunan tiba-tiba mengumumkan — bukan berarti dia pengirimnya
Visualisasi alur Dandelion:
Dandelion++ vs Dandelion asli (BIP 156):
Dandelion asli rentan: kalau attacker ada di stem path, ia bisa melacak jalurnya. Dandelion++ memperbaiki ini dengan memilih stem peer berbeda untuk setiap transaksi dari subset peer yang stabil, sehingga attacker tidak bisa memprediksi atau mempengaruhi stem path.
← Daftar Bab
BLK #915,217
Bab 19 · 19.1
Miner dibayar oleh dua sumber yang sangat berbeda karakternya — dan proporsinya akan berubah drastis seiring waktu
Anatomi Revenue Miner — Block Reward, Fee, dan Coinbase Transaction

Sebelum bicara tentang mining economics, perlu dipahami dulu dari mana uang miner sebenarnya berasal. Jawabannya sederhana tapi sering disalahpahami: miner mendapat dua sumber pendapatan yang sangat berbeda karakternya.

Block reward: bitcoin yang dicetak oleh protokol

Block reward adalah bitcoin baru yang diciptakan dalam setiap block sesuai jadwal yang sudah ditentukan sejak genesis block. Ini bukan uang yang diambil dari siapapun, melainkan benar-benar baru dicetak oleh protokol. Saat ini block reward adalah 3,125 BTC per block. Jumlah ini berkurang setengah setiap 210.000 block (sekitar 4 tahun) dalam proses yang disebut halving.

Transaction fees: pasar terbuka yang fluktuatif

Sumber pendapatan kedua adalah transaction fees dari semua transaksi yang dimasukkan ke dalam block. Fee adalah selisih antara total input dan total output sebuah transaksi, dan yang "hilang" dari UTXO set ini otomatis menjadi milik miner yang memasukkan transaksi tersebut ke block. Tidak seperti block reward yang tetap dan terprediksi, fee sangat fluktuatif. Pengirim transaksi bersaing untuk masuk ke block berikutnya dengan menawarkan fee yang cukup tinggi untuk menarik minat miner.

Coinbase transaction: satu-satunya cara bitcoin baru diciptakan

Block reward diklaim miner melalui coinbase transaction, yaitu transaksi pertama dalam setiap block yang tidak punya input dari UTXO manapun. Ini adalah satu-satunya transaksi yang bisa menciptakan bitcoin baru, dan valid sesuai aturan konsensus. Output coinbase tidak bisa dibelanjakan selama 100 block berikutnya, dikenal sebagai coinbase maturity rule, untuk melindungi ekosistem dari kondisi di mana block di-orphan setelah miner sudah membelanjakan reward.

Proporsi yang berubah seiring waktu

Saat ini block reward mendominasi pendapatan miner, sekitar 95-99% dari total revenue. Ini akan berubah seiring halving-halving berikutnya. Pada akhirnya, sesuai jadwal yang sudah ditentukan sejak genesis block, block reward akan mencapai nol sekitar tahun 2140 dan miner hanya bergantung sepenuhnya pada fee. Pertanyaan apakah fee saja cukup untuk mengamankan jaringan adalah salah satu pertanyaan terbuka paling penting dalam ekonomi Bitcoin.

Mengapa ini penting untuk keamanan jaringan

Revenue miner adalah yang membayar hashrate. Hashrate yang tinggi berarti serangan 51% menjadi sangat mahal. Kalau revenue miner turun karena harga Bitcoin turun atau block reward berkurang tanpa kenaikan fee yang cukup, hashrate bisa turun dan jaringan menjadi lebih rentan. Memahami dari mana uang miner berasal adalah dasar untuk memahami keamanan ekonomi Bitcoin.

Dua sumber revenue miner ini bukan kebetulan, melainkan desain yang disengaja. Block reward memastikan miner punya insentif kuat di awal saat transaksi masih sedikit. Fee memastikan insentif tetap ada setelah block reward habis. Yang menjadi pertanyaan besar adalah apakah transisi dari block reward ke fee sebagai sumber utama bisa berjalan mulus tanpa mengorbankan keamanan jaringan.

Revenue Miner — Proporsi per Era & Anatomi Coinbase Transaction
Tab pertama: pilih era Bitcoin untuk melihat komposisi block reward vs fee dan bagaimana proporsinya berubah dari 2009 hingga endpoint protokol tahun 2140. Tab kedua: struktur coinbase transaction yang menciptakan bitcoin baru di setiap block.
Miner mendapat block reward (bitcoin baru yang dicetak protokol) dan transaction fees. Proporsinya berubah drastis seiring halving. Pilih era untuk melihat angkanya.
Pilih era Bitcoin:
Block Reward
3,125 BTC
per block, ~setiap 10 menit
Rata-rata Fee per Block
~0,15 BTC
fluktuatif, tergantung demand
Proporsi Fee dari Total
~4,6%
sisanya dari block reward
Komposisi revenue per block:
Block Reward
Proporsi fee dari total revenue — semua era:
Coinbase transaction adalah transaksi pertama di setiap block dan satu-satunya cara bitcoin baru bisa diciptakan sesuai jadwal protokol.
Struktur coinbase transaction:
Posisi di block
Index 0 (pertama)
Selalu transaksi pertama di setiap block. Node otomatis tahu ini adalah coinbase karena posisinya.
Seperti halaman pertama buku yang selalu berisi judul dan nama penerbit.
Input (coinbase input)
Tidak ada UTXO
Tidak mereferensikan UTXO manapun. Satu-satunya transaksi yang valid tanpa input dari UTXO set yang sudah ada.
Seperti sertifikat lahir yang diterbitkan negara — bukan salinan dokumen sebelumnya, tapi dokumen yang dibuat baru.
Output 1 — Block Reward
3,125 BTC
Bitcoin baru yang dicetak sesuai jadwal konsensus. Tidak bisa melebihi jumlah yang ditentukan protokol — node lain akan menolak block yang melanggar ini.
Seperti gaji resmi yang ditetapkan dalam kontrak — tidak bisa melebihi angka yang tertulis.
Output 2 — Transaction Fees
Σ (input − output) semua tx
Total selisih antara input dan output semua transaksi dalam block. Dikumpulkan otomatis oleh protokol.
Seperti tip yang otomatis masuk ke laci kasir setiap akhir hari — tidak perlu diminta satu per satu.
Coinbase Maturity
100 block (~16,7 jam)
Output coinbase tidak bisa dibelanjakan sampai 100 block setelahnya. Melindungi ekosistem dari kondisi di mana block di-orphan setelah miner sudah membelanjakan reward.
Seperti cek yang baru bisa dicairkan setelah 100 hari — memastikan cek tidak ditarik kembali sebelum sempat digunakan.
Mengapa jumlah output coinbase diverifikasi ketat?
Setiap full node memverifikasi bahwa total output coinbase transaction tidak melebihi block reward yang diizinkan ditambah total fee dari semua transaksi dalam block. Kalau miner mencoba membuat lebih dari yang diizinkan, block langsung ditolak oleh seluruh jaringan. Ini adalah salah satu aturan konsensus paling fundamental — tidak ada cara untuk mencetak bitcoin melebihi jadwal yang sudah ditentukan sejak genesis block.
Bab 19 · 19.2
Tidak peduli berapa banyak atau sedikit miner yang aktif, Bitcoin selalu menemukan satu block setiap 10 menit — bagaimana ini bisa terjadi?
Difficulty Adjustment — Bagaimana Bitcoin Mempertahankan 10 Menit

Difficulty adjustment sudah kita bahas mekanismenya di 5.4. Di sana pertanyaannya teknis: bagaimana cara kerjanya. Di sini pertanyaannya ekonomi: apa akibatnya bagi uang miner, dan kenapa mekanisme ini yang membuat mining tidak pernah benar-benar mati.

Salah satu mekanisme paling elegan dalam Bitcoin adalah difficulty adjustment: sistem yang secara otomatis menyesuaikan seberapa sulit menemukan block baru, sehingga rata-rata satu block ditemukan setiap 10 menit, tidak peduli berapa banyak atau sedikit miner yang aktif.

Mengapa 10 menit?

Sepuluh menit adalah trade-off yang disengaja. Terlalu cepat berarti block baru ditemukan sebelum block sebelumnya sempat menyebar ke seluruh jaringan, meningkatkan risiko fork yang tidak disengaja dan memberikan keuntungan kepada miner dengan koneksi paling cepat. Terlalu lambat berarti konfirmasi transaksi pertama butuh terlalu lama. Sepuluh menit memberi waktu cukup untuk propagasi block ke seluruh jaringan sambil tetap memberikan konfirmasi yang cukup cepat.

Mekanisme difficulty adjustment

Setiap 2.016 block (sekitar 2 minggu kalau rata-rata tetap 10 menit), seluruh jaringan secara otomatis menghitung ulang difficulty target. Caranya: hitung berapa lama 2.016 block terakhir diselesaikan, bandingkan dengan target 20.160 menit (2 minggu ideal), lalu sesuaikan secara proporsional.

Kalau 2.016 block terakhir diselesaikan dalam 7 hari karena hashrate naik, difficulty dinaikkan agar block kembali butuh rata-rata 10 menit. Kalau diselesaikan dalam 28 hari karena hashrate turun, difficulty diturunkan. Ada batasan penting: difficulty tidak bisa naik atau turun lebih dari 4 kali dalam satu penyesuaian, untuk mencegah perubahan ekstrem yang bisa destabilisasi jaringan.

Difficulty target sebagai angka

Difficulty target adalah angka 256-bit yang harus lebih besar dari hash block yang valid. Semakin kecil angka target, semakin sulit menemukan hash yang valid karena miner harus mencoba lebih banyak kombinasi sebelum menemukan hash yang cukup kecil. Tidak ada server pusat yang menghitung difficulty, karena setiap node menghitung sendiri dari data blockchain yang sama dan karena prosesnya deterministik, semua node mendapat angka yang identik.

Implikasi ekonomis

Difficulty adjustment membuat Bitcoin self-regulating dari sisi produksi. Kalau harga Bitcoin naik dan lebih banyak miner masuk, difficulty naik dan biaya per block ikut naik sampai profitabilitas kembali ke ekuilibrium. Kalau harga turun dan miner keluar, difficulty turun sehingga mining kembali ekonomis bagi miner yang tersisa. Ini juga yang membuat jadwal emisi Bitcoin bisa diprediksi: meski hashrate berubah drastis, halving tetap terjadi setiap ~210.000 block karena difficulty adjustment mempertahankan 10 menit per block.

Difficulty adjustment adalah salah satu inovasi terpenting Satoshi yang sering tidak mendapat perhatian cukup. Tanpanya, Bitcoin tidak bisa berfungsi sebagai sistem yang bisa diprediksi: jadwal emisi bisa kacau, propagasi block bisa tidak konsisten, dan seluruh mekanisme konsensus bisa rusak. Kesederhanaan formulanya menyembunyikan betapa fundamentalnya peran yang dimainkan.

Difficulty Adjustment Visualizer
Tab pertama: pilih skenario perubahan hashrate dan lihat bagaimana difficulty adjustment bekerja langkah per langkah, plus simulasi 5 epoch menuju ekuilibrium. Tab kedua: formula aktual yang digunakan dan penjelasan batas 4×.
Setiap 2.016 block, jaringan menghitung ulang difficulty. Pilih skenario untuk lihat bagaimana adjustment bekerja dan bagaimana hashrate yang berubah dikompensasi oleh protokol.
📈
Hashrate naik 2× — block terlalu cepat
Banyak miner baru bergabung. 2.016 block diselesaikan dalam 7 hari, lebih cepat dari target 14 hari.
📉
Hashrate turun 50% — block terlalu lambat
Banyak miner keluar. 2.016 block diselesaikan dalam 28 hari, lebih lambat dari target 14 hari.
➡️
Hashrate stabil — tidak ada adjustment
2.016 block diselesaikan tepat 14 hari. Difficulty tidak berubah.
🚀
Hashrate naik 5× — terkena batas maksimum
Lonjakan hashrate ekstrem. Adjustment dibatasi maksimum 4× oleh protokol.
Waktu aktual 2.016 block
7 hari
target: 14 hari
Adjustment difficulty
+100% (2×)
naik: block lebih sulit
Block time setelah adjustment
~10 menit
kembali ke target
Langkah kalkulasi:
Simulasi 5 epoch — stabilisasi menuju ekuilibrium:
Formula difficulty adjustment Bitcoin sederhana tapi kuat. Ada satu pembatasan penting: perubahan tidak boleh lebih dari 4× dalam satu epoch.
// Difficulty Adjustment Formula
// Dijalankan setiap 2.016 block oleh setiap node secara independen

target_time = 2016 × 10 // 20.160 menit = ~14 hari
actual_time = timestamp[2016] - timestamp[0] // dalam menit

ratio = actual_time / target_time

// Batas: ratio tidak boleh lebih dari 4× atau kurang dari 1/4×
ratio = max(0.25, min(4.0, ratio))

new_target = old_target × ratio
// Target lebih besar = difficulty lebih mudah
// Target lebih kecil = difficulty lebih sulit
Mengapa batas 4× penting?
Tanpa batas, lonjakan hashrate yang sangat besar bisa membuat difficulty naik terlalu drastis dalam satu epoch. Batas 4× memastikan stabilisasi bertahap — maksimum beberapa epoch untuk kembali ke ekuilibrium meski ada perubahan hashrate yang sangat ekstrem.
Desentralisasi kalkulasi
Tidak ada server pusat yang menghitung difficulty. Setiap node menghitung sendiri dari data blockchain yang sama dan karena deterministik, semua node mendapat angka yang identik. Block dengan difficulty yang salah ditolak oleh semua node.
Detail implementasi: off-by-one
Timestamp yang dibandingkan adalah antara block pertama dan terakhir di setiap epoch, bukan genesis block. Genesis block (#0) punya timestamp yang di-hardcode sehingga epoch pertama tidak menimbulkan masalah. Ini contoh bagaimana implementasi nyata sering punya detail yang tidak ada di deskripsi tingkat tinggi.
Bab 19 · 19.3
Setiap 210.000 block, block reward berkurang setengah — dan ini membawa pertanyaan terbuka paling penting dalam ekonomi Bitcoin jangka panjang
Halving & Security Budget — Apa yang Terjadi Saat Block Reward Mendekati Nol?

Halving adalah salah satu mekanisme paling fundamental dalam Bitcoin: setiap 210.000 block, block reward berkurang tepat setengah. Ini bukan keputusan yang diambil siapapun, melainkan terjadi secara otomatis sesuai aturan yang sudah tertanam dalam protokol sejak genesis block.

Jadwal halving yang sudah pasti

Halving pertama di block #210.000 (November 2012): block reward turun dari 50 BTC ke 25 BTC. Halving kedua di block #420.000 (Juli 2016): turun ke 12,5 BTC. Halving ketiga di block #630.000 (Mei 2020): turun ke 6,25 BTC. Halving keempat di block #840.000 (April 2024): turun ke 3,125 BTC. Total bitcoin yang bisa ada adalah 21 juta, hasil dari penjumlahan deret geometri: 210.000 block × 50 BTC × (1 + 0,5 + 0,25 + ...) = 21 juta BTC.

Security budget: konsep kunci

Security budget adalah total revenue miner dalam satu periode waktu tertentu. Ini adalah ukuran ekonomis dari seberapa mahal serangan terhadap jaringan: semakin tinggi security budget, semakin banyak hashrate yang bisa dibeli miner, dan semakin mahal bagi penyerang untuk mengumpulkan hashrate yang cukup untuk serangan 51%. Security budget terdiri dari block reward dalam BTC dikalikan harga BTC saat itu, ditambah total fee yang dikumpulkan. Saat ini block reward mendominasi sekitar 95-99% dari total security budget.

Pertanyaan terbuka: apakah fee saja cukup?

Saat block reward mendekati nol di abad berikutnya, miner bergantung sepenuhnya pada fee. Apakah fee akan cukup untuk mempertahankan hashrate yang tinggi adalah salah satu pertanyaan paling penting dan genuinely belum terjawab dalam ekonomi Bitcoin. Ada yang berpendapat bahwa seiring adopsi meningkat, volume transaksi dan total fee per block akan meningkat secara alami. Ada pula yang berpendapat bahwa fee per transaksi mungkin tidak cukup tinggi untuk menggantikan block reward, terutama kalau solusi layer-2 mengambil banyak transaksi dari layer-1. Tidak ada yang bisa menjawab ini dengan pasti hari ini karena bergantung pada banyak variabel yang tidak bisa diprediksi.

Yang bisa diketahui sekarang

Proporsi fee dari total security budget perlahan naik setiap halving, bukan karena fee melonjak drastis, tapi karena block reward yang terus berkurang. Apakah tren ini akan berlanjut dengan kecepatan yang cukup adalah pertanyaan yang hanya bisa dijawab oleh waktu dan data masa depan.

Block reward akan mendekati nol sekitar tahun 2140, lebih dari 100 tahun dari sekarang. Banyak aspek ekosistem Bitcoin di 2140 tidak bisa diprediksi dari 2025. Yang pasti: mekanisme halving adalah aturan konsensus yang tidak bisa diubah tanpa persetujuan seluruh jaringan, dan pertanyaan tentang security budget jangka panjang akan terus relevan seiring setiap halving berikutnya.

Halving Timeline & Security Budget Calculator
Tab pertama: timeline halving dan kalkulator security budget — atur harga BTC dan rata-rata fee untuk melihat komposisi revenue miner saat ini. Tab kedua: pertanyaan terbuka tentang long-term security budget dan dua sudut pandang yang ada.
Block reward berkurang setengah setiap 210.000 block. Security budget = total revenue miner yang menentukan seberapa mahal serangan. Atur slider untuk lihat komposisi saat ini.
Harga BTC (USD):
$10rb $200rb
$65.000
Rata-rata fee per block (BTC):
0,05 2,00
0,15 BTC
Revenue block reward / block
$203.125
3,125 BTC × harga
Revenue fee / block
$9.750
rata-rata fee × harga
Total security budget / tahun
~$11,1 M
~52.560 block/tahun
Proporsi block reward vs fee:
Block Reward
Saat block reward mendekati nol, miner bergantung sepenuhnya pada fee. Ini adalah pertanyaan genuinely terbuka yang belum bisa dijawab hari ini.
Pertanyaan terbuka: apakah fee saja cukup untuk security budget jangka panjang?
Tidak ada yang bisa menjawab ini dengan pasti karena bergantung pada adopsi, harga, volume transaksi, dan struktur ekosistem Bitcoin di masa depan.
Sudut pandang A
Seiring adopsi meningkat, volume transaksi dan total fee per block akan meningkat secara alami. Security budget bisa tetap terjaga meski block reward turun, kalau demand terhadap block space tetap tinggi.
Sudut pandang B
Fee per transaksi mungkin tidak cukup tinggi untuk menggantikan block reward, terutama kalau solusi layer-2 mengambil banyak transaksi dari layer-1. Security budget bisa tertekan tanpa solusi yang jelas.
Yang bisa diketahui sekarang:
Proporsi fee dari total security budget perlahan naik setiap halving, bukan karena fee melonjak drastis, tapi karena block reward yang terus berkurang. Apakah tren ini berlanjut dengan kecepatan yang cukup hanya bisa dijawab oleh data masa depan.
Konteks penting:
Block reward akan mendekati nol sekitar tahun 2140, lebih dari 100 tahun dari sekarang. Yang pasti: mekanisme halving adalah aturan konsensus yang tidak bisa diubah tanpa persetujuan seluruh jaringan.
Block reward per halving (skala logaritmik):
Bab 19 · 19.4
Solo mining hampir mustahil untuk miner kecil hari ini — pool hadir untuk memecahkan masalah variance, bukan mengurangi total pendapatan
Mining Pool Economics — Mengapa Miner Bergabung ke Pool?

Solo mining Bitcoin hari ini secara statistik hampir mustahil untuk miner kecil. Dengan hashrate jaringan yang mencapai ratusan exahash per detik, seorang miner dengan satu ASIC modern yang menghasilkan 100 terahash per detik memiliki probabilitas menemukan block sekali setiap ratusan tahun. Mining pool memecahkan masalah ini dengan menggabungkan hashrate banyak miner dan membagi reward secara proporsional.

Bagaimana mining pool bekerja

Pool operator menjalankan full node dan menyiapkan block template. Miner yang bergabung menerima pekerjaan dari pool: mereka diminta mencari hash yang memenuhi target yang jauh lebih mudah dari target jaringan sebenarnya. Hash yang memenuhi target yang lebih mudah ini disebut share sebagai bukti bahwa miner benar-benar bekerja. Ketika salah satu miner menemukan hash yang memenuhi target jaringan yang sebenarnya, pool mendapat block reward dan mendistribusikannya ke semua anggota berdasarkan jumlah share yang masing-masing berkontribusikan.

Skema pembayaran: PPS, PPLNS, dan FPPS

PPS (Pay Per Share) membayar miner untuk setiap share yang valid, terlepas dari apakah pool benar-benar menemukan block atau tidak. Pool menanggung semua risiko variance. Lebih stabil untuk miner tapi pool biasanya mengambil fee lebih tinggi. PPLNS (Pay Per Last N Shares) membayar miner berdasarkan share yang dikontribusikan dalam window tertentu sebelum block ditemukan. Miner ikut menanggung variance, fee pool lebih rendah, dan lebih menguntungkan untuk miner yang konsisten. FPPS (Full Pay Per Share) seperti PPS tapi termasuk estimasi fee transaksi, bukan hanya block reward.

Pool fee dan implikasinya

Pool mengambil persentase kecil dari total reward sebagai biaya operasional, biasanya 1-3%. Total pendapatan jangka panjang antara solo mining dan pool mining secara teori sama jika hashrate sama, tapi pool memberikan pendapatan yang jauh lebih konsisten dan bisa diprediksi karena variance yang jauh lebih rendah.

Implikasi terhadap desentralisasi

Mining pool meningkatkan efisiensi dan stabilitas pendapatan miner kecil, tapi pool operator yang mengelola block template punya pengaruh atas transaksi mana yang dimasukkan ke block. Miner yang bergabung ke pool mendelegasikan keputusan ini ke operator pool. Konsentrasi hashrate di pool-pool besar adalah sesuatu yang diperhatikan komunitas dari perspektif desentralisasi jaringan.

Pool tidak meningkatkan total pendapatan miner secara agregat, total reward dari jaringan tetap sama. Yang dilakukan pool adalah mendistribusikan ulang reward dari pola yang tidak teratur (solo) menjadi aliran yang konsisten dan terprediksi. Ini adalah trade-off antara variance dan sentralisasi sedikit di level block template.

Mining Pool Visualizer — Variance & Skema Pembayaran
Tab pertama: geser slider hashrate untuk lihat bagaimana variance solo mining vs pool mining berbeda secara visual. Tab kedua: perbandingan skema pembayaran PPS, PPLNS, dan FPPS dengan contoh angka konkret.
Solo mining menghasilkan reward besar tapi sangat tidak teratur. Pool menghasilkan pendapatan kecil tapi konsisten setiap hari. Total jangka panjang sama, variance yang berbeda.
Analogi
Solo mining: seperti membeli satu tiket lotre per hari. Hadiahnya sangat besar, tapi kemungkinan menang sangat kecil dan tidak bisa diprediksi kapan.

Pool mining: seperti patungan beli ribuan tiket lotre bersama ribuan orang. Menang lebih sering, tapi hadiahnya dibagi. Total penghasilan sama secara statistik, tapi jauh lebih konsisten.
Hashrate miner kamu:
100 TH/s 10 PH/s
1 PH/s (1.000 TH/s)
Solo Mining
~8,5 tahun
rata-rata waktu menemukan 1 block
bisa lebih cepat atau jauh lebih lama
Pool Mining (pool fee 1%)
~0,00031 BTC/hari
pendapatan konsisten setiap hari
proporsional dengan hashrate
Simulasi pendapatan 12 minggu — solo vs pool (hashrate sama):
Solo Mining
Pool Mining
Pool menggunakan berbagai skema pembayaran yang berbeda dalam cara mendistribusikan reward. Perbedaan utama: siapa yang menanggung risiko variance.
PPS — PAY PER SHARE
Dibayar per share valid, terlepas dari apakah pool menemukan block
Pool menanggung semua risiko variance. Miner mendapat pembayaran tetap untuk setiap share.
Pendapatan paling stabil dan terprediksi untuk miner
Pool fee biasanya lebih tinggi (2-3%) karena pool menanggung risiko
Cocok untuk miner yang butuh arus kas yang konsisten
Seperti karyawan dengan gaji tetap — tidak peduli perusahaan untung atau rugi bulan ini, gajimu tetap.
PPLNS — PAY PER LAST N SHARES
Dibayar berdasarkan share dalam window tertentu sebelum block ditemukan
Miner ikut menanggung variance bersama pool. Reward hanya ada kalau pool menemukan block.
Fee pool lebih rendah (0-1%) karena miner ikut menanggung risiko
Lebih menguntungkan untuk miner yang konsisten dan loyal
Miner baru tidak langsung mendapat bagian penuh
Seperti bagi hasil usaha — kalau bulan ini untung, semua dapat. Kalau tidak ada block, tidak ada pembagian.
FPPS — FULL PAY PER SHARE
Seperti PPS tapi termasuk estimasi fee transaksi, bukan hanya block reward
Miner mendapat bagian dari block reward DAN estimasi fee transaksi. Pool menanggung risiko variance total termasuk fluktuasi fee.
Lebih menguntungkan dari PPS di era fee tinggi
Pool menanggung risiko fluktuasi fee
Digunakan oleh beberapa pool besar saat ini
Seperti PPS tapi gajimu juga termasuk estimasi tip pelanggan — lebih menguntungkan di saat ramai.
Contoh: miner dengan 1% hashrate pool, pool menemukan 6 block hari ini (3,125 BTC + ~0,15 BTC fee):
PPS
~0,03125 BTC
1% × 3,125 BTC × 6 block. Konsisten tiap hari kalau share konsisten.
PPLNS
~0,03125 BTC
Sama kalau konsisten. Tapi kalau pool hanya dapat 3 block, hanya dapat setengah.
FPPS
~0,03215 BTC
1% × (3,125 + 0,15) × 6 block. Lebih tinggi karena termasuk fee transaksi.
Bab 19 · 19.5
Apakah miner yang rasional selalu mengikuti protokol? Selfish mining menunjukkan bahwa dalam kondisi tertentu, jawabannya tidak
Selfish Mining & Miner Behavior — Kapan Miner Rasional Menyimpang dari Protokol?

Asumsi dasar Bitcoin adalah bahwa miner yang rasional akan selalu mengikuti protokol karena itulah yang paling menguntungkan. Tapi apakah ini selalu benar? Selfish mining adalah strategi yang menunjukkan bahwa dalam kondisi tertentu, miner bisa mendapat keuntungan lebih besar dengan menyimpang dari protokol honest mining.

Honest mining vs selfish mining

Honest mining adalah strategi default: saat miner menemukan block baru, ia langsung menyebarkannya ke seluruh jaringan. Semua miner mulai bekerja di atas block terbaru secara bersamaan dan probabilitas mendapat reward proporsional dengan hashrate masing-masing. Selfish mining, pertama kali dianalisis secara formal oleh Eyal dan Sirer pada 2013, adalah strategi di mana miner dengan hashrate signifikan menyembunyikan block yang baru ditemukan alih-alih langsung menyebarkannya. Miner terus bekerja secara diam-diam di atas block tersembunyi ini sambil jaringan lain masih bekerja di block lama.

Mengapa selfish mining bisa menguntungkan

Kalau miner selfish bisa menemukan block kedua sebelum jaringan menemukan satu block, ia punya keunggulan dua block. Ketika chain yang lebih panjang akhirnya dipublikasikan, semua pekerjaan jaringan lain menjadi orphan dan miner selfish mendapat lebih dari porsinya secara proporsional. Analisis Eyal dan Sirer menunjukkan bahwa selfish mining bisa menguntungkan jika miner memiliki lebih dari sekitar 33% hashrate jaringan, tergantung konektivitas jaringan.

Mitigasi: propagasi cepat menggeser threshold

Semakin cepat block menyebar ke seluruh jaringan, semakin kecil window bagi miner selfish untuk memanfaatkan keunggulan. Compact blocks dan teknologi propagasi cepat seperti FIBRE secara langsung meningkatkan threshold hashrate yang diperlukan agar selfish mining menguntungkan. Selain itu, pola block yang tidak wajar bisa dideteksi oleh node dan peneliti yang memonitor jaringan, dan pool besar yang ketahuan melakukan selfish mining bisa kehilangan kepercayaan miner yang bergabung.

Fee sniping: bentuk lain dari miner behavior

Fee sniping adalah skenario lain: miner dengan hashrate besar bisa mencoba me-reorganisasi block terakhir untuk mengambil fee transaksi yang sangat tinggi di block tersebut. Ini lebih relevan di masa depan ketika fee menjadi komponen dominan revenue miner. Bitcoin Core sudah mengimplementasikan default locktime untuk mengurangi insentif fee sniping dengan membuat transaksi tidak valid di block sebelum tinggi tertentu.

Selfish mining bukan hanya teori akademis, melainkan pengingat bahwa desain insentif Bitcoin harus terus dianalisis seiring berubahnya kondisi jaringan. Semakin besar proporsi fee dari total revenue, semakin penting untuk memahami bagaimana insentif miner bisa bergeser. Yang menjaga Bitcoin tetap sehat bukan hanya kriptografi, tapi desain ekonomi yang membuat perilaku jujur menjadi strategi yang paling rasional.

Selfish Mining Visualizer
Tab pertama: ikuti langkah demi langkah bagaimana strategi selfish mining bekerja secara visual. Tab kedua: slider hashrate untuk lihat kapan selfish mining menguntungkan vs merugikan. Tab ketiga: solusi dan mitigasi yang membatasi efektivitas selfish mining.
Selfish mining: menyembunyikan block yang ditemukan untuk mendapat keunggulan chain. Klik setiap langkah untuk lihat bagaimana strategi ini bekerja.
Visualisasi chain:
Selfish mining hanya menguntungkan di atas threshold ~33% hashrate. Di bawah itu, biaya risiko lebih besar dari potensi keuntungan.
Hashrate miner (% dari jaringan):
5% 49%
35%
Expected revenue — Honest Mining
35% dari total
selalu proporsional dengan hashrate
Expected revenue — Selfish Mining
~39,5%
lebih tinggi dari porsi hashrate
Ada beberapa mekanisme yang secara natural membatasi atau mencegah selfish mining — baik teknis maupun ekonomis.
SOLUSI TEKNIS #1 — PROPAGASI YANG LEBIH CEPAT
Compact blocks & FIBRE mempersempit window selfish mining
Semakin cepat block menyebar ke seluruh jaringan, semakin kecil window bagi miner selfish untuk memanfaatkan keunggulan. Compact blocks dan teknologi propagasi cepat secara langsung meningkatkan threshold hashrate yang diperlukan.
Seperti gosip yang menyebar sangat cepat — tidak ada lagi keuntungan menyimpan informasi karena semua orang sudah tahu dalam hitungan detik.
SOLUSI TEKNIS #2 — DETEKSI POLA ANOMALI
Node dan peneliti bisa mendeteksi pola block yang tidak wajar
Selfish mining meninggalkan jejak statistik: orphan rate lebih tinggi, block tiba dalam burst setelah periode sepi, dan pola timestamp yang mencurigakan. Komunitas yang memonitor jaringan bisa mengidentifikasi pool yang dicurigai.
Seperti polisi lalu lintas yang mendeteksi pembalap curang dari rekaman kamera — jejaknya tetap ada meski tidak tertangkap langsung.
SOLUSI EKONOMIS — REPUTASI DAN INSENTIF SOSIAL
Pool yang ketahuan kehilangan miner dan seluruh pendapatan
Pool besar bergantung pada kepercayaan ribuan miner yang bergabung. Kalau ketahuan melakukan selfish mining, miner bisa pindah ke pool lain. Kehilangan hashrate jauh lebih mahal dari keuntungan jangka pendek selfish mining.
Seperti bisnis yang curang — mungkin untung sekali-kali, tapi kehilangan pelanggan jauh lebih mahal dari keuntungan kecurangan itu sendiri.
FAKTOR PEMBATAS — VARIANCE YANG TINGGI
Selfish mining meningkatkan variance pendapatan miner itu sendiri
Ada periode di mana block tersembunyi di-orphan oleh jaringan sebelum sempat dipublikasikan. Miner selfish kehilangan reward di periode itu. Variance yang tinggi membuat pendapatan lebih tidak terprediksi bahkan bagi pelakunya.
Seperti spekulan vs investor jangka panjang — yang pertama mungkin untung besar sekali-kali, tapi juga bisa rugi besar.
Simulasi: bagaimana kecepatan propagasi menggeser threshold selfish mining
Lambat Cepat
70%
Bab 19 · 19.6
Mining Bitcoin adalah industri global yang mengikuti energi murah, bergantung pada hardware sangat khusus, dan beroperasi lewat protokol yang menentukan siapa yang mengontrol isi block
Ekosistem Mining — Hardware, Energi, dan Protokol

Mining Bitcoin di dunia nyata adalah industri yang sangat berbeda dari gambaran sederhana "komputer yang menebak angka." Ia melibatkan hardware khusus yang dirancang untuk satu tujuan, keputusan energi yang sangat ekonomis, distribusi geografis yang mengikuti harga listrik, dan protokol komunikasi yang menentukan siapa yang punya kontrol atas konten block.

ASIC: hardware yang lahir dari satu tujuan

ASIC (Application-Specific Integrated Circuit) adalah chip yang dirancang khusus untuk menjalankan satu operasi: SHA256 double hash secepat mungkin dengan energi sesedikit mungkin. Metrik kunci efisiensi ASIC adalah joule per terahash (J/TH): berapa energi yang dibutuhkan untuk menghasilkan satu terahash. Generasi pertama ASIC Bitcoin sekitar 2013 butuh lebih dari 1.000 J/TH. Hardware modern terbaik saat ini sudah di kisaran 15-20 J/TH, penurunan efisiensi lebih dari 50 kali lipat dalam satu dekade. Miner dengan hardware lama secara ekonomis terpaksa keluar saat harga Bitcoin turun atau difficulty naik, karena biaya listrik melebihi pendapatan.

Energi dan distribusi geografis

Mining Bitcoin adalah kompetisi efisiensi energi. Miner yang bertahan adalah yang bisa mendapat listrik paling murah: pembangkit hydro yang kelebihan kapasitas, energi panas bumi, flare gas dari ladang minyak, atau energi surya di daerah terpencil. Distribusi hashrate global berubah signifikan seiring regulasi. Setelah China melarang mining pada 2021, hashrate yang tadinya dominan di China bermigrasi ke Amerika Serikat, Kazakhstan, Rusia, dan tempat lain dalam hitungan bulan. Ini menunjukkan bahwa mining sangat mobile secara geografis dan jaringan Bitcoin tahan terhadap regulasi lokal karena hashrate bisa berpindah ke yurisdiksi lain.

Stratum protocol: siapa yang mengontrol block template

Stratum adalah protokol komunikasi antara pool server dan mining hardware. Di Stratum v1 yang masih dominan dipakai saat ini, pool operator yang menyusun block template dan menentukan transaksi apa yang dimasukkan. Miner hanya menerima pekerjaan berupa header yang harus di-hash tanpa kontrol atas isi block. Stratum v2 memperkenalkan job negotiation: miner individual bisa memilih transaksi sendiri dan hanya meminta pool untuk memvalidasi pekerjaan mereka. Ini secara signifikan meningkatkan desentralisasi karena kontrol block template tidak lagi terpusat di pool operator.

Ketiga aspek ini saling terkait: efisiensi hardware menentukan di mana miner bisa beroperasi secara ekonomis, distribusi geografis menentukan ketahanan jaringan terhadap regulasi, dan protokol komunikasi menentukan seberapa terdesentralisasi keputusan tentang isi block. Memahami ketiganya bersama-sama memberikan gambaran yang jauh lebih lengkap tentang bagaimana mining Bitcoin benar-benar bekerja di dunia nyata.

Mining Ecosystem Visualizer
Tiga tab: evolusi efisiensi hardware ASIC dari 2013-2024, distribusi hashrate geografis sebelum dan sesudah China ban 2021, dan perbandingan Stratum v1 vs v2 dalam mengontrol block template.
ASIC dirancang khusus untuk SHA256. Efisiensi diukur dalam J/TH — semakin rendah semakin efisien. Hardware lama tidak bisa bersaing secara ekonomis dengan generasi baru.
Analogi
Bayangkan lomba minum air: di 2013, miner pakai ember besar — banyak energi terbuang. Setiap generasi hardware seperti menemukan wadah yang lebih efisien. Hardware 2024 seperti pipet presisi — hampir tidak ada yang terbuang. Yang masih pakai ember tidak bisa lagi berkompetisi secara ekonomis.
Evolusi efisiensi ASIC Bitcoin — J/TH (lebih rendah = lebih efisien):
ASIC Generasi Pertama (2013)
~1.000+ J/TH
Boros energi, sudah tidak kompetitif secara ekonomis
ASIC Terbaik Saat Ini (2024)
~15-20 J/TH
Mendekati batas efisiensi fisik silikon modern
Mengapa J/TH penting?
Biaya listrik
Semakin rendah J/TH, semakin murah biaya per hash, semakin kompetitif
Mining mengikuti energi murah. Hashrate global sangat mobile — saat satu negara melarang, miner berpindah ke negara lain dalam hitungan bulan.
Analogi
Mining Bitcoin seperti pabrik yang bisa bongkar pasang dalam hitungan minggu. Saat satu negara melarang, pabrik tidak tutup — ia pindah ke negara lain yang menawarkan listrik murah atau regulasi lebih ramah. Hardware miner adalah aset fisik yang bisa dikapalkan ke seluruh dunia.
Pilih periode:
Implikasi untuk ketahanan jaringan:
Setelah China ban 2021, hashrate global turun ~50% dalam beberapa minggu, lalu pulih penuh dalam beberapa bulan. Ini membuktikan bahwa tidak ada satu pun pemerintah yang bisa mematikan Bitcoin secara permanen hanya dengan regulasi lokal.
Stratum adalah protokol komunikasi antara pool dan hardware. Versinya menentukan siapa yang punya kontrol atas konten block.
Analogi
Stratum v1: seperti kontraktor yang menerima pesanan dari bos, di mana bos yang menentukan apa yang dibangun, kontraktor hanya mengerjakan. Pool yang menentukan transaksi apa yang masuk ke block.

Stratum v2: seperti kontraktor yang punya hak memilih material sendiri, ia boleh mengusulkan desain dan bos hanya memvalidasi kualitas. Miner bisa memilih transaksi sendiri.
STRATUM V1 — DOMINAN SAAT INI
Pool yang mengontrol block template
Pool menyusun block template lengkap dengan transaksi yang dipilih
Miner hanya menerima pekerjaan berupa header yang harus di-hash
Miner tidak tahu atau tidak bisa memilih transaksi yang dimasukkan
Komunikasi tidak terenkripsi — rentan terhadap man-in-the-middle
Kontraktor yang hanya tahu "gali lubang di sini" tanpa tahu untuk apa.
STRATUM V2 — GENERASI BARU
Miner bisa memilih transaksi sendiri
Job negotiation: miner bisa menyusun block template sendiri
Pool hanya memvalidasi bahwa pekerjaan hash benar
Komunikasi terenkripsi — lebih aman dari intersepsi
Meningkatkan desentralisasi block template secara signifikan
Kontraktor yang bisa memilih material dan desain sendiri — bos hanya cek kualitas akhir.
Perbandingan alur komunikasi:
Stratum v1:
Pool susun block template
Pool kirim job ke miner
Miner hash header
Miner kirim share ke pool
Pool submit block
Stratum v2 (job negotiation):
Miner susun block template
Miner kirim template ke pool
Pool validasi template
Miner hash header
Miner kirim share ke pool
Miner/pool submit block
← Daftar Bab
BLK #915,217
Bab 20 · 20.1
Seluruh Bitcoin berdiri di atas matematika yang tidak bisa dimanipulasi — dua struktur yang menjadi fondasinya adalah fungsi hash dan kriptografi kurva eliptik
Fondasi: Kriptografi & Identitas

Fungsi hash

Fungsi hash mengambil input berukuran apapun dan menghasilkan output berukuran tetap yang tidak bisa diprediksi dan tidak bisa dibalik. Bitcoin memakai SHA256 secara ekstensif: untuk mining (double SHA256 dari block header), untuk address (SHA256 lalu RIPEMD160), dan untuk Merkle tree (double SHA256 dari setiap pasang hash). Sifat terpenting hash untuk Bitcoin adalah collision resistance (tidak ada dua input berbeda yang menghasilkan hash sama dalam waktu yang wajar) dan avalanche effect (satu bit input yang berubah menghasilkan hash yang sama sekali berbeda).

Kriptografi kurva eliptik

Bitcoin memakai kurva secp256k1. Private key adalah angka acak 256-bit. Public key adalah titik di kurva yang dihasilkan dari perkalian private key dengan generator point G. Operasi ini satu arah: dari private key ke public key mudah, sebaliknya tidak mungkin secara komputasi. Address Bitcoin adalah hash dari public key, bukan public key itu sendiri, menambah lapisan perlindungan ekstra.

ECDSA dan Schnorr

ECDSA adalah skema tanda tangan yang dipakai Bitcoin sejak awal. Ia membuktikan bahwa pengirim memiliki private key yang sesuai dengan public key di UTXO yang dibelanjakan, tanpa mengungkapkan private key itu sendiri. Schnorr signature, diaktifkan bersama Taproot di 2021, lebih efisien dan elegan: tanda tangan linear sehingga bisa diagregasi. MuSig memungkinkan n-of-n multisig yang terlihat identik dengan tanda tangan tunggal di chain, meningkatkan privasi dan efisiensi sekaligus.

Dari key ke address

Private key menghasilkan public key via ECC. Public key di-hash menghasilkan address. Setiap generasi address menggunakan format berbeda: P2PKH (legacy, dimulai dengan 1), P2SH (dimulai dengan 3), P2WPKH (bech32, dimulai dengan bc1q), P2TR (bech32m, dimulai dengan bc1p). Format bukan hanya estetika, melainkan ia menentukan Script yang mengunci UTXO dan bagaimana UTXO tersebut bisa dibelanjakan.

HD wallet dan seed phrase

BIP32 mendefinisikan hierarki deterministik: satu seed menghasilkan seluruh pohon key secara deterministik. BIP39 mendefinisikan representasi seed sebagai 12 atau 24 kata. BIP44 mendefinisikan path derivasi standar. Hasilnya: satu seed phrase bisa memulihkan seluruh wallet di wallet software manapun yang mengikuti standar ini.

Angka-angka kunci: private key 256-bit dengan sekitar 10^77 kemungkinan. SHA256 menghasilkan output 32 bytes, RIPEMD160 menghasilkan 20 bytes untuk address legacy. Schnorr signature hanya 64 bytes vs ECDSA yang 71-72 bytes. Seed phrase BIP39: 12 kata setara 128-bit entropy, 24 kata setara 256-bit entropy.

Bab 20 · 20.2
UTXO adalah unit dasar kepemilikan Bitcoin, dan Script adalah bahasa yang menentukan kondisi pengeluarannya
Transaksi & Script

UTXO dan transaksi

UTXO (Unspent Transaction Output) adalah unit dasar kepemilikan Bitcoin. Setiap transaksi mengkonsumsi UTXO lama sebagai input dan menciptakan UTXO baru sebagai output. Tidak ada saldo yang tersimpan di satu tempat, melainkan saldo adalah jumlah semua UTXO yang bisa dibuka dengan key yang kamu miliki. Setiap UTXO dikunci oleh scriptPubKey dan dibuka oleh scriptSig atau witness dari transaksi yang membelanjakannya.

Fee dan timelock

Fee tidak ditulis eksplisit: ia adalah selisih antara total input dan total output. Miner yang memasukkan transaksi ke block mengklaim selisih ini. Fee rate diukur dalam satoshi per virtual byte karena transaksi berbeda ukurannya. Timelocks memungkinkan transaksi yang hanya bisa dieksekusi di masa depan. nLocktime bekerja di level transaksi (waktu absolut), nSequence bekerja di level input (waktu relatif). OP_CLTV dan OP_CSV memindahkan kondisi ini ke dalam Script itu sendiri sehingga berlaku untuk siapapun yang mencoba membelanjakan.

Bitcoin Script

Script adalah bahasa stack-based yang menentukan kondisi pengeluaran UTXO. P2PKH meminta tanda tangan dan public key. P2SH menyembunyikan script sesungguhnya di balik hash. P2WPKH memindahkan data tanda tangan ke witness field. P2TR memungkinkan key path spending yang terlihat seperti tanda tangan biasa, atau script path spending yang mengungkap salah satu dari banyak kondisi tersembunyi via MAST. Tapscript berjalan di dalam path Taproot dengan OP_CHECKSIGADD untuk multisig yang lebih efisien dan OP_SUCCESS untuk upgrade di masa depan. Miniscript adalah bahasa terstruktur di atas Script yang memungkinkan analisis otomatis dan komposisi script yang aman.

PSBT

PSBT (BIP 174) memisahkan peran penyusun transaksi dan penandatangan, memungkinkan workflow multisig dan hardware wallet yang lebih aman. Wallet software menyusun transaksi dan mengekspornya sebagai file PSBT. Hardware wallet membaca, memverifikasi, menandatangani, dan mengembalikannya. Setelah semua tanda tangan terkumpul, PSBT difinalisasi dan di-broadcast.

Angka-angka kunci: 1 sat/vByte adalah fee minimum relay default. SegWit memberi diskon: witness data dihitung 1/4 weight. P2PKH sekitar 148 vByte per input, P2WPKH sekitar 68 vByte, P2TR key path sekitar 57,5 vByte (paling efisien). Batas data OP_RETURN adalah relay policy per node, bukan aturan konsensus (konvensi lama: 80 bytes).

Bab 20 · 20.3
Proof of Work membuat penulisan sejarah transaksi mahal secara komputasi dan murah untuk diverifikasi
Konsensus & Mining

Proof of Work

Miner berulang kali mengubah nonce di block header sampai hash block memenuhi target difficulty. Karena hash tidak bisa diprediksi, tidak ada jalan pintas. Seluruh jaringan bisa memverifikasi bahwa pekerjaan ini dilakukan hanya dengan satu operasi hash, sementara miner harus mencoba miliaran kemungkinan untuk menemukannya.

Difficulty adjustment

Setiap 2.016 block, jaringan menghitung berapa lama block terakhir diselesaikan, membandingkan dengan target 20.160 menit, lalu menyesuaikan secara proporsional. Batas perubahan 4× per epoch mencegah destabilisasi dari lonjakan hashrate yang ekstrem. Setiap node menghitung adjustment secara independen dan deterministik, tidak ada koordinasi.

Halving dan security budget

Halving terjadi setiap 210.000 block, block reward berkurang tepat setengah. Jadwal ini menghasilkan total suplai maksimum 21 juta BTC sebagai deret geometri. Block reward saat ini 3,125 BTC setelah halving keempat April 2024. Security budget adalah total revenue miner yang menentukan seberapa mahal serangan. Pertanyaan terbuka: apakah fee saja cukup saat block reward mendekati nol sekitar tahun 2140.

Mining pool dan selfish mining

Pool menggabungkan hashrate banyak miner untuk mengurangi variance pendapatan. PPS membayar per share valid terlepas dari apakah pool menemukan block. PPLNS membayar berdasarkan share dalam window terakhir, miner ikut menanggung variance. FPPS seperti PPS tapi termasuk estimasi fee transaksi. Selfish mining adalah strategi menyembunyikan block yang ditemukan untuk mendapat keunggulan chain, menguntungkan di atas threshold sekitar 33% hashrate, dibatasi oleh propagasi cepat, deteksi, dan risiko reputasi.

Angka-angka kunci: target block time 10 menit. Epoch difficulty setiap 2.016 block, sekitar 2 minggu. Batas adjustment maksimum 4× per epoch. Total suplai 21.000.000 BTC. Halving setiap 210.000 block, sekitar 4 tahun. Threshold selfish mining sekitar 33% hashrate jaringan.

Bab 20 · 20.4
Jaringan Bitcoin adalah P2P tanpa server pusat — informasi mengalir melalui ribuan node yang saling terhubung
Jaringan & Node

P2P dan penemuan peer

Jaringan Bitcoin adalah P2P tanpa server pusat. Setiap node terhubung ke sejumlah peer dan meneruskan transaksi dan block ke peer lain. Penemuan peer dimulai dari DNS seeds hardcoded, kemudian berkembang melalui pesan addr dan addrv2. Koneksi default: 8 outbound, hingga 125 total. Handshake antara dua node dimulai dengan pesan version dan verack.

Propagasi yang efisien

Compact blocks (BIP 152) mengurangi bandwidth propagasi block dengan hanya mengirim shortID transaksi, sehingga node yang sudah punya transaksi di mempool tidak perlu download ulang. Erlay (BIP 330) menggunakan set reconciliation untuk propagasi transaksi yang lebih efisien, mengurangi bandwidth hingga 40%. Dandelion (BIP 156) meningkatkan privasi propagasi dengan fase stem (satu jalur) sebelum fase fluff (broadcast normal).

Full node dan sync

Full node mendownload dan memverifikasi seluruh blockchain dari genesis. IBD menggunakan headers-first: download semua header dulu, validasi chain of work, baru download block. assumevalid melewati verifikasi script untuk block lama yang sudah diketahui valid. assumeUTXO memungkinkan node sync dari snapshot UTXO set yang sudah diverifikasi, tanpa mengorbankan security model jangka panjang.

SPV dan light client

SPV hanya menyimpan block header dan memverifikasi transaksi via Merkle proof. Bloom filter (BIP 37) adalah cara lama yang bocorkan privasi ke server. Compact block filter (BIP 157/158) adalah solusi modern: filter per block yang didownload dan diperiksa secara lokal tanpa memberitahu server transaksi mana yang dicari.

Angka-angka kunci: block header 80 bytes. Seluruh header chain saat ini sekitar 70 MB. Koneksi outbound umumnya 8 full-relay; implementasi modern menambah koneksi khusus block-relay. Compact block filter BIP 158 berukuran belasan KB untuk block penuh modern — tetap jauh lebih ringan daripada mengunduh block utuh. Erlay menghemat bandwidth sekitar 40% vs flooding biasa. Coinbase maturity 100 block sebelum bisa dibelanjakan.

Bab 20 · 20.5
Lightning Network memungkinkan pembayaran instan off-chain, sementara teknik privacy mempersulit pelacakan transaksi on-chain
Layer 2 & Privacy

Lightning Network

Lightning Network adalah jaringan payment channel di atas Bitcoin. Dua pihak mengunci dana di multisig on-chain (funding transaction), lalu bertukar commitment transaction off-chain yang memperbarui saldo tanpa broadcast ke jaringan. Channel bisa ditutup kooperatif (langsung final) atau unilateral (butuh menunggu CSV timelock untuk memberi waktu pihak lain merespons jika ada kecurangan).

HTLC dan routing

HTLC (Hash Time Locked Contract) memungkinkan pembayaran multi-hop: setiap hop hanya meneruskan pembayaran kalau bisa mengungkap preimage dari hash tertentu, kalau tidak diklaim dalam waktu tertentu dana kembali. Routing di Lightning adalah source routing dengan onion encryption: pengirim menentukan seluruh jalur, setiap hop hanya tahu pendahulu dan penerusnya.

Privacy on-chain

Privacy di Bitcoin sulit karena blockchain publik dan transparan. CoinJoin menggabungkan input dari banyak pengguna dalam satu transaksi besar dengan output berukuran sama, memutus link antara input dan output tanpa kepercayaan. Payjoin menyertakan input dari penerima sehingga analisis chain tidak bisa dengan mudah mengidentifikasi siapa pengirim dan berapa yang dikirim. Silent Payments (BIP 352) memungkinkan alamat statis yang menghasilkan address unik setiap pembayaran tanpa koordinasi, menghilangkan address reuse.

Angka-angka kunci: Lightning channel adalah 2-of-2 multisig on-chain. HTLC timeout biasanya 40-144 block per hop. Onion routing maksimal 20 hop. CoinJoin output semua berukuran sama untuk anonimity set yang efektif. Silent Payments: satu address statis menghasilkan infinite address unik per pembayar.

Bab 20 · 20.6
Bitcoin tidak punya CEO — perubahan protokol terjadi melalui proses yang melibatkan banyak pihak dengan veto de facto di setiap layer
Governance & Masa Depan

BIP dan proses perubahan

BIP (Bitcoin Improvement Proposal) adalah dokumen formal yang mendeskripsikan proposal perubahan. Siapapun bisa mengajukan BIP, tapi tidak ada yang bisa memaksanya diimplementasikan. Perubahan yang tidak mendapat dukungan luas dari pengguna, developer, miner, dan bisnis tidak akan berhasil diaktifkan. Ini adalah fitur, bukan bug.

Soft fork dan hard fork

Soft fork adalah perubahan yang memperketat aturan konsensus, di mana node lama tetap menerima block baru sebagai valid. Hard fork memperlunak aturan, sehingga node lama akan menolak block baru dan jaringan terbelah. Bitcoin hanya pernah berhasil melakukan soft fork sejak 2013. SegWit diaktifkan 2017 setelah proses panjang via UASF. Taproot diaktifkan 2021 dengan Speedy Trial, lebih mulus karena ada konsensus luas dari awal.

Pertanyaan terbuka

Apakah fee saja cukup untuk security budget jangka panjang saat block reward mendekati nol? Tidak ada yang bisa menjawab ini dengan pasti, bergantung pada adopsi, harga, volume transaksi, dan struktur ekosistem di masa depan. Proposal aktif yang sedang didiskusikan: OP_CTV untuk covenant sederhana, OP_VAULT untuk self-custody yang lebih aman, ANYPREVOUT untuk eltoo sebagai alternatif Lightning yang lebih sederhana. Semua ini belum diaktifkan.

Apa yang tidak berubah

Di tengah semua perdebatan tentang masa depan, beberapa hal sudah settled: total suplai 21 juta BTC tidak bisa diubah tanpa hard fork yang tidak akan dapat dukungan. Proof of Work adalah mekanisme konsensus yang dipertahankan. Desentralisasi jaringan adalah nilai yang dijaga bersama. Perubahan harus kompatibel ke belakang atau tidak akan terjadi.

Angka-angka kunci: BIP pertama adalah BIP 1 oleh Amir Taaki (2011). SegWit aktif di block #481.824 (Agustus 2017). Taproot aktif di block #709.632 (November 2021). Block reward mencapai nol sekitar tahun 2140 sebagai konsekuensi matematis dari halving schedule yang sudah ditentukan sejak genesis block.

← Daftar Bab
BLK #915,217
Laboratorium · Alur 1
Dari entropi acak sampai address Bitcoin — setiap langkah kriptografi yang terjadi saat wallet dibuat dan transaksi ditandatangani
Kriptografi, Wallet & Kepemilikan Bitcoin
Crypto Flow Simulator — CSPRNG ke Address & Signature
Pilih format address untuk melihat bagaimana jalur encoding berbeda di langkah 7-9. Klik "Generate ulang" untuk menghasilkan nilai baru. Setiap nilai adalah simulasi visual — bukan implementasi kriptografi nyata.
Laboratorium · Alur 2
Setiap transaksi Bitcoin adalah komunikasi antara dua pihak lewat Script — pengirim mengkonsumsi UTXO, penerima mendapat UTXO baru yang terkunci dengan kondisi yang bisa diverifikasi siapapun
Transaction Builder, Script Inspector & Stack Executor
Transaction Builder · Script Inspector · Stack Executor
Tab 1: simulasi Alice mengirim ke Bob — lihat UTXO dikonsumsi, UTXO baru tercipta, miner dapat fee. Pilih script type untuk lihat locking script yang berbeda. Tab 2: inspect setiap opcode dari 7 format script — klik untuk penjelasan mengapa opcode itu ada. Tab 3: eksekusi script step-by-step dan lihat stack berubah per opcode.
Setiap transaksi Bitcoin melibatkan dua pihak: pengirim yang mengkonsumsi UTXO-nya, dan penerima yang mendapat UTXO baru yang terkunci di address mereka. Miner mendapat fee sebagai selisih. Pilih tipe script untuk lihat locking script yang berbeda.
A
Alice (pengirim)
bc1q...a7f2
UTXO milik Alice (INPUT)
0,05 BTC
← terkunci di address Alice
Kembalian Alice (OUTPUT)
0,009 BTC
← terkunci di address Alice baru
TX
pending
⇄
B
Bob (penerima)
bc1q...3c9d
UTXO baru milik Bob (OUTPUT)
0,04 BTC
← terkunci di address Bob
M
Miner (fee collector)
0,001 BTC fee
selisih input − output · diklaim via coinbase tx · tidak perlu unlocking script
Klik setiap opcode untuk penjelasan mengapa opcode itu ada di sini dan bagaimana ia berkomunikasi syarat transfer kepemilikan antara pengirim dan penerima.
Eksekusi script step-by-step. Lihat bagaimana stack berubah per opcode dan bagaimana akhirnya TRUE muncul di atas stack saat script berhasil.
Tekan Step untuk mulai
Script (unlock + lock):
Stack:
Eksekusi belum dimulai.
Ikuti alur lengkap sebuah transaksi dari address Bob sebagai tujuan sampai UTXO baru terkunci di address-nya. Pilih format untuk lihat perbedaan decode address, locking script, cara signing, dan verifikasi per tipe.
Legacy (sebelum SegWit):
SegWit & Taproot:
Laboratorium · Alur 3
Setiap opcode adalah instruksi dalam "bahasa" yang digunakan Bitcoin untuk mengkomunikasikan syarat transfer kepemilikan antara pengirim dan penerima
Opcodes Explorer — Status, Stack Effect, dan Real Case per Address Type
Opcodes Explorer
Pilih opcode dari panel kiri untuk lihat: status aktif atau dinonaktifkan, stack effect (input ke output), penjelasan fungsi, perbedaan penggunaan per tipe address (P2PKH vs P2WPKH vs P2TR dll), dan contoh script nyata dengan opcode tersebut di-highlight.
← Pilih opcode untuk mulai
Laboratorium · Alur 4
Setiap block adalah wadah 80 bytes header yang meringkas ribuan transaksi lewat Merkle tree — mengubah satu transaksi apapun akan membatalkan seluruh proof of work
Block Explorer — Header, Merkle Tree & Anatomy Transaksi
Block Explorer — Block #840,000 (Halving ke-4)
Explore anatomy sebuah block nyata: tab Overview menampilkan statistik block, Header menampilkan 6 field 80 bytes yang bisa diklik, Merkle Tree menampilkan bagaimana semua txid terhubung ke satu root di header, dan Transaksi menampilkan berbagai format tx dengan efisiensi berbeda.
Block #840,000
19 Apr 2024 · 00:09:27 UTC
Halving ke-4 — reward turun dari 6.25 ke 3.125 BTC
Transaksi
3,050
Total Fee
37.626 BTC
Block Reward
3.125 BTC
Ukuran
1.54 MB
Block #840,000 adalah block halving ke-4 Bitcoin. Block reward berkurang dari 6.25 BTC menjadi 3.125 BTC secara otomatis sesuai jadwal yang sudah tertanam di protokol sejak genesis block. Block ini unik karena total fee transaksi (37.626 BTC) jauh melampaui block reward (3.125 BTC), salah satu bukti awal bahwa fee market bisa berfungsi sebagai insentif miner jangka panjang.

Setiap block berisi: satu header 80 bytes yang meringkas seluruh konten block, satu coinbase transaction yang menciptakan Bitcoin baru untuk miner, dan ribuan transaksi reguler yang memindahkan Bitcoin antar pihak. Explore tiap bagian di tab di atas.
Block header adalah 80 bytes yang meringkas seluruh block. Ini yang di-hash oleh miner untuk membuktikan proof of work. Klik setiap field untuk penjelasan.
Total header: 80 bytes (4 + 32 + 32 + 4 + 4 + 4). Double SHA256 dari 80 bytes ini adalah block hash — inilah yang harus memenuhi target difficulty.
Merkle tree adalah struktur hash yang menghubungkan semua txid ke satu Merkle root yang tersimpan di block header. Klik setiap node untuk penjelasan.
Klik node untuk penjelasan
Merkle proof: untuk membuktikan satu transaksi ada di block, cukup sediakan hash sepanjang jalur dari leaf ke root — tidak perlu seluruh block. Inilah yang dipakai SPV wallet.
Setiap block dimulai dengan coinbase transaction yang menciptakan Bitcoin baru. Klik transaksi untuk detail input, output, fee, dan penjelasan format script-nya.
Laboratorium · Alur 5
Miner berulang kali mengubah nonce sampai hash block memenuhi target difficulty — tidak ada jalan pintas selain mencoba satu per satu
Mining Nonce Hunt — Simulasi Proof of Work
Mining Simulator — Block Header Nonce Hunt
Pilih difficulty, tekan Mine, dan lihat bagaimana nonce diubah terus sampai double SHA256 dari block header menghasilkan hash yang memenuhi target. Karakter hijau = cocok dengan target, merah = belum. Bitcoin nyata memerlukan 19+ leading zeros.
Pilih difficulty (jumlah leading zeros yang diperlukan):
Nonce saat ini
0
hex: 0x00000000
Hash dicoba
0
per detik: —
Target zeros
2
peluang: 1/256
Block Header (80 bytes) yang sedang di-hash:
version
0x20000000
prev_hash
00000000...a3b8
merkle_root
c4b8e2f1...d8c1
timestamp
0x65FF8A47
bits
0x17034219
nonce
0x00000000
20000000 00000000...a3b8 c4b8e2f1...d8c1 65FF8A47 17034219 00000000
Block hash saat ini (double SHA256 dari header):
—
Target:
00ffffffffffffff...
Hash harus dimulai dengan minimal 2 karakter "0"
Waktu mining
0.00s
Tekan Mine untuk mulai mencari nonce yang valid.
1
Miner mengubah nonce di header block (4 bytes, 0 sampai ~4 miliar). Setiap perubahan nonce menghasilkan hash yang sama sekali berbeda.
2
Double SHA256 dari 80 bytes header dihitung. Hasilnya 32 bytes (64 karakter hex). Tidak bisa diprediksi, satu-satunya cara adalah mencoba.
3
Hash dibandingkan dengan target. Kalau hash lebih kecil dari target (cukup banyak leading zeros), block valid dan miner mendapat reward.
4
Difficulty Bitcoin nyata memerlukan 19+ leading zeros, dengan peluang 1 dari 2^76. Seluruh jaringan mencoba triliunan hash per detik untuk mencapai ini rata-rata setiap 10 menit.
Laboratorium · Alur 6
Mempool adalah antrian transaksi yang menunggu masuk block — miner memilih yang paling menguntungkan, fee rate minimum naik saat antrian penuh
Mempool Simulator — Fee Market & Seleksi Transaksi
Mempool Live Simulator
Tambah transaksi dengan berbagai fee rate, lihat bagaimana mempool terisi, mine block untuk lihat transaksi mana yang dipilih miner, dan amati bagaimana fee minimum relay berubah saat mempool penuh atau kosong.
Tx di Mempool
0
pending
Ukuran Mempool
0
vByte
Fee Min Relay
1
sat/vByte
Fee Next Block
—
sat/vByte (est.)
fee rate:
Mempool — diurutkan berdasarkan fee rate:
txid
fee rate
ukuran
tipe
Distribusi fee rate:
Block terakhir di-mine:
Belum ada block di-mine
Log aktivitas:
Laboratorium · Alur 7
Satu seed phrase menghasilkan seluruh pohon key secara deterministik — infinite address dari satu sumber entropi tunggal
HD Wallet & Derivation Tree — BIP32, BIP39, BIP44/49/84/86
HD Wallet Derivation Simulator (semua nilai simulasi)
Pilih standar BIP, klik segmen path untuk penjelasan, dan lihat bagaimana setiap level pohon diderivasi dari seed. Semua nilai adalah simulasi — bukan kriptografi nyata.
⚠ SIMULASI — semua nilai di bawah adalah data palsu untuk keperluan edukasi. Jangan gunakan sebagai wallet nyata.
SIMULASI: alpha bravo charlie delta echo foxtrot golf hotel india juliet kilo lima
12 kata × ~11 bit = 128-bit entropy (simulasi — bukan kata BIP39 valid)
seed (512-bit, PBKDF2-HMAC-SHA512): [SIMULASI] a1b2c3d4...f0e1d2c3
Pilih standar derivasi:
Derivation path — klik segmen untuk penjelasan:
Pohon derivasi (semua nilai simulasi):
Address yang digenerate — index 0 sampai 4 (simulasi):
Path
Address (simulasi)
Format
Peraga ini memakai nilai ilustratif untuk memperlihatkan bentuk pohonnya. Perhitungan HMAC-SHA512 yang sungguhan, dan peragaan kenapa turunan hardened wajib ada, dibedah di C4 pada kelompok Primitif Kriptografi.
Laboratorium · Alur 8
Schnorr dan ECDSA sama-sama berjalan di secp256k1 — tapi linearitas Schnorr memungkinkan agregasi signature yang mengubah cara multisig bekerja di Bitcoin
Schnorr vs ECDSA — Signing, Verifikasi & Key Aggregation
Schnorr vs ECDSA — Flow Visualizer
Tiga tab: (1) proses signing step-by-step kedua skema berjalan bersamaan, (2) proses verifikasi dengan perbedaan jumlah operasi yang diperlukan, (3) simulasi 3 transaksi yang menunjukkan mengapa agregasi Schnorr mengubah segalanya.
Proses signing ECDSA dan Schnorr berjalan bersamaan. Badge merah = kelemahan ECDSA, badge hijau = keunggulan Schnorr. Nilai hex simulasi mengalir tiap step.
Tekan Step atau Auto untuk mulai
ECDSA — sejak 2009
Schnorr — sejak Taproot 2021
3 transaksi, 3 pengirim berbeda. ECDSA butuh 3 signature terpisah. Schnorr + MuSig2 mengagregasi ketiganya menjadi 1 signature tunggal yang terlihat identik dengan single-sig.
Tekan Step atau Auto untuk mulai
TX 1
Alice → Bob · 0.05 BTC
txhash: —
TX 2
Carol → Dave · 0.12 BTC
txhash: —
TX 3
Eve → Frank · 0.08 BTC
txhash: —
ECDSA — 3 signature terpisah
Signature TX 1 (Alice)
71-72 bytes
menunggu...
Signature TX 2 (Carol)
71-72 bytes
menunggu...
Signature TX 3 (Eve)
71-72 bytes
menunggu...
Schnorr + MuSig2 — diagregasi jadi 1
Partial sig TX 1 (Alice)
64 bytes
menunggu...
Partial sig TX 2 (Carol)
64 bytes
menunggu...
Partial sig TX 3 (Eve)
64 bytes
menunggu...
Apa yang dilihat observer di blockchain:
ECDSA: —
Schnorr: —
Laboratorium · Alur 9
Lightning membayar tanpa on-chain transaction — channel dua arah yang diperbarui off-chain, dijamin oleh smart contract HTLC di Bitcoin
Lightning Network — Channel, HTLC & Payment Flow
Lightning TX Flow Simulator
Pilih skenario, tekan Step atau Auto, dan ikuti alur pembayaran Lightning dari invoice sampai settlement. Setiap hop menunjukkan HTLC yang terkunci dan dibuka, perubahan saldo channel, serta apa yang terjadi bila likuiditas tidak cukup.
Tekan Step atau Auto untuk mulai
Saldo channel (biru = lokal, hijau = remote):
HTLC aktif per hop:
Hop
Jumlah
Payment hash
Status
Laboratorium · Primitif C1
SHA-256, dibedah dari dalam

Kebanyakan alat SHA-256 cuma menerima teks lalu memuntahkan hash. Itu tidak mengajarkan apa pun. Di sini kita buka panci masaknya: bagaimana pesanmu dibungkus, dipecah jadi 64 kata, lalu diaduk 64 kali sampai tidak ada jejak asalnya yang tersisa.

Langkah 1 · Pesanmu dibungkus dulu

SHA-256 hanya bisa mengolah potongan tepat 512 bit. Pesan yang panjangnya bukan kelipatan itu harus dibungkus lebih dulu, dan cara membungkusnya bukan sekadar diisi nol.

pesan bit 1 (80) padding panjang

Tiga bagian, dan urutannya wajib. Pertama pesan aslinya. Lalu satu bit 1 sebagai penanda batas, yang dalam byte tampil sebagai 80. Lalu nol sebanyak yang dibutuhkan. Lalu delapan byte terakhir berisi panjang pesan asli dalam bit. Delapan byte terakhir itulah yang membuat dua pesan berbeda panjang tidak akan pernah menghasilkan blok yang sama, bahkan kalau isinya mirip.

Langkah 2 · 16 kata dikembangbiakkan jadi 64

Satu blok 512 bit dibaca sebagai 16 kata berukuran 32 bit. Tapi ronde pengadukannya ada 64, jadi 16 kata itu harus diperbanyak jadi 64 dulu.

Kata ke-16 dan seterusnya tidak diambil dari pesan. Ia dihitung dari empat kata sebelumnya, dengan dua di antaranya diputar dan digeser dulu. Efeknya berlapis: kata ke-63 sudah mengandung jejak dari hampir semua kata sebelumnya. Ini alasan pertama kenapa mengubah satu bit di pesan bisa merembet ke mana-mana.

Langkah 3 · 64 ronde, tapi cuma dua yang berubah

Ini bagian yang biasanya bikin orang menyerah. Delapan register bernama a sampai h, diaduk 64 kali. Terlihat rumit sampai kamu memperhatikan satu hal.

Perhatikan kolomnya saat kamu melangkah. Enam dari delapan register cuma bergeser turun: b jadi c, c jadi d, dan seterusnya. Mereka tidak dihitung apa-apa, cuma mengantre. Yang benar-benar dihitung hanya a dan e. Jadi SHA-256 bukan 64 operasi rumit, melainkan satu operasi sederhana yang diulang 64 kali di atas antrean yang terus bergerak.

Langkah 4 · Kenapa satu bit meruntuhkan semuanya

Sekarang bagian yang paling sering diklaim tapi jarang ditunjukkan. Dua pesan yang cuma beda satu bit, dijalankan berdampingan, lalu kita hitung berapa bit yang berbeda di tiap ronde.

Di ronde nol angkanya nol, dan itu bukan salah hitung: pengadukan belum dimulai, jadi kedelapan register kedua pesan masih persis sama. Yang berbeda baru satu bit di pesannya. Sekarang majukan rondenya. Dalam tiga ronde saja perbedaannya sudah melewati seperempat, dan sekitar ronde dua belas ia mencapai separuh lalu bertahan di sana sampai akhir. Separuh justru angka yang kita mau, karena artinya keluarannya tidak bisa dibedakan dari acak. Satu bit tadi tidak menular pelan-pelan, ia meledak.

Dari mana angka-angka ajaibnya?
Hasil akhir

SHA-256 memakai delapan nilai awal dan 64 konstanta. Angka-angka itu bukan dipilih seseorang. Kedelapan nilai awal adalah bagian pecahan dari akar kuadrat delapan bilangan prima pertama, dan 64 konstantanya dari akar pangkat tiga 64 prima pertama. Ini disebut nothing up my sleeve: siapa pun bisa menghitung ulang sendiri dan memastikan tidak ada pintu belakang yang disembunyikan di dalam angkanya.

Laboratorium · Primitif C2
secp256k1, dibedah dari nol

Rumusnya cuma satu baris: P = k × G. Tapi di dalamnya ada aritmetika jam, kurva yang jumlah titiknya terbatas, dan penjumlahan yang bukan penjumlahan biasa. Kita bongkar berurutan, dan setiap angka di sini bisa kamu periksa sendiri pakai kalkulator.

Langkah 1 · Sebelum apa pun: apa itu mod

Semua aritmetika di kurva Bitcoin dibungkus modulo sebuah bilangan prima. Kalau istilah itu asing, seluruh sisanya akan terasa seperti sihir. Jadi kita mulai dari sini.

Angka

Mod itu sisa bagi, tidak lebih. Bayangkan jam yang cuma punya 17 angka, 0 sampai 16. Hitung sampai 17, kamu kembali ke 0. Hitung sampai 36, kamu berputar dua kali penuh lalu berhenti di 2. Itulah arti 36 mod 17 = 2. Seluruh kurva Bitcoin berdiri di atas gagasan sesederhana ini, bedanya jamnya punya sekitar 10⁷⁷ angka.

Langkah 2 · Periksa sendiri: titik ini di kurva atau bukan

Kurvanya punya satu persamaan: y² = x³ + 7. Sebuah titik ada di kurva kalau kedua sisi persamaan itu bernilai sama setelah dibungkus mod 17. Jangan percaya saya, hitung sendiri.

Geser ke titik yang bukan anggota dan lihat kedua sisinya berbeda. Inilah satu-satunya syarat keanggotaan. Tidak ada daftar rahasia dan tidak ada otoritas yang menentukan: sebuah titik ada di kurva kalau dan hanya kalau persamaannya terpenuhi. Dari 289 kemungkinan pasangan koordinat, hanya 17 yang lolos.

Langkah 3 · Tangga: inilah arti k × G

Sekarang inti rumusnya. P = k × G bukan perkalian biasa. Artinya menambahkan titik G ke dirinya sendiri sebanyak k kali. Naik setapak demi setapak, dan rumus penjumlahannya ikut ditampilkan dengan angka yang sedang berjalan.

Perhatikan bahwa penjumlahan titik punya rumus sendiri, dan rumusnya berbeda tergantung apakah kedua titiknya sama atau tidak. Yang dihitung lebih dulu selalu kemiringan garis λ. Setelah λ didapat, koordinat hasilnya mengikuti dua baris terakhir. Ini rumus yang sama persis dipakai secp256k1, cuma angkanya di sini kecil. Perhatikan juga hasilnya selalu jatuh kembali di kurva, tidak pernah keluar.

Langkah 4 · Tangga itu terlalu lambat

Naik setapak demi setapak baik-baik saja untuk k = 17. Untuk k sebesar milik Bitcoin, tangga itu butuh lebih banyak langkah daripada jumlah atom di alam semesta. Jadi dipakai jalan pintas.

k dalam biner

Triknya membaca k dalam biner. Tiap bit berarti satu penggandaan, dan bit yang bernilai 1 berarti satu penjumlahan tambahan. Hasilnya sama persis dengan menaiki tangga, tapi jumlah langkahnya bukan k melainkan sekitar dua kali jumlah bitnya. Untuk k sebesar 256 bit, itu sekitar 384 langkah, selesai dalam sepersekian detik.

Langkah 5 · Jadi kenapa ini disebut kunci?

Semua bahannya sudah ada. Sekarang rangkaiannya bisa dibaca sebagai satu kalimat.

Mencari k dari P dengan mencoba satu per satu

Rantainya begini. k adalah private key-mu, satu angka yang cuma kamu tahu. P adalah public key, hasil menaiki tangga sebanyak k langkah, dan boleh dilihat siapa saja. Menghitung maju dari k ke P mudah, dan kamu baru saja melakukannya. Menghitung mundur dari P ke k menuntut mencoba satu per satu. Di kurva mainan ini cukup 17 percobaan, dan itu sebabnya kurva ini tidak mengamankan apa pun. Di secp256k1 angkanya 78 digit. Dari ketimpangan itulah lahir kemampuan membuktikan kamu tahu k tanpa pernah menyebutkannya, dan itu yang dibedah di C3.

Angka secp256k1 yang sebenarnya
p
2^256 - 2^32 - 977
a, b
0, 7
Gx
79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
n
fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141

Semua yang barusan kamu lakukan berlaku persis sama di sini. Yang berubah hanya ukuran angkanya, dan itu satu-satunya alasan kenapa yang tadi gampang kamu balik menjadi mustahil dibalik.

Laboratorium · Primitif C3
Tanda tangan, dibedah dari dalam

Di 4.3 kamu sudah menandatangani dan memverifikasi. Tapi apa sebenarnya isi tanda tangan itu? Dua angka, r dan s. Di sini kita hitung keduanya dengan tangan di kurva mainan yang sama seperti C2, lalu kita pakai untuk membongkar private key dari pemiliknya. Kurvanya sedikit lebih besar dari C2 (modulo 43, bukan 17) karena ECDSA menuntut jumlah titiknya bilangan prima.

Langkah 1 · Dua angka, dan dari mana asalnya

Tanda tangan ECDSA bukan benda misterius. Ia sepasang bilangan. Yang pertama, r, berasal dari sebuah titik acak di kurva. Yang kedua, s, mengikat titik acak itu dengan pesanmu dan private key-mu.

Perhatikan bahwa k tidak pernah ikut dikirim. Ia dipakai lalu dibuang. Public key juga tidak masuk ke dalam tanda tangan. Yang berpindah cuma dua angka, dan dari dua angka itu siapa pun bisa memeriksa tanpa pernah tahu private key-nya.

Langkah 2 · Verifikasi, dan kenapa bisa cocok

Verifikasi tidak membalik perhitungan tadi. Ia menempuh jalur berbeda yang, kalau semua angkanya benar, berakhir di titik yang sama.

Yang dibandingkan adalah koordinat x dari titik hasil dengan r yang dikirim. Kalau sama, tanda tangannya sah. Tidak ada tahap yang membutuhkan private key, dan tidak ada tahap yang membocorkannya. Inilah ketimpangan yang jadi dasar seluruh kepemilikan Bitcoin: membuat menuntut rahasia, memeriksa tidak.

Langkah 3 · Pakai ulang k, dan semuanya jatuh

Sekarang bagian yang di 4.3 cuma bisa diperingatkan. Kita tandatangani dua pesan berbeda dengan k yang sama, lalu hitung private key-nya dari kedua tanda tangan itu. Bukan menebak, menghitung.

Perhatikan alurnya. Karena k sama, r-nya juga sama, dan itulah penanda yang bisa dilihat siapa pun di blockchain. Dari situ k terpulihkan lewat selisihnya, dan begitu k diketahui, private key tinggal satu langkah aljabar. Tidak ada penebakan sama sekali. Inilah alasan wallet modern tidak lagi mengacak k, melainkan menurunkannya secara deterministik dari private key dan pesan, seperti disebut di 4.3.

Langkah 4 · Schnorr, dan kenapa lebih rapi

Schnorr memakai bahan yang sama tapi menyusunnya berbeda. Perbedaannya kelihatan sepele di rumus, tapi akibatnya besar.

ECDSA
R = k×G r = x(R) s = (z + r·d) / k
Schnorr
R = k×G e = hash(R, Q, z) s = k + e·d

Di ECDSA, s memuat pembagian oleh k. Pembagian itulah yang membuat rumusnya tidak linear, dan ketidaklinearan itu yang menghalangi penggabungan tanda tangan. Schnorr menggantinya dengan penjumlahan biasa. Karena semuanya linear, dua tanda tangan Schnorr bisa dijumlahkan menjadi satu yang tetap sah. Itulah dasar key aggregation yang kamu lihat di 4.4, dan alasannya ada di satu operasi ini.

Laboratorium · Primitif C4
BIP32: satu benih, jutaan kunci

Dompet modern tidak menyimpan ribuan private key. Ia menyimpan satu benih, lalu menurunkan sisanya sesuai kebutuhan. Di sini seluruh rantainya dihitung sungguhan, dan diperiksa terhadap vektor uji resmi BIP32. Di ujungnya ada peragaan kenapa tanda kutip kecil pada jalur turunan itu bukan hiasan.

Bagian 1 · Dari benih ke kunci induk

Benih dari BIP39 dimasukkan ke HMAC-SHA512, dan hasilnya yang 64 byte dibelah tepat di tengah.

Perhatikan pembelahannya. Separuh kiri jadi private key induk, separuh kanan jadi chain code. Chain code bukan kunci dan tidak bisa membelanjakan apa pun, tapi ia wajib ada untuk menurunkan anak. Itu sebabnya membocorkan chain code bersama satu public key sudah cukup berbahaya, seperti yang akan kita lihat di bagian empat.

Bagian 2 · Menurunkan satu anak

Anak diturunkan dengan memasukkan chain code, kunci induk, dan nomor urut ke HMAC-SHA512 lagi. Geser nomornya dan perhatikan yang berubah.

Kuncinya di baris terakhir: kunci anak sama dengan IL ditambah kunci induk, dijumlahkan modulo n. Penjumlahan itu yang membuat seluruh sistem bekerja, dan sekaligus yang jadi celahnya. Perhatikan juga bahwa tiap anak punya chain code sendiri, jadi turunan bisa berlanjut ke cucu, cicit, dan seterusnya tanpa batas.

Bagian 3 · Hardened: satu perbedaan kecil di masukan

Ada dua cara menurunkan anak, dan bedanya cuma pada apa yang dimasukkan ke HMAC. Perhatikan baris masukan pada kedua kolom.

Biasa (non-hardened)
Yang dimasukkan ke HMAC
public key induk ‖ nomor
Bisa diturunkan dari xpub?
Bisa
Hardened (nomor ≥ 2³¹)
Yang dimasukkan ke HMAC
0x00 ‖ private key induk ‖ nomor
Bisa diturunkan dari xpub?
Tidak bisa

Yang biasa memasukkan public key induk, sedangkan yang hardened memasukkan private key induk. Akibatnya besar. Karena yang hardened butuh private key, ia tidak bisa diturunkan dari xpub. Itu terdengar seperti kekurangan, tapi justru itulah gunanya, dan bagian berikutnya menunjukkan alasannya.

Bagian 4 · Kenapa hardened harus ada

Sekarang peragaannya. Bayangkan seseorang punya xpub kamu, misalnya karena kamu berikan ke akuntan agar bisa memantau saldo. Lalu satu private key anak non-hardened bocor. Tekan tombolnya.

Perhatikan apa yang barusan terjadi. Karena kunci anak sama dengan IL ditambah kunci induk, dan IL bisa dihitung siapa saja yang punya xpub, maka kunci induk tinggal dikurangkan: induk = anak dikurangi IL. Satu kunci anak yang bocor merobohkan seluruh dompet, termasuk semua cabang lain yang tidak pernah bocor. Untuk turunan hardened serangan ini mustahil, karena IL-nya butuh private key induk yang justru sedang dicari. Inilah alasan jalur seperti m/84h/0h/0h memakai tanda kutip di tiga tingkat pertama.

Membaca jalur turunan

Sekarang jalur seperti m/84h/0h/0h/0/0 bisa dibaca. m adalah kunci induk dari benih. 84h menandai standar address yang dipakai, dalam hal ini bc1q seperti di 6.4. 0h berikutnya menandai Bitcoin, bukan koin lain. 0h ketiga adalah nomor akun. Tiga tingkat pertama semuanya hardened, dan sekarang kamu tahu kenapa. Dua angka terakhir tanpa tanda kutip: 0 berarti cabang penerimaan, dan angka terakhir nomor urut address. Keduanya sengaja tidak hardened supaya sebuah xpub bisa dipakai memantau saldo tanpa bisa membelanjakan, seperti dibahas di 2.3.

Laboratorium · Primitif C5
BIP39: dari bit acak jadi dua belas kata

Seed phrase terlihat seperti daftar kata bahasa Inggris yang dipilih sembarangan. Sebenarnya tidak ada satu pun kata yang dipilih. Semuanya hasil pembacaan ulang deretan bit, sebelas bit per kata, dan salah satu kelompok bit itu bukan keacakan melainkan checksum. Semua yang di halaman ini dihitung sungguhan.

Bagian 1 · Semuanya berangkat dari bit acak

Yang dihasilkan wallet pertama kali bukan kata, melainkan sederet bit acak. Untuk seed phrase 12 kata, panjangnya 128 bit.

Perhatikan bahwa 128 bit ini bukan hasil perhitungan apa pun. Ia murni keacakan, persis yang kita bahas di 2.4. Semua yang terjadi setelah ini cuma mengubah cara membacanya, bukan menambah rahasia baru.

Bagian 2 · Checksum: empat bit dari SHA-256

Sebelum dipotong jadi kata, deretan bit itu ditambahi checksum. Sumbernya fungsi hash yang sudah kamu bedah di C1.

Aturannya sederhana: panjang checksum sama dengan panjang entropi dibagi 32. Untuk 128 bit entropi berarti 4 bit checksum, untuk 256 bit berarti 8 bit. Bit itu diambil dari paling depan hasil SHA-256, sisanya dibuang. Setelah ditempel, totalnya jadi 132 bit, dan angka itu penting: 132 habis dibagi 11.

Bagian 3 · Potong sebelas bit, jadilah kata

Sekarang 132 bit itu dipotong jadi dua belas kelompok, masing-masing sebelas bit. Tiap kelompok dibaca sebagai angka, dan angka itu nomor urut di daftar kata resmi.

NomorSebelas bit #Kata

Kenapa sebelas bit? Karena dua pangkat sebelas sama dengan 2048, dan daftar kata BIP39 berisi tepat 2048 kata. Bukan kebetulan, itu dirancang begitu. Perhatikan juga kelompok terakhir: sebagian bitnya berasal dari entropi, sebagian dari checksum. Jadi kata terakhir tidak sepenuhnya acak, dan itulah yang membuat salah ketik bisa tertangkap.

Bagian 4 · Ganti satu kata dan lihat apa yang terjadi

Karena kata terakhir memuat checksum, mengubah kata mana pun biasanya membuat seluruh rangkaian jadi tidak sah. Coba sendiri.

Kata ke-

Peluang sebuah perubahan acak kebetulan tetap sah cuma sekitar satu berbanding enam belas untuk seed 12 kata, karena checksum-nya empat bit. Kecil, tapi bukan nol, jadi checksum BIP39 adalah jaring pengaman terhadap salah ketik, bukan jaminan mutlak. Untuk seed 24 kata checksumnya delapan bit, jadi peluangnya turun ke satu berbanding 256. Dan ada satu detail kecil yang berguna: empat huruf pertama tiap kata di daftar itu unik, jadi kamu sebenarnya cukup mengetik empat huruf pertama.

Yang perlu diluruskan

Seed phrase sering disebut sebagai "terjemahan" dari private key. Itu terbalik. Yang lahir duluan adalah entropi, lalu darinya diturunkan seed phrase maupun private key, seperti sudah diluruskan di 2.4. Dan kata-katanya bukan penyandian rahasia: siapa pun yang tahu dua belas kata itu bisa menghitung ulang seluruh dompetmu, karena daftar katanya publik dan aturannya publik. Kata-kata itu bukan kunci terkunci, ia cuma cara menuliskan bit supaya manusia bisa menyalinnya tanpa salah.

Laboratorium · Primitif C6
Tweak Taproot: mengikat aturan ke sebuah titik

Bab 6.6 menjelaskan Taproot punya dua jalur pembelanjaan, tapi tidak pernah menunjukkan bagaimana keduanya bisa hidup di satu titik yang sama. Jawabannya satu operasi penjumlahan, dan satu kesamaan aljabar yang bikin semuanya jalan. Kurvanya sama dengan C2, jadi tiap angka bisa kamu periksa.

Bagian 1 · Kunci internal, sebelum diapa-apakan

Semuanya berangkat dari sepasang kunci biasa, persis seperti di C2. Belum ada Taproot di sini.

Titik P ini disebut internal key. Kalau berhenti di sini, ia cuma public key biasa. Yang membuatnya Taproot adalah langkah berikutnya.

Bagian 2 · Tweak: menempelkan pohon script

Sekarang aturan pembelanjaan cadangan, dalam bentuk merkle root dari pohon script, ditempelkan ke kunci itu. Bukan disimpan di sebelahnya, tapi dilebur ke dalamnya.

Perhatikan urutannya. Angka t dihitung dari hash atas P dan merkle root, jadi ia terikat pada keduanya sekaligus: ganti script-nya, t berubah; ganti kuncinya, t juga berubah. Lalu Q = P + t×G, dan Q inilah yang muncul di blockchain sebagai address bc1p. Perhatikan juga bahwa merkle root tidak terlihat di Q. Yang tercatat cuma satu titik, dan dari titik itu tidak ada yang bisa menebak ada aturan apa di belakangnya, atau bahkan apakah ada aturan sama sekali.

Bagian 3 · Kesamaan yang membuat semuanya jalan

Ada satu sifat yang gampang terlewat tapi menanggung seluruh rancangan Taproot. Kita hitung dua jalur berbeda dan bandingkan hasilnya.

Kedua jalur selalu berakhir di titik yang sama, dan itu bukan kebetulan. Karena P sama dengan d×G, maka P + t×G sama dengan (d+t)×G. Artinya pemilik kunci tidak perlu perlakuan istimewa apa pun: ia cukup menandatangani memakai d + t sebagai private key barunya, dan tanda tangannya akan sah terhadap Q. Tidak ada script yang dijalankan, tidak ada pohon yang dibuka, tidak ada bukti yang dilampirkan. Inilah key path spend.

Bagian 4 · Dua jalur, satu titik

Sekarang perbandingan yang di 6.6 dijelaskan lewat kata, tapi di sini ditunjukkan lewat isi transaksinya.

Key path

Tanda tangan saja

~64 byte

Terlihat seperti pembayaran biasa

Script path

Script + bukti merkle + tanda tangan

ratusan byte

Aturan yang dipakai jadi terlihat publik

Perbedaan ukurannya bukan sekadar hemat ongkos. Karena key path spend cuma berisi satu tanda tangan, ia terlihat persis sama dengan pembayaran biasa dari address Taproot mana pun. Pengamat tidak bisa tahu apakah di belakang kunci itu ada pohon script berisi multisig, timelock, atau tidak ada apa-apa sama sekali. Aturan yang rumit tetap ada dan tetap bisa dipakai, tapi selama semua pihak sepakat, ia tidak pernah menyentuh blockchain. Inilah alasan Taproot disebut menguntungkan privasi, bukan cuma ukuran.

Catatan kejujuran soal kurva mainan ini

Semua di halaman ini memakai modulo 17 dengan ordo 18 supaya angkanya bisa kamu ikuti. Ada dua hal yang berbeda di secp256k1 sungguhan. Pertama, t dihitung dengan tagged hash, yaitu SHA-256 yang diawali penanda "TapTweak" dua kali, supaya hash untuk keperluan berbeda tidak pernah bisa tertukar. Kedua, ordonya bilangan prima raksasa, sehingga kasus d+t bernilai nol yang kadang muncul di sini praktis mustahil terjadi. Selebihnya, rumus dan alurnya identik.

Laboratorium · Primitif C7
Merkle: aturan ganjil dan cacat yang lahir darinya

Buku ini sudah punya dua peraga Merkle, di 4.5 dan 17.2. Yang belum pernah disebut di mana pun: apa yang terjadi kalau jumlah simpul di sebuah tingkat ternyata ganjil. Jawabannya satu aturan sederhana, dan aturan itu pernah melahirkan celah nyata yang hampir menghentikan jaringan.

Bagian 1 · Ketika jumlahnya ganjil

Pohon Merkle memasangkan simpul dua-dua. Tapi jumlah transaksi dalam satu block tidak selalu genap. Geser jumlahnya dan perhatikan tingkat yang ganjil.

Aturannya: kalau sebuah tingkat berisi jumlah ganjil, simpul terakhir digandakan lalu dipasangkan dengan dirinya sendiri. Bukan diisi nol, bukan dibiarkan naik sendiri. Digandakan. Itu keputusan rancangan yang terlihat wajar dan tidak berbahaya, dan selama tiga tahun memang begitu.

Bagian 2 · Cacat yang lahir dari aturan itu

Perhatikan baik-baik. Kalau simpul terakhir digandakan, maka sebuah daftar berisi tiga item akan diperlakukan persis sama dengan daftar berisi empat item yang dua terakhirnya kembar.

Dua daftar transaksi yang berbeda menghasilkan merkle root yang identik. Ini bukan tabrakan hash, karena SHA-256 tidak dipatahkan sama sekali. Yang cacat adalah aturan penyusunan pohonnya. Tercatat sebagai CVE-2012-2459, dan akibatnya berbahaya: penyerang bisa mengambil block yang sah, menggandakan transaksi terakhirnya, lalu menyiarkan versi palsu itu. Node yang menerimanya akan menolaknya karena transaksi kembar jelas tidak sah, tapi karena merkle root-nya cocok dengan yang asli, node itu menandai block aslinya sebagai tidak sah secara permanen dan menolak menerima versi yang benar. Jaringan bisa terbelah tanpa satu pun hash dipecahkan.

Bagian 3 · Bagaimana ditambalnya
Sebelum ditambal

Block dengan transaksi kembar diterima, lalu ditolak karena isinya tidak sah

Setelah ditambal

Block dengan transaksi kembar ditolak lebih dulu, sebelum root dihitung

Tambalannya tidak mengubah cara pohon disusun, karena itu akan jadi hard fork yang membatalkan seluruh block lama. Yang dilakukan lebih sederhana: node sekarang menolak block yang punya transaksi kembar persis, sebelum merkle root-nya sempat dihitung. Cacatnya masih ada di dalam rancangan pohonnya, tapi jalan menuju cacat itu ditutup. Ini pola yang sama seperti CVE-2018-17144 di 14.1: kalau aturan konsensus tidak bisa diubah, yang diubah adalah apa yang diterima sebelum aturan itu dijalankan. Dan seperti insiden itu juga, pelajarannya bukan soal kriptografinya, melainkan soal asumsi yang tidak pernah dituliskan. Tidak ada yang pernah menuliskan bahwa dua daftar berbeda harus menghasilkan root berbeda. Itu dianggap sudah pasti.

Laboratorium · Kalkulator D1
Halving dan DCA, dihitung sendiri

Tiga kelompok sebelumnya menjawab bagaimana Bitcoin bekerja. Yang ini menjawab pertanyaan lain: apa artinya buat orang yang memegangnya. Semua di halaman ini hitungan murni, tidak ada data harga yang diambil dari mana pun, dan tidak ada ramalan.

Bagian 1 · Berpikir dalam satoshi

Satu bitcoin dipecah jadi 100 juta satoshi. Angka itu terasa besar sampai kamu bandingkan dengan jumlah manusia.

Perhatikan angka terakhir. Kalau seluruh 21 juta bitcoin dibagi rata ke setiap orang di bumi, masing-masing dapat sekitar 262 ribu satoshi, atau 0,0026 BTC. Itu batas atasnya, dan itu pun mengandaikan tidak ada satu pun yang hilang. Padahal jutaan sudah hilang selamanya, seperti dibahas di 11.2. Berpikir dalam satoshi mengubah pertanyaan dari "berapa bitcoin yang bisa saya punya" menjadi "berapa bagian dari yang pernah ada".

Bagian 2 · Laju penerbitan, dan apa yang berubah tiap halving

Setiap sekitar empat tahun, jumlah bitcoin baru per block dipotong setengah. Yang jarang dihitung orang adalah akibatnya pada laju harian.

Era halvingReward per block Bitcoin baru per hariPerkiraan tahun Total beredarSisa belum ditambang
144 block per hari, rata-rata

Angka harian itu yang jarang disebut. Setiap halving, jumlah bitcoin baru yang masuk ke dunia tiap hari dipotong separuh, dan itu terjadi dalam satu block, bukan bertahap. Perhatikan juga kolom terakhir: makin lama, makin kecil bagian yang tersisa untuk ditambang. Seluruh jadwal ini sudah ditetapkan sejak 2009 dan tidak bergantung pada apa pun, termasuk harga.

Bagian 3 · Mekanika DCA, bukan janjinya

DCA artinya membeli jumlah rupiah yang sama secara rutin, apa pun harganya. Yang menarik bukan hasilnya, melainkan cara kerjanya, dan itu bisa dihitung tanpa tahu harga masa depan.

PeriodeHarga Satoshi didapat

Inilah seluruh mekanismenya: karena jumlah rupiah tetap, harga yang lebih rendah otomatis membeli lebih banyak satoshi. Jadi rata-rata harga belimu selalu lebih rendah atau sama dengan rata-rata harga periodenya, tidak pernah lebih tinggi. Itu sifat matematis, bukan ramalan. Yang tidak dijanjikan siapa pun: apakah harganya naik. DCA mengurangi risiko salah waktu, ia tidak menghapus risiko harga.

Bagian 4 · Kenapa rata-ratanya selalu lebih rendah

Bagian 3 menunjukkan angkanya. Bagian ini menunjukkan kenapa itu bukan kebetulan, dan kenapa ia berlaku pada pola harga apa pun.

Rata-rata harga belimu adalah total uang dibagi total satoshi, dan itu yang disebut rata-rata harmonik. Rata-rata pasar adalah rata-rata biasa dari harga tiap periode. Dalam matematika, rata-rata harmonik tidak pernah lebih besar dari rata-rata biasa, dan keduanya hanya sama persis kalau seluruh harganya identik. Itulah sebabnya kolom selisih di atas tidak pernah negatif, pola harga apa pun yang kamu pilih. Coba pola datar dan lihat selisihnya jadi nol.

Halaman ini kalkulator, bukan saran keuangan. Ia tidak meramal harga, tidak menganjurkan membeli, dan tidak mengetahui keadaan pasar. Semua angka di sini berasal dari yang kamu masukkan sendiri.
Laboratorium · Kalkulator D2
Sebaran jenis address, dan dua cerita yang berlawanan

Bab 6 mengajarkan lima jenis address dan cara kerjanya. Yang belum pernah dijawab: mana yang benar-benar dipakai dunia. Jawabannya ternyata bergantung pada bagaimana kamu menghitung, dan dua cara menghitung memberi kesimpulan yang bertolak belakang.

Bagian 1 · Kalau dihitung per UTXO

Cara paling umum menghitung sebaran adalah menghitung ada berapa UTXO dari tiap jenis. Hasilnya begini.

Bagian dari jumlah UTXO
Snapshot dari laporan UTXO set mempool.space pada block 892.385, ditambah pengamatan aktivitas transaksi 2026. Angka ini bergerak. Ia dipasang sebagai potret bertanggal, bukan data langsung.

Kejutan pertama: Taproot yang paling banyak, padahal ia paling baru dan aktif sejak 2021 saja. P2PKH yang sudah ada sejak genesis block berada di urutan kedua. Dan P2PK, format paling awal yang dipakai Satoshi sendiri, praktis lenyap dengan 0,03 persen. Tapi tahan dulu sebelum menyimpulkan apa pun, karena cara menghitung ini menyembunyikan sesuatu.

Bagian 2 · Kalau dihitung per nilai, urutannya terbalik

Sekarang hitung dengan cara lain: berapa banyak bitcoin yang sebenarnya tersimpan di tiap jenis. Dua angka di bawah ini cukup untuk meruntuhkan kesimpulan tadi.

JenisBagian jumlah Bagian nilaiNilai per UTXO, relatif
P2TR34,2% 0,75%1×
P2PK0,03% 8,7%≈ 13.200×

Perhatikan dua baris itu baik-baik. Taproot memegang sepertiga UTXO tapi kurang dari satu persen nilainya. Dan P2PK memegang tiga per sepuluh ribu UTXO tapi hampir sepersepuluh seluruh nilai. Bagi saja: satu UTXO P2PK rata-rata memuat sekitar 13 ribu kali lebih banyak bitcoin daripada satu UTXO Taproot. Kedua keanehan itu punya sebabnya masing-masing, dan keduanya menarik.

Bagian 3 · Kenapa Taproot banyak tapi nyaris kosong

Jawabannya bukan soal adopsi wallet, melainkan soal apa yang disimpan di sana.

UTXO terkait inscription
51,2 juta
Dari seluruh UTXO set
29,6%
Total nilainya
415 BTC
Rata-rata per UTXO: 811 satoshi

Hampir 30 persen dari seluruh UTXO Bitcoin berkaitan dengan inscription, dan mayoritasnya memakai Taproot. Tapi seluruh 51 juta UTXO itu isinya cuma sekitar 415 BTC, dengan rata-rata 811 satoshi per UTXO. Itu debu. Jadi angka 34 persen tadi bukan tanda Taproot menang sebagai format pembayaran, melainkan tanda ia dipakai untuk hal lain. Perdebatan soal apakah itu pemakaian yang sah kita bahas dua sisinya di 9.6. Yang tidak diperdebatkan: UTXO set jadi jauh lebih besar karenanya, dan setiap node harus menyimpannya, seperti dibahas di 10.1.

Bagian 4 · Kenapa P2PK sedikit tapi berat

Yang ini ceritanya justru terbalik: sedikit sekali jumlahnya, tapi memuat nilai yang sangat besar.

P2PK adalah format paling awal, dipakai untuk reward mining di tahun-tahun pertama, termasuk milik Satoshi sendiri. Hampir semuanya tidak pernah dibelanjakan sejak dibuat, dan sebagian besar diduga hilang selamanya seperti dibahas di 11.2. Tapi ada satu hal lagi yang membuatnya penting, dan itu terhubung ke 4.6: P2PK menaruh public key mentah langsung di output, tanpa disembunyikan di balik hash. Artinya seluruh nilai itu sudah terpapar sejak hari pertama, dan tidak ada yang bisa memindahkannya kalau kuncinya memang sudah hilang.

Bagian 5 · Kenapa yang lama tidak kunjung hilang
JenisBagian jumlah Ada sejak
P2TR34.2%Ada sejak 2021
P2PKH28.8%Ada sejak 2009
P2WPKH26.5%Ada sejak 2017
P2SH + P2WSH + dll10.5%Ada sejak 2012
P2PK0.03%Ada sejak 2009

Satu pertanyaan yang wajar: kalau format baru lebih murah dan lebih privat, kenapa P2PKH dari 2009 masih memegang hampir sepertiga UTXO? Tiga sebab. Pertama, UTXO lama tidak berpindah sendiri: ia baru berubah jenis kalau pemiliknya membelanjakannya, dan banyak yang memang tidak pernah bergerak. Kedua, sebagian layanan lama belum memperbarui diri. Ketiga, mengirim ke format baru menuntut pihak lawan juga mendukungnya, dan itu perubahan yang butuh dua sisi. Jadi grafik di atas bukan foto pilihan orang hari ini, melainkan endapan dari lima belas tahun keputusan yang saling menumpuk.

Laboratorium · Format F1
Serialisasi transaksi, byte per byte

Transaksi Bitcoin yang beredar di jaringan bukan objek, bukan JSON, dan bukan tabel. Ia deretan byte dengan urutan yang sudah dipatok. Di sini kita bedah satu transaksi utuh, lalu memakainya untuk menjawab pertanyaan yang selama ini cuma disinggung: kenapa SegWit menghentikan malleability.

Bagian 1 · Membaca deretan byte

Klik tiap potongan berwarna untuk melihat isinya. Urutan field-nya tetap, dan tidak ada penanda nama di mana pun: parser tahu apa yang sedang dibaca semata karena tahu urutannya.

Perhatikan dua hal yang paling sering membingungkan. Pertama, txid input ditulis terbalik. Byte pertama di layar adalah byte terakhir dari txid yang biasa kamu lihat di block explorer. Kedua, marker 00 dan flag 01 di posisi ketiga. Di transaksi lama, posisi itu berisi jumlah input, dan jumlah input tidak mungkin nol. Justru kemustahilan itulah yang dipakai SegWit sebagai penanda: parser lama membacanya sebagai transaksi tanpa input dan berhenti, parser baru mengenalinya sebagai bendera.

Bagian 2 · Varint, si penyebab tersandung

Angka di dalam transaksi tidak berukuran tetap. Angka kecil dipadatkan jadi satu byte, angka besar diberi awalan penanda. Ini yang membuat orang salah hitung waktu membaca hex mentah.

AngkaHasil encodingUkuran

Aturannya cuma empat baris, tapi wajib dihafal parser: di bawah 253 cukup satu byte apa adanya. Mulai 253, byte pertama jadi penanda panjang, bukan nilai. Jadi fd berarti "dua byte berikutnya adalah angkanya", bukan angka 253. Salah membaca satu varint saja dan seluruh sisa transaksi ikut salah baca, karena posisinya bergeser.

Bagian 3 · txid dan wtxid, dan di mana keduanya berpisah

Satu transaksi SegWit punya dua identitas. Keduanya hasil hash ganda SHA-256, tapi atas potongan byte yang berbeda.

Inilah pemisahannya. txid dihitung dari serialisasi tanpa marker, flag, dan witness. wtxid dihitung dari serialisasi lengkap. Artinya seluruh tanda tangan berada di luar jangkauan txid. Tekan tombol di bawah dan lihat sendiri akibatnya.

Bagian 4 · Malleability, diperagakan bukan diceritakan

Bab 6.4 dan 13.4 menyebut malleability sebagai masalah yang diselesaikan SegWit, tapi tidak pernah menunjukkannya. Sekarang kita ubah satu bit tanda tangan di kedua format dan bandingkan.

Hasilnya berbicara sendiri. Di format lama, tanda tangan berada di dalam scriptSig, dan scriptSig ikut dihitung ke dalam txid. Jadi siapa pun yang meneruskan transaksimu bisa mengubah encoding tanda tangan tanpa membatalkan keabsahannya, dan txid-nya berubah. Transaksi yang menunggu txid itu jadi menggantung. Di SegWit, tanda tangan pindah ke witness yang di luar txid, jadi txid tidak bergerak sedikit pun. Ini bukan tambalan, melainkan akibat langsung dari memindahkan satu potong data keluar dari jangkauan hash. Lightning di Bab 7 bersandar penuh pada txid yang tidak bisa digoyang seperti ini.

Laboratorium · Format F2
Checksum address, dihitung di depan mata

Address Bitcoin bukan sekadar hash yang dipoles. Ia dibungkus dengan checksum supaya salah ketik tertangkap sebelum dana dikirim. Dua format memakai dua cara yang sama sekali berbeda, dan perbedaannya bukan soal mana yang lebih ketat, melainkan soal apa yang bisa dibuktikan.

Bagian 1 · base58check: memakai SHA-256 dua kali

Format lama membangun checksum dari fungsi hash yang sudah kamu bedah di C1. Empat langkah, dan semuanya bisa kamu ikuti.

Perhatikan bahwa checksum-nya cuma empat byte pertama dari hash ganda. Sisanya dibuang. Empat byte berarti 32 bit, jadi peluang sebuah salah ketik kebetulan menghasilkan checksum yang sama kira-kira satu berbanding empat miliar. Kecil, tapi ini peluang, bukan jaminan. Perhatikan juga alfabetnya: base58 sengaja membuang angka 0, huruf O, huruf I, dan huruf l, karena keempatnya gampang tertukar saat dibaca manusia.

Bagian 2 · bech32: bukan hash sama sekali

Format baru tidak memakai SHA-256. Ia memakai kode koreksi galat, keluarga matematika yang sama dengan yang dipakai CD dan QR code.

Enam karakter terakhir itu checksum-nya, dan ia lahir dari perhitungan polinomial, bukan dari hash. Itu sebabnya ia bisa membuktikan sesuatu yang tidak bisa dibuktikan hash: selama galatnya tidak lebih dari empat karakter, ia dijamin tertangkap. Bukan hampir pasti, tapi pasti. Perhatikan juga huruf bc di depan: itu penanda jaringan, dan ia ikut dihitung ke dalam checksum, sehingga address mainnet tidak akan pernah lolos sebagai address testnet.

Bagian 3 · Rusakkan satu karakter

Ubah satu karakter di salah satu address dan lihat apakah tertangkap. Coba beberapa kali di posisi berbeda.

base58check
bech32

Kamu akan menemukan bahwa keduanya menangkap galat satu karakter, dan itu memang benar. Saya menguji empat ribu perubahan acak pada masing-masing, dan tidak satu pun lolos. Jadi kalau ada yang bilang bech32 lebih tahan salah ketik, itu tidak tepat untuk kasus satu karakter. Bedanya ada di tempat lain: base58check hampir pasti menangkapnya karena peluang tabrakan sangat kecil, sedangkan bech32 dijamin secara matematis menangkapnya selama galatnya empat karakter atau kurang. Yang satu bersandar pada probabilitas, yang satu pada bukti.

Bagian 4 · Ketika standarnya sendiri ternyata cacat

Ada bagian dari cerita ini yang jarang diceritakan, dan ia cocok dengan semangat Bab 14.

FormatKonstanta akhirDipakai untuk
bech321SegWit v0 (bc1q)
bech32m0x2bc830a3SegWit v1 ke atas (bc1p, Taproot)

Bech32 dirilis pada 2017 dan dipakai luas. Pada 2020 ditemukan bahwa konstanta di akhir perhitungannya punya cacat: dalam keadaan tertentu, menambah atau menghapus karakter di ujung tidak selalu terdeteksi. Untuk address SegWit versi nol akibatnya tidak berbahaya karena panjangnya sudah dipatok. Tapi untuk versi berikutnya, termasuk Taproot, itu masalah. Jawabannya adalah bech32m, yang identik dalam segala hal kecuali satu konstanta di baris terakhir. Itulah sebabnya address bc1q dan bc1p terlihat mirip tapi divalidasi dengan konstanta berbeda, dan kenapa dompet yang belum memperbarui diri bisa menolak address Taproot yang sebenarnya sah.

Laboratorium · Format F3
nBits: empat byte yang memuat angka 256 bit

Bab 5.4 membahas difficulty adjustment panjang lebar, tapi tidak pernah menunjukkan di mana target itu sebenarnya disimpan. Jawabannya empat byte di dalam block header, dan cara empat byte memuat angka 256 bit itu lebih sederhana sekaligus lebih menjebak daripada dugaan kebanyakan orang.

Bagian 1 · Bongkar empat byte itu

Byte pertama disebut exponent, tiga sisanya mantissa. Geser nilainya dan perhatikan target yang dihasilkan.

exponent mantissa 
Target (32 byte)

Inilah jebakan yang paling sering terjadi: exponent bukan pangkat dua. Ia adalah panjang target dalam byte. Jadi exponent 29 berarti targetnya sepanjang 29 byte, dan mantissa diletakkan di tiga byte paling depan dari 29 byte itu. Sisanya nol semua. Itu sebabnya target selalu punya bentuk yang sama: sedikit angka bermakna di depan, lalu deretan nol yang panjang.

Bagian 2 · Sejarahnya dalam lima angka

Nilai nBits sungguhan dari beberapa masa. Perhatikan bagaimana exponent-nya menyusut seiring waktu.

MasanBits ExpDifficulty

Exponent yang menyusut dari 29 ke 23 berarti targetnya makin pendek, dan target yang makin pendek berarti makin sedikit hash yang memenuhinya. Itulah difficulty yang naik, dilihat dari sisi penyimpanannya. Dan perhatikan lompatan angkanya: dari difficulty 1 di genesis ke puluhan triliun, hanya dengan mengubah empat byte.

Bagian 3 · Kenapa harus dipadatkan sama sekali

Pertanyaan yang wajar: kenapa tidak simpan saja 32 byte targetnya langsung? Karena block header dipatok tepat 80 byte, dan setiap byte di sana ikut di-hash jutaan kali per detik oleh seluruh miner di dunia. Menyimpan target penuh berarti header jadi 108 byte, naik 35 persen, untuk informasi yang hampir seluruhnya nol. Padatan ini juga punya harga: karena mantissa cuma tiga byte, tidak semua angka 256 bit bisa dinyatakan. Target yang sebenarnya selalu dibulatkan ke bentuk terdekat yang bisa diwakili. Ketelitian itu dikorbankan, dan tidak apa-apa, karena yang dibutuhkan cuma ambang batas, bukan angka persis.

Bagian 4 · Coba sendiri: dari target ke nBits

Sekarang arah sebaliknya. Masukkan berapa banyak angka nol di depan yang kamu inginkan, dan lihat nBits yang mewakilinya.

Perhatikan bahwa menambah satu angka nol di depan membuat target mengecil enam belas kali lipat, karena satu digit heksadesimal bernilai empat bit. Jadi setiap nol tambahan yang kamu lihat di depan sebuah block hash mewakili enam belas kali lipat kerja tambahan. Ini penjelasan angka yang selama ini cuma dijelaskan lewat kata di 5.2 dan 5.4.

← DAFTAR BAB
· ·
Appendiks · Daftar Pustaka

Daftar Pustaka

Dokumen Primer
Bitcoin: A Peer-to-Peer Electronic Cash System
Satoshi Nakamoto, 2008 · bitcoin.org/bitcoin.pdf
Bitcoin Improvement Proposals (BIPs)
Bitcoin Core Contributors, 2011– · github.com/bitcoin/bips
SLIP-0044: Registered Coin Types for BIP-0044
SatoshiLabs, 2014– · github.com/satoshilabs/slips
Repositori GitHub Bitcoin
bitcoin/bitcoin — Bitcoin Core source code
bitcoin/bips — semua Bitcoin Improvement Proposals
bitcoin-core/secp256k1 — library kriptografi kurva secp256k1
chaincodelabs/bitcoin-curriculum — Bitcoin Protocol Development Curriculum
Paper dan Spesifikasi Teknis
BIP 32: Hierarchical Deterministic Wallets
Pieter Wuille, 2012
BIP 39: Mnemonic Code for Generating Deterministic Keys
Marek Palatinus, Pavol Rusnak, Aaron Voisine, Sean Bowe, 2013
BIP 44: Multi-Account Hierarchy for Deterministic Wallets
Marek Palatinus, Pavol Rusnak, 2014
BIP 49: Derivation scheme for P2WPKH-nested-in-P2SH
Daniel Weigl, 2016
BIP 84: Derivation scheme for P2WPKH based accounts
SatoshiLabs, 2017
BIP 86: Key Derivation for Single Key P2TR Outputs
Ava Chow, 2021
BIP 141: Segregated Witness
Eric Lombrozo, Johnson Lau, Pieter Wuille, 2015
BIP 340: Schnorr Signatures for secp256k1
Pieter Wuille, Jonas Nick, Tim Ruffing, 2020
BIP 341: Taproot: SegWit version 1 spending rules
Pieter Wuille, Jonas Nick, Anthony Towns, 2020
BIP 342: Validation of Taproot Scripts
Pieter Wuille, Jonas Nick, Anthony Towns, 2020
The Lightning Network: Scalable Off-Chain Instant Payments
Joseph Poon, Thaddeus Dryja, 2016 · lightning.network/paper.pdf
Buku
Mastering Bitcoin: Programming the Open Blockchain, edisi ke-3
Andreas M. Antonopoulos, O'Reilly Media, 2023
Programming Bitcoin
Jimmy Song, O'Reilly Media, 2019
The Bitcoin Standard: The Decentralized Alternative to Central Banking
Saifedean Ammous, Wiley, 2018
Grokking Bitcoin
Kalle Rosenbaum, Manning Publications, 2019
Sumber Online
Bitcoin Developer Documentation
Bitcoin Wiki
Learnmeabitcoin
Bitcoin Optech: newsletter teknis mingguan
Chaincode Labs Research
Bitcoin Stack Exchange
Appendiks · Catatan Penulis

Catatan Penulis

Bitcoin sudah ada lebih dari satu dekade. Tapi pertanyaan yang sama terus berulang: apa sebenarnya Bitcoin itu, dan bagaimana sistemnya bekerja?

Bitscriptum lahir dari sana. Dari rasa frustrasi melihat begitu banyak asumsi yang beredar, kesalahpahaman yang diwariskan dari satu orang ke orang lain, dan informasi yang lebih banyak menimbulkan kebingungan daripada kejernihan.

Saya tidak membangun ini untuk meyakinkan siapapun tentang apapun.

Yang ada di sini adalah cara sistem ini bekerja, secara teknis, secara jujur, dan sedapat mungkin tanpa agenda. Karena "percaya" adalah kata yang sudah terlalu banyak diucapkan. Kita mendengarnya dari mana-mana, tentang segalanya, sampai di satu titik kata itu kehilangan bobotnya sendiri. Kita mengalami krisis kepercayaan bukan karena kurang percaya, tapi justru karena terlalu sering diminta untuk percaya.

Saya lebih suka kamu membaca, kemudian memverifikasi sendiri. Jalankan kodenya. Cek referensinya. Jangan berhenti di satu sumber, termasuk platform ini.

Bitcoin dirancang untuk tidak butuh kepercayaan. Sudah selayaknya cara belajarnya pun begitu.

Membuat Bitscriptum adalah salah satu hal yang paling saya nikmati. Semoga ia berguna untuk kamu yang sedang mencari jawaban, bukan keyakinan yang dipinjam dari orang lain, tapi pemahaman yang kamu bangun sendiri.

Maxima Freiman. 2026

Appendiks · Tentang

Tentang

Sedikit catatan mengenai saya.

Saya mempelajari Bitcoin melalui kurikulum Bitcoin Protocol Development dari Chaincode Labs, dan menjadi kontributor serta anggota Bitcoin Indonesia.

Bitscriptum adalah hasil dari proses belajar itu. Dibuat karena pertanyaan-pertanyaan yang tidak mendapat jawaban yang cukup jujur di tempat lain.

Catatan data: angka-angka snapshot di buku ini — harga, hashrate, difficulty, block height, distribusi node software, dan ukuran dataset — diambil pada berbagai titik sepanjang 2024-2025 dan tidak diperbarui otomatis. Prinsip dan aturan protokol yang dijelaskan tidak bergantung pada angka-angka tersebut.

Maxima Freiman
github.com/maximafreiman
5E03 E2F0 B1E9 99EA D762 3C10 CDE4 CB88 9CB9 3645