how to generate keypair from secret phrase (mnemonic) SOLANA

Viewed 4183

I am working with solana and phantom wallet I have a wallet with a public key and I have it's secret phrase composed of 12 wordw. when I generate keypairs from the secret phrase I use :

const getKeyPair = (mnemomic) => {
  const seed = bip39.mnemonicToSeedSync(mnemomic).slice(0, 32);
  const Keypair = web3.Keypair.fromSeed(seed);
  return Keypair;
};

the generated keypair has publicKey and privateKey , but when am checking my balance using the generated public key I find the balance is always 0 even when I try to airdrop sols using my code it's not getting in the account.

But if I check using my public key from phantom wallet I get the sols I have and if I want to airdrop sols they also proceed normally.

Why is my generated public key is not the same as the one in phantom wallet?

2 Answers

First, we need to generate the publicKey and privateKey from the seed phrase using this command :

solana-keygen recover 'prompt:?key=0/0' -o phantom_wallet.json

remark : our account may have many wallets the command above access the first wallet , if we need to access wallet number 10 for example we need to change the 'prompt:?key=0/0' to 'prompt:?key=10/0' "only the first 0 is changing"

next this will generate public key "will be written in the console" and a json file with secret key contains an array of 64 element which is the secret key. now to generate the KEYPAIRS in solana web3 javascript SDK we do the following:

 let seed = Uint8Array.from(
    process.env.REACT_APP_OUR_SECRET_KEY.split(",")
  ).slice(0, 32);

  // create keypairs
  let KEYPAIRS = web3.Keypair.fromSeed(seed);

IMPORTANT : in .env files REACT_APP_OUR_SECRET_KEY is stored without brackets [ ] example : 15,320,52,... as we see a table without brackets [ ]

solana-keygen recover 'prompt:?key=0/0' -o phantom_wallet.json

Related