摘要:最近美國(guó)SEC通過(guò)了比特幣的ETF申請(qǐng),比特幣究竟是個(gè)什么東西,從技術(shù)上來(lái)說(shuō),bitcoin是一個(gè)點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng),它可以實(shí)現(xiàn)分布式的記賬,不依賴中心化的賬務(wù)系統(tǒng)(比如銀行,支付寶),它的賬本完整的分布在每一個(gè)比特幣的客戶端,并且實(shí)時(shí)同步。...
近期美國(guó) SEC 通過(guò)比特幣的人 從技術(shù)上講,ETF申請(qǐng),BTC到底是什么,bitcoin 它是一個(gè)點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng),可以實(shí)現(xiàn)分布式會(huì)計(jì),不依賴集中會(huì)計(jì)系統(tǒng)(如銀行、支付寶),其賬簿完全分布在每個(gè)比特幣客戶端,并實(shí)時(shí)同步。更受歡迎的是,您可以在客戶端本地轉(zhuǎn)賬,查詢所有賬戶的余額和交易明細(xì)。讓我們來(lái)分析一下它的代碼。
比特幣代碼開源,在 github 您可以查看所有版本的歷史代碼和修改記錄:
https:
//github.com/bitcoin/bitcoin
以下分析了每個(gè)目錄和功能模塊的功效:
根目錄
src/
: 該目錄包括比特幣核心的源代碼。
doc/
: 文檔目錄,包括安裝指南、奉獻(xiàn)指南等。
contrib/
: 包括一些輔助腳本和常用工具。
depends/
: 依賴庫(kù),用于構(gòu)建對(duì)比特幣核心的依賴。
qa/
: 包括與測(cè)試相關(guān)的質(zhì)量保證腳本工具等。
src目錄
wallet/
: 錢夾相關(guān)代碼,包括密鑰管理和交易建立。
qt/
: 包括BTCQT客戶端頁(yè)面的代碼,即比特幣的圖形用戶界面。
rpc/
: 遠(yuǎn)程過(guò)程調(diào)用相關(guān)代碼與比特幣核心交互。
net/
: 網(wǎng)絡(luò)相關(guān)代碼,處理節(jié)點(diǎn)之間的通信。
node/
: 與節(jié)點(diǎn)操作相關(guān)的代碼包括區(qū)塊鏈和交易處理。
consensus/
: 與共識(shí)規(guī)則相關(guān)的代碼包括區(qū)塊和交易的驗(yàn)證。
script/
: 腳本分析相關(guān)代碼,處理交易腳本。
crypto/
: 哈希算法和加密技術(shù)等與加密相關(guān)的函數(shù)。
leveldb/
: 用于存儲(chǔ)區(qū)塊鏈數(shù)據(jù)的LevelDB數(shù)據(jù)庫(kù)源代碼。
zmq/
: ZeroMQ信息接口的實(shí)現(xiàn),用于發(fā)布實(shí)時(shí)系統(tǒng)通知。
其他資料
init.cpp
: 包括主初始化代碼,負(fù)責(zé)啟動(dòng)BTC節(jié)點(diǎn)。
main.cpp
: 舊版本包含了區(qū)塊鏈和交易處理的主要邏輯,新版本可能已經(jīng)將這些邏輯分散到其他模塊。
bitcoind.cpp
: 比特幣的守護(hù)過(guò)程啟動(dòng)代碼。
bitcoin-cli.cpp
: 命令行界面的客戶端代碼。
檢測(cè)目錄
test/
: 包括自動(dòng)化測(cè)試代碼,因?yàn)樗鼈兇_保了代碼的準(zhǔn)確性。
functional/
: 用于測(cè)試比特幣核心功能的功能測(cè)試腳本。
如何分析代碼
閱讀文檔
: 首先查看doc/目錄下的文檔,特別是README和CONTRIBUTING文檔,了解如何構(gòu)建項(xiàng)目,如何貢獻(xiàn)。
查看入口
: src/init.cpp和src/bitcoind.CPP一般是理解程序啟動(dòng)過(guò)程的好地方。
追蹤數(shù)據(jù)流
: 了解交易是如何建立、廣播、驗(yàn)證并最終添加到區(qū)塊鏈中的。
理解構(gòu)造
: 查看類和函數(shù)的定義,了解它們是如何相互作用的。
運(yùn)行測(cè)試
: 查看test/目錄、操作單元測(cè)試和集成測(cè)試,了解它們是如何工作的。