Bitcoin-Core

比特幣核心錢包轉儲中的“更改”和“保留”是什麼意思?

  • July 15, 2020

我正在使用libwally從擴展私鑰派生地址。我與 Bitcoin Core 共享種子(使用 將其載入到空白錢包中sethdseed),並註意到錢封包件的轉儲中有 2 個地址在相同的派生路徑下,一個被標記reserve=1並且與我使用 libwally 派生的相同,另一個被標記change=1並且是不同的。

我對此有幾個問題:

  1. reserve和的確切含義是change什麼?我的猜測是,這reserve是正常的接收地址,並且change會發生變化,但我仍然想知道比特幣核心是否有更具體的含義。
  2. 我認為更改地址是通過不同的路徑派生的,例如接收地址都以 結尾../0/{index}和更改../1/{index},或者比特幣核心的做法與 Electrum 不同?
  3. 此外,我想知道如何使用相同的主密鑰和路徑生成 2 個不同的密鑰對,我也可以change使用 libwally 生成地址嗎?

**[編輯]**再做一次之後,我在比特幣核心的轉儲文件中只有一個具有相同路徑的地址,所以我想我上次犯了一個錯誤,我會在這裡解釋一下,以防有幫助:帶有種子的錢包您自己選擇,您需要 2 個命令,createwallet並且sethdseed. 除了 required wallet_namecreatewallet還接受一個可選blank參數。預設為false,該命令將使用隨機種子生成密鑰池。但由於我們想使用自己的種子,我們需要將其設置為true. 如果你轉儲新創建的錢包,它將是空白的,沒有主密鑰,沒有密鑰池,什麼都沒有。那麼只有你可以sethdseed帶有以 wif 格式編碼的 32B 種子。我在同一個派生路徑下有 2 個密鑰,因為我首先創建了一個帶有隨機種子的錢包,然後添加了我自己的sethdseed,所以我的轉儲文件中有 2 個密鑰池。正如安德魯在答案中所說,不可能有兩個不同的密鑰對具有相同的主密鑰和路徑。

  1. reserve和的確切含義是change什麼?我的猜測是,這reserve是正常的接收地址,並且change會發生變化,但我仍然想知道比特幣核心是否有更具體的含義。

reserve表示密鑰在密鑰池中,尚未使用。這用於更改和接收地址,因為兩者都有密鑰池。

change表示密鑰用於更改地址。

  1. 我認為更改地址是通過不同的路徑派生的,例如接收地址都以 結尾../0/{index}和更改../1/{index},或者比特幣核心的做法與 Electrum 不同?

他們是。比特幣核心m/0'/0'/i'用於接收地址和m/0'/1'/i'更改。但是,如果您有一個較舊的比特幣核心錢包,則不存在這種拆分,並且只有一個密鑰池。但是,如果您正在使用sethdseed,那不應該影響您。

  1. 此外,我想知道如何使用相同的主密鑰和路徑生成 2 個不同的密鑰對,我也可以change使用 libwally 生成地址嗎?

沒有 2 個不同的密鑰對具有相同的主密鑰和路徑。比特幣核心不這樣做,這在 BIP 32(或任何 BIP)中是不可能的。

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