Я только что провел довольно много времени, ломая голову, пытаясь понять, почему моя миграция трюфелей ничего не дала при попытке развернуть на клиенте TestRPC. Он просто продолжал говорить «используя сетевой testrpc» без каких-либо последующих сообщений о состоянии. Я попытался снова запустить компиляцию, несколько раз в течение сеанса отладки, и ошибок не было.
Затем я выполнил миграцию с флагом «--reset» и обнаружил, что новый файл смарт-контракта, который я добавил, не был найден во время миграции («не определен». Все еще работаю над этим, так как код и контракт есть ).
Чтобы сэкономить время в будущем, не вредно ли всегда включать флаг --reset при компиляции и переносе Truffle, по крайней мере, при использовании клиента TestRPC?
Каковы недостатки использования флага «--reset» во времени или газе при выполнении миграции в основной сети и во времени в тестовой сети (при условии, что они есть)?
Заставляет ли флаг "--reset" компилировать медленнее, подобно "очистке" проекта C++, что вызывает необходимость повторной компиляции всех исходных файлов в объектные файлы? Вызывает ли миграция необходимость «повторно публиковать» весь код смарт-контракта в сети развертывания, а не только измененные смарт-контракты (то есть — только разность)?
Флаг --reset
заставит снова запустить все ваши сценарии миграции. Компиляция, если некоторые контракты изменились. Вы должны снова оплатить газ за всю миграцию. Для ganache/testrpc это не должно быть проблемой, это просто дополнительная задержка. Но для развертывания в общедоступной сети: mainnet, rinkeby, ropsten и т. д. может быть очень раздражающим ожидание крошечных изменений.
Флаг --all
заставит перекомпилировать все ваши контракты. Даже если они не изменились. Это больше времени на компиляцию всех ваших контрактов, а после этого ему придется снова запускать все ваши деплой-скрипты.
Я обнаружил, что truffle иногда не может подтвердить, что контракт был изменен, и не будет его снова компилировать, а также не запускать сценарии развертывания. Даже с обоими флагами --all
и --reset
не получится. Если ничего не помогает, вы можете удалить build/
каталог. Это приведет к повторной компиляции всех ваших контрактов и повторному запуску всех ваших сценариев развертывания.
Роберт Ошлер