Bitcoind

比特幣未在 regtest 模式下連接

  • November 1, 2021

我在 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。

高溫高壓

引用自:https://bitcoin.stackexchange.com/questions/28107