比特幣未在 regtest 模式下連接
我在 Linux 上使用 regtest 模式時遇到問題。使用 linux 的預編譯版本 0.9.2.1 並按照 bitcoin.org 上的說明啟動 regtest 模式:
<bitcoin-ver>-linux/bin/64>> ./bitcoind -regtest -daemon
伺服器啟動,但執行 getinfo 返回“連接”:0。嘗試在 .conf 文件中嘗試各種 rpc* 設置。為了使用 regtest 模式,我到底需要設置什麼?我需要通過 addnode 添加真實節點以進行 regtest 嗎?看來我不需要。通過一次添加幾個真實節點,我能夠獲得一些連接,但幾分鐘後,“連接”又回到了 0。如果有任何其他資訊有幫助,請告訴我。
您需要在您的機器上執行多個節點(如果您為每個節點提供不同的 -port 和 -rpcport,則可以這樣做)。你需要告訴他們如何找到彼此(使用-connect=127.0.0.1:portnumber)。
Bitcoin Core 源碼樹中有用 bash 和 python 編寫的範例: https ://github.com/bitcoin/bitcoin/tree/master/test/functional
雖然我相信 Fred Tingey 的回答是完整的,但它具有以下屬性:
- 它取決於配置文件。
- 它提供了 windows 平台上 bitcoin-qt 的範例,並且 OP 詢問了 linux 平台上的 bitcoind。
因此,我想分享以下簡潔的bash 腳本,它可以滿足 OP 的要求。正如其他人部分指出的那樣,使其發揮作用的關鍵是:
- 為每個節點指定一個唯一的埠(如果正在偵聽)和 rpcport(如果使用 rpc)
- 為每個節點指定唯一的數據目錄
- 如果使用
-connect
限製到自己的節點,請記住使用-listen
接受來自自己節點的連接。也就是說,這是我的
start-regtest-network.sh
腳本:#!/bin/bash bitcoind -server -listen -port=17591 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16591 -datadir=$HOME/regtest/A/ -connect=localhost:17592 -regtest -pid=$HOME/regtest/A/.pid -daemon -debug bitcoind -server -listen -port=17592 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16592 -datadir=$HOME/regtest/B/ -connect=localhost:17593 -regtest -pid=$HOME/regtest/B/.pid -daemon -debug bitcoind -server -listen -port=17593 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16593 -datadir=$HOME/regtest/C/ -connect=localhost:17594 -regtest -pid=$HOME/regtest/C/.pid -daemon -debug bitcoind -server -listen -port=17594 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16594 -datadir=$HOME/regtest/D/ -connect=localhost:17595 -regtest -pid=$HOME/regtest/D/.pid -daemon -debug bitcoind -server -listen -port=17595 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16595 -datadir=$HOME/regtest/E/ -connect=localhost:17591 -regtest -pid=$HOME/regtest/E/.pid -daemon -debug
此外,這是我的
stop-regtest-network.sh
:#!/bin/bash sudo killall --regex bitcoin.*
我意識到我的停止腳本很草率,並且會殺死所有比特幣程序。如果您願意,您可以修改它以將單個 pid 拉出每個數據目錄。
最後,如果您根本不編輯腳本,您可能需要為 bitcoind 預先創建一些數據導向器。
mkdir $HOME/regtest/A/ mkdir $HOME/regtest/B/ mkdir $HOME/regtest/C/ mkdir $HOME/regtest/D/ mkdir $HOME/regtest/E/
您應該讓 regtest bitcoind 節點在埠 17591、17592、17593、17594 和 17595 上循環連接。同樣,您應該能夠連接到 rpc 埠 16591、16592、16593、16594 和 16595。如果您需要了解 RPC您可以檢查密碼
ps aux
,或在腳本中設置明確的 rpcpassword。高溫高壓