Electrum
Electrum 如何在 BIP-32 之前計算種子字節?
作為比特幣的新手並對其進行程式,我正在嘗試從助記符生成 BTC 地址。所以我閱讀了 BIP,並在 Github 中找到了實現這些的程式碼。
我發現 Electrum 沒有實現 BIP-39(如果我沒記錯的話,預設情況下),因為在 BIP-39 中無效的助記符被 Electrum 接受了!
所以我的問題是:**Electrum 如何做自己的“從助記符到種子”部分(至少對於標準錢包)?**如果我沒記錯的話,這個“種子字節”是 BIP-32 中用來生成密鑰的。
我嘗試了以下 Python 虛擬碼(來自“Electrum Seed 版本系統”):
hmac = hmac.digest(b"Seed version", b"...(12 word mnemonic)...", hashlib.sha512) bip32_thing = Bip32(secret = hmac[:32], chain = hmac[32:]) # default: Bip32 main net version (idk what this means)
但是我生成的主公鑰和 Electrum 的不匹配(很可能我完全誤解了“種子版本系統”)。感謝您的回复!
如果有幫助:我
bip-utils
在 Python 中使用。
幾個小時後,我找到了!這正是
Mnemonic.mnemonic_to_seed()
mnemonic.py 中所做的!(連結)最相關的部分是它返回的內容:
seed_byte = hashlib.pbkdf2_hmac('sha512', mnemonic.encode('utf-8'), b'electrum' + passphrase.encode('utf-8'), iterations = PBKDF2_ROUNDS)
哪裡
PBKDF2_ROUNDS = 2048
。然後,我剛剛…bip32_node = Bip32.FromSeed(seed_byte) # Derivation path: "m/"