Bitcoind
為什麼 bitcoind 從密鑰池中刪除密鑰?
我打開了我的筆記型電腦,它總是在執行 bitcoind,我的日誌開始出現如下消息:
2020-11-05T12:41:57Z [FullyNoded-d703055f46595edcf8163916bd906f9563afc0903fbe74c2882a93c59359ca00] keypool index 38212 removed
為什麼?它在做什麼?刪除我導入的密鑰?我從來沒有要求它這樣做:(
RPC 命令也沒有響應,因為它似乎不堪重負。
比特幣核心 0.20.1
密鑰池是有序的,而不僅僅是一組被監視的密鑰。這允許按派生順序給出地址,並保持間隙限制。使用地址時,它之前的所有鍵也將被標記為已使用。這樣做是為了確保已使用的地址不會被意外重用。
因此,當您給出並使用該範圍內的隨機地址時,您最終會將該範圍內的所有先前鍵都標記為已使用。
從密鑰池中刪除密鑰純粹是為了向使用者提供地址並能夠生成更多地址。它不影響觀看行為;從密鑰池中刪除的密鑰仍將被監視。
您看到性能下降的原因是因為從密鑰池中刪除除了將幾個腳本寫入數據庫之外,還會從數據庫中刪除一條記錄。此外,如果密鑰池大小由於這些刪除而低於配置的密鑰池大小,則將重新填充密鑰池,這將涉及額外的數據庫寫入。這些都獲得了錢包上的鎖,以防止其他執行緒訪問錢包,並且寫入所有這些數據(尤其是數万個密鑰)可能需要很長時間。
為了避免這個問題,我強烈建議按順序給出地址,而不是隨機給出。否則,您可能不想將密鑰添加到密鑰池,儘管這意味著您將失去密鑰池重新填充以保持範圍完整。