Bip32-Hd-Wallets

如何使用 xpub 派生地址的 UTXO?

  • October 13, 2020

我是比特幣的新手,這讓我很困惑。

如果我們從 xpub 派生子,即公鑰,沒有私鑰,以接收輸出,如果我們沒有私鑰,我們如何能夠花費 UTXO?

在此範例中: <https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch05.asciidoc#using-an-extended-public-key-on-a-web-store> xpub 在伺服器上設置以生成公共在電子商務網站上收款的鑰匙。但是,如果我們沒有私鑰,我們如何獲得這筆錢呢?

Gabriel 的 HD 錢包通過在不知道私鑰的情況下派生公共子密鑰的能力提供了一個更好的解決方案。Gabriel 可以在他的網站上傳入一個擴展公鑰 (xpub),該公鑰可用於為每個客戶訂單派生一個唯一地址。Gabriel 可以從他的 Trezor 中花費資金,但網站上傳入的 xpub 只能生成地址和接收資金。

您提到的連結描述瞭如何使用 XPUB 為您網站上的每個訂單獲取新地址,並且該地址將屬於您的錢包設置,可能在硬體錢包或其他地方進行消費。

但是,如果我們沒有私鑰,我們如何獲得這筆錢呢?

您不能在網上商店訪問它,但您可以使用硬體錢包或其他機器上的錢包設置等方式訪問它。

你可以用btcpayserver試試這個

在 BIP-32 等確定性派生方案中,錢包的本質被簡化為兩條資訊:私鑰和派生規則。我們將這兩者組合稱為xPriv或擴展私鑰。類似地,擴展公鑰 ( xPub) 由相應的公鑰和另一個派生規則組成。我們可以很容易地從私鑰中找到公鑰。但是,推導規則呢?

在標準¹情況下,推導規則是大數的簡單算術。讓我們看一個例子。設k主私鑰、推導規則k' = k + 1g生成器和公鑰K = k•g。因此,當我們導對外連結中的第二個密鑰時,k'​​我們觀察到

k'•g = (k+1)•g = k•g + g = K + g = K'

這意味著當私鑰是每加 1 創建的標量系列時,相應的公鑰將是由生成器的加法得出的一系列橢圓曲線點g。所以,我們既有主公鑰,也有一個推導規則,我們可以從中找到任何子密鑰!

這和你的問題有什麼關係?xPub在您連結到的範例中,Gabriel 使用描述的他和他之間的關係xPriv來保持私鑰離線,並且只xPub在他的線上系統上部署。這使 Gabriel 可以根據需要為網上商店生成地址,但可以防止私鑰暴露給可能被破壞的線上系統。當 Gabriel 想要花掉他收到的一些資金時,他會使用僅限手錶的錢包生成交易,並通過根據需要使用他的硬體錢包導出相應的私鑰來離線簽名。


¹ 還有一些派生規則不允許從主公鑰派生公鑰,例如通過在派生中使用散列步驟。這種“強化”方案需要訪問主私鑰以派生額外地址。

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