Ethers.js
如何使用 ethers.js / hardhat / waffles 獲得 20 多個簽名者
我正在使用帶有 waffle 外掛的 Hardhat 來測試我的智能合約。
要獲得簽名者(ether.js),我正在使用:
await ethers.getSigners();
這將返回一個包含 20 個簽名者的數組。如果我再次打電話,我會得到相同的 20 個簽名者,但我如何獲得一個新的?
使用
ethers.Wallet.createRandom()
來自 François Guyot 的這就是我設法為我的測試獲得許多簽名者的方法。ctx 是您的合約實例, addr1 是您通過呼叫 await ethers.getSigners() 獲得的簽名者之一;
for( let i=0; i < nb; i++){ // Get a new wallet wallet = ethers.Wallet.createRandom(); // add the provider from Hardhat wallet = wallet.connect(ethers.provider); // send ETH to the new wallet so it can perform a tx await addr1.sendTransaction({to: wallet.address, value: ethers.utils.parseEther("1")}); await ctx.connect(wallet).CallYouContract()) }
您可以通過執行以下操作生成一堆隨機簽名者:
import { ethers } from 'ethers' export const randomSigners = (amount: number): Signer[] => { const signers: Signer[] = [] for (let i = 0; i < amount; i++) { signers.push(ethers.Wallet.createRandom()) } return signers }