Blockchain/Tahap III · Rangkaian/3.1 Nod/Pelajaran 3
Muat turun blok awal
Membina semula sejarah dari awal: kos pengesahan bebas
BahanKomputer dengan sekurang-kurangnya 8 GB RAM dan SSDPerisian Bitcoin Core (versi stabil terkini)Akses terminal `bitcoin-cli`
Ingin tahu
- Mengapakah nod baharu memuat turun kepala blok sebelum memuat turun sebarang blok?
- Semakan khusus manakah yang dilangkau apabila 'assumevalid' diaktifkan, dan mengapa ia selamat?
- Jika lebar jalur cukup laju untuk memenuhkan pemacu dalam masa beberapa minit, mengapakah penyelarasan awal masih boleh mengambil masa berhari-hari?
Teroka
- Instans Bitcoin Core yang baharu hanya mengandungi blok genesis yang dikodkan secara tetap dalam kod sumbernya. Ia tidak mengetahui apa-apa tentang panjang atau kesahan rantaian. Apabila bersambung dengan rakan sebaya, ia memulakan Initial Block Download (IBD), iaitu proses yang membina semula keseluruhan sejarah dari 3 Januari 2009 hingga hujung rantaian semasa. Ini bukan salinan pasif; ia merupakan pembinaan semula yang aktif di mana setiap blok diperiksa berdasarkan peraturan konsensus, kecuali jalan pintas yang diterangkan di bawah, sebelum ia diterima.
- Sejak versi 0.10 (2015), IBD menggunakan strategi dua fasa. Pertama, nod memuat turun semua kepala blok, yang padat dan pantas untuk dihantar. Ia mengesahkan bukti kerja pada kepala blok ini untuk memastikan ia memenuhi sasaran kesukaran, lalu membina rantaian kerja tanpa memeriksa kesahan transaksi terlebih dahulu. Setelah rantaian kepala blok terbentuk, nod meminta blok penuh daripada beberapa rakan sebaya secara serentak dan mengesahkannya secara berurutan sebaik sahaja ia tiba.
- Pengesahan transaksi memerlukan pengiraan yang intensif disebabkan oleh pemeriksaan tandatangan kriptografi. Untuk mempercepat penyelarasan, versi 0.14 (2017) memperkenalkan 'assumevalid'. Parameter ini melangkau pengesahan tandatangan bagi semua blok yang terletak di bawah hash yang dikodkan secara tetap bagi sebuah blok yang telah disemak secara meluas. Nod masih memeriksa segala yang lain, termasuk bukti kerja, jumlah dan set UTXO; hanya semakan skrip dan tandatangan dilangkau bagi sejarah yang jauh itu. Pengguna boleh menyahaktifkan semakan ini untuk mengesahkan setiap tandatangan sejak blok genesis, dengan kos masa penyelarasan yang jauh lebih lama.
- Versi terkini menawarkan 'assumeUTXO', ciri eksperimen yang membolehkan nod bermula dengan snapshot set UTXO semasa yang telah dikira terlebih dahulu. Nod dapat digunakan dengan cepat sambil ia mengesahkan sejarah penuh di latar belakang. Sehingga semakan itu selesai, ia mempercayai snapshot yang hashnya dikodkan secara tetap dalam perisian (fail itu sendiri boleh diperoleh dari mana-mana); selepas itu, nod menjadi bebas sepenuhnya.
- Tempoh IBD berbeza dengan ketara bergantung pada perkakasan. Pada mesin moden dengan SSD yang pantas dan 8 GB RAM, penyelarasan mungkin mengambil masa beberapa jam. Pada peranti yang terhad seperti Raspberry Pi, ia boleh mengambil masa beberapa hari atau lebih lama. Kesesakan utamanya jarang sekali lebar jalur; sebaliknya ialah kelajuan penulisan cakera untuk cache UTXO (dbcache) dan kitaran CPU untuk pengesahan skrip. Cakera keras yang perlahan akan menyekat proses walaupun dengan internet gigabit, kerana nod perlu sentiasa membaca dan menulis keadaan.
- Setelah diselaraskan, nod mencapai hujung rantaian sah yang mempunyai kerja terkumpul paling banyak. Ia beralih daripada pemerhati kepada peserta penuh yang mampu menyampaikan transaksi dan blok kepada rakan sebayanya. Arahan `bitcoin-cli getblockchaininfo` menunjukkan kemajuan ini melalui medan `verificationprogress`, yang meningkat ke arah 1.0 seiring rantaian sejarah disahkan. Pada ketika itu, nod memegang salinan lengkap sejarah wang yang telah disahkan secara bebas.
Fakta utama
- Versi Bitcoin Core 0.10 (2015) memperkenalkan penyelarasan berbentuk “header-first” untuk mengoptimumkan proses muat turun blok permulaan.
- Parameter ‘assumevalid’ dalam versi 0.14 mengabaikan semakan tandatangan untuk blok yang berada di bawah nilai hash yang telah ditetapkan, bagi mempercepat proses penyelarasan.
- 'assumeUTXO' membolehkan nod bermula daripada snapshot UTXO dan mengesahkan sejarah di latar belakang; ia diperkenalkan secara eksperimen dalam versi terkini.
- Kelajuan penulisan cakera dan pengagihan memori untuk cache UTXO sering menjadi halangan yang lebih ketara berbanding lebar jalur semasa IBD.
- Nod baharu mengesahkan blok secara berurutan walaupun blok dimuat turun secara serentak daripada beberapa rakan sebaya.
- `bitcoin-cli getblockchaininfo` memaparkan `verificationprogress`, yang menunjukkan sejauh mana rantaian tersebut telah disahkan.
Latihan sembilan, enam, tiga, satu
9KumpulSenaraikan 9 konfigurasi perkakasan yang berbeza (CPU, RAM, jenis storan) yang digunakan untuk menjalankan nod Bitcoin. Catatkan masa penyelarasan biasa yang dilaporkan untuk setiap satu selepas pemasangan baru.
6KelompokkanKumpulkan 9 konfigurasi ini kepada 6 kategori berdasarkan kekangan utama mereka: terikat CPU, terikat RAM, terikat Disk-I/O, terikat lebar jalur, atau seimbang.
3SaringKurangkan 6 faktor kepada 3 faktor yang paling menentukan tempoh masa penyelarasan awal.
1KristalkanTulis 1 ayat yang menerangkan kompromi antara kelajuan penyelarasan dan kebebasan kriptografi dalam muat turun blok awal.
Semakan fakta
Tarikh, angka dan dakwaan telah disemak berbanding dengan sumber yang diterbitkan yang disenaraikan di bawah.