#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. Здесь вы получаете ошибку «непредсказуемый предел расхода газа». Это может произойти, если ваш код солидности запускается в бесконечный цикл или рекурсивный вызов функции… возможно, вы также сможете обойти это, явно указав ограничение по газу.