比特幣核心錢包轉儲中的“更改”和“保留”是什麼意思?
我正在使用libwally從擴展私鑰派生地址。我與 Bitcoin Core 共享種子(使用 將其載入到空白錢包中
sethdseed
),並註意到錢封包件的轉儲中有 2 個地址在相同的派生路徑下,一個被標記reserve=1
並且與我使用 libwally 派生的相同,另一個被標記change=1
並且是不同的。我對此有幾個問題:
reserve
和的確切含義是change
什麼?我的猜測是,這reserve
是正常的接收地址,並且change
會發生變化,但我仍然想知道比特幣核心是否有更具體的含義。- 我認為更改地址是通過不同的路徑派生的,例如接收地址都以 結尾
../0/{index}
和更改../1/{index}
,或者比特幣核心的做法與 Electrum 不同?- 此外,我想知道如何使用相同的主密鑰和路徑生成 2 個不同的密鑰對,我也可以
change
使用 libwally 生成地址嗎?**[編輯]**再做一次之後,我在比特幣核心的轉儲文件中只有一個具有相同路徑的地址,所以我想我上次犯了一個錯誤,我會在這裡解釋一下,以防有幫助:帶有種子的錢包您自己選擇,您需要 2 個命令,
createwallet
並且sethdseed
. 除了 requiredwallet_name
,createwallet
還接受一個可選blank
參數。預設為false
,該命令將使用隨機種子生成密鑰池。但由於我們想使用自己的種子,我們需要將其設置為true
. 如果你轉儲新創建的錢包,它將是空白的,沒有主密鑰,沒有密鑰池,什麼都沒有。那麼只有你可以sethdseed
帶有以 wif 格式編碼的 32B 種子。我在同一個派生路徑下有 2 個密鑰,因為我首先創建了一個帶有隨機種子的錢包,然後添加了我自己的sethdseed
,所以我的轉儲文件中有 2 個密鑰池。正如安德魯在答案中所說,不可能有兩個不同的密鑰對具有相同的主密鑰和路徑。
reserve
和的確切含義是change
什麼?我的猜測是,這reserve
是正常的接收地址,並且change
會發生變化,但我仍然想知道比特幣核心是否有更具體的含義。
reserve
表示密鑰在密鑰池中,尚未使用。這用於更改和接收地址,因為兩者都有密鑰池。
change
表示密鑰用於更改地址。
- 我認為更改地址是通過不同的路徑派生的,例如接收地址都以 結尾
../0/{index}
和更改../1/{index}
,或者比特幣核心的做法與 Electrum 不同?他們是。比特幣核心
m/0'/0'/i'
用於接收地址和m/0'/1'/i'
更改。但是,如果您有一個較舊的比特幣核心錢包,則不存在這種拆分,並且只有一個密鑰池。但是,如果您正在使用sethdseed
,那不應該影響您。
- 此外,我想知道如何使用相同的主密鑰和路徑生成 2 個不同的密鑰對,我也可以
change
使用 libwally 生成地址嗎?沒有 2 個不同的密鑰對具有相同的主密鑰和路徑。比特幣核心不這樣做,這在 BIP 32(或任何 BIP)中是不可能的。