反応ネイティブ テスト プロジェクトで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 ウォレットでも選択できます)。
では、上記のコードのどこで間違いを犯している可能性がありますか?
更新: 'bip32' の代わりに 'ed25519-hd-key' lib を使用して派生シードを取得すると、問題がなくなります。
import * as ed25519 from 'ed25519-hd-key';
const derivedSeed = ed25519.derivePath(derivePath, seed.toString('hex')).key;