Как обновить контракт dapp

Как я могу обновить смартконтракты моего приложения Truffle dapp, которые развернуты в блокчейне Ethereum?

1 ответ

Решение

Отличный ответ найден здесь.

Из токсина на сайте обмена стеками Ethereum:

Код контракта является неизменным, хранилище изменчиво, но вы не можете выполнить код, помещенный в хранилище, по крайней мере, на данный момент.

Исправления к контрактам

Что касается исправлений ошибок, то общая схема заключается в том, чтобы прокси-серверы или контракты поиска были шлюзом к реальному, который в случае изменения или исправления мог бы быть заменен. Замена также означает потерю старого содержимого хранилища.

Хранение хранения

Если вам нужна возможность обновлять код при сохранении хранилища, вы можете подумать о разделении хранилища и логики. Имейте специальный договор хранения, который принимает вызовы записи с доверенных адресов (например, логические контракты). Все важные хранилища должны быть связаны с этим.

Доступ к хранилищу после самоуничтожения

На сегодняшний день нет реальной обрезки, применяемой даже в случае самоуничтожения, но это обязательно должно произойти в будущем. Есть несколько EIP, обсуждающих это.

Даже если обрезка реализована, это не должно происходить в одно мгновение, и вы должны иметь возможность читать хранилище из последнего состояния. Планируется также иметь архивные узлы для хранения состояний на неопределенный срок - не уверен, что это возможно без ограничений, просто исходя из роста блокчейна.

Перераспределение по тому же адресу

Короче говоря: практически это невозможно. Адреса контракта рассчитываются от отправителя и одноразового номера. Одноразовый номер является последовательным, не может быть пробелов и не может быть дубликатов.

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

Другие вопросы по тегам