将Solana密钥对生成的JS代码转换为Python 3.10实现
Solana密钥对生成的Python 3.10等效实现
首先安装所需依赖库:
pip install bip39 ed25519-hd-key pynacl base58
以下是对应Python实现,逻辑与原JS代码完全对齐:
import bip39 import ed25519_hd_key import nacl.signing import base58 def main(): # 输入助记词 mnemonic = "main holiday sing female devote vacant foot cream drink lecture wage marble bread special logic follow rose fire morning invite fatal make office search" # 从助记词生成种子二进制数据 seed = bip39.mnemonic_to_seed(mnemonic) # 将种子转换为十六进制字符串,匹配JS中Buffer处理逻辑 seed_hex = seed.hex() # Solana标准BIP44派生路径 derivation_path = "m/44'/501'/0'/0'" # 按路径派生密钥种子 derived_seed = ed25519_hd_key.derive_path(derivation_path, seed_hex).key # 从派生种子生成Ed25519密钥对 signing_key = nacl.signing.SigningKey(derived_seed) # 可选:转换为Solana常用的Base58格式(原JS代码未输出,这里补充方便使用) public_key_base58 = base58.b58encode(signing_key.verify_key.encode()).decode() private_key_base58 = base58.b58encode(signing_key.encode()).decode() print(f"公钥(Base58): {public_key_base58}") print(f"私钥(Base58): {private_key_base58}") if __name__ == "__main__": main()
代码说明
- 用
bip39.mnemonic_to_seed替代JS的bip39.mnemonicToSeed,生成种子二进制数据 ed25519_hd_key.derive_path对应JS的ed25519.derivePath,实现BIP44路径密钥派生nacl.signing.SigningKey对应JS的nacl.sign.keyPair.fromSeed,生成Ed25519签名密钥对- 补充了Base58格式转换,符合Solana生态中密钥的常用展示形式
内容的提问来源于stack exchange,提问作者Vitaliy Kotov
相关产品推荐
相关产品推荐

