¿Qué significa este error "código de operación no válido 0xfd"?

Encontré un mensaje de error, 'código de operación no válido 0xfd'. ¿Qué quiere decir esto?

Busqué en Google y encontré solo un resultado aquí .

Cita: "Nunca se activa el código de operación no válido 0xfd (algunos compiladores codifican propiedades de seguridad usando 0xfd)"

Respuestas (1)

0xfdes el REVERTcódigo de operación como se describe en el EIP140 .

Cosas que saber:

  1. REVERTestá pensado como un "tiro suave" que no consume todo el gas restante. También puede devolver algunos datos, que podrían ser útiles para la depuración y los comentarios de los usuarios.

  2. Aún no está implementado por la EVM; será implementado por la primera bifurcación de Metropolis. Es por eso que actualmente se informa como "código de operación no válido" cuando el EVM lo encuentra.

  3. No obstante, el compilador de Solidity ya implementa y genera REVERTs a través de la require()declaración. Se recomienda su uso para la validación de la entrada del usuario. Dado que el código de operación aún no está disponible, actualmente actúa como el antiguo throw, pero después de Metropolis implementará la nueva funcionalidad.

Entonces, si usa require () antes de la bifurcación de metrópolis, muestra 'VM devuelta con error err = "código de operación no válido 0xfd"'. Pero funcionó como se esperaba, por lo que no es un error. ¿Tengo razón?
Depende de lo que quieras decir con "no es un error". Algo salió mal si requirefalló: ahora da como resultado la excepción de código de operación no válido; en el futuro se revertirá mejor. En cualquier caso, la ejecución del código termina.