Ошибка при создании контрактов на кошельке Ethereum. Нужна помощь [дубликат]

Я пытаюсь создать токен ERC20 вне Эфириума, но когда я помещаю код в редактор кошелька Эфириума, я получаю странную ошибку. В нем говорится:

 "throw" is deprecated in favour of "revert()", "require()" and "assert()".
    if (balanceOf[msg.sender] < _value) throw;
                                        ^---^

(из блога Ethereum ) ( Исходный код ) Может ли кто-нибудь помочь мне с этим?

Вы пробовали скомпилировать с другой IDE (например, Remix на remix.ethereum.org )?

Ответы (1)

Как ясно говорится в сообщении об ошибке

бросок устарел

Использовать

require( balanceOf[msg.sender] >= _value)

Подробное описание вы найдете в этой статье .

revert() и require() возвращают весь оставшийся газ, однако assert() потребляет весь предоставленный газ.

Функцию require следует использовать для проверки допустимых условий, таких как входные данные или переменные состояния контракта, или для проверки возвращаемых значений от вызовов внешних контрактов. При правильном использовании инструменты анализа могут оценить ваш контракт, чтобы определить условия и вызовы функций, которые приведут к ошибочному утверждению. Правильно функционирующий код никогда не должен доходить до ошибочного оператора assert; если это произойдет, в вашем контракте есть ошибка, которую вы должны исправить

.