我目前正在尝试使用新的 ethers.Wallet.createRandom() 在安全帽/华夫饼中运行需要数百个独特钱包来调用合约的测试。但是,这些钱包都没有提供 eth,所以我不能用它们调用/发送交易。
用 eth 提供任意数量的随机生成钱包的最简单/最有效的方法是什么?谢谢!
Hardhat 允许使用accounts
. count
内置hardhat
网络的配置选项。
例子:
module.exports = {
networks: {
hardhat: {
accounts: {
count: 1000
}
}
}
}
文档:https ://hardhat.org/hardhat-network/reference/#config
该new ethers.Wallet.createRandom()
函数仅在 JS 应用程序的上下文中从随机私钥创建一个帐户,但它不与提供者(在您的情况下为 Hardhat)通信。
我认为您可能想要使用安全帽网络方法hardhat_setBalance,文档使用如下示例:
await network.provider.send("hardhat_setBalance", [
"<ACCOUNT ADDRESS>",
"0x1000", # 4096 wei
]);
虽然我不是在 javascript 中开发,但我一直在使用web3.py和eth-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
看到这个答案,我认为它解决了问题:
https://github.com/ethers-io/ethers.js/issues/686
const wallet = ethers.Wallet.createRandom().connect(provider);