Я пытаюсь составить простой контракт на Remix, но получаю следующие 3 предупреждения:
- Потребность в газе для функции Greeter.hello() высокая: бесконечная. Если потребность в газе для функции выше, чем лимит газа в блоке, она не может быть выполнена. Пожалуйста, избегайте циклов в ваших функциях или действиях, которые изменяют большие области хранилища (включая очистку или копирование массивов в хранилище).
Потребность в газе для функции Greeter.set(string) высокая: бесконечная. Если потребность в газе для функции выше, чем лимит газа в блоке, она не может быть выполнена. Пожалуйста, избегайте циклов в ваших функциях или действиях, которые изменяют большие области хранилища (включая очистку или копирование массивов в хранилище).
Потребность в газе для функции Greeter.yourName() высокая: бесконечная. Если потребность в газе для функции выше, чем лимит газа в блоке, она не может быть выполнена. Пожалуйста, избегайте циклов в ваших функциях или действиях, которые изменяют большие области хранилища (включая очистку или копирование массивов в хранилище).
Контракт представлен ниже:
pragma solidity ^0.4.22;
contract Greeter {
string public yourName;
constructor() public{
yourName = "World";
}
function (string name) public {
yourName = name;
}
function hello( ) public constant returns (string) {
return yourName;
}
}
Кто-нибудь, пожалуйста, помогите мне, как удалить вышеуказанные предупреждения.
Зульфи.
Все эти предупреждения верны. Вы спрашивали, как их "удалить", но я думаю, что это неправильный подход. Они там, потому что вы манипулируете строками, и нет никакого способа узнать, какой длины будут эти строки, поэтому нет никакого способа узнать, сколько газа может быть израсходовано, манипулируя ими.
Вы можете использовать что-то кроме строк, например bytes32
(которое можно примерно использовать для хранения до 32-байтовых строк), но почему? Если причина в том, чтобы просто «замолчать предупреждение», то я думаю, что вы можете неправильно понять цель и ценность предупреждений.
100 зак