衍生路徑 Derivation Path
衍生路徑,是 HD 分層錢包中描述如何從主金鑰一路往下衍生,到某一把特定子金鑰的索引序列。同一組種子可以衍生出無限多把金鑰,衍生路徑就像地址簿的座標,讓錢包能夠重現每一把金鑰的位置。

衍生路徑,Derivation Path,是 HD 錢包中描述如何從主金鑰一路往下衍生,到某一把特定子金鑰的索引序列。
衍生路徑以斜線分隔各層,每一層對應一次子金鑰衍生,例如 m/84'/0'/0'/0/0,代表從主金鑰出發,依序經過用途、幣種、帳戶、收款類型與地址索引,最後得到第一個收款地址的金鑰。
同一組種子可以衍生出無限多把金鑰,衍生路徑就像地址簿的座標,讓錢包能夠重現每一把金鑰的位置。
衍生路徑由 BIP 32 定義格式,再由 BIP 43、BIP 44 等標準規範各層的意義。
衍生路徑 基本概念
-
路徑格式
衍生路徑以
m開頭,代表主私鑰 Master Private Key,後面以/分隔每一層的子金鑰編號。若以
M開頭,則代表主公鑰 Master Public Key,只能用於一般衍生,不能衍生強化子金鑰。
-
子金鑰編號
每一層的編號是一個 32 位元整數,範圍為 0 到 2³² − 1。
編號 0 到 2³¹ − 1 為一般衍生 Normal Derivation,編號 2³¹ 到 2³² − 1 為強化衍生 Hardened Derivation。
-
強化衍生標記
路徑中,強化衍生的層級會在編號後方加上單引號
'或字母h,例如84'與84h表示同一件事。強化衍生需要使用私鑰才能計算,無法僅憑擴展公鑰推導出來。
-
深度與階層
每多一層路徑,擴展金鑰的深度 Depth 就加 1。
主金鑰的深度為 0,
m/84'/0'/0'的深度為 3。
-
路徑只是約定
BIP 32 只規定了衍生的數學方法,並未規定每一層的用途。
各層的意義由 BIP 43、BIP 44、BIP 84 等標準約定,讓不同錢包可以使用相同路徑,還原出相同的地址。
衍生路徑 組成結構
以 BIP 44 系列的標準路徑為例:
m / purpose' / coin_type' / account' / change / address_index
-
用途 Purpose
第一層標示該錢包採用的標準,數字對應 BIP 編號。
常見的有
44'(傳統 P2PKH)、49'(P2SH-P2WPKH)、84'(P2WPKH,原生 SegWit)、86'(P2TR,Taproot)。
-
幣種 Coin Type
第二層標示使用的幣種,編號登記在 SLIP-44。
比特幣主網為
0',測試網為1'。
-
帳戶 Account
第三層用來區分不同的帳戶,從
0'開始。每個帳戶有自己獨立的地址與餘額,錢包匯出的擴展公鑰通常就在這一層,例如
m/84'/0'/0'。
-
收款與找零 Change
第四層只有兩個值,為一般衍生。
0為外部鏈 External Chain,用來產生對外給付款人的收款地址。1為內部鏈 Internal Chain,用來產生交易找零的地址。
-
地址索引 Address Index
第五層為地址編號,從 0 開始遞增,為一般衍生。
例如
m/84'/0'/0'/0/0是第一個收款地址,m/84'/0'/0'/0/1是第二個。
-
多重簽名路徑
多重簽名錢包常使用 BIP 48,路徑為
m/48'/coin_type'/account'/script_type'。腳本類型欄位以
1'表示 P2SH-P2WSH,2'表示 P2WSH,後續也有 Taproot 相關的擴充,各簽署者各自在此路徑下產生擴展公鑰。
衍生路徑 運作方式
-
從種子建立主金鑰
由助記詞產生種子後,經過 HMAC-SHA512 運算,得到主私鑰與主鏈碼,成為路徑
m的起點。
-
逐層衍生
依照路徑由左至右,每一層都以上一層的金鑰、鏈碼與該層編號,進行一次子金鑰衍生。
走完整條路徑後,得到的金鑰即為該路徑對應的金鑰。
-
產生地址
最底層的子私鑰換算出公鑰後,再依照用途層對應的地址類型,編碼為比特幣地址。
例如
84'下的金鑰會建立 P2WPKH 地址,86'下的金鑰則會建立 P2TR 地址。
-
地址掃描與 Gap Limit
還原錢包時,軟體會依照路徑逐一產生地址,並查詢區塊鏈上是否有交易紀錄。
為避免無止境往下搜尋,BIP 44 規定了 Gap Limit,連續遇到 20 個未使用的地址,便停止掃描該條鏈。
-
搭配金鑰來源資訊
輸出描述符常以
[指紋/路徑]的形式記錄金鑰來源,例如[d34db33f/84'/0'/0']xpub...。指紋是主公鑰的前 4 位元組,讓簽署裝置能辨識這把金鑰來自哪個種子與哪條路徑。
衍生路徑 應用
-
地址類型管理
同一組助記詞,可以在不同用途層下,產生傳統、SegWit 與 Taproot 地址,彼此獨立,互不重疊。
-
多帳戶管理
切換帳戶編號,就能在同一組種子下管理多個獨立帳戶,例如個人、家庭與事業。
-
跨錢包還原
遵守同一標準路徑的錢包,可以用相同的助記詞還原出相同的地址。
這使使用者能在不同廠牌的軟體與硬體錢包之間遷移。
-
硬體錢包與多簽協作
硬體錢包匯出指定路徑下的擴展公鑰,錢包軟體據此建立地址與交易。
多簽錢包的各簽署者,也是透過交換各自路徑下的擴展公鑰,建立共同的多簽腳本。
-
收款與找零分離
收款鏈與找零鏈分開,錢包能清楚區分對外收款與內部找零。
這也方便錢包判斷哪些輸出是自己的找零,簡化餘額與交易記錄顯示。
衍生路徑 注意事項
-
路徑錯誤不代表資金遺失
以錯誤路徑還原錢包,通常會看到空的餘額,因為得到的是另一組金鑰與地址。
資金仍在原本路徑對應的地址上,改用正確路徑即可看到。
-
需要備份路徑資訊
採用標準路徑的錢包,只備份助記詞通常就能還原。
若使用自訂路徑、非標準帳戶或多重簽名,則需要連同路徑與描述符一併備份。
-
強化衍生層不可由 xpub 推導
路徑中帶有
'的層級,無法由上層的擴展公鑰往下推導。因此帳戶層級以上為強化衍生,使匯出的帳戶 xpub 不會洩漏上層金鑰。
-
不同標準路徑會得到不同地址
同一組助記詞,使用
44'、49'、84'、86'分別會得到不同類型的地址,餘額也不會共通。還原時需確認資金原本是用哪一種地址類型存放。
-
部分錢包使用自訂路徑
並非所有錢包都遵守 BIP 44 系列的路徑,部分軟體會使用自訂路徑。
遇到無法還原的情況,需查詢該錢包使用的路徑。
衍生路徑 相關標準
- BIP 32:Hierarchical Deterministic Wallets
- BIP 43:Purpose Field for Deterministic Wallets
- BIP 44:Multi-Account Hierarchy for Deterministic Wallets
- BIP 48:Multi-Script Hierarchy for Multi-Sig Wallets
- BIP 49:Derivation scheme for P2WPKH-nested-in-P2SH based accounts
- BIP 84:Derivation scheme for P2WPKH based accounts
- BIP 86:Key derivation for Single Key P2TR Outputs
- BIP 380:Output Script Descriptors General Operation
- SLIP-44:Registered coin types for BIP-0044

更多文章