Bitcoin-Core
bitcoind 同步標頭但不同步塊
我有
bitcoind
23.0 版在regtest
模式下的機器上執行。然後我在另一台機器上啟動另一個實例並執行
addnode "x.x.x.x:xxxx" "add"
連接到第一個實例。結果:新實例連接良好,同步塊頭,但不同步塊。
getpeerinfo
顯示:[ { "id": 0, <snip> "network": "ipv4", "services": "0000000000000408", "servicesnames": [ "WITNESS", "NETWORK_LIMITED" ], "relaytxes": true, "last_transaction": 0, "last_block": 0, "bytessent": 1045, "bytesrecv": 1329, "timeoffset": 0, "version": 70016, "subver": "/Satoshi:23.0.0/", "inbound": false, "bip152_hb_to": false, "bip152_hb_from": false, "startingheight": 110, "synced_headers": 110, "synced_blocks": -1, "inflight": [ ], "addr_relay_enabled": true, "addr_processed": 1, "addr_rate_limited": 0, "permissions": [ ], "minfeefilter": 0.00001000, <snip> "connection_type": "manual" } ]
我的
bitcoin.conf
樣子是這樣的:listen=1 server=1 prune=2000 regtest=1 rpcauth=<snip> port=<snip> rpcport=18443 rpcbind=127.0.0.1 rpcallowip=127.0.0.1
getblockcount``110
在第一台機器和第二台機器上返回0
,確認沒有同步任何塊。為什麼會發生這種情況以及如何進行塊同步?
同步節點將尋找一個宣布
NODE_NETWORK
服務標誌的對等點,該標誌指示一個節點具有所有塊並且可以為它們提供服務。修剪過的節點只會服務最新的 288 個塊,這通過
NODE_NETWORK_LIMITED
服務標誌發出信號。由於修剪過的節點往往沒有最早的塊(除非像您的測試中那樣少),同步節點不會從修剪過的節點請求塊。當您在 regtest 上執行並且無論如何您的塊可能大部分都是空的時,您可以通過關閉修剪來緩解您的問題。
peerbloomfilters
打開對 BIP37 布隆過濾器的支持,它允許瘦客戶端請求全節點為它們搜尋塊並通知它們相關的交易。如果您的兩個節點都是完整節點實例,則不會使用此功能並且不會影響您的成功。