BIP-44
BIP-44 是賦予 BIP-32 抽象金鑰樹一個有意義、標準化形狀的慣例,好讓不同錢包對「每種幣的地址該住在哪裡」取得共識。少了它,兩個還原同一顆種子的錢包可能沿不同路徑衍生金鑰,於是看似顯示出不同的(空的)餘額。BIP-44 固定了一條五層路徑,使任何相容的錢包都能找到相同的帳戶。
路徑為 m / purpose' / coin_type' / account' / change / address_index。purpose 層為強化並釘死在 44',用以標記 BIP-44 的版面。coin_type 層(同為強化)以註冊在 SLIP-0044 的編號選定資產——比特幣為 0'、以太坊為 60',依此類推——這便是單一種子能乾淨地分隔多條鏈的方式。account 層(強化)讓使用者在同一份備份底下,保有彼此獨立隔離的子錢包,例如「儲蓄」與「支出」。
最後兩層為非強化,好讓唯讀的擴展公鑰能向前掃描。change 層在你發出去收款的外部地址為 0,在錢包為接收 UTXO 找零而產生的內部「找零」地址為 1。address_index 單純地往上數 0、1、2……,為每一筆付款給出一個全新地址。錢包遵循一個「間隙上限」(常見為 20):一旦碰到連續這麼多個未使用的地址便停止繼續掃描,這正是為何把種子匯入另一個錢包時,偶爾會漏掉那些被放在間隙之外很遠處的地址。
一條標準的 BIP-44 路徑:purpose 44'、coin 60'(以太坊)、account 0、外部鏈、索引 5。
以太坊錢包常偏離嚴格的 BIP-44:許多錢包(包括 MetaMask)把 change 固定為 0,只遞增最後的索引,於是帳戶出現在 m/44'/60'/0'/0/0、m/44'/60'/0'/0/1……,而非提升 account' 層。這個歷史遺留的怪癖,是錢包間搬移時「餘額不見了」的常見原因。