Es gibt eine Reihe von Fragen zu dem invalid JUMP
Fehler.
Ich erhalte dies beim Debuggen eines Solidiy-Vertrags auf dem Testrpc mit der Geth-Befehlszeile:
Error: VM Exception while processing transaction: invalid JUMP at 3802e3b6eefb98
150918c4ddfaabf93c18d6c41aaa2682c5cdbc0a9a9a6a2853/cb611bab0cd7c4f21f7cb0b91ad45
f1330995289:13717
at web3.js:3119:20
at web3.js:6023:15
at web3.js:4995:36
at web3.js:4055:16
at apply (<native code>)
at web3.js:4141:16
at <anonymous>:1:1
Können Sie den ungültigen JUMP-Fehler erklären – was läuft auf der Opcode-Ebene der virtuellen Maschine schief?
Welchen Ansatz sollten Sie verwenden, um die Quelle solcher Fehler zu finden?
Ist dieser Fehler einzigartig bei go-ethereum?
BEARBEITEN:
Die Frage wird hier beantwortet:
Was bedeutet ein „böser JUMPDEST“-Fehler?
Was ist der Unterschied, falls vorhanden, zwischen der obigen invlaid JUMP
und dieser Frage bad JUMPDEST
?
Andere Fragen:
oraclize 'VM-Ausnahme: ungültiger JUMP'
VM-Ausnahme: ungültiger JUMP, wenn ich eine zweite Funktion aufrufe
ungültiger JUMP nach dem Upgrade von truffle & testrpc
Ungültiger Sprungzielfehler beim Versuch, The DAO-Token zu übertragen
Das ist eigentlich die Fehlermeldung von testrpc . Wenn eine Transaktion Geth einwirft, behandelt es dies als einen Gasmangel-Fehler und sagt es Ihnen nicht. (Das liegt daran, dass es sich technisch gesehen um einen Gasmangel handelt.)
Leider gibt es nicht viele aktuelle Debugging-Tools. Browser-Solidity hat einen. Meine eigene Methode zum Debuggen dieser Art ist eher wie eine Schrotflinte. Kommentieren Sie langsam/früh zurück, bis Sie keinen ungültigen JUMP erhalten. Wenn Sie die gesamte Funktion kommentiert haben, handelt es sich möglicherweise um eine Funktion, die bezahlt wird, ohne payable
.
Richard Horrocks
Lee
Tjaden Hess