日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

探索比特币源码0-bitcoin的编译

發布時間:2024/7/23 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 探索比特币源码0-bitcoin的编译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

探索比特幣源碼0-bitcoin的編譯

前言

區塊鏈領域作為一個新興的熱點,迭代的實在是太快了,剛剛入門,必須要抓緊追趕。

在閱讀了一些優秀的文檔之后,已經對比特幣及其背后的實現技術——區塊鏈有了一定的理解。

為了更深入的理解比特幣及其實現技術的各種細節,開始進行比特幣源碼的學習。

我學習源碼過程中遇到的優秀資源,推薦如下,后續會不斷更新。

比特幣開發者手冊

精通比特幣

比特幣其實是一種協議,而這個基于信任的協議的第一個實現版本,叫做“比特幣(Bitcoin)”或者“Satoshi客戶端”。現在它已經被大大的修改和改進了,演變成所謂的比特幣核心——Bitcoin Core,以區別于其他兼容的實現方式。

比特幣核心是比特幣系統的參考實現,這意味著它是如何實施的權威參考。Bitcoin Core實現了比特幣的所有方面,包括錢包,交易和區塊驗證引擎,以及P2P網絡中的完整網絡節點。

因此讓我們從Bitcoin Core入手,學習源碼,全面了解比特幣。

下載比特幣源碼

我們使用git命令來創建源代碼的本地副本

$ git clone https://github.com/bitcoin/bitcoin.git

當git克隆操作完成后,進入到項目中

$ cd bitcoin

選擇Bitcoin Core版本

在編譯代碼之前,我們需要先切換到一個穩定的release版本

首先,要找到可用release的標簽,我們使用git tag命令:

$ git tag v0.1.5 v0.1.6test1 v0.10.0 ... v0.11.2 v0.11.2rc1 v0.12.0rc1 v0.12.0rc2 ...

根據慣例,用于測試的發布候選版本具有后綴“rc”

因此我們選一個沒有后綴的版本check下來,就選最新的吧

git checkout v0.16.1

通過輸入命令git status來確認所需的版本

git status

完成后可以簡單觀察下比特幣項目的結構

$ ls autogen.sh build-aux configure.ac contrib CONTRIBUTING.md COPYING depends doc INSTALL.md libbitcoinconsensus.pc.in Makefile.am README.md share src test

配置構建Bitcoin Core

現在嘗試構建命令行比特幣客戶端,也稱為比特幣(bitcoind)。

我是在Linux下進行,可以在doc/build-unix.md中查看編譯bitcoind命令行客戶端的說明。

其他系統可以在doc目錄中找到替代說明,如macOS和Windows的說明,分別為build-osx.md或build-windows.md。

Bitcoin Core 的構建過程從0.9版本開始更改為使用autogen / configure / make系統。也就是說,構建的流程如下:

./autogen.sh ./configure make make install # optional

一步步來,autogen.sh文件是一個shell腳本,我們可以通過使用autogen.sh腳本生成一組build腳本來啟動build過程。

我們嘗試運行autogen.sh腳本

$ ./autogen.sh

得到的結果如下:

configuration failed, please install autoconf first

出現了配置錯誤,我們需要預先安裝autoconf

如官方文檔所述,很友好的是,它會詢問系統以發現正確的設置,并確保你擁有編譯代碼所需的所有庫。

也就是說,它會機智的檢查你缺什么依賴,缺什么包。按照build-unix.md中的提示,各種依賴的安裝走一波

$ sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3 libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev

再次運行autogen.sh腳本,成功~

目前我還不了解shell,但我又有點好奇autogen.sh腳本都做了什么,于是調用如下命令,查詢當前目錄下的文件及最后修改時間,并按時間排序:

$ ls -lc -t 總用量 1216 drwxrwxr-x 21 lsgo-as lsgo-as 4096 712 21:16 src drwxrwxr-x 3 lsgo-as lsgo-as 4096 712 21:16 build-aux -rw-rw-r-- 1 lsgo-as lsgo-as 46452 712 21:16 Makefile.in drwxr-xr-x 2 lsgo-as lsgo-as 4096 712 21:16 autom4te.cache -rwxrwxr-x 1 lsgo-as lsgo-as 1005998 712 21:16 configure -rw-rw-r-- 1 lsgo-as lsgo-as 55075 712 21:16 aclocal.m4 drwxrwxr-x 4 lsgo-as lsgo-as 4096 712 20:57 test drwxrwxr-x 4 lsgo-as lsgo-as 4096 712 20:57 doc drwxrwxr-x 5 lsgo-as lsgo-as 4096 712 20:57 share drwxrwxr-x 17 lsgo-as lsgo-as 4096 712 20:57 contrib drwxrwxr-x 6 lsgo-as lsgo-as 4096 712 20:57 depends -rw-rw-r-- 1 lsgo-as lsgo-as 47128 712 20:57 configure.ac -rw-rw-r-- 1 lsgo-as lsgo-as 13886 712 20:57 CONTRIBUTING.md -rw-rw-r-- 1 lsgo-as lsgo-as 1142 712 20:57 COPYING -rw-rw-r-- 1 lsgo-as lsgo-as 10859 712 20:57 Makefile.am -rwxrwxr-x 1 lsgo-as lsgo-as 527 712 20:55 autogen.sh -rw-rw-r-- 1 lsgo-as lsgo-as 3600 712 20:55 README.md -rw-rw-r-- 1 lsgo-as lsgo-as 295 712 17:42 libbitcoinconsensus.pc.in -rw-rw-r-- 1 lsgo-as lsgo-as 161 712 17:42 INSTALL.md

仔細對比,可以看出autogen.sh腳本沒有在當前目錄下生成新文件,但修改了如下文件

src build-aux Makefile.in autom4te.cache configure aclocal.m4

這些都是和配置有關的,其中最重要的是configure腳本,它提供了許多不同的選項來自定義構建過程。

鍵入“./configure –help”查看各種選項:

$ ./configure --help

看的有點蒙,也不得不說,功能真強大!

configure腳本允許您通過使用--enable-FEATURE和--disable-FEATURE標志來啟用或禁用bitcoind的某些功能,其中FEATURE由功能名稱替換,如幫助輸出中所列。

我還沒有搞清這些功能,這里我們構建具有所有默認功能的bitcoind客戶端。 我們不會使用配置標志。

調用./configure腳本,報了這樣一個錯

$ ./configure ... configure: error: libdb_cxx headers missing, Bitcoin Core requires this library for wallet functionality (--disable-wallet to disable wallet functionality)

錯誤顯示,我沒有安裝錢包的一個依賴庫

這才回想起來,錯誤原因一定是我偷懶了,沒有把build-unix.md讀完,所以重要的事情說三遍

仔細閱讀build-unix.md文檔,并安裝所有的依賴項!

仔細閱讀build-unix.md文檔,并安裝所有的依賴項!

仔細閱讀build-unix.md文檔,并安裝所有的依賴項!

認真安裝所有依賴項后,重新運行./configure腳本,成功~

構建Bitcoin Core可執行文件

下一步,編譯源代碼,這個過程根據CPU和內存資源不同,但一般可能需要1個小時完成。輸入make命令就可以開始編譯了:

$ make Making all in srcCXX crypto/libbitcoinconsensus_la-hmac_sha512.loCXX crypto/libbitcoinconsensus_la-ripemd160.loCXX crypto/libbitcoinconsensus_la-sha1.loCXX crypto/libbitcoinconsensus_la-sha256.loCXX crypto/libbitcoinconsensus_la-sha512.loCXX libbitcoinconsensus_la-hash.loCXX primitives/libbitcoinconsensus_la-transaction.loCXX libbitcoinconsensus_la-pubkey.loCXX script/libbitcoinconsensus_la-bitcoinconsensus.loCXX script/libbitcoinconsensus_la-interpreter.lo[... many more compilation messages follow ...] $

如果一切順利,bitcoind現在已經編譯完成。

最后一步就是通過sudo make install命令,安裝bitcoind可執行文件到你的系統路徑下,可能會提示您輸入用戶密碼,因為此步驟需要管理員權限:

$ sudo make install Password: Making install in src../build-aux/install-sh -c -d '/usr/local/lib' libtool: install: /usr/bin/install -c bitcoind /usr/local/bin/bitcoind libtool: install: /usr/bin/install -c bitcoin-cli /usr/local/bin/bitcoin-cli libtool: install: /usr/bin/install -c bitcoin-tx /usr/local/bin/bitcoin-tx ... $

bitcoind默認的安裝位置是/usr/local/bin。你可以通過詢問系統下面2個可執行文件的路徑,來確認bitcoin是否安裝成功。

$ which bitcoind /usr/local/bin/bitcoind$ which bitcoin-cli /usr/local/bin/bitcoin-cli

總結

以上是生活随笔為你收集整理的探索比特币源码0-bitcoin的编译的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。