如何在Python中导入Solana助记词,适配HD钱包至solders库
在solana-py中使用HD钱包的解决方案
现状与问题
- 已通过以下代码生成Solana HD钱包(基于BIP39/BIP44标准):
mnemo = Mnemonic("english") my_words = mnemo.generate(128) seed_bytes = Bip39SeedGenerator(my_words).Generate("") bip44_mst_ctx = Bip44.FromSeed(seed_bytes, Bip44Coins.SOLANA) bip44_acc_ctx = bip44_mst_ctx.Purpose().Coin().Account(0) bip44_chg_ctx = bip44_acc_ctx.Change(Bip44Changes.CHAIN_EXT) ADDR = bip44_chg_ctx.PublicKey().ToAddress()
- 遇到的问题:solana-py依赖的solders库不直接支持HD钱包导入,无法直接将HD密钥对用于solana-py的交易签名等核心操作。
解决方案:将HD私钥转换为solders Keypair
从已推导的HD路径上下文导出私钥字节,再转换为solders支持的Keypair格式即可,补充代码如下:
# 从HD路径上下文导出原始私钥字节 private_key_bytes = bip44_chg_ctx.PrivateKey().Raw().ToBytes() # 导入solders并创建Keypair from solders.keypair import Keypair keypair = Keypair.from_bytes(private_key_bytes)
转换完成后,该keypair可直接用于solana-py的send_transaction等方法,完全兼容现有业务流程。
Solders密钥对文档核心内容翻译
- 密钥对创建方式:
- 随机生成:
Keypair() - 从私钥字节导入:
Keypair.from_bytes(private_key_bytes) - 注意:solders不支持直接从助记词生成HD路径密钥对,需先通过BIP39/BIP44工具推导私钥字节再导入
- 随机生成:
- 常用操作:
- 获取公钥:
keypair.pubkey() - 获取私钥字节:
keypair.secret() - 签名消息:
keypair.sign_message(message_bytes)
- 获取公钥:
内容的提问来源于stack exchange,提问作者Berkeley Cinar
相关产品推荐
相关产品推荐

