MSTR Cat

Blockchain/Tahap III · Rangkaian/3.1 Nod/Pelajaran 6

Bitcoin Core dan pelaksanaan lain

Satu protokol, banyak enjin: asal-usul perisian Bitcoin

BahanNod Bitcoin Core yang sedang berjalanAkses ke antaramuka terminal atau baris arahan

Ingin tahu

  1. Siapa yang menentukan apa itu blok apabila dua bahagian kod tidak bersetuju?
  2. Mengapakah ralat pangkalan data yang kecil mampu membelah rantaian kepada dua?
  3. Apa yang akan terjadi pada rangkaian jika pelaksanaan yang paling popular itu berhenti diselenggara?

Teroka

  1. Bitcoin bermula sebagai klien C++ tunggal yang ditulis oleh Satoshi Nakamoto. Pada tahun 2011, antaramukanya ditulis semula menggunakan perpustakaan Qt, dan perisian tersebut dikenali sebagai Bitcoin-Qt. Menjelang tahun 2014, versi 0.9 telah menghilangkan sepenuhnya akhiran tersebut dan menjadi Bitcoin Core. Perubahan nama ini mencerminkan peralihan identiti: ia bukan lagi sekadar alat milik Satoshi, tetapi merupakan pelaksanaan rujukan rasmi untuk peraturan rangkaian tersebut.
  2. Kepimpinan pangkalan kod beralih daripada Gavin Andresen, yang memimpinnya dari tahun 2010 sehingga beliau berundur pada tahun 2014, kepada Wladimir van der Laan. Kini, sekumpulan kecil penyelenggara menggabungkan perubahan selepas semakan rakan sebaya yang teliti. Skim penomboran versi melompat daripada 0.21 kepada 22.0 pada tahun 2021, menandakan kematangan. Keluaran utama dibuat kira-kira dua kali setahun, dan setiap satu menjalani ujian yang menyeluruh sebelum diedarkan.
  3. Konsensus bukan sekadar soal logik; ia memerlukan tingkah laku yang sama bait demi bait di puluhan ribu nod. Pada Mac 2013, versi 0.8 memperkenalkan LevelDB sebagai enjin storannya. Sebuah blok yang diterima oleh perisian baharu ditolak oleh versi lama yang menggunakan Berkeley DB akibat pepijat had kunci. Rantaian terpecah sehingga pelombong menurunkan versi perisian mereka, menunjukkan bahawa perbezaan tingkah laku yang tersembunyi, walaupun bukan dalam kod konsensus itu sendiri, boleh memecahkan rangkaian.
  4. Pelaksanaan alternatif wujud untuk mengelakkan mana-mana satu pangkalan kod daripada menjadi titik kegagalan atau dikuasai. btcd ditulis dalam Go, bcoin dalam JavaScript, dan libbitcoin dalam C++. Bitcoin Knots, yang diselenggara oleh Luke Dashjr, ialah set tampalan di atas Core dengan tetapan lalai yang berbeza, terutamanya penapisan yang lebih ketat terhadap transaksi yang membawa data. Floresta menggunakan struktur data Utreexo untuk pengesahan yang cekap. Projek-projek ini berfungsi sebagai pengimbang kepada proses pembangunan Core.
  5. Risiko untuk melaksanakan semula mekanisme konsensus adalah tinggi, kerana ralat yang membenarkan blok yang tidak sah boleh menyebabkan kerugian kewangan atau pemisahan rantai. Untuk mengurangkan risiko ini, libbitcoinkernel bertujuan untuk mengasingkan logik konsensus utama ke dalam perpustakaan yang boleh digunakan semula. Ini membolehkan perisian lain mengesahkan transaksi tanpa perlu menyalin keseluruhan kod nod, sekaligus memastikan peraturan tetap konsisten walaupun infrastruktur di sekelilingnya berubah.
  6. Jalankan 'bitcoin-cli getnetworkinfo' pada sesebuah nod untuk melihat versinya sendiri, dan 'getpeerinfo' untuk melihat perisian yang dilaporkan oleh setiap rakan sebaya (rentetan 'subver'nya). Rangkaian mengekalkan kebolehoperasian walaupun menggunakan susunan perisian yang berbeza, tetapi dominasi Bitcoin Core bermakna ia secara efektif menentukan rentak naik taraf protokol. Nod yang tidak dinaik taraf terus mengikuti rantaian melalui soft fork, tetapi nod yang tingkah laku konsensusnya menyimpang boleh terpisah daripada rangkaian.

Fakta utama

  • Bitcoin-Qt telah ditukar nama kepada Bitcoin Core pada tahun 2014 dengan versi 0.9.
  • Wladimir van der Laan menggantikan Gavin Andresen sebagai penyelenggara utama pada tahun 2014.
  • Pemisahan rantaian pada Mac 2013 berlaku disebabkan oleh pepijat had kunci Berkeley DB dalam versi lama.
  • btcd, bcoin, dan libbitcoin ialah pelaksanaan alternatif yang ditulis dalam Go, JavaScript, dan C++ masing-masing.
  • Bitcoin Knots ialah terbitan Core dengan dasar relay yang lebih ketat, diselenggara oleh Luke Dashjr.
  • libbitcoinkernel, yang masih dalam fasa pembangunan, bertujuan untuk mengasingkan kod konsensus agar boleh digunakan semula oleh perisian lain.

Latihan sembilan, enam, tiga, satu

9KumpulSenaraikan 9 pelaksanaan nod Bitcoin yang berbeza atau fork utama daripada klien asal. Nyatakan bahasa pengaturcaraan utama mereka serta status penyelenggaraan semasa.
6KelompokkanKumpulkan 9 item ini kepada 6 kategori berdasarkan hubungannya dengan pelaksanaan rujukan: fork langsung, penulisan semula bebas, perpustakaan konsensus, projek yang diarkibkan, alternatif aktif, atau eksperimen.
3SaringKurangkan 6 kumpulan tersebut kepada 3 hujah mengenai sama ada pelbagai pelaksanaan menjadikan Bitcoin lebih selamat atau lebih berisiko.
1KristalkanTulis 1 ayat yang menerangkan bagaimana pepijat pangkalan data dalam satu pelaksanaan boleh memaksa pemisahan rantaian global jika tingkah laku konsensus menyimpang.

Semakan fakta

Tarikh, angka dan dakwaan telah disemak berbanding dengan sumber yang diterbitkan yang disenaraikan di bawah.

Buka dalam akademi interaktif →

EN PT ES ZH JA KO RU DE FR