Ошибка MetaMask — RPC: выполнение отменено {код: -32000, сообщение: «выполнение отменено»} при попытке подключиться к смарт-контракту

#ethereum #solidity #ethers.js

#эфириум #прочность #ethers.js

Вопрос:

Я развернул смарт-контракт в общедоступной тестовой сети, и теперь я пытаюсь подключиться к нему с внешнего интерфейса, используя ethers js. Но когда я пытаюсь извлечь значение, оно выдает следующие ошибки в консоли:

введите описание изображения здесь

Я использую Angular для интерфейса, и вот код, который я написал:

 declare let window: any; import { Component, OnInit } from '@angular/core'; import { ethers } from 'ethers'; import addresses from '../../environment/contract-address.json' import Election from '../../blockchain/artifacts/blockchain/contracts/Election.sol/Election.json'  @Component({  selector: 'app-root',  templateUrl: './app.component.html',  styleUrls: ['./app.component.css'] }) export class AppComponent implements OnInit {  title = 'angvote';  public signer: any;  public electionContract: any;  public candidate : any;  public candidatesList:string[] | undefined;  constructor(){}   async ngOnInit(){  const provider = new ethers.providers.Web3Provider(window.ethereum);  window.ethereum.enable()    provider.on("network",(newNetwork: any, oldNetwork: any)=gt;{  if (oldNetwork){  window.location.reload();  }  });   this.signer = provider.getSigner();   if(await this.signer.getChainId() !== 4){  alert("Please change your network to Rinkeby!")  }   this.electionContract = new ethers.Contract(addresses.electioncontract,Election.abi,this.signer);  this.candidate = await this.electionContract.candidatesCount();  }  }   

Комментарии:

1. Пожалуйста, отредактируйте вопрос и поделитесь значениями addresses.electioncontract и Election.abi . Возможно, вы либо обращаетесь к неправильному контракту (например, в другой сети или по другому адресу), либо используете ABI, который не соответствует функции, вызванной из кода JS.

2. Да, вы правы, что-то было не так с смарт-контрактом, который я развернул. Заметил это, когда попытался развернуть

3. Здесь вы получаете ошибку «непредсказуемый предел расхода газа». Это может произойти, если ваш код солидности запускается в бесконечный цикл или рекурсивный вызов функции… возможно, вы также сможете обойти это, явно указав ограничение по газу.