Back
助記詞與路徑
很多人以為助記詞是把 Private key 轉換成人類能理解的單字,但事實上並非如此,現在就讓我們一起探索助記詞與路徑的關係吧。
稱呼
助記詞,原文為 Mnemonic,後來 Metamask 因應 NFT 熱潮而在 2022 年改稱為 Seed-phrase。
技術歷史
在 Bitcoin 歷史上,並非由一開始就有助記詞這項技術。助記詞是基於 BIP-39、BIP-32 及 BIP-44 等多個 Bitcoin 改進計畫而成。
助記詞的功能
助記詞並不是把 Private key 轉換成人類能理解的單字,事實恰恰相反,是使用者先建立助記詞,然後再用軟件順序轉換成 Private key 和 address。
每條助記詞只能建立一條地址?
很多人以為每條助記詞只能建立一條地址,停用地址時必須連同助記詞一同放棄,但其實這是常見誤解。助記詞並非單獨使用,而是需要連同「路徑(Derivation Path)」一同使用才能做到助記詞本應有的效果。
因此,如果使用者面對助記詞外洩,情況會比 Private key 外洩更嚴重。
路徑
剛才提到每條助記詞可以建立不同的多條地址,這都歸功於路徑。路徑就像 m/44'/60'/0'/0/0
以下是各數字的意思對照表:44 | 60 | 0 | 0 | 0 |
---|---|---|---|---|
purpose 用途 (44 代表 BIP-44) |
coin_type 網絡編號 例如 60 代表 Ethereum(以太坊) 0 代表 Bitcoin |
account 戶口 |
change 衍生戶口 |
index 編號 |
覺得太複雜?
不要緊,高手都不會把全部意思都背誦起來,高手會背誦的只有網絡編號。
這是因為當中的 purpose 在絕大部分情況下都是 44 不會變,account、change 和 index 可以完全由用戶自由選擇。網絡編號則需要由 Satoshilabs 注冊並寫入列表,從而讓所有人跟隨,以統一的做法達至助記的效果,不會令使用者因為忘記自己的路徑導致遺失資產。
(網絡編號之列表可參考注1)
(注意這個網絡編號是設計予助記詞使用,與其他區塊鏈的編號並無絕對關係,特別是 EVM 的 chain ID)
示範相同助記詞能產生不同 address | |||
---|---|---|---|
Mnemonic / 助記詞 | abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about | ||
coin_type / 網絡編號 | 路徑 | Private key / 私鑰 | Address / 地址 |
Ethereum (60) | m/44'/60'/0'/0/0 | 1ab42cc412b618bdea3a599e3c9bae199ebf030895b039e9db1e30dafb12b727 | 0x9858EfFD232B4033E47d90003D41EC34EcaEda94 |
Tron (195) | m/44'/195'/0'/0/0 | b5a4cea271ff424d7c31dc12a3e43e401df7a40d7412a15750f3f0b6b5449a28 |
TUEZSdKsoDHQMeZwihtdoBiN46zxhGWYdH(以
Base58_check 預設編碼顯示)
0xC8599111F29c1e1E061265b4AF93eA1F274aD78A(以 Hex(16進數)編碼顯示) |
可以先產生自己喜歡的 address,再轉換成 Private key 或助記詞嗎?
不可能。以上3者的產生順序,必須是 助記詞 => Private key => Address,這個順序不能逆轉。只不過助記詞並非產生 address 前的必須步驟,因此可以省略。
因此之故,如果使用者沒有由一開始就產生助記詞,之後亦無方法取得它。
不過有一種名為虛榮地址(Vanity address)的做法,是先產生自己喜歡的格式,然後再用暴力破解找出符合要求的助記詞或 Private key。
虛榮地址沒有絕對的識別方法,廣義上只要該 address 的任何部分對任何一個人有特別意思,那就是虛榮地址。(例如以「1Bitcoin」開首的 Bitcoin address)
注