Transactions

從 BIP32 派生錢包中取回所有資金

  • March 18, 2015

一個電子商務網站正在使用 BIP32 錢包從子鍵樹中接收訂單付款,其中每個葉節點對於一次購買交易都是唯一的。

網站在 X 次確認後立即將收到的硬幣發送到其超級錢包(主節點)是否常見?如果是這樣,您將如何將整個子密鑰樹(根據交易數量可能是大量節點)中的所有硬幣發送到超級錢包?

您怎麼知道何時將付款發送到派生地址之一?

讓我們假設派生路徑為 的情況,主節點m/k'/0/i在哪裡m,使用者有一個k節點並且i是他的第 i 個購買交易。

網站在 X 次確認後立即將收到的硬幣發送到其超級錢包(主節點)是否常見?

不,根本不會,通常會被認為是非常糟糕的做法,因為在比特幣中你不是從地址而是從交易中消費,因此在一個地址中“累積”實際上並不奏效。從該地址發送將再次必須引用所有轉發的交易。(在它的原始實現中有一些特殊情況,比如綠色地址,但沒有,那已經成為過去了。)

您怎麼知道何時將付款發送到派生地址之一?

你看比特幣網路嗎?通過代理或使用完整節點。查看insight.bitpay.com API。

讓我們假設派生路徑為 m/k’/0/i 的情況,其中 m 是主節點,曾經使用者有 ak 節點,而 i 是他的第 i 個購買交易。

我強烈建議僅在伺服器中保留該邏輯。

電子商務聽起來像是一台中央伺服器,因此在 HD 錢包結構中確實沒有太大的必要展開太多。您還應該研究有關事務發現的BIP44 。

您的業務邏輯必須跟踪地址的用途,但如果該網站永遠不必發送退款,它通常只有一個擴展的公鑰。現在如果它收到

m / 44' / 0' / i' / 0 / j

如果您至少為它提供了 xpriv 密鑰,那麼任何與 bip44 兼容的錢包都會找到並能夠使用這些資金

m / 44' / 0' / i' / 0

但通常

m / 44' / 0' / i'

您必須跟踪的一件小事是未收到付款的地址之間的差距。如果您的伺服器觀察到超過 20 的差距,您將不得不幫助您的錢包找到這些資金,如果它是嚴格的 bip44 只能彌補高達 20 的差距。如果您的最後一筆交易是索引 1220 並且您沒有看到交易到 1255 和 1257,你可以發送一個 satoshi 到 1239,你的錢包會找到其餘的。

網站在 X 次確認後立即將收到的硬幣發送到其超級錢包(主節點)是否常見?

沒有必要將來自大量交易的資產聚合到一個地址中,但這並不少見。如果持有一些硬幣的地址數量變得無法管理(確切數量取決於您的錢包軟體、系統資源等),這可能是可行的。

如果發生這種情況,您可以簡單地將這些代幣在具有多個輸入的大交易中發送(以節省 tx 費用)到您的*“主節點”*管理的地址。

您怎麼知道何時將付款發送到派生地址之一?

和你之前知道的一樣。將資金轉移到您的主地址後,您可以繼續關注該地址。如果需要,您可以稍後再次進行另一個聚合事務。

引用自:https://bitcoin.stackexchange.com/questions/21721