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