Address
從種子到 20 個(或更多)地址的算法
我目前正在閱讀 Electrum 原始碼,以了解如何從種子(12 個字)到地址(通常格式)。有人有這個過程的大圖嗎?
更準確地說,我正在尋找可以產生這個的 Python 程式碼(獨立的,可從 Electrum 中執行)。
- 取一個種子
s
(可以是 2048 詞詞典中的 12 個詞,但不是必需的)- 假設
s
是一個有效的種子(即is_new_seed(s)
isTrue
,這意味著bh2u(hmac_sha_512(b"Seed version", s.encode('utf8')))
有前綴'01'
);is_new_seed的程式碼在這裡。- 為了我們的目標(獲取地址),我們應該首先從
s
? 如何?要麼
- 我們應該創建一個主公鑰
s
嗎?如何?- 給定 3. 或 4.,如何創建前 20 個公共地址?
輸入範例:(
s = 'x8'
是的,這是一個有效的(不安全,因為太簡單)種子,您可以在 Electrum 中嘗試 -從現有種子創建錢包)輸出範例:
1LNvv5h6QHoYv1nJcqrp13T2TBkD2sUGn1 1P6rnf6VUfSUUWES6wTyjfx9dTFqXdrjLM 1AQ6TNtD2eEdQjwpVpkPSdcvJiiLKziKZz ...
Electrum 使用 BIP 32 將種子值轉換為私鑰和公鑰。然後從這些密鑰中派生地址。公鑰也衍生自私鑰,但僅限手錶的錢包除外。
完整的 BIP 32 規範可在此處獲得。