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