Bitcoin-Core

比特幣核心如何知道在不同錢包中創建的新地址?

  • May 3, 2022

使用importprvkey,我將 Electrum 錢包的所有私鑰導入到 Bitcoin Core 錢包中(由Electrum2core腳本提供;🎩-tip: somedude)。然後,在 Electrum 中,我創建了一個新的 bech32 接收地址並向其發送資金。這個地址隨後出現在比特幣核心錢包中,儘管我沒有importprvkey為這個地址的私鑰執行過。

比特幣核心錢包是如何知道這個地址的?

我使用 Electrum 從這個地址消費。我是否可以使用比特幣核心來使用它,因為我在比特幣核心中沒有相應的私鑰?


在地址上執行getaddressinfo返回

"solvable": true,

help getaddressinfo:

"solvable" : true|false,          (boolean) If we know how to spend coins sent to this address, ignoring the possible lack of private keys.

我是否可以從該地址“忽略可能缺少私鑰”?

現代錢包會預先生成很多密鑰,而不是在您要求時生成它們。例如,您可能使用了錢包中的 10 個地址,但您的錢包實際上有 110 個地址,因為它預先生成了其中的 100 個。當您請求一個新地址時,它會為您提供它預先生成的最舊地址,併計劃在以後生成該地址的替代地址並將其添加到前瞻池中。

這有兩個功能。恢復備份時,您的備份可能已過期,並且您可能使用了一些預先生成的地址。使用預先生成的地址,您的錢包可以掃描區塊鏈以查找這些地址,並能夠查看您的所有資金。

第二個是當私鑰被加密時。生成新密鑰時,需要對其進行加密,因此需要提供您的密碼。使用預先生成的前瞻池,您的錢包可以檢索預先生成的地址並將其提供給您,而無需輸入您的密碼。然後,下次您輸入密碼時,可以充值前瞻池。

考慮到這一點,發生的事情是從 Electrum 導出您的私鑰也導出了預生成的前瞻池中的所有密鑰。然後將它們導入比特幣核心。當你要求一個新地址時,一個地址是從前瞻中獲取的,因此比特幣核心能夠看到交易,因為整個前瞻都是導入的。如果你導入了私鑰,你就可以花掉這些資金。

如果你不斷地從 Electrum 請求地址,最終你會到達一個點,在你導入比特幣核心時的前瞻已經用盡,你將開始獲得比特幣核心不知道的地址。

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