Оценка ремикс-газа не удалась для очень простого кода NFT, но компиляция прошла успешно
Я написал очень простой код NFT и скомпилировал его на Remix, используя 0.7.0. Код состоит всего из 3-х функций - mint, acceptAddress перед передачей и Transfer. Компиляция прошла успешно, я могу чеканить токены. Но когда я вызываю функцию ApproveAddress, я получаю ошибку «Ошибка оценки газа». В результате вышла из строя передаточная функция. Кто-нибудь может мне помочь? Я думал, что это может быть проблема с версией компилятора, но в таком случае почему первая функция монетного двора работала идеально? Я очень запутался. Большое спасибо за вашу помощь заранее. Код и ошибка прилагаются ниже.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract SimpleNFT {
string public tokenName;
string public tokenSymbol;
mapping(uint256 => address) public ownerOf;
mapping(uint256 => bool) private exists;
mapping(uint256 => address) private approvals;
constructor(string memory _name, string memory _symbol){
tokenName = _name;
tokenSymbol = _symbol;
}
function mint(address _to, uint256 _tokenId) public returns (uint256) {
require(exists[_tokenId] != true);
ownerOf[_tokenId] = _to;
return _tokenId;
}
//Gives permission to to to transfer tokenId token to another account.
function approveAddress(address _to, uint256 _tokenId) public returns (address){
require(ownerOf[_tokenId] == msg.sender);
require(_to != address(0));
approvals[_tokenId] = _to;
return _to;
}
function transfer(address _to, uint256 _tokenId) public returns (uint256){
require(msg.sender == ownerOf[_tokenId] || msg.sender == approvals[_tokenId]);
require(_to != address(0));
ownerOf[_tokenId] = _to;
return _tokenId;
}
}
Оценка газа не удалась
Ошибка при оценке газа со следующим сообщением (см. Ниже). Выполнение транзакции, скорее всего, не удастся. Хотите принудительную отправку? исполнение отменено