【问题标题】:How to get proper public address from mnemonic phrase for Solana?如何从 Solana 的助记词中获取正确的公共地址?
【发布时间】:2021-11-13 19:39:20
【问题描述】:

我正在尝试在我的 react-native 测试项目 中使用 solana-web3.js 为 Solana 钱包获取正确的公共地址

import { Keypair} from '@solana/web3.js';
import * as bip39 from 'bip39';
import * as bip32 from 'bip32';

const derivePath = "m/44'/501'/0'/0'";
const mnemonic = "...12 words phrase"

const seed: Buffer = yield bip39.mnemonicToSeed(mnemonic);
// also tried to slice seed.slice(0, 32);
const derivedSeed = bip32.fromSeed(seed).derivePath(derivePath).privateKey;
const keypair = Keypair.fromSeed(derivedSeed);
const publicKey = keypair.publicKey.toString();

我采用了应该用于 Phantom 钱包的派生路径(并且可以在 Solflare 钱包中选择) 但问题是 - 我没有获得与这些浏览器钱包相同的公钥。

那么我在上面的代码中可能在哪里出错?

更新: 当我使用 'ed25519-hd-key' lib 而不是 'bip32' 来获取派生种子时,问题就消失了。

import * as ed25519 from 'ed25519-hd-key';

const derivedSeed = ed25519.derivePath(derivePath, seed.toString('hex')).key;

【问题讨论】:

    标签: javascript blockchain seed mnemonics solana


    【解决方案1】:

    你应该使用“m/501'/0'/0'”路径

    【讨论】:

      猜你喜欢
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 2021-12-03
      • 2022-06-17
      • 2015-05-15
      • 2013-10-17
      相关资源
      最近更新 更多