比特幣源碼解析(1) - 整體框架

0x00 寫在前面

研究了這麼久的區塊鏈卻一直都沒有完整的看過一個區塊鏈項目的代碼,甚至還一度沉迷各種ICO,每天看着各種貨幣層出不窮,跌跌漲漲,起起伏伏,不亦樂乎。現在看來,也許整體來講賺了點小錢,可是那又有什麼意義呢?終究不是長久之計。這兩天終於靜下來大概瀏覽了一遍比特幣的源代碼,比特幣作爲數字貨幣的鼻祖,這句話雖然不嚴格,但是就目前的市場價格而言,可謂是當之無愧的老大哥了,並且市場上有很大一部分項目都是在比特幣的代碼上進行修改的或者使用了比特幣的相關代碼,再退一步來說,即使是和比特幣完全獨立的項目在整體框架上也類似,比如一些基本的數據結構還有共識算法等等。說了這麼多,想強調的就是理解比特幣的代碼對於理解區塊鏈中的很多概念以及各種區塊鏈項目都有很好的幫助。

這將是一個系列的文章,包括最核心的比特幣源碼的詳細解析,還有實現的過程中用到的各種技巧的分析。之所以打算寫這一系列文章的原因一個是做好筆記,因爲整個項目的代碼比較長,涉及到的相關知識也比較多,如果不做好筆記,很容易看完就忘;第二個原因就是給後來的人提供一個參考資料,希望更多的人瞭解區塊鏈,將去中心化的思想發揚光大!我知道網上已經有很多人寫過了比特幣的源碼分析,但每個人都有自己的想法,有自己的分析方法,別人的不一定適合自己,自己走出來的路必定也是印象最爲深刻的。

0x01 整體框架

這一系列的文章將分爲三個部分來介紹,分別是

  • 準備知識:比特幣的實現過程中使用了許多其他的庫,包括Boost, openssl , libevent以及QT等等。所以首先我將會對這些庫做相應的介紹,包括基本的使用方法,便於之後的代碼分析。當然這部分在整個閱讀時可以先略過,遇到相應問題時再來了解即可。
  • 主要數據結構:比特幣在代碼中定義許多的類,有些我們在各種文章中經常看到例如交易(CTransaction),區塊(CBlock),交易池(CTxMemPool)等等,還有些不常見的例如共識(Consensus),腳本(CScript)等等,這些數據結構在代碼中隨處可見,所以這部分單獨拿出來對這些類包含的變量和成員函數進行解釋,同時也便於之後的查閱。
  • 可執行程序代碼分析:我們編譯完比特幣的源碼之後將得到7個可執行程序分別是bench_bitcoin, bitcoin-cli, bitcoind, bitcoin-qt, bitcoin-tx, test_bitcoin, test_bitcoin-qt。其中第2,3,4,5個是主要的功能部分,所以我們將重點分析這四個可執行程序的源碼。
    • 轉自:http://blog.csdn.net/pure_lady/article/details/77623301
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章