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 words. 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 Sol using my code it's not getting in the account.
But if I check using my public key from phantom wallet I get the Sol I have and if I want to airdrop sols they also proceed normally.
Why is my generated public key not the same as the one in phantom wallet?
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 [ ]