Ich habe eine Fehlermeldung gefunden, 'invalid opcode 0xfd'. Was bedeutet das?
Ich habe gegoogelt und hier nur ein Ergebnis gefunden .
Zitat: "I der ungültige Opcode 0xfd wird nie getroffen (Einige Compiler codieren Sicherheitseigenschaften mit 0xfd)"
0xfd
ist der REVERT
Opcode wie im EIP140 beschrieben .
Sachen zu wissen:
REVERT
ist als "weicher Wurf" gedacht, der nicht das gesamte verbleibende Gas verbraucht. Es kann auch einige Daten zurückgeben, die für das Debugging und Benutzerfeedback nützlich sein könnten.
Es ist noch nicht von der EVM implementiert; es wird durch den ersten Metropolis-Fork implementiert. Aus diesem Grund wird es derzeit als "ungültiger Opcode" gemeldet, wenn das EVM darauf trifft.
Nichtsdestotrotz implementiert und generiert der Solidity-Compiler bereits REVERT
s über die require()
Anweisung. Es wird empfohlen, es für die Validierung von Benutzereingaben zu verwenden. Da der Opcode noch nicht verfügbar ist, verhält es sich derzeit genauso wie das alte throw
, wird aber nach Metropolis die neue Funktionalität implementieren.
Satoshi Nakanishi
Benjaminion
require
: Jetzt führt dies zu einer ungültigen Opcode-Ausnahme. in Zukunft wird es schöner zurückkehren. In jedem Fall wird die Codeausführung beendet.