Я пишу умный контракт, который выглядит следующим образом:
pragma solidity ^0.6.4;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/SafeMath.sol";
contract Project {
using SafeMath for uint;
address payable private _owner;
struct Request {
string description;
uint totalRequirement;
uint accumulatedAmount;
address payable recipient;
bool complete;
uint minimumContribution;
}
struct Media {
string title;
string description;
string objectId;
}
string public title;
string public category;
string public description;
address payable creator;
Request[] public requests;
Media[] public media;
event NewRequest(string description, uint totalRequirement, address recipient);
event NewMedia(string title, string objectId);
constructor(string memory _title, string memory _category, string memory _description, address payable _ownerAccount) public {
title = _title;
category = _category;
description = _description;
creator = _ownerAccount;
_owner = _ownerAccount;
}
function owner() public view returns (address payable) {
return _owner;
}
modifier onlyOwner() {
require(_owner == msg.sender, "The desired operation can be carried out by the owner only.");
_;
}
function createRequest(string memory _description, uint _totalRequirement, address payable _recipient,
uint _minimumContribution) public onlyOwner {
Request memory newRequest = Request({
description: _description,
totalRequirement: _totalRequirement,
accumulatedAmount: 0,
complete: false,
minimumContribution: _minimumContribution,
recipient: _recipient
});
requests.push(newRequest);
emit NewRequest(_description, _totalRequirement, _recipient);
}
function uploadMedia(string memory _title, string memory _description, string memory _objectId) public onlyOwner {
Media memory newMedia = Media({
title: _title,
description: _description,
objectId: _objectId
});
media.push(newMedia);
emit NewMedia(_objectId);
}
}
Функция создания запроса, которая идентична функции uploadMedia, работает нормально, но функция uploadMedia продолжает давать сбой с ошибкой, сообщающей, что gas предел превышен. Я попытался сделать это в другом умном контракте, который выглядит следующим образом:
pragma solidity ^0.6.4;
contract Media {
struct Content {
string title;
string description;
string objectId;
}
Content[] public contentArray;
function publishContent(string memory _title, string memory _description, string memory _objectId) public {
Content memory newContent = Content({
title: _title,
description: _description,
objectId: _objectId
});
contentArray.push(newContent);
}
}
Этот умный контракт имеет точно такую же функциональность, за исключением дополнительных функций и переменных предыдущего, и метод publishContent в этом контракте работает нормально. .
Только что стало непонятно, в чем проблема ... любая помощь будет высоко ценится.