比特幣源碼解讀一

? ? ? 上次在ubuntu系統(tǒng)中將比特處源碼編譯環(huán)境設(shè)置好了后,還沒(méi)有具體分析里面的代碼,今天我們就解讀一下。源碼版本是bitcoin-0.9.5rc2。

? ? 我們說(shuō)驗(yàn)證比特幣客戶端安裝成功就是從 which bitcoind 這個(gè)命令進(jìn)行驗(yàn)證的,因?yàn)楸忍貛趴蛻舳擞袃蓚€(gè)。一個(gè)是圖形界面的版本,通常被稱(chēng)為 Bitcoin(首字母大寫(xiě)),以及一個(gè)簡(jiǎn)潔命令行的版本(稱(chēng)為 bitcoind)。

我們就從bitcoind這個(gè)命令行入手,因?yàn)檫@個(gè)里面代碼少,感覺(jué)簡(jiǎn)單點(diǎn)(嘿嘿)。我在源碼的src目錄下發(fā)現(xiàn)了bitcoind.cpp文件。但沒(méi)發(fā)現(xiàn)bitcoind.h文件,我也不知道為什么。但是沒(méi)影響我們看代碼。

一個(gè)C++程序的入口是從main()函數(shù)執(zhí)行的。我們也從這里看起。

bitcoind主函數(shù)

代碼很簡(jiǎn)單我們就逐行分析下。

一。SetupEnvironment函數(shù)定義在src/util.cpp中。

SetupEnvironment函數(shù)

這個(gè)函數(shù)設(shè)置了本地運(yùn)行環(huán)境。此函數(shù)的作用是根據(jù)不同國(guó)家設(shè)置不同的編碼,用于國(guó)際化的。

二。noui_connect

連接bitcoind客戶端的信號(hào)處理程序。我的理解是這個(gè)信號(hào)處理程序就是偵聽(tīng)程序的各種消息包括異常消息,也可能是硬件的異常消息或程序的普通信號(hào)消息。

三。AppInit()

應(yīng)用程序初始化,其實(shí)這里面包括了很多東西

1。ParseParameters()//解析運(yùn)行輸入的參數(shù)并將參數(shù)放入mapArgs; mapMultiArgs;這兩個(gè)map對(duì)象中。

2。判斷數(shù)據(jù)目錄是否存在并讀取配置文件參數(shù)指定的配置文件

3。判斷參數(shù)testnet regtest參數(shù)的合法性和是否輸入了--help或-?獲取幫助信息的參數(shù)。

4。根據(jù)輸入?yún)?shù)得到相應(yīng)結(jié)果并組合的json數(shù)據(jù)格式打印輸出 。

5。根據(jù)輸入?yún)?shù)進(jìn)行相應(yīng)的設(shè)置(AppInit2)并開(kāi)啟一個(gè)新線程,始終偵聽(tīng)退出程序的消息。


這就是bitcoind.cpp里面的代碼內(nèi)容,分析的可能不太準(zhǔn)確僅供參考,也可能在以后的閱讀中會(huì)發(fā)現(xiàn)其中的錯(cuò)誤。我們先主要了解里面的工作流程和大概框架。

我繪制了個(gè)流程圖來(lái)說(shuō)明一下客戶端的工作原理。流程圖如下:



作者:區(qū)塊鏈研習(xí)社比特幣源碼研讀班,black

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,909評(píng)論 25 709
  • 今早爬山,身后的腳步聲由遠(yuǎn)及近,隨即便聽(tīng)見(jiàn)有人打招呼:“老師!你早”!這聲音雖不熟悉,但我還是不由自主的扭...
    伯韜54閱讀 543評(píng)論 0 1
  • 有一天 代表自由的你被從書(shū)上撕下 終于奔向了自由
    萬(wàn)象峰年閱讀 159評(píng)論 0 1
  • 原文:iOS Architecture Patterns - Demystifying MVC, MVP, MVV...
    ChamchamBen閱讀 2,869評(píng)論 1 28

友情鏈接更多精彩內(nèi)容