«Конструктор должен быть платным, если вы отправляете значение», но конструктор НЕ подлежит оплате и не отправил никакого значения

При копировании контракта ICO с использованием http://remix.ethereum.org/ и среды JS VM возникает следующая ошибка:

 "VM error: invalid opcode. The constructor should be payable if you send value. The execution might have thrown. Debug the transaction to get more information." 

Не отправил никакого значения, и конструктор не является платной функцией. Так почему ошибка?

Исходный код контракта находится по адресу: https://gist.github.com/computerphysicslab/3990c706a2f36fed56e31e72f59b61fb

Любой намек? Спасибо!

Refs .:

Я обнаружил, что одно из утверждений require () не выполняется. Это, вероятно, причина ошибки. Поэтому описание ошибки вводит меня в заблуждение ...

Ответы (1)

Эта ошибка выскакивает по некоторым (непредсказуемым) причинам, когда, возможно, поврежден внутренний стек ремиксов и / или произойдет сбой при развертывании.

Очень часто при сохранении, выходе и перезагрузке он больше не появляется.

Если он появляется снова и снова с вашим кодом, попробуйте сохранить / выйти / перезагрузить, а затем развернуть его снова, используя 10-кратное ограничение газа.

Я столкнулся с этой проблемой в 0.6.3 и 0.6.4 (в настоящее время онлайн) версии remix ide. Я надеюсь, что это будет исправлено для следующей версии 0.7.0 (сегодня это альфа-версия).

В любом случае это системная ошибка. На ваш код не влияет, если не для количества газа, необходимого для его развертывания.