HDWallet 从与 hardhat 相同的助记符生成不同的地址
HDWallet generates different addresses from same mnemonics than hardhat
我的目的是获取安全帽账户的私钥,通过指定的助记词生成。然而,无数的答案表明,在安全帽中无法获得这些账户的私钥。
话虽这么说,我有一个脚本,它接受一个助记符,从中创建一个 HDWallet,然后派生其他 HDWallet,它们应该具有 hardhat 从同一助记符生成的相同地址。虽然他们没有。
我错过了什么吗?为什么 HDWallets 从同一个助记词生成的地址与 hardhat 不同?
这是脚本:
async function main() {
const mnemonic = process.env.MNEMONIC!;
console.log('mnemonic:', mnemonic);
const HDNode = ethers.utils.HDNode.fromMnemonic(mnemonic);
for (let i = 0; i < 20; i++) {
const derivedNode = HDNode.derivePath(`m/44'/60'/0'/${i}`);
console.log(`child ${i} address:`, derivedNode.address);
}
}
事实证明,我指定的派生路径不正确。
而不是
const derivedNode = HDNode.derivePath(`m/44'/60'/0'/${i}`);
我应该用
const derivedNode = HDNode.derivePath(`m/44'/60'/0'/0/${i}`);
我的目的是获取安全帽账户的私钥,通过指定的助记词生成。然而,无数的答案表明,在安全帽中无法获得这些账户的私钥。
话虽这么说,我有一个脚本,它接受一个助记符,从中创建一个 HDWallet,然后派生其他 HDWallet,它们应该具有 hardhat 从同一助记符生成的相同地址。虽然他们没有。
我错过了什么吗?为什么 HDWallets 从同一个助记词生成的地址与 hardhat 不同?
这是脚本:
async function main() {
const mnemonic = process.env.MNEMONIC!;
console.log('mnemonic:', mnemonic);
const HDNode = ethers.utils.HDNode.fromMnemonic(mnemonic);
for (let i = 0; i < 20; i++) {
const derivedNode = HDNode.derivePath(`m/44'/60'/0'/${i}`);
console.log(`child ${i} address:`, derivedNode.address);
}
}
事实证明,我指定的派生路径不正确。
而不是
const derivedNode = HDNode.derivePath(`m/44'/60'/0'/${i}`);
我应该用
const derivedNode = HDNode.derivePath(`m/44'/60'/0'/0/${i}`);