Stale Block memenuhi aturan Bitcoin, tetapi tidak termasuk rantai aktif — riwayat yang dipakai suatu node, yaitu komputer yang memeriksa blok dan transaksi, untuk menghitung konfirmasi dan menentukan dana yang bisa dibelanjakan. Pilihannya ditentukan oleh akumulasi kerja penambangan pada cabang yang valid. Bagi penerima pembayaran, ini bisa berarti kehilangan satu konfirmasi dan menunggu lagi, bukan otomatis kehilangan bitcoin.
Bayangkan penambang Anna dan Pavel. Keduanya mengerjakan penerus blok terakhir yang sama. Anna menemukan blok baru, tetapi sebelum kabarnya sampai kepada Pavel, ia juga menemukan bloknya sendiri. Keduanya bisa valid, hanya dengan kumpulan transaksi yang sedikit berbeda. Node yang memeriksa blok dan transaksi mendengar kabar itu dalam urutan berbeda. Untuk sementara, mereka mengikuti ujung rantai yang berbeda. Ketika satu cabang valid mengumpulkan lebih banyak kerja dan node selesai memverifikasinya, mereka beralih ke cabang tersebut. Blok yang tertinggal pada cabang yang ditinggalkan disebut Stale Block. [1]
Bitcoin membutuhkan satu riwayat agar dana yang sama tidak dapat berhasil dibelanjakan dua kali. Karena itu, memastikan bahwa masing-masing blok memenuhi aturan saja belum cukup. Node juga harus memilih cabang valid yang akan diikuti. Validitas blok dan pemilihan rantai adalah dua pertanyaan berbeda. Stale Block bisa memiliki bukti kerja penambangan (Proof of Work), transaksi, dan tanda tangan yang benar, tetapi tetap berada di luar riwayat terpilih. Itu tidak menjadikannya blok rusak atau hasil penipuan. [1] [2]
Misalkan blok Pavel memuat pembayaran Anda dan dompet menampilkan satu konfirmasi. Jika cabang Anna akhirnya menang, hasilnya bergantung pada isinya. Transaksi yang sama mungkin ada di sana juga, sehingga tetap terkonfirmasi. Jika tidak, transaksi bisa kembali ke Mempool, daftar lokal transaksi belum terkonfirmasi milik node, lalu menunggu blok lain. Namun, kembalinya transaksi tidak dijamin: transaksi harus tetap dapat diterima dan tidak bertentangan dengan riwayat baru. Jika riwayat itu sudah memuat transaksi lain yang membelanjakan dana yang sama, pembayaran semula tidak bisa sekaligus dikonfirmasi di dalamnya. [2]
Pembayaran biasa berbeda dari Coinbase Transaction, transaksi pertama dalam blok yang memberikan imbalan kepada penambang. Imbalan ini mencakup bitcoin yang baru diterbitkan dan biaya transaksi. Jika blok Pavel tetap di luar rantai aktif, imbalan coinbase-nya tidak dapat dibelanjakan dalam riwayat itu. Imbalan tersebut tidak berpindah ke Mempool seperti pembayaran biasa. Sementara itu, listrik yang digunakan Pavel tidak kembali. Karena itu, penambang peduli bukan hanya pada penemuan blok, tetapi juga pada penyampaian kabarnya dengan cepat kepada pihak lain. [1] [2]
Artikel dan penjelajah blok terkadang menyebut Stale Block sebagai Orphan Block. Kedua istilah sering dipakai sebagai sinonim, tetapi makna yang lebih tepat berbeda. Orphan Block adalah blok yang pendahulunya belum diketahui node, sehingga belum dapat dihubungkan ke rantai. Stale Block bisa memiliki pendahulu yang sudah diketahui dan tetap valid; blok itu hanya berada di luar cabang terpilih. Kata orphan juga dipakai untuk transaksi ketika node belum memiliki transaksi terdahulu yang diperlukan untuk memeriksa inputnya. Jadi, perhatikan makna yang dimaksud sumber tersebut. [1]
Jika node sudah memakai blok Pavel lalu menggantinya dengan cabang Anna, node melakukan Reorg: mengubah sebagian riwayat yang dianggap aktif. Itulah sebabnya jumlah konfirmasi dalam dompet bisa berubah. Perlombaan singkat seperti contoh ini dapat terjadi pada penambangan yang jujur. Namun, penyerang bisa mencoba memanfaatkan perubahan riwayat untuk Double Spend, yaitu meloloskan pembayaran lain dengan dana yang sama. Stale Block saja tidak membuktikan niat itu. Urutan kejadian dan kemungkinan transaksi yang bertentangan perlu diperiksa. [1] [2]
Kabar tentang blok baru tidak langsung menjangkau seluruh dunia. Semakin lama penyebarannya, semakin lama penambang lain mungkin terus bekerja pada pendahulu yang sama tanpa mengetahuinya. Kecepatan pengiriman, hubungan antar-node, dan waktu penyebaran relatif terhadap jeda antarblok semuanya berpengaruh. Stale Rate adalah proporsi blok valid yang ditemukan tetapi tidak bertahan di rantai aktif. Ini bukan persentase tetap yang ditentukan aturan Bitcoin. Saat membandingkan angka, perhatikan pula periode pengamatan dan blok yang benar-benar teramati. [1] [3]
Spesifikasi BIP152 menjelaskan Compact Block Relay. Node sering kali sudah mengetahui sebagian besar transaksi dalam blok baru dari Mempool-nya, sehingga seluruh isinya tidak perlu dikirim ulang. Pengenal singkat memungkinkan node menyusun blok dari data yang dimilikinya, lalu meminta transaksi yang belum ada. Ini menghemat data dan, dalam kondisi yang sesuai, membuat node lebih cepat mengetahui blok baru. Perbaikan ini membantu pengiriman, bukan mengubah aturan validitas. Dua blok yang ditemukan hampir bersamaan tetap tidak bisa dihindari sepenuhnya. [3]
Akumulasi kerja sebuah cabang secara teknis disebut chainwork. Ini bukan pengukuran listrik yang benar-benar digunakan atau pemungutan suara berdasarkan jumlah komputer. Setiap blok menambahkan nilai yang dihitung dari tingkat kesulitan Proof of Work-nya, yaitu bukti kerja penambangan. Karena itu, ‘rantai terpanjang menang’ kurang tepat dibanding ‘cabang valid dengan chainwork lebih besar menang’. Node harus memeriksa aturan: kerja sebanyak apa pun tidak membuat transaksi tidak valid menjadi valid. Sebutan stale juga menggambarkan hubungan blok dengan riwayat yang saat itu dipilih oleh suatu node. [1] [2]
Penjelajah blok memberikan gambaran yang berguna, tetapi menunjukkan sudut pandang layanannya. Full Node milik Anda, yaitu node yang memeriksa aturan, memungkinkan Anda meneliti riwayat yang diterima secara mandiri. Jika node menyimpan data blok tersebut, getblock dalam Bitcoin Core mengembalikan confirmations: -1 untuk blok di luar rantai aktif. Jika datanya tidak tersedia, misalnya sudah dihapus melalui pruning untuk menghemat penyimpanan, perintah ini mengembalikan pesan kesalahan. Nilai itu sendiri belum membuktikan bahwa blok lolos seluruh pemeriksaan validitas. Untuk memastikan posisinya, periksa juga hash — pengenal blok —, blok pendahulu, ketinggian (jumlah blok sebelumnya), dan chainwork; telusuri setiap pembayaran secara terpisah. Dua blok bisa memiliki ketinggian yang sama tetapi hash berbeda. [4] [5]
Untuk gambaran yang lebih utuh, baca entri ini bersama Reorg, Konfirmasi, Block, Block Header, Proof of Work, Penambangan. Entri ini juga dirujuk dari Reorg, Mining Pool, Hashrate, Selfish Mining.