Node Bitcoin adalah program yang memverifikasi blok dan transaksi. Reorg adalah perpindahan node Bitcoin ke cabang valid lain dengan akumulasi Proof of Work lebih besar, yaitu kerja yang dibuktikan melalui penambangan. Node menilai ulang blok-blok terbaru beserta pembayarannya. Ini tidak mengubah aturan Bitcoin atau memberi siapa pun tombol untuk membatalkan pembayaran orang lain.
Anna menerima 20.000 satoshi, satuan kecil bitcoin. Dompetnya menunjukkan satu konfirmasi: pembayaran ada dalam blok yang diterima node-nya. Lalu node mengetahui cabang pesaing yang valid tetapi belum memuat pembayaran itu. Saat cabang tersebut membuktikan akumulasi kerja penambangan lebih besar, node beralih ke sana. Penggantian sebagian riwayat ini disebut Reorg. Pembayaran Anna bisa kembali menunggu konfirmasi tanpa ada yang mencuri kunci atau mengubah tanda tangannya. Penentunya bukan pemungutan suara atau sekadar jumlah blok, melainkan chainwork: total kerja yang dibuktikan setiap blok sesuai tingkat kesulitannya. Node tetap menolak cabang tidak valid meskipun kerjanya lebih besar. [1] [4]
Kelanjutannya bergantung pada cabang baru. Jika pembayaran Anna juga ada di sana, pembayaran tetap terkonfirmasi meski jumlah konfirmasinya dapat berubah. Jika tidak, Bitcoin Core dapat mencoba mengembalikannya ke Mempool, daftar sementara transaksi belum terkonfirmasi yang menunggu masuk blok. Namun, transaksi belum tentu bisa masuk kembali. Output transaksi sebelumnya mencatat jumlah dana dan syarat untuk membelanjakannya. Cabang baru mungkin sudah membelanjakan dana yang sama melalui transaksi lain; output sebelumnya yang hendak dibelanjakan mungkin tidak ada, atau syarat waktu dan ketentuan penerimaan lain tidak terpenuhi. Jadi, pembayaran yang kembali menunggu berbeda dari pembayaran yang tidak lagi diizinkan oleh riwayat baru. [1]
Satu konfirmasi berarti blok yang memuat pembayaran. Setiap blok sesudahnya menambah satu konfirmasi dan kerja yang harus dilampaui cabang pesaing. Pembayaran di blok terbaru memiliki satu konfirmasi; semakin dalam letaknya dalam riwayat yang diterima, umumnya semakin sulit mengganti bagian riwayat itu. Namun, tidak ada jumlah konfirmasi yang terbatas yang menjamin secara matematis bahwa penggantian mustahil terjadi. Pedagang dan bursa pun menetapkan waktu tunggu berdasarkan nilai pembayaran serta risiko yang bersedia mereka terima. [3] [5]
Reorg saja bukan bukti serangan. Dua penambang dapat menemukan blok dengan pendahulu yang sama hampir bersamaan. Informasi tidak langsung menyebar ke seluruh jaringan, sehingga node bisa sementara mengikuti ujung rantai yang berbeda. Ketika satu cabang valid mengumpulkan lebih banyak kerja, node beralih ke sana; blok yang ditinggalkan disebut Stale Block. Mekanisme ini juga dapat disalahgunakan dalam serangan Double Spend: penyerang mencoba memaksakan riwayat yang membayar dana yang sama ke tujuan lain. Karena itu, penyebab perpindahan dan pembayaran yang berubah perlu diperiksa. [4] [5]
Saat Reorg, node mempertahankan aturan yang sama dan memilih di antara riwayat yang mematuhinya. Hard Fork mengubah aturan validitas, sehingga perangkat lunak lama dan baru dapat menilai blok yang sama secara berbeda. Reorganisasi sendiri tidak menciptakan mata uang baru atau menulis ulang aturan Bitcoin. Bab berikutnya menjelaskan bagaimana node menjalankan perubahan riwayat ini secara teknis. [4]
Tip adalah blok terakhir pada cabang yang sedang diterima. Titik percabangan adalah blok terakhir yang sama pada rantai aktif saat ini dan cabang alternatif. Kedalaman Reorg biasanya dinyatakan sebagai jumlah blok di ujung aktif yang harus dilepas agar kembali ke leluhur bersama tersebut. Reorg satu blok mengganti ujung rantai; Reorg yang lebih dalam menggulung balik beberapa blok terkonfirmasi. Kedalaman bergantung pada sudut pandang node tertentu. [1]
Full Node memeriksa aturan secara mandiri. Nama fungsi berikut menjelaskan penerapannya dalam Bitcoin Core. Bitcoin Core tidak sekadar memilih cabang tertinggi atau terpopuler. Rantai kandidat harus memenuhi aturan konsensus node saat aktivasi; chainwork yang lebih besar tidak membuat blok tidak valid menjadi valid. FindMostWorkChain memilih kandidat dengan akumulasi kerja terbesar yang belum diketahui tidak valid. Ini belum berarti validasi lengkap: pemeriksaan tambahan berlangsung saat blok dihubungkan dalam ActivateBestChain. Cabang yang diketahui tidak valid dikeluarkan. [1]
UTXO adalah output transaksi yang belum dibelanjakan; himpunan UTXO mencakup output yang tersedia ini. Data undo menyimpan informasi untuk membalikkan dampak sebuah blok. DisconnectTip dan logika validasi terkait membatalkan dampak blok yang dilepas dalam urutan terbalik. UTXO yang telah dibelanjakan dipulihkan, sedangkan output yang dibuat oleh blok yang dihapus kehilangan status terkonfirmasi. Karena itu Bitcoin Core menyimpan data pembatalan agar dapat merekonstruksi set UTXO tepat di titik percabangan. [1]
Rollback di sini berarti kembali ke keadaan sebelum blok yang dilepas; chainstate adalah keadaan kerja node sesuai riwayat yang diterima. Setelah rollback, ConnectTip menghubungkan blok cabang dengan chainwork lebih besar dalam urutan maju. Setiap transaksi divalidasi ulang terhadap set UTXO yang direkonstruksi dan aturan yang berlaku pada ketinggian tersebut. Hasilnya adalah chainstate yang sesuai dengan satu riwayat tertentu, bukan campuran transaksi dari kedua cabang. [1]
Coinbase Transaction adalah transaksi pertama dalam blok yang mengalokasikan imbalan penambang. Ketinggian h menunjukkan posisi blok dalam rantai. Transaksi coinbase merupakan pengecualian: setelah blok dilepas, transaksi itu tidak kembali ke mempool. Menurut aturan konsensus, output coinbase yang dibuat pada ketinggian h paling awal dapat dibelanjakan di blok h + 100. Saat ujung rantai berada di h + 99, blok asal memiliki 100 konfirmasi dan syarat kematangan mengizinkan transaksi pembelanjaan dimasukkan ke blok berikutnya. Jika Reorg menghapus blok yang memuat coinbase, imbalan blok tersebut hilang dari chainstate aktif. Transaksi turunan yang bergantung pada riwayat yang dihapus juga dapat menjadi tidak valid. [1] [2] [3]
Berikut adalah nama fungsi pada versi program tertentu, bukan langkah tambahan yang harus dilakukan pengguna dompet. Dalam Bitcoin Core v29.0, tahapannya jelas: FindMostWorkChain mencari kandidat dengan chainwork terbesar yang belum diketahui tidak valid, ActivateBestChainStep dapat melepas ujung saat ini, ConnectTip memvalidasi dan menghubungkan blok alternatif, dan MaybeUpdateMempoolForReorg memeriksa ulang transaksi dari blok yang dilepas. Aktivasi dapat menemukan ketidakvalidan kandidat lalu melanjutkan pencarian cabang lain. Reorg besar memerlukan pemrosesan lebih banyak blok yang dilepas dan dihubungkan, sehingga dapat memperpanjang pemrosesan ActivateBestChain. [1]
Untuk gambaran yang lebih utuh, baca entri ini bersama Konfirmasi, Proof of Work, Stale Block, Pembelanjaan ganda, Full Node, UTXO. Entri ini juga dirujuk dari Konfirmasi, Pembelanjaan ganda, Transaksi coinbase, Soft Fork.