比特幣 cli regtest 的問題
這些是我在建構具有所有依賴項的干淨 ubuntu docker 映像後執行的命令:
./src/bitcoin-cli -regtest &
它產生錯誤:
error: too few parameters (need at least command)
接下來我跑了:
./src/bitcoin-cli -regtest -daemon
這導致:
error: too few parameters (need at least command)
最後:
./src/bitcoin-cli -regtest 101 &
產量:
error: Could not locate RPC credentials. No authentication cookie could be found, and no rpcpassword is set in the configuration file (/root/.bitcoin/bitcoin.conf)
這些命令取自以下資源:
<https://bitcoin.org/en/developer-examples#regtest-mode>
這裡有個問題,對應的答案提供了啟動regtest的腳本,這是一個好的解決方案嗎?
要停止守護程序,請使用界面或執行
bitcoin-cli stop
.下一步
所以我先跑:
bitcoind -regtest -daemon
我得到了輸出:
Bitcoin server starting
然後我嘗試了:
bitcoin-cli -regtest getinfo
這導致:
error: Could not locate RPC credentials. No authentication cookie could be found, and no rpcpassword is set in the configuration file (/root/.bitcoin/bitcoin.conf)
這些命令也產生了與上面相同的輸出:
./src/bitcoin-cli -regtest help ./src/bitcoin-cli -regtest 101
所以我創建了以下文件:
vim /root/.bitcoin/bitcoin.conf
實際上就是這樣:
rpcpassword=123
*也試過這個:
server=1 rpcuser=root rpcpassword=password rpcconnect=127.0.0.1 rpcport=8332
現在發出命令:
bitcoin-cli -regtest getinfo
結果如下:
error: couldn't connect to server: unknown (code -1) (make sure server is running and you are connecting to the correct RPC port)
看來你混淆了
bitcoind
和bitcoin-cli
。
bitcoind
是比特幣核心守護程序。它必須先執行,然後才能執行任何操作。是一個向正在執行的實例bitcoin-cli
發送 RPC 命令的工具。bitcoind
從連結的文件頁面:
bitcoind -regtest -daemon
&
如果您使用-daemon
.一旦
bitcoind
執行,您可以例如getinfo
使用以下命令發送命令bitcoin-cli
:比特幣-cli -regtest 獲取資訊
或發送
generate 101
生成 101 個區塊:比特幣-cli -regtest 生成 101
要了解您可以發送的其他命令:
比特幣-cli -regtest 幫助
這樣您就可以了解該
ping
命令。要了解更多資訊,您可以發送:bitcoin-cli -regtest 幫助 ping
您需要
-regtest
為每個命令指定,因為您可以為每個網路執行一個守護程序(一個用於主網,一個用於測試網,一個用於 regtest),或者如果您將每個網路配置為在單獨的目錄和網路埠中執行,則可以執行更多。請注意,這
bitcoin-cli
只是一個使用 JSON-RPC(這是一種標準化協議)的程序,儘管它有些專門用於bitcoind
. 您可以bitcoind
使用任何 JSON-RPC 客戶端(所有流行語言都存在這些庫)進行連接。為此,您需要配置使用者名/密碼以連接到bitcoind
.解釋你所看到的:
./src/bitcoin-cli -regtest &``bitcoind
由於尚未執行,因此無法工作,並且您沒有指定要發送的命令。./src/bitcoin-cli -regtest -daemon
同樣地。./src/bitcoin-cli -regtest 101 &
看起來幾乎是正確的,除了你錯過了generate
,所以你試圖將不存在的命令發送101
到一個尚未執行的守護程序。