gpt4 book ai didi

ethers.js - 如何在 Hardhat 中测试智能合约时获得特定数量的签名者?

转载 作者:行者123 更新时间:2023-12-05 01:49:56 26 4
gpt4 key购买 nike

我正在 Hardhat 中开发智能合约并在 RSK Testnet 上进行测试.要创建签名者帐户,我使用助记种子短语以及以下 Hardhat 配置:

require('@nomicfoundation/hardhat-toolbox');
const { mnemonic } = require('./.secret.json');

/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: '0.8.16',
networks: {
hardhat: {},
rsktestnet: {
chainId: 31,
url: 'https://public-node.testnet.rsk.co/',
accounts: { // <-- here
mnemonic,
path: "m/44'/60'/0'/0",
},
},
},
// ...
};

在我的测试中,我通常使用 ethers.js 辅助函数在我的测试中获得一组签名者:

const signers = await hre.ethers.getSigners();

然而,此函数返回 20 个签名者钱包。有没有办法获得特定数量的钱包,如果我不想要这个默认金额?

最佳答案

您可以使用 Wallet.fromMnemonic来自 ethers.js 的函数来执行此操作。

hardhat.config.js 中,或者你导入 hre 变量的任何地方,你可以像这样调用它来做到这一点:hre.ethers.Wallet.fromMnemonic(mnemonic, derivationPath?, wordList?)

此函数用于生成单个 钱包。该函数的第二个参数是 BIP-32 派生路径。由于您在配置中使用的是 m/44'/60'/0'/0,那么默认情况下该函数将附加 /0,导致 m/44'/60'/0'/0/0 生成第一个钱包。

如果你想生成另一个,您可以指定 m/44'/60'/0'/0/1(附加 /1)。

要生成特定数量的钱包,只需循环执行上述操作,在每次迭代中更改派生路径中的最终索引。

例如,下面的函数会得到10:

function getSigners(amount = 40) {
// getting seed phrase and derivation path from the hardhat config
const { mnemonic, path } = hre.network.config.accounts
return [...Array(amount).keys()].map((i) =>
hre.ethers.Wallet.fromMnemonic(mnemonic, `${path}/${i}`)
.connect(hre.ethers.provider),
)
}

关于ethers.js - 如何在 Hardhat 中测试智能合约时获得特定数量的签名者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73648258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com