You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何助记词生成的Keypair导入Phantom钱包时出现格式错误?

问题:助记词生成的Solana密钥对无法导入Phantom钱包

我用Python代码生成助记词对应的密钥对,同时直接创建了另一个密钥对,代码如下:

from solders.keypair import Keypair
from mnemonic import Mnemonic

mnemo = Mnemonic("english")
words = mnemo.generate(strength=256)
seed = mnemo.to_seed(words)
keypair1 = Keypair.from_bytes(seed)
print("keypair1: {}".format(keypair1))

keypair2 = Keypair()
print("keypair2: {}".format(keypair2))

输出结果:

keypair1: 4pqdZVgkCaALGNqvumkcC9gH5ZRj13DupL9go2DfZMhX9c7Mi9cei9AySWHNdcaxf5cnpZ2yyHtc5dvqW9qof2LX
keypair2: 4af72sYDF4ugnoMpNjoyBTmrDpgBKJqNUJGq8Lpy6vsao9kV9nxHtKiExqSwSkgKebJQHMeYWCQbH5JscbckkMck

其中通过助记词生成的keypair1导入Phantom钱包时提示“bad format”错误,而直接创建的keypair2导入成功,请问这是为什么?


解答
  • 核心问题是种子长度不符合Solana要求:Solana密钥对需要的是32字节的私钥,但mnemo.to_seed()默认生成的是64字节的BIP39标准种子(这是多数以太坊系钱包的规范)。你直接把64字节的种子传给Keypair.from_bytes(),虽然代码能运行,但生成的密钥对并不符合Solana的格式规范,因此Phantom无法识别。
  • 而Keypair()方法是直接生成标准的32字节私钥对应的密钥对,自然能被Phantom正常导入。

修正方法

你需要从生成的BIP39种子中提取前32字节来创建Solana密钥对,修改后的代码如下:

from solders.keypair import Keypair
from mnemonic import Mnemonic

mnemo = Mnemonic("english")
words = mnemo.generate(strength=256)
seed = mnemo.to_seed(words)
# 截取种子的前32字节生成合规的密钥对
keypair1 = Keypair.from_bytes(seed[:32])
print("keypair1: {}".format(keypair1))
print("助记词:", words)

修改后生成的keypair1即可正常导入Phantom。另外,你也可以直接用生成的助记词导入Phantom钱包,无需转换为密钥对字符串,Phantom原生支持助记词导入方式。


内容的提问来源于stack exchange,提问作者Leo Loki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:32:48