開發時同步全節點太慢了,用 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