Bitcoind

地址以2開頭,我是什麼模式?

  • November 19, 2021

我正在使用<https://github.com/freewil/bitcoin-testnet-box>在 docker 中執行 bitcoind 以測試交易簽名。

make start告訴我 bitcoind 是在沒有-regtest標誌的情況下啟動的。見<https://github.com/freewil/bitcoin-testnet-box/blob/master/Makefile#L13>

當我執行時bitcoin-cli -datadir=1 getblockchaininfo,我確實看到"chain": "regtest"了輸出,所以我相信兩個節點都在回歸測試模式下執行。

如果我為這兩個節點中的任何一個生成地址,我會得到一個以 2 開頭的地址:

tester@4df64413049e ~/bitcoin-testnet-box$ make address1
bitcoin-cli -datadir=1  getnewaddress
2N4DTeBWDF9yaF9TJVGcgcZDM7EQtsGwFjX
tester@4df64413049e ~/bitcoin-testnet-box$ make address2
bitcoin-cli -datadir=2  getnewaddress
2MwxP8fyh9MFqKnZXZuqt3ZYByhLpNVoiX3

make getinfo告訴我它也不是測試網:

tester@4df64413049e ~/bitcoin-testnet-box$ make getinfo
bitcoin-cli -datadir=1  -getinfo
{
 "version": 170100,
 "protocolversion": 70015,
 "walletversion": 169900,
 "balance": 0.00000000,
 "blocks": 0,
 "timeoffset": 0,
 "connections": 1,
 "proxy": "",
 "difficulty": 4.656542373906925e-10,
 "testnet": false,
 "keypoololdest": 1599940906,
 "keypoolsize": 1000,
 "paytxfee": 0.00000000,
 "relayfee": 0.00001000,
 "warnings": ""
}
bitcoin-cli -datadir=2  -getinfo
{
 "version": 170100,
 "protocolversion": 70015,
 "walletversion": 169900,
 "balance": 0.00000000,
 "blocks": 0,
 "timeoffset": 0,
 "connections": 1,
 "proxy": "",
 "difficulty": 4.656542373906925e-10,
 "testnet": false,
 "keypoololdest": 1599940906,
 "keypoolsize": 1000,
 "paytxfee": 0.00000000,
 "relayfee": 0.00001000,
 "warnings": ""
}

那麼我以什麼模式執行這些比特幣節點呢?如果我要相信它的輸出不是測試模式,而是以某種方式回歸測試模式,那麼地址不應該以 1 開頭,如果它真的是 regtest 模式,或者如果它的 testnet 模式,地址不應該以 m/n 開頭?

此外,當我轉儲任何此類地址的私鑰並嘗試從中派生 P2PKH 地址時,它不匹配。相同的程式碼適用於從主網獲取的地址和密鑰。這是怎麼回事?

regtest 和 testnet 對 legacy 和 p2sh-segwit 地址類型使用相同的地址前綴。以 p2sh 開頭的地址2,如果通過 檢索getnewaddress,則保證是 p2sh-segwit。

對於 bech32 類型地址,regtest 前綴是bcrt,在 testnet 上是tb. 您可以嘗試獲取 bech32 地址以查看前綴是什麼,並更確定您使用的是哪個網路。

如果它真的是regtest模式,地址不應該以1開頭

不,那會很危險。

regtest 和 testnet 都故意使用與主網不同的前綴。在這些模式下,你永遠不會看到主網前綴。

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