比特幣源碼解讀一

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

? ? 我們說驗證比特幣客戶端安裝成功就是從 which bitcoind 這個命令進(jìn)行驗證的,因為比特幣客戶端有兩個怀酷。一個是圖形界面的版本稻爬,通常被稱為 Bitcoin(首字母大寫),以及一個簡潔命令行的版本(稱為 bitcoind)蜕依。

我們就從bitcoind這個命令行入手桅锄,因為這個里面代碼少,感覺簡單點(嘿嘿)样眠。我在源碼的src目錄下發(fā)現(xiàn)了bitcoind.cpp文件友瘤。但沒發(fā)現(xiàn)bitcoind.h文件,我也不知道為什么檐束。但是沒影響我們看代碼辫秧。

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

bitcoind主函數(shù)

代碼很簡單我們就逐行分析下茶没。

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

SetupEnvironment函數(shù)

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

二笛求。noui_connect

連接bitcoind客戶端的信號處理程序。我的理解是這個信號處理程序就是偵聽程序的各種消息包括異常消息,也可能是硬件的異常消息或程序的普通信號消息探入。

三狡孔。AppInit()

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

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

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)并開啟一個新線程,始終偵聽退出程序的消息完沪。


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

我繪制了個流程圖來說明一下客戶端的工作原理。流程圖如下:



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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末写穴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子雌贱,更是在濱河造成了極大的恐慌啊送,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件欣孤,死亡現(xiàn)場離奇詭異馋没,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)降传,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進(jìn)店門篷朵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人婆排,你說我怎么就攤上這事声旺。” “怎么了段只?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵腮猖,是天一觀的道長。 經(jīng)常有香客問我赞枕,道長澈缺,這世上最難降的妖魔是什么坪创? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮姐赡,結(jié)果婚禮上莱预,老公的妹妹穿的比我還像新娘。我一直安慰自己项滑,他們只是感情好依沮,可當(dāng)我...
    茶點故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著杖们,像睡著了一般悉抵。 火紅的嫁衣襯著肌膚如雪肩狂。 梳的紋絲不亂的頭發(fā)上摘完,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天,我揣著相機(jī)與錄音傻谁,去河邊找鬼孝治。 笑死,一個胖子當(dāng)著我的面吹牛审磁,可吹牛的內(nèi)容都是我干的谈飒。 我是一名探鬼主播,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼态蒂,長吁一口氣:“原來是場噩夢啊……” “哼杭措!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钾恢,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤手素,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瘩蚪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泉懦,經(jīng)...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年疹瘦,在試婚紗的時候發(fā)現(xiàn)自己被綠了崩哩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,989評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡言沐,死狀恐怖邓嘹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情险胰,我是刑警寧澤汹押,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站鸯乃,受9級特大地震影響鲸阻,放射性物質(zhì)發(fā)生泄漏跋涣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一鸟悴、第九天 我趴在偏房一處隱蔽的房頂上張望陈辱。 院中可真熱鬧,春花似錦细诸、人聲如沸沛贪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽利赋。三九已至,卻和暖如春猩系,著一層夾襖步出監(jiān)牢的瞬間媚送,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工寇甸, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留塘偎,地道東北人。 一個月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓拿霉,卻偏偏與公主長得像吟秩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绽淘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,995評論 2 361

推薦閱讀更多精彩內(nèi)容

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