У меня есть умный контракт, который поддерживает коллекцию учетных записей администраторов;
pragma solidity >= 0.4.24 < 0.7.0;
contract Administrator {
address public administratorMinter;
mapping (address => bool) administratorCollection;
constructor() public {
administratorMinter = msg.sender;
administratorCollection[msg.sender] = true;
}
function grant(address _address) public payable {
require(isAdministrator(_address) == true, 'Unauhtorized Access!');
administratorCollection[_address] = true;
}
function isAdministrator(address _administrator) public view returns(bool) {
return administratorCollection[_administrator];
}
}
Использование web3. js библиотека Я пытаюсь вызвать метод предоставления для умного договора, есть только один счет в цепочке развития паритета, с достаточным количеством эфира. Этот же аккаунт использовался для развертывания контракта. Однако, когда я использую действительный адрес ethereum в качестве параметра для метода предоставления / отзыва, оценка газа приводит к следующей ошибке; Ошибка: возвращенная ошибка: выполнение не выполнено из-за исключительной ситуации.
Я пробовал два разных подхода, которые приводят к той же ошибке, что и выше.
Интернет3. js code:
let contract = new web3.eth.Contract(contractABI.abiModel, contractABI.address)
let grant = contract.methods.grant(params.address)
let estimatedGas = await grant.estimateGas({from: poster.address}).catch(console.error)
Мне нужно получить расчетный газ для построения необработанного объекта транзакции, но это приводит к ошибке.