0

我会把它放在堆栈溢出上,但它特定于黑客马拉松。这是针对 HardHat 教程的。我正在尝试在我的智能合约上执行我的 get-number 功能。我的合同已部署。这是我的命令:npx hardhat get-number --contract 0x5FbDB2315678afecb367f032d93F642f64180aa3。这是我得到的错误:错误:调用还原异常(method="getNumber()",errorArgs=null,errorName=null,errorSignature=null,reason=null,code=CALL_EXCEPTION,version=abi/5.5.0)。任何想法都会有所帮助...谢谢。

这是任务

task("get-number", "Reads the number")
  .addParam("contract", "The contract's address")
  .setAction(async (taskArgs) => {
    const contractAddr = taskArgs.contract;
    const MyFirstContract = await ethers.getContractFactory('MyFirstContract');

    const accounts = await ethers.getSigners();
    const signer = accounts[0];
    const myFirstContract = await new ethers.Contract(contractAddr, MyFirstContract.interface, signer);

    let result = BigInt(await myFirstContract.getNumber()).toString();

    console.log('Stored number is: ' + result);
  });

module.exports = {};

4

2 回答 2

0

我有同样的问题,我修复它的方法是开始使用安全帽npx hardhat node --hostname 0.0.0.0而不是npx hardhat node

您还需要将合约部署到本地主机:npx hardhat run scripts/deploy.js --network localhost

然后使用npx hardhat --network localhost调用2个函数。

于 2021-11-04T23:54:50.070 回答
0

跟随这个黑客马拉松教程时,我遇到了类似的错误。

我的解决方法是--network在执行我的任务时指定 get-number。所以,在你的例子中:

npx hardhat get-number --network localhost --contract 0x5FbDB2315678afecb367f032d93F642f64180aa3

这将使用演示指示您在运行时启动的 Hardhat 网络执行任务npx hardhat node

安全帽网络文档

请参阅运行独立文档

我在 hackathon Discord 上问为什么演示没有通过这个,但仍然有效,但还没有收到答案。

于 2021-10-30T11:14:17.507 回答