[區塊鏈] 帶你進入Bitcoin開發 - 環境搭建


  學習完區塊鏈枯燥乏味的、高深的、必備的基礎知識后,終於可以走上開發之路了!真是迫不及待啦!之后博客更新主要放在區塊鏈的開發上,相信這才是大多數同學更加感興趣的地方!學習過程從最經典的區塊鏈鼻祖-比特幣學習,之后了解下區塊鏈2.0代表:以太坊,最后主要精力放在區塊鏈3.0的代表超級賬本!(我一邊學習,一邊更新,歡迎捧場!)

  修近一周主要給大家介紹比特幣的開發,通過分析源碼,了解其底層技術的設計及實現!

  本片博客首先介紹比特幣開發環境的搭建!

  Linux、Mac、Windows等平台均支持運行比特幣代碼,作為開發人員,可以重點研究其中的bitcoind代碼部分,因為這是比特幣協議及區塊鏈的核心,至於面向終端用戶的圖形界面(GUI)部分,完全可以忽略,對后續研究毫無影響。

  在此,只介紹Linux環境下,開發環境的搭建。(作者操作系統版本為:Ubuntu16.04Desktop 64bit)

  因為該開源項目是C/C++語言開發的,當然現在github上有很多其他語言實現的,語言無所謂重要的是思想,所以還是以官方代碼分析為例子。以C++語言為例子,說明如何調用比特幣錢包節點提供的RPC接口服務,實現一些涉及比特幣區塊鏈的具體應用功能。除了C++外還有很多種語言都可以調用Bitcoin的RPC,例如:Node.js,python等。讀者可以參考本章內容選擇適合自己的語言具體試驗。

       RPC(Remote Procedure Call)即遠程過程調用協議,是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。

一. 環境准備

  1. 通過以下命令可安裝並編譯bitcoind所需要的依賴庫: 

  用命令apt-get install安裝,如果沒有找到該命令則安裝apt-get(自行搜索,安裝后sudo apt-get update更新包),如果顯示權限不夠則加用sudo apt-get install命令 

  • 安裝編譯環境
    sudo apt-get -y install build-essential libtool autotools-dev automake autoconf pkg-config 
  • 安裝必備依賴庫
    sudo apt-get -y install libssl-dev libboost-all-dev libevent-dev
  • 安裝錢包依賴庫
    sudo apt-get -y install libdb-dev libdb++-dev
  • 安裝其他依賴庫(可選)
    sudo apt-get -y install libminiupnpc-dev libzmq3-dev
  • 安裝GUI依賴庫(可選)
    sudo apt-get -y install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler libqrencode-dev
  • 如果沒有安裝git則先安裝(命令:sudo apt-get install git-core) 
    如果git clone太慢,可以直接上該網址將源碼download下來,然后創建文件夾bitcoin,解壓到其中。
  • 干脆,我們直接一條命令執行!(只重點研究bitcoind代碼部分,其他依賴包可不安裝)
    sudo apt-get -y install build-essential libtool autotools-dev automake autoconf libssl-dev libboost-all-dev libdb-dev libdb++-dev pkg-config libevent-dev git-core  

  2. 下載bitcoin源代碼並進入其目錄   

1 git clone https://github.com/bitcoin/bitcoin.git         #(要等好長時間!)
2 cd bitcoin

  3. 編譯源代碼(正常流程)

1 #首先,生成編譯源碼所需要的庫配置:
2 ./autogen.sh
3 #然后,生成makefile文件:(--with-incompatible-bdb為忽略libdb版本差異)
4 ./configure --with-incompatible-bdb --prefix=/data/install/bitcoin  
5 #用make進行編譯: 
6 make 
7 #安裝編譯好的二進制文件
8 make install

  其他編譯選項:

1 ./configure --disable-wallet   #不編譯錢包 
2 ./configure --without-gui    #不編譯GUI
3 ./configure

   因為我們研究的是核心代碼部分,故編譯命令如下:(禁用錢包、GUI)

1  ./autogen.sh
2  ./configure  --without-gui --with-incompatible-bdb --prefix=/data/install/bitcoin  
3  ./configure  --without-gui --disable-wallet 
4   make -j
5   make install

  

  附官方文檔:https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.md

bitcoin-cli、bitcoind、bitcoin-qt區別:

bitcoin-qt,帶GUI的完整節點;

bitcoind,無GUI的完整節點;

bitcoin-cli,使用bitcoin-cli訪問JSON-RPC接口。

二.  問題解決:

  1.下載失敗:

  嘗試了兩次,每次都好長時間,最終都以失敗告終。

  報錯:RPC failed;curl 56 GnuTLS recv error (-54): Error in the pull function.

  解決方法:

  原因是推送的文件太大,所以增大git的臨時緩沖區:

git config --global http.postBuffer 2000000000

  參考:https://stackoverflow.com/questions/38378914/git-error-rpc-failed-curl-56-gnutls

 

  報錯:fatal:The remote end hung up unexpectedly.

     fatal:index-pack failed.

  算了,這次又失敗了,我查了查“fatal:index-pack failed”,是權限或連接超時問題,懶得去解決這個問題了,干脆直接去github下載,速度賊快!推薦這種方法:下載如圖所示:

  直接上該網址https://github.com/bitcoin/bitcoin.git將源碼download下來,然后創建文件夾bitcoin,解壓到其中。

           將文件提取(解壓)到bitcoin文件夾下。

         

  繼續運行上面操作即可!

   2. 排除warning  

  執行完.configure之后需要看看是否有相應的錯誤信息或者WARNING。一般warning是可以允許的,不影響主要功能使用。但是我們最好逐一排除警告。(若只分析bitcoind代碼,可以忽略此部分。)

  

  原因:warning: zmq找不到大於4的版本 。

sudo apt-get install libzmq-dev

   

   原因:warning:缺少qt所需的依賴

sudo apt-get install libqt4-dev

   

  注:版本問題,可忽略不計,因為前邊命令忽略了版本(--with-incompatible-bdb為忽略libdb版本差異)。強迫症可以自己升級!

  這些導致了:(當然學習源碼的話,已經足夠了!)

  

  排除警告后:

  

 三、啟動bitcoind並加入比特幣測試網絡

  • 啟動bitcoind
    1 cd /data/install/bitcoin/bin/
    2 ./bitcoind --daemon-testnet   (網友提醒,新版本命令為:./bitcoind -testnet,請讀者自測!)

     

  • 停止bitcoind
    ./bitcoin-cli -testnet stop

    bitcoin-cli訪問JSON-RPC接口 

  • 獲取節點統計信息
    ./bitcoin-cli -testnet getinfo  (該命令已在version 0.16.0去除!所以新版本,沒有此命令!)

  

  • 獲取區塊鏈信息
    ./bitcoin-cli -testnet getblockchaininfo

  

  • 獲取網絡信息
    ./bitcoin-cli -testnet getnetworkinfo

  

  • 獲取錢包信息
    ./bitcoin-cli -testnet getwalletinfo 

  

  • 獲取某個區塊信息
    ./bitcoin-cli -testnet getblock 000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943 

  

 


【  時間倉促,如有錯誤,歡迎指正! ||   歡迎留下您的評語!  大家一起探討、學習區塊鏈!】

【  轉載請注明出處!http://www.cnblogs.com/X-knight/


 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM