地址以2開頭,我是什麼模式?
我正在使用<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 都故意使用與主網不同的前綴。在這些模式下,你永遠不會看到主網前綴。