位元幣原始碼研讀之一

2021-08-25 08:20:18 字數 2032 閱讀 6929

菜菜子_forest 關注

圖中紅色矩形框選中的src資料夾為位元幣原始碼所在目錄,因此我的位元幣原始碼之旅將從這個資料夾開始。

二、找到入口函式

眾所周知,任何事物都有其起始位置,就像我們走進一棟房子應該先找到大門一樣。軟體程式也不例外,每個軟體程式都有其入口函式,那麼要研讀位元幣原始碼,首先需要從其入口函式看起,這樣才能逐步理解其執行順序與邏輯結構。

因此,在進入src目錄後,我的第一要事就是找到初始化函式的具體位置。由於剛開始看位元幣原始碼,所以對src中的所有**都很感興趣,每個都想點開看看每個檔案中都說了什麼,而且我自己也確實這麼做的,挨個看了一遍之後,發現位元幣原始碼確實有點複雜,著實佩服《精通位元幣》的作者,不愧是牛人!他能在把原始碼看完之後,根據自己對原始碼的深刻理解寫了一本讓我們能看懂位元幣執行原理的書,以便於我們這些後來者可以很好地理解位元幣及其原始碼。

想到此內心開始有點小激動,因為我看到我們研讀班的同學們在經過一段時間的學習之後,程式設計能力將得到很大的提公升,同時,還能有很多的輸出,為後來者提供方便!

話不多說,回到正題!前面說到首先要找到位元幣原始碼的入口函式,想到位元幣原始碼是基於c/c++編寫的,所以,首當其衝是要找到main函式。想到位元幣原始碼編譯完成後,其後台服務程序名為bitcoind,所以,我就想是否有bitcoind.cpp或類似名字的實現檔案呢?經過檢視,在src資料夾中果然發現了bitcoind.cpp,開啟這個檔案後,搜尋main函式,在189行還真就搜到了main函式,函式中包含的有效**只有3行,如下所示:

int main(int argc, char* argv)

setupenvironment();

// connectbitcoind signal handlers

noui_connect();

三、初始化過程解析main函式的執行過程如圖所示。

具體執行過程為:

第一步:設定執行環境;第二步:連線bitcoind訊號處理物件;第三步:應用程式初始化操作;第四步:控制台命令傳入引數解析;第五步:解析後引數的處理;

第六步:初始化日誌列印;

第七步:初始化引數設定;

第八步:初始化應用程式基本上下文環境;

第九步:應用程式引數設定;

第十步:應用程式完整性檢查;

第十一步:應用程式執行主函式;

第十二部:迴圈等待關閉訊息;

第十三步:程式關閉。

以上就是位元幣原始碼中後台程序bitcoind的執行過程,本文只是列舉出了其執行所執行的具體過程,其實每一步都包含了相應的子分支,包含了很多實現**,我將在後續的文章將對其每一步進行詳細說明,敬請期待!

以下是廣告:

我們區塊鏈研習社已建立「區塊鏈研習社幣圈交流」小密圈」,在小密圈中,我們將帶領大家一起學習區塊鏈的原理與投資,還將提供區塊鏈基本原理解答、交易所註冊與交易操作、ico交易與操作、投資分析、風險分析等內容。

目前入圈**初始定價50元,50人調整一次**,每次調整幅度為50元!

位元幣原始碼研讀二(交易指令碼)

今天接著寫五個全域性靜態常量,用於定義交易執行序列的規則.1 static const uint32 t sequence final oxffffffff 如果交易中的所有輸入都將nsequence賦值為該全域性變數值,nlocktime將無效 無需考慮交易的鎖定時間,最近的交易達到區塊後,交易立...

位元幣原始碼解讀一

上次在ubuntu系統中將位元處原始碼編譯環境設定好了後,還沒有具體分析裡面的 今天我們就解讀一下。原始碼版本是bitcoin 0.9.5rc2。我們說驗證位元幣客戶端安裝成功就是從 which bitcoind 這個命令進行驗證的,因為位元幣客戶端有兩個。乙個是圖形介面的版本,通常被稱為 bitc...

位元幣原始碼編譯過程

編譯位元幣原始碼 系統環境 ubuntu 16.04 lts 2g記憶體的虛擬機器 1 更新系統的安裝庫,否則很多依賴庫無法從伺服器獲取 apt get update 2 先安裝一些必要的依賴庫 sudo apt get install build essential libtool autotoo...