Development

如何在同一台電腦上同時在測試和生產網路上執行 bitcoind?

  • March 4, 2015

如果多次啟動比特幣和比特幣會發送錯誤。我假設這是因為它們共享相同的數據庫和錢包。

是否可以執行兩個比特幣 QT / bitcoind 實例,一個在生產上,另一個在測試上?(在同一台電腦上)

這是可取的還是不可取的?

您可以毫無問題地執行一個主網和測試網 bitcoind。它們不共享同一個數據庫(將使用 testnet3/ 子目錄)。

會發生衝突的是 RPC 埠,因為它們都將嘗試綁定到埠 8332 以接收 RPC 連接。在其中一個上使用 -rpcport=N 以使用不同的埠。

Bitcoin Core 0.7.1(2012 年 10 月 19 日)開始,您只需使用適當的標誌啟動 Bitcoin Core 即可執行主網和測試網:

bitcoind -daemon           # mainnet, -daemon will cause it to fork into the background
bitcoind -daemon -testnet  # testnet

Bitcoin Core 0.9.0(2014 年 3 月 19 日)開始,您可以輕鬆地bitcoin-cli向兩個節點發送命令:

bitcoin-cli getinfo           # mainnet, uses port  8332 for RPC-JSON
bitcoin-cli -testnet getinfo  # testnet, uses port 18332 for RPC-JSON

同樣從 Bitcoin Core 0.9.0 開始,還有一種回歸測試模式(“ regtest ”),可以通過幾乎立即生成具有超低難度的替代區塊鏈來加快應用程序的開發和測試。

預設情況下,regtest 模式在與 testnet 相同的埠上執行(比特幣 P2P為 18333, RPC-JSON/HTTP REST為 18332 ),儘管它使用與 testnet 不同的數據目錄。這意味著下面的兩個命令都將處理預設的測試網或 regtest 節點:

bitcoin-cli -testnet getinfo  ## sends command to port 18332
bitcoin-cli -regtest getinfo  ## also sends command to port 18332

這個答案有一些基本的範常式式碼顯示在同一台機器上執行兩個 regtest 節點,但如果你想同時執行一個 testnet 節點和 regtest 節點,你也可以做類似的事情。


後記:Pieter Wuille 接受的答案讓我感到困惑。它說他是在 2012 年 12 月 9 日寫的,但Pieter 的這次合併說他添加了程式碼(由 @kjj2 編寫)在 2012 年 9 月 28 日(兩個月前)將測試網埠更改為 18332。此外,該程式碼包含在 2012 年 10 月發布的 Bitcoin Core 0.7.1 中,比 Pieter 的回答還早了近兩個月。

聳聳肩。 我想也許他只是忘記了變化。

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