Blockchain/Tahap II · Mekanisme/2.3 Blok dan rantaian/Pelajaran 1
Kepala blok
Lapan puluh bait metadata yang menambat keseluruhan rantaian
BahanPeneroka blok dengan keupayaan memaparkan data heks mentahEditor heksadesimal atau kalkulator hash SHA-256 dalam talian
Ingin tahu
- Bagaimanakah struktur yang hanya bersaiz 80 bait dapat memberi komitmen secara kriptografi kepada data transaksi bernilai jutaan dolar?
- Apakah peraturan khusus yang menghalang pelombong daripada memanipulasi medan cap masa untuk mendapatkan kelebihan?
- Mengapa telefon pintar boleh mengesahkan keselamatan rangkaian Bitcoin tanpa memuat turun sejarahnya yang lengkap?
Teroka
- Setiap blok Bitcoin bermula dengan kepala blok 80 bait, diikuti oleh senarai transaksi yang panjangnya berubah-ubah. Walaupun senarai transaksi boleh mencapai kira-kira empat juta bait setiap blok, hanya kepala blok yang digunakan untuk hashing bukti kerja (PoW) dan pengenalpastian rantaian. Perbezaan saiz yang melampau ini bermakna kepala blok bertindak sebagai cap jari padat bagi keseluruhan bekas tersebut, membolehkan nod memproses metadata sebelum memuat turun data pukal.
- Medan pertama ialah ‘version’, bersaiz empat bait. Pada asalnya bertujuan menjejak lelaran perisian, kini ia membawa bit isyarat bagi soft fork di bawah BIP9. Pelombong menetapkan nombor versi tertentu untuk menunjukkan sokongan terhadap peraturan konsensus baharu sebelum pengaktifan. Medan ini juga mengandungi kekangan; contohnya, BIP34 mewajibkan blok versi 2 memasukkan ketinggian blok ke dalam skrip transaksi coinbase, menunjukkan bagaimana kepala blok menguatkuasakan perubahan struktur di seluruh rangkaian.
- ‘Hash blok sebelumnya’ (32 bait) memautkan setiap blok kepada blok induknya dengan mengandungi hash SHA-256 berganda bagi kepala blok sebelumnya. Mengubah mana-mana satu bait dalam blok terdahulu akan mengubah hashnya, lalu memutuskan pautan kepada setiap blok berikutnya. Rantaian hash ini memastikan data sejarah tidak boleh diubah tanpa mengulangi kerja pengiraan bagi semua blok yang menyusul.
- ‘Akar Merkle’ (32 bait) berfungsi sebagai cap jari kriptografi bagi semua transaksi dalam blok. Ia diterbitkan dengan menghash pasangan ID transaksi secara rekursif sehingga tinggal satu nilai sahaja. Struktur ini membolehkan pengesahan pembayaran ringkas (SPV), di mana klien ringan boleh membuktikan kemasukan sesuatu transaksi hanya dengan akar ini dan sekumpulan kecil hash sibling, tanpa perlu memuat turun blok penuh.
- ‘Timestamp’ (4 bait) merekodkan masa penciptaan dalam saat epoch Unix. Peraturan konsensus mengehadkan medan ini untuk mencegah manipulasi: nilainya mesti melebihi masa median 11 blok sebelumnya, dan ia ditolak oleh nod jika mendahului jam nod itu sendiri lebih daripada dua jam (sejak Bitcoin Core 27, masa sistem nod; versi lebih awal menggunakan masa yang dilaraskan oleh peer). Kekangan ini memastikan masa blok kekal cukup tepat untuk pengiraan kesukaran sambil membenarkan sedikit variasi akibat kelewatan penyebaran dalam rangkaian.
- Medan selebihnya ialah ‘nBits’ (4 bait), pengekodan padat bagi sasaran bukti kerja, dan ‘nonce’ (4 bait), nombor sebarang yang diubah-ubah oleh pelombong untuk mencari hash yang sah. Oleh sebab kepala blok bersaiz kecil, menyimpan setiap kepala blok sejak 2009 memerlukan kurang daripada 100 MB ruang storan. Klien ringan boleh menyimpan keseluruhan sejarah ini, mengesahkan semua kekangan bukti kerja secara bebas, dan menganggap, tanpa memeriksa transaksi, bahawa rantaian dengan jumlah kerja terkumpul paling banyak adalah sah.
Fakta utama
- Kepala blok Bitcoin terdiri daripada tepat enam medan yang berjumlah 80 bait.
- Medan ‘version’ membawa bit isyarat soft-fork seperti yang ditakrifkan dalam BIP9.
- Cap masa sesuatu blok mesti melebihi median 11 blok sebelumnya dan tidak mendahului jam nod yang mengesahkannya lebih daripada dua jam.
- Blok lengkap boleh menjadi hampir 50,000 kali lebih besar daripada kepala bloknya disebabkan oleh data transaksi.
- Menyimpan semua kepala blok Bitcoin sejak blok genesis memerlukan ruang storan kurang daripada 100 MB.
- Medan ‘nBits’ menyimpan sasaran kesukaran dalam format uint32 yang ringkas.
Latihan sembilan, enam, tiga, satu
9KumpulSenaraikan 9 perkara yang boleh dibaca daripada sebuah blok pada peneroka blok: enam medan kepala bloknya, serta hash blok, ketinggian dan kesukaran yang diterbitkan daripadanya.
6KelompokkanKumpulkan 9 perkara tersebut kepada 6 kumpulan: pautan rantaian, komitmen transaksi, masa, sasaran perlombongan, carian perlombongan dan nilai terbitan.
3SaringKurangkan 6 kumpulan itu kepada 3 tugas yang dilakukan oleh kepala blok untuk rangkaian.
1KristalkanTulis satu pernyataan yang mentakrifkan hubungan antara kepala blok 80 bait dengan senarai transaksi bersaiz beberapa megabait dari segi komitmen kriptografi.
Semakan fakta
Tarikh, angka dan dakwaan telah disemak berbanding dengan sumber yang diterbitkan yang disenaraikan di bawah.