用hardhat在本地部署合约,只有部分方法能够访问

大佬们好,情况是这样的。我有一份非常简单的合约代码。当我用hardhat部署的时候counterAdd可以正常调用,getcounter无法正常调用。

其中有1个全局变量counter,2个方法counterAdd,getcounter。

//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.5;

import "hardhat/console.sol";

contract Counter {
  uint256 counts;

  constructor() {
    counts = 0;
  }

  function getcounter() public view returns (uint256) {
    return counts;
  }

  function addcounter() public {
    counts++; 
  }
}

调用如下

getCntract() {
        const provider = new ethers.providers.Web3Provider(
            window.ethereum,
        );
        const signer = provider.getSigner()
        const ContractCounter = new ethers.Contract(contractAddress, contractABI, signer)
        return ContractCounter
    }
async getCount() {
            const ContractCounter = this.getCntract()
            const result = await ContractCounter.getcounter()
            this.count = result.toNumber()
        }

报错如下 image.png

全部代码 https://github.com/kasoqian/hardhat-vue-template

请先 登录 后评论

最佳答案 2022-03-26 13:41

应该是你合约地址搞错了

你可以部署了多次, 你使用的这个合约地址没有出错的这个函数 。

请先 登录 后评论

其它 0 个回答

  • 1 关注
  • 0 收藏,2421 浏览
  • kasoqian 提出于 2022-03-18 19:05