0

我正在尝试在后端使用钱包种子,使用nodejs, 来连接区块链。“@solana/web3.js”库中的Keypair模块有一个方法,我将它与来自bip39库的另一种方法的输入一起使用,它将我的助记符转换为种子。这是我的代码fromSeed

const mnemonic = <My-mnemonic>
console.log(bip39.validateMnemonic(mnemonic)) // true
bip39.mnemonicToSeed(mnemonic).then(buffer => Keypair.fromSeed(buffer)).catch(err => console.log(err))

这是我的错误

Error: bad seed size
    at Function.nacl.sign.keyPair.fromSeed (/home/diazrock/Carrera/Elasbit/NFT's/mint-nft-solana/node_modules/tweetnacl/nacl-fast.js:2329:11)
    at Function.fromSeed (/home/diazrock/Carrera/Elasbit/NFT's/mint-nft-solana/node_modules/@solana/web3.js/lib/index.cjs.js:5625:53)
    at bip39.mnemonicToSeed.then.buffer (repl:1:55)
4

1 回答 1

1

Keypair.fromSeed()进行 Unit8Array检查

buffer.toJSON().data这将返回一个 64 长度的数组,因此它分别包含公钥和私钥。检查这个

let a = new Uint8Array(buffer.toJSON().data.slice(0,32))
const key = Keypair.fromSeed(a);

我尝试了上述方法,并且有效。 key具有公钥和私钥组件。

于 2021-09-10T14:36:13.163 回答