區塊鏈是最近幾年火纔起來的概念,最早大家知道的都只有比特幣(bitcoin),在很長一段時間,比特幣幾乎就是區塊鏈的代名詞。大多數人關注的當然都是比特幣的價格,而作爲技術出身的吃瓜羣衆,聽到的時候第一反應是:
我Cow,這麼牛,怎麼做到的!
想要看看比特幣實現方式的衝動是怎麼強烈,幸好比特幣是開源的,那麼基於github上的比特幣源碼,我們就能快速搭建起自己的比特幣服務和錢包。
你說搭好了可以幹什麼?
- 可以挖礦?個人基本也挖不出來了
- 可以做個山寨幣?還不如以太坊上ERC-20發,幣只要5分鐘。
好吧,以上都沒什麼價值。比特幣作爲區塊鏈項目的始祖,雖然以現在的眼光看,有這樣那樣的不足,但它展現的反而是區塊鏈技術中最核心的部分,是學習區塊鏈技術最好的工具。下面就開始吧。
操作系統
我用的 Ubuntu 18.04
https://www.ubuntu.com/download/desktop
安裝依賴
用命令apt-get install安裝,如果沒有找到該命令則安裝apt-get(自行搜索,安裝後sudo apt-get update更新包),如果顯示權限不夠則加用sudo apt-get install命令
sudo apt-get install make
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install libevent-dev
sudo apt-get install libdb-dev
sudo apt-get install libdb++-dev
sudo apt-get install libdb5.3++-dev
sudo apt-get install libboost-dev
sudo apt-get install libboost-all-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libssl-dev
sudo apt-get install build-essential
sudo apt-get install libminiupnpc-dev
sudo apt-get install autoconf
sudo apt-get install libprotobuf-dev
sudo apt-get install protobuf-compiler
sudo apt-get install libqt4-dev
sudo apt install libcanberra-gtk-module libcanberra-gtk3-module
我這兒列出的庫比網上找到的資料上列舉的都要多一些,可能也是因爲我是全新的Ubuntu安裝,並且也想在x-window下圖形化界面運行。預先多裝一點也比中途再來安裝要好一些,現在也不缺少這點硬盤空間。
編譯運行
1、下載源碼
第一步當然是先將github上的源碼下載下來,如果沒有git,就先安裝git
sudo apt-get install git-core
推薦git clone下載,雖然是慢了一點,如果通過網站打包下載,很容易下載不全
git clone https://github.com/bitcoin/bitcoin.git
2 、配置編譯
cd bitcoin
進入目錄,會看到整個源碼的各種文件
其中有可執行文件autogen.sh和配置文件configure
./autogen.sh
如果報錯則加sudo
./configure
這是在你的機器中配置與代碼運行相關的依賴並檢查必要的環境。
初始化步驟
這裏稍微解釋一下,bitcoin代碼運行機制是多線程的,父進程創建子進程,父進程運行過程中返回後子進程繼續進行運行過程的初始化,包括下面12個步驟:
Step 1: setup 設置
Step 2: parameter interactions 參數互動(主要是一些參數設置)
Step 3: parameter-to-internal-flags 參數傳入內部標記(bool型變量)
Step 4: application initialization: dir lock, daemonize, pidfile, debug log
應用初始化:鎖定目錄,後臺運行,調試信息
Step 5: verify wallet database integrity 確認錢包數據庫的完整性
Step 6: network initialization 網絡初始化
Step 7: load block chain 加載塊鏈
Step 8: load wallet 加載錢包
Step 9: import blocks 導入塊數據
Step 10: load peers 導入peers
Step 11: start node 開始節點(挖礦程序在這裏)
Step 12: finished 完成
檢查配置信息以及網絡情況是否符合加載塊鏈的條件,執行完.configure之後需要看看是否有相應的錯誤信息或者WARNING,一般warning是可以允許的如果對於bitcoin最後的運行而言,但是我們還是最好逐一排除警告。
這裏最容易碰到的就是db兼容的問題。我遇到的錯誤信息:
從網上查到的資料來看,直接加上 編譯參數就可以了
./configure –with-incompatible-bdb
配置完成,沒有錯誤,下面就可以執行編譯了。
make
執行成功沒有報錯,就繼續執行安裝
sudo make install
注意:這兒需要有管理權限,所以加上sudo
安裝完成!
運行系統
執行命令:
bitcoin-qt
注意:使用qt是要在x-window下運行。
看下這裏的提示,加載區塊數據,需要203G,點擊ok就可以執行區塊的同步了。
好吧,按我現在的網速需要9年才能同步完所有數據…
203G,聽起來數據量很大,但是想一想,從2009年到現在10年的所有比特幣數據節點、網絡、交易數據,就會感覺這數據好小。
經驗: 儘量都在root下執行所有安裝配置操作。
參考資料:
BitCoin比特幣 wiki
https://en.bitcoin.it/wiki/Main_Page
Bitcoin比特幣 源代碼文檔
https://dev.visucore.com/bitcoin/doxygen/files.html
Bitcoin比特幣 中國
http://www.btcchina.org