假设我部署了一个这样的契约:const test = await ethers.getContractFactory("Test"); await test.deployed(); const [ signer, acc1, acc2 ] = await ethers.provider.listAccounts()
因此,我们知道signer在默认情况下是连接的,而任何函数都是从该契约调用的。如果我想连接acc1意味着我希望acc1调用这个函数,我必须这样做-await test.connect(acc1). function_from_test()?如果没有,那怎么做?并帮助我了解connect()的用法,如何使用它?
发布于 2023-02-16 22:38:37
在“硬帽子”中,要冒充不同的签名者,必须执行以下两种指定方式之一:
您的示例的问题是,您正在工厂实例上运行connect(acc1)。正确的方法是首先部署契约并将已部署的实例连接到acc1。如下代码所示:
const TestFactory = await ethers.getContractFactory("Test");
const testInstance = await TestFactory.deploy();
const [ signer, acc1, acc2 ] = await ethers.getSigners();
await testInstance.connect(acc1).function_from_test();https://ethereum.stackexchange.com/questions/145061
复制相似问题