從比特幣核心錢包中刪除描述符
我不小心將描述符導入了我不想在 Bitcoin Core 中導入的錢包。
據我所知,我可以從那個錢包中刪除這個描述符的唯一方法是刪除錢包,再次將描述符導入新錢包,然後重新掃描區塊鍊或 UTXO 集。
有什麼方法可以從錢包中刪除描述符而無需重新掃描?
比特幣核心沒有任何描述符或密鑰刪除功能,因為使用者可能會使用它們意外刪除他們花費比特幣所需的數據。
推薦的方法是將您需要的東西導入新錢包。
now
您可以通過在導入時將時間戳設置為字元串來避免重新掃描。importprunedfunds
然後,您可以使用RPC導入您的交易。但是,如果您有很多交易,這可能會很乏味。而且您還可能會錯過一些交易。如果您願意使用外部工具修改數據庫,您可以刪除與您要刪除的描述符對應的記錄。
描述符錢包使用 sqlite,因此可以使用任何通用 sqlite 工具對其進行修改。
比特幣核心將錢包數據儲存在鍵值對中。描述符錢包使用帶有單個表和兩個名為 key 和 value 的列的 sqlite,數據為二進制 blob。每個鍵都有一個以長度為前綴的字元串名稱。描述符儲存在具有名稱的記錄中
walletdescriptor
。後面是一個 32 字節的散列,用作描述符的標識符。該記錄的值是帶有一些額外元數據的描述符字元串。您可以查找值是要刪除的描述符的記錄。在刪除該記錄之前,請記住 id 是什麼,因為刪除與該描述符相關的其他記錄需要它。
這些附加記錄是
walletdescriptorcache
、walletdescriptorlhcache
、walletdescriptorckey
和walletdescriptorkey
。所有這些都具有相似的前綴,因為描述符 id 緊跟在類型字元串之後。您可以使用這些名稱和要刪除的描述符的 id 搜尋這些記錄,也可以刪除這些記錄。刪除這些記錄應該足以從你的錢包中刪除一個描述符。如果有要刪除的事務,您可以使用
removeprunedfunds
RPC 執行此操作。