0

我目前正在尝试使用新的 ethers.Wallet.createRandom() 在安全帽/华夫饼中运行需要数百个独特钱包来调用合约的测试。但是,这些钱包都没有提供 eth,所以我不能用它们调用/发送交易。

用 eth 提供任意数量的随机生成钱包的最简单/最有效的方法是什么?谢谢!

4

3 回答 3

1

Hardhat 允许使用accounts. count内置hardhat网络的配置选项。

例子:

module.exports = {
    networks: {
        hardhat: {
            accounts: {
                count: 1000
            }
        }
    }
}

文档:https ://hardhat.org/hardhat-network/reference/#config


new ethers.Wallet.createRandom()函数仅在 JS 应用程序的上下文中从随机私钥创建一个帐户,但它不与提供者(在您的情况下为 Hardhat)通信。

于 2021-11-10T01:45:03.680 回答
1

我认为您可能想要使用安全帽网络方法hardhat_setBalance,文档使用如下示例:

await network.provider.send("hardhat_setBalance", [
  "<ACCOUNT ADDRESS>",
  "0x1000", # 4096 wei
]);

虽然我不是在 javascript 中开发,但我一直在使用web3.pyeth-account在 python 中做类似的事情,代码如下:

from web3 import Web3
from eth_account import Account


chain = Web3(HTTPProvider("http://127.0.0.1:8545"))

acct = Account.create('<RANDOM VALUE>')
address = Web3.toChecksumAddress(acct.address)
print(chain.eth.get_balance(address)) # 0 wei

# add a balance of eth tokens to the address
chain.provider.make_request("hardhat_setBalance", [address, "0x1000"])

print(chain.eth.get_balance(address)) # 4096 wei
于 2022-01-27T23:10:29.367 回答
0

看到这个答案,我认为它解决了问题:

https://github.com/ethers-io/ethers.js/issues/686

const wallet = ethers.Wallet.createRandom().connect(provider);
于 2022-01-17T00:17:06.007 回答