Wallet
從比特幣核心傳統錢包到描述符錢包的遷移工具將如何工作?
在這篇關於 0.21 版比特幣核心錢包的Andrew Chow部落格文章中,他指出:
可以使用現有的 Legacy Wallet,並製作與其完全匹配的 Descriptor Wallet。將有允許使用者執行此操作的工具。即使在刪除 Legacy Wallets 和 Berkeley DB 之後,也可以通過使用最小依賴遷移工具將 Legacy Wallets 遷移到 Descriptor Wallets。
這個遷移工具將如何工作?鑑於遺留錢包不知道描述符是什麼,描述符錢包如何從遺留錢包獲取描述符?
遷移工具將遍歷舊錢包中的所有密鑰並為它們創建描述符。這需要考慮所有
IsMine
匹配的內容。來自比特幣核心發行說明:IsMine 是指用於確定腳本是否屬於錢包的函式。這用於確定輸出是否屬於錢包。如果錢包能夠簽署使用該腳本花費輸出的輸入,則舊版錢包中的 IsMine 返回 true。由於密鑰可能涉及各種不同的腳本,因此 IsMine 的此定義可能導致許多意想不到的腳本被視為錢包的一部分。
對於 HD 錢包,使用單個描述符計算 HD 種子的 xpriv 非常簡單。對於非高畫質錢包但仍然只是關鍵的東西,它是每個密鑰的描述符。scriptPubKeys 的集合是有限的並且 O(n!) 所以它是可行的。
對於僅限手錶的錢包和多重簽名,它變得更加複雜。對於所有邊緣情況,也可能無法將 Descriptor Wallet 視為
IsMine
Legacy Wallet 將視為的任何未來腳本。IsMine
感謝 Andrew Chow 和 Pieter Wuille 在 IRC 上回答這個問題。任何錯誤都是我自己的。