Sch*_*idt 3 ethereum ethers.js hardhat
Hardhat 指定要使用不同的帐户进行合约交互,您应该使用该connect()方法,并将其传递给签名者,如下所示:
const [owner, addr1] = await ethers.getSigners();
/* ... */
await greeter.connect(addr1).setGreeting("Hello!");
Run Code Online (Sandbox Code Playgroud)
greeter合约实例在哪里。
但是,当我按照他们指定的方式使用签名者时,出现以下错误:
错误:地址或 ENS 名称无效(参数 =“名称”,值 =“<SignerWithAddress 0x59F...34C>”,代码=INVALID_ARGUMENT,版本=contracts/5.6.0)
互联网上说要使用地址,例如本期建议使用类似addr1.address. 但是当我这样做时,会出现以下错误:
VoidSigner 无法签署交易(操作 =“signTransaction”,代码=UNSUPPORTED_OPERATION,版本=abstract-signer/5.6.0)
使用 ethers.js 和 Hardhat 进行合约调用时如何切换签名者/帐户?
您收到的错误是因为您没有传入完整的地址对象。具体来说,当我这样做时,我得到了你的确切错误:
这不起作用,但会重现您的错误:
[deployer, account1] = await ethers.getSigners();
address1 = account1.address;
/* ... */
await greeter.connect(address1).setGreeting("Hello!");
Run Code Online (Sandbox Code Playgroud)
然而,这有效:
[deployer, account1] = await ethers.getSigners();
/* ... */
await greeter.connect(account1).setGreeting("Hello!");
Run Code Online (Sandbox Code Playgroud)
请注意,在第二个示例中,我们没有在account1 上调用“.address”。
| 归档时间: |
|
| 查看次数: |
3341 次 |
| 最近记录: |