Deterministic-Wallets
高畫質/確定性錢包和公鑰
我了解從主公鑰生成無限數量的公鑰地址的基本概念。我不明白的是如何獲得錢包餘額。我是否必須為我生成的錢包中的每個公鑰查詢未使用的輸出?
是否可以遍歷 utxo 中的地址並確定它們是否在錢包可以生成的公共地址集中?
如果我給伺服器一個公鑰,它代表我生成更多,我怎麼知道哪些地址收到了硬幣?似乎必須有一種方法來確定主密鑰對是否可以使用地址。
有任何想法嗎?似乎您必須以某種方式檢查整個 utxo 集。非常感激。
使用HD 錢包的客戶端會提前生成相當多的密鑰(例如,Armory 預設生成 100 個)。當它掃描區塊鏈以查找相關交易時,它會檢查迄今為止生成的所有密鑰的交易。
通常,您從列表中的下一個地址進行交易(它有一定的順序,生成下一個比 100 個下一個更容易)。假設您的客戶生成了前 100 個密鑰,並且有人向您列表中的第 150 個地址匯款。您必須等待客戶端決定生成第 150 個密鑰(可能是因為您使用了第 50 個密鑰並且它預先生成了 150 個),或者告訴您的客戶端生成第 150 個密鑰,然後重新掃描區塊鏈,以便知道您在那裡收到了錢。
似乎必須有一種方法來確定主密鑰對是否可以使用地址。
不一定:您可以從主密鑰對生成很長的一系列地址(2^32,如果我正在閱讀 BIP 0032 正確),但這樣做會花費大量時間。我不確定是否有一種理論上的方法來做你所要求的(沒有實際計算所有這些),但在實踐中很明顯你只是生成了一組你認為在不久的將來有用的地址,並且從那裡去。