michaelhly / solana-py

Solana Python SDK
https://michaelhly.github.io/solana-py
MIT License
979 stars 252 forks source link

Keypair bytes do not specify same pubkey as derived from their secret key #440

Closed Demontager closed 2 months ago

Demontager commented 2 months ago

Hello, i just tried a sample code to restore a Keypair from a mnemonic phrase found on solanacookbook https://solanacookbook.com/references/keypairs-and-wallets.html#how-to-restore-a-keypair-from-a-mnemonic-phrase

from solders.keypair import Keypair
from mnemonic import Mnemonic

mnemo = Mnemonic("english")
seed = mnemo.to_seed("pill tomorrow foster begin walnut borrow virtual kick shift mutual shoe scatter")
keypair = Keypair.from_bytes(seed)
print("Created Keypair with Public Key: {}".format(keypair.pubkey()))

Traceback (most recent call last):
  File "/home/dem/Projects/Solana/wallet.py", line 6, in <module>
    keypair = Keypair.from_bytes(seed)
              ^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: signature error: keypair bytes do not specify same pubkey as derived from their secret key

My first guess it might be a problem with sample seed, so i generated a new one with solana-keygen cli command, but same error occured.

kevinheavey commented 2 months ago

From the solders docs: https://kevinheavey.github.io/solders/tutorials/keypairs.html#restoring-a-keypair-from-a-mnemonic-seed-phrase

from solders.keypair import Keypair
from mnemonic import Mnemonic

mnemo = Mnemonic("english")
seed = mnemo.to_seed("pill tomorrow foster begin walnut borrow virtual kick shift mutual shoe scatter")
keypair = Keypair.from_seed(seed[:32])
Demontager commented 2 months ago

Yes, thanks kevinheavey now it works