Я нашел сообщение об ошибке «неверный код операции 0xfd». Что это значит?
Я погуглил и нашел здесь только один результат .
Цитата: «Недопустимый код операции 0xfd никогда не срабатывает (некоторые компиляторы кодируют свойства безопасности, используя 0xfd)»
0xfd
это REVERT
код операции, как описано в EIP140 .
Что нужно знать:
REVERT
задуман как «мягкий бросок», при котором не расходуется весь оставшийся газ. Он также может возвращать некоторые данные, которые могут быть полезны для отладки и обратной связи с пользователем.
Он еще не реализован в EVM; это будет реализовано первым форком Metropolis. Вот почему в настоящее время он сообщается как «неверный код операции», когда EVM встречает его.
Тем не менее, компилятор Solidity уже реализует и генерирует REVERT
s через require()
оператор. Рекомендуется использовать для проверки пользовательского ввода. Поскольку опкод пока недоступен, в настоящее время он действует точно так же, как и старый throw
, но после Метрополиса он будет реализовывать новый функционал.
Сатоши Наканиши
Бенджаминион
require
потерпели неудачу: теперь это приводит к исключению недопустимого кода операции; в будущем он вернется более красиво. В любом случае выполнение кода прекращается.