Initial Block Download, disingkat IBD, adalah sinkronisasi awal node Bitcoin. Dalam proses biasa, node memperoleh blok lama, memeriksanya menurut aturan perangkat lunaknya, lalu membangun catatan terkini tentang dana yang belum dibelanjakan.
Anda menjalankan Full Node di rumah: program yang memeriksa blok dan transaksi Bitcoin secara mandiri. Blok mengelompokkan transaksi dalam satu kumpulan yang ditambahkan ke riwayat bersama. Peserta lain sudah memiliki riwayat panjang, sedangkan node baru Anda belum. Mula-mula node memperoleh header, catatan ringkas yang menghubungkan blok-blok. Header juga memuat Proof of Work, bukti pekerjaan komputasi. Penambang mencari bukti ini melalui perhitungan berulang; peserta lain dapat memeriksa hasilnya dengan cepat. Daftar header ibarat daftar isi buku: membantu menemukan bagian yang dicari, tetapi memilikinya bukan berarti sudah membaca dan memeriksa setiap halaman. [1] [7]
Jika node tetangga menawarkan cabang riwayat berbeda, node Anda tidak menghitung suara. Header memungkinkan perbandingan akumulasi pekerjaan komputasi untuk memilih calon cabang yang layak diperiksa lebih lanjut. Lebih banyak blok belum tentu berarti lebih banyak pekerjaan. Bahkan pekerjaan yang sangat besar tidak membebaskan transaksi tidak sah dari aturan; isi cabang terpilih tetap harus diperiksa. [1] [2] [6]
Node dapat mengambil blok dari beberapa tetangga sekaligus, sehingga tidak bergantung pada kecepatan satu pengirim. Namun, untuk menghubungkannya ke riwayat yang telah divalidasi, node membutuhkan keadaan sebelumnya. Input pembayaran merujuk pada jumlah sebelumnya yang hendak dibelanjakan. Node harus memastikan jumlah itu ada dan belum pernah dibelanjakan. Karena itu, blok lebih baru yang sudah diunduh bisa menunggu pemrosesan blok sebelumnya. Data sudah terunduh tidak sama dengan sinkronisasi sudah selesai. [1] [2]
Node membandingkan isi blok dengan sidik jari transaksi pada header, yang dihasilkan oleh Merkle Tree. Node juga memeriksa, misalnya, urutan pembelanjaan dan apakah imbalan penambang melebihi jumlah yang diizinkan. Aturan yang diterapkan adalah aturan yang berlaku pada titik tersebut dalam riwayat. Tanda tangan digital membuktikan otorisasi pembayaran menggunakan kunci privat, sebuah nilai angka rahasia, tanpa mengungkap kunci itu. Pemeriksaan tanda tangan lama dan syarat pembelanjaan lainnya memiliki pengaturan khusus, assumevalid, yang dijelaskan di bawah. Header atau berkas dari tetangga yang tampak tepercaya tidak menggantikan seluruh pemeriksaan ini. [2] [3]
Setiap kali memproses blok, node menghapus output yang telah dibelanjakan dan menambahkan output baru. Output adalah jumlah tertentu dengan syarat untuk membelanjakannya nanti. Jika belum dibelanjakan, output itu disebut UTXO. Kumpulan output tersebut memungkinkan pemeriksaan pembayaran berikutnya tanpa membaca ulang seluruh riwayat dari awal. Ini bukan daftar rekening bank maupun salinan semua transaksi masa lalu. [2] [3]
Dalam kondisi tertentu, Bitcoin Core dapat melewati pemeriksaan skrip lama, yaitu tanda tangan dan syarat pembelanjaan lainnya. Pengaturan assumevalid menunjuk blok dikenal yang riwayatnya telah diverifikasi secara eksternal; hubungan dengan blok-blok sebelumnya, pekerjaan yang memadai, dan kedalamannya juga penting. Pemeriksaan lain yang diperlukan tetap berjalan, tetapi sebagian hasil verifikasi diasumsikan benar. Asumsi yang salah karena itu tidak bebas risiko. assumevalid=0 menonaktifkan optimasi ini, dengan konsekuensi komputer Anda harus mengerjakan lebih banyak hal. [2]
Pruned Node menghapus berkas blok lama setelah memprosesnya, sambil mempertahankan UTXO terkini dan data lain yang diperlukan. Dalam IBD biasa, node tetap memperoleh dan memproses riwayat; hanya saja tidak menyimpan semuanya secara permanen. Yang dihemat adalah ruang disk, bukan otomatis jumlah data pada unduhan pertama. Tugas berikutnya yang membutuhkan blok terhapus mungkin mengharuskan node memperolehnya lagi. [2] [7]
Bitcoin Core v29.0 mempertimbangkan, antara lain, usia blok terakhir yang diterima, akumulasi pekerjaan minimum, dan status pemuatan. Setelah penanda operasional ini berubah menjadi false (yang berarti sinkronisasi awal selesai), nilainya tidak kembali ke true (yang berarti sinkronisasi awal masih berlangsung) selama proses program yang sama. Penanda ini membantu mengatur perilaku program, bukan membuktikan bahwa tidak ada blok lebih baru di mana pun. Bahkan putusnya koneksi kemudian tidak menjadikannya indikator keterkinian yang dapat selalu diandalkan. [2] [5]
Koneksi cepat membantu, tetapi komputer juga harus menghitung dan menulis ke disk. Prosesor, memori, penyimpanan, dan ketersediaan tetangga memengaruhi durasi. Dalam keluaran teknis getblockchaininfo, verificationprogress memperkirakan kemajuan verifikasi. Angka itu bukan janji berapa menit tersisa, juga bukan sekadar proporsi byte yang sudah diunduh. Setelah program ditutup dengan benar, saat dijalankan lagi ia dapat meneruskan kemajuan yang tersimpan tanpa mengulang semuanya dari nol. [5] [7]
AssumeUTXO memungkinkan penggunaan snapshot UTXO yang didukung, yaitu keadaan tersimpan pada blok tertentu. Perangkat lunak membandingkan isinya dengan sidik jari yang diharapkan dan dapat mengejar keadaan terkini lebih awal, sambil memproses riwayat di latar belakang. Kemudian keadaan yang dihasilkan dari verifikasi historis itu juga dibandingkan. Ini bukan sembarang basis data dari orang asing atau cara untuk selamanya menghindari pemeriksaan masa lalu. Dapat digunakan lebih awal dan selesainya verifikasi historis adalah dua tahap berbeda. [4] [8]
Untuk gambaran yang lebih utuh, baca entri ini bersama Pruned Node, AssumeUTXO, Block Propagation, Compact Blocks, Bitcoin, Bitcoin Core. Entri ini juga dirujuk dari Block Propagation, Compact Blocks, Pruned Node, AssumeUTXO.