如何从密码短语(助记符)SOLANA 生成密钥对

how to generate keypair from secret phrase (mnemonic) SOLANA

大家好,我正在使用 solana 和 phantom 钱包,我有一个带有 public 密钥的钱包,我有一个由 12 个单词组成的密码短语。 当我从我使用的秘密短语生成密钥对时:

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

生成的密钥对有 publicKey 和 privateKey,但是当我使用生成的 public 密钥检查我的余额时,我发现它总是 0,即使我尝试使用我的代码空投 sols 也不是进入帐户。 但是如果我使用幻影钱包中的 public 密钥进行检查,我会得到我拥有的 sols,如果我想空投 sols,它们也会正常进行。 请帮助我需要知道发生了什么为什么生成的 public 密钥与幻影钱包中的密钥不同。

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

大家好,我想出了解决问题的方法,首先正如“Frank C”所说,我们需要生成 publicKeyprivateKey 来自 种子短语 使用此命令:

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"

接下来,这将生成 public 密钥“将写入控制台”,并且带有密钥的 json 文件包含一个 64 元素数组 这是密钥现在在 solana web3 中生成 KEYPAIRS javascript SDK 我们执行以下操作:

 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 [ ]

**