Есть ряд вопросов по invalid JUMP
ошибке.
Я получаю это при отладке контракта solidiy на testrpc с помощью командной строки geth:
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
Можете ли вы объяснить ошибку invlid JUMP - что происходит не так на уровне кода операции виртуальной машины?
Какой подход следует использовать при поиске источника таких ошибок?
Эта ошибка уникальна для go-ethereum?
РЕДАКТИРОВАТЬ:
Ответ на вопрос здесь:
Что означает ошибка «bad JUMPDEST»?
В чем разница, если она есть, между вышеизложенным invlaid JUMP
и этим вопросом bad JUMPDEST
?
Другие вопросы:
oraclize «Исключение виртуальной машины: неверный JUMP»
Исключение VM: неверный JUMP при вызове второй функции
недействительный JUMP после обновления truffle и testrpc
Недопустимая ошибка назначения перехода при попытке передачи токенов DAO
На самом деле это сообщение об ошибке testrpc . Если транзакция вызывает geth, она расценит это как ошибку отсутствия газа и не сообщит вам об этом. (Это связано с тем, что технически это ошибка отсутствия газа.)
К сожалению, не так много современных инструментов отладки. У Browser-Solidity есть такой. Мой собственный метод отладки такого типа довольно хладнокровен. Медленно комментируйте/возвращайтесь раньше, пока не получите недопустимый ПРЫЖОК. Если вы прокомментировали всю функцию, это может быть платная функция, но не payable
.
Ричард Хоррокс
Ли
Тьяден Хесс