Nic Lin's Blog

喜歡在地上滾的工程師

加速建造開發環境,用 Docker 建立 Bitcoin 私鏈

開發時同步全節點太慢了,用 Docker 建立私有鏈更省時間。

一般在開發比特幣相關業務的情況下,會需要能夠跟 RPC server 溝通的需求,如果我們跑主鏈或是 testnet,同步全節點都要花上不少時間,在節點還沒同步完全以前,可能沒辦法準確的知道比方說 address 裡面的餘額之類。

但如果自己在本地掛個私有鏈起來,先搞定 RPC 之間的溝通或監聽,會是更有效率的作法。

Step 1: 安裝 Docker

載點:https://www.docker.com/products/docker-toolbox

Docker 只要安裝過之後,就可以在本地跑起 linux 的虛擬機。

# 檢查是否成功安裝
docker -v

# Docker version 18.06.0-ce, build 0ffa825

Step 2: Pull bitcoind Testnet docker 鏡像

我自己是用 https://github.com/freewil/bitcoin-testnet-box

docker pull freewil/bitcoin-testnet-box

Step 3: Run docker container

docker run -it -p 19001:19001 -p 19011:19011 freewil/bitcoin-testnet-box

這個鏡像會建立兩個比特幣網路的節點。

節點 1 會監聽端口 19000, 節點 2 通過該端口連接節點 1,因為兩個節點都位於同一個機器,所以節點 2 不能監聽同一個端口。

節點 1 的JSON-RPC服務器端口是19001,節點 2 的JSON-RPC服務器端口是19011。

在 Dokcer 容器內輸入 make start 後,可以看到啟動訊息

tester@e396f50cd510 ~/bitcoin-testnet-box$ make start
bitcoind -datadir=1  -daemon
Bitcoin server starting
bitcoind -datadir=2  -daemon
Bitcoin server starting

這時候我們打開瀏覽器測試,無論是輸入 localhost:19001 或是 localhost:19011

都會看到

JSONRPC server handles only POST requests

那麼說明 RPC server 已經在本地啟動成功了,可以嘗試其他的 bitcoin api call

我另外 fork 的個人需求版

  • 我改了端口為 18332 + 19011
  • 容器啟動時自動啟動 bitcoin 網路,不需在手動輸入 make start
  • 修改 RPC 連線的 user & password

可以嘗試

docker run -t -i -p 18332:18332 -p 19011:19011 niclin/bitcoin-testnet-box

詳細請看 niclin/bitcoin-testnet-box

comments powered by Disqus