Адреса фантомных кошельков не имеют смысла

Если я импортирую сид-фразу с @solana/web3.js, я получаю другой публичный адрес, отличный от адресов, сгенерированных кошельком Phantom, когда я импортирую ту же сид-фразу. Кто-нибудь знает, почему?

      const seed = Bip39.mnemonicToSeedSync("<12 word phrase>").slice(0, 32);

const mint_authority = web3.Keypair.fromSeed(seed)

нужно ли мне что-то делать с путями деривации, чтобы сгенерированные адреса совпадали с адресами Phantom wallet?

1 ответ

Вы можете использовать этот код. Он работает правильно на моей стороне.

      seed_bytes = Bip39SeedGenerator(cfg.ETH_TEMP_MNEMONIC).Generate()
  bip44_mst_ctx = Bip44.FromSeed(seed_bytes, Bip44Coins.SOLANA)
  for i in range(100):
    bip44_acc_ctx = bip44_mst_ctx.Purpose().Coin().Account(i)
    bip44_chg_ctx = bip44_acc_ctx.Change(Bip44Changes.CHAIN_EXT)

    new_wallet = WalletData()
    new_wallet.public_key = bip44_chg_ctx.PublicKey().ToAddress()
    new_wallet.private_key = Base58Encoder.Encode(
        bip44_chg_ctx.PrivateKey().Raw().ToBytes() + bip44_chg_ctx.PublicKey().RawCompressed().ToBytes()[1:]
    )
Другие вопросы по тегам