Blockchain/Tahap III · Rangkaian/3.1 Nod/Pelajaran 4
Nod yang dipangkas dan klien ringan (SPV)
Arkitektur kepercayaan: daripada pengesahan penuh kepada bukti Merkle
BahanNod Bitcoin Core yang dikonfigurasikan dengan prune=550 (pilihan)Dompet ringanPeneroka blok
Ingin tahu
- Bagaimanakah sebuah nod mengesahkan keseluruhan sejarah Bitcoin tanpa menyimpan setiap blok selamanya?
- Mekanisme kriptografi yang spesifik manakah yang membolehkan dompet telefon pintar mengesahkan baki akaunnya tanpa perlu memuat turun ratusan gigabait data?
- Mengapakah penapis asal yang bertujuan melindungi privasi bagi dompet ringan membocorkan identiti pengguna, dan bagaimanakah kelemahan itu diperbaiki?
Teroka
- Pengesahan penuh dan penyimpanan penuh boleh dipisahkan. Setiap nod yang melakukan pengesahan perlu memproses setiap blok sekali untuk membina set output yang belum dibelanjakan pada masa kini, tetapi ia tidak perlu menyimpan blok lama selepas itu. Sesetengah klien pergi lebih jauh dengan melangkau pengesahan sepenuhnya, dan hanya memeriksa bahawa transaksi termasuk dalam blok yang mempunyai bukti kerja yang mencukupi. Pilihan-pilihan ini menimbang ruang cakera, lebar jalur dan privasi berbanding kebebasan.
- Nod yang dipangkas melakukan pengesahan awal yang sama terhadap setiap blok sejak blok genesis, tetapi kemudian memadam data blok lama untuk menjimatkan ruang cakera. Tetapan `prune` dalam Bitcoin Core mengekalkan sekurang-kurangnya 550 MB blok terkini sambil membuang blok yang lebih lama setelah disahkan. Ia kekal sebagai pengesah penuh, mampu menguatkuasakan peraturan konsensus dan melindungi dompet pemiliknya dengan kebenaran yang disahkan secara bebas. Namun, ia tidak lagi dapat menyediakan data blok sejarah kepada rakan sebaya lain atau menyokong ciri yang memerlukan carian mendalam dalam rantaian seperti `txindex`.
- Klien ringan, atau nod SPV, mengambil pendekatan yang berbeza dengan tidak mengesahkan keseluruhan set peraturan. Mereka hanya memuat turun kepala blok, yang mengandungi akar Merkle bagi semua transaksi dalam blok tersebut. Untuk mengesahkan bahawa sesuatu transaksi termasuk dalam blok, klien meminta bukti Merkle daripada rakan sebaya dan memeriksanya berbanding akar dalam kepala blok. Pendekatan ini bergantung pada andaian bahawa rantaian dengan kerja terkumpul paling banyak adalah sah, dengan menukar penguatkuasaan peraturan secara bebas dengan pengurangan drastik dalam keperluan storan dan lebar jalur.
- Pelaksanaan SPV pada peringkat awal menggunakan penapis Bloom BIP37 agar dompet dapat meminta hanya transaksi yang relevan daripada rakan sebaya. Dompet akan menghantar penapis yang menerangkan alamat-alamatnya; rakan sebaya pula akan menyemak mempool mereka dan menghantar transaksi yang sepadan. Reka bentuk ini membocorkan privasi: dengan memerhatikan penapis tersebut, rakan sebaya yang berniat jahat boleh mengetahui alamat mana yang milik pengguna serta melacak aktiviti mereka. Bitcoin Core berhenti menyediakan penapis Bloom secara lalai pada tahun 2019 (versi 0.19).
- Penapis Blok Kompak (BIP157/158) membalikkan aliran ini untuk memulihkan privasi. Daripada dompet mendedahkan alamatnya, nod penuh akan menerbitkan penapis kompak untuk setiap blok; klien akan memuat turun penapis-penapis ini dan mengujinya secara lokal menggunakan kunci sendiri. Apabila penapis tersebut sepadan, klien akan memuat turun keseluruhan blok, kerana meminta satu transaksi sahaja akan mendedahkannya kepada rakan sebaya. Ini menghalang rakan sebaya daripada mengetahui alamat mana yang dipantau oleh dompet, seterusnya meningkatkan privasi pengguna sambil mengekalkan penyelarasan yang efisien.
- Banyak dompet mudah alih bergantung pada pelayan pihak ketiga, contohnya pelayan Electrum, untuk mendapatkan data, sambil memeriksa sendiri bukti Merkle berbanding kepala blok. Komprominya jelas: kemudahan dan penggunaan sumber yang rendah berbanding pengesahan secara bebas dan privasi. Pengguna yang menjalankan nod yang dipangkas mengekalkan keupayaan pengesahan penuh tetapi terhad dalam menyediakan data sejarah; dompet SPV pula menggunakan sumber yang minimum tetapi bergantung pada rakan sebaya untuk menunjukkan setiap transaksi yang relevan, dan menganggap, tanpa memeriksa, bahawa rantaian dengan kerja terkumpul paling banyak adalah sah.
Fakta utama
- Nod yang dipangkas mengesahkan semua blok sejak blok genesis tetapi memadam data lama, dengan mengekalkan sekurang-kurangnya 550 MB blok terkini.
- Klien SPV hanya memuat turun kepala blok dan mengesahkan transaksi menggunakan bukti Merkle berbanding hash akar dalam kepala blok.
- Penapis Bloom BIP37 membocorkan privasi pengguna dengan mendedahkan alamat yang dipantau oleh dompet kepada rakan sebayanya.
- Penapis Blok Kompak (BIP157/158) membolehkan klien menguji penapis yang disediakan oleh pelayan secara setempat, sambil mengekalkan privasi alamat.
- Dompet SPV mempercayai bahawa rantaian dengan bukti kerja terkumpul paling banyak adalah sah, dan bukannya menguatkuasakan semua peraturan konsensus secara bebas.
- Nod yang dipangkas kekal sebagai pengesah penuh dan boleh melindungi dana pemiliknya, tetapi tidak dapat menyediakan data blok sejarah kepada rakan sebaya lain.
Latihan sembilan, enam, tiga, satu
9KumpulSenaraikan 9 jenis nod atau pelaksanaan klien Bitcoin. Catatkan untuk setiap satu: keperluan penyimpanan, kemampuan pengesahan (penuh berbanding SPV), dan kes penggunaan utama.
6KelompokkanKumpulkan 9 item tersebut kepada 6 kategori berdasarkan tahap pengesahan bebas dan penyimpanan data mereka.
3SaringKurangkan 6 kumpulan tersebut kepada 3 kompromi yang berbeza antara privasi, keselamatan, dan penggunaan sumber.
1KristalkanTulis 1 ayat yang menerangkan mengapa model kepercayaan klien ringan berbeza secara asas daripada model kepercayaan nod penuh.
Semakan fakta
Tarikh, angka dan dakwaan telah disemak berbanding dengan sumber yang diterbitkan yang disenaraikan di bawah.
- Satoshi Nakamoto, 'Bitcoin: A Peer-to-Peer Electronic Cash System' (2008), Section 8
- BIP37: Connection Bloom filtering
- BIP157: Client Side Block Filtering
- BIP158: Compact Block Filters for Light Clients
- Bitcoin Core release notes 0.11.0 (pruning)
- A. M. Antonopoulos & D. A. Harding, Mastering Bitcoin, 3rd ed. (2023), ch. 10