Как обновить контракт dapp
1 ответ
Отличный ответ найден здесь.
Из токсина на сайте обмена стеками Ethereum:
Код контракта является неизменным, хранилище изменчиво, но вы не можете выполнить код, помещенный в хранилище, по крайней мере, на данный момент.
Исправления к контрактам
Что касается исправлений ошибок, то общая схема заключается в том, чтобы прокси-серверы или контракты поиска были шлюзом к реальному, который в случае изменения или исправления мог бы быть заменен. Замена также означает потерю старого содержимого хранилища.
Хранение хранения
Если вам нужна возможность обновлять код при сохранении хранилища, вы можете подумать о разделении хранилища и логики. Имейте специальный договор хранения, который принимает вызовы записи с доверенных адресов (например, логические контракты). Все важные хранилища должны быть связаны с этим.
Доступ к хранилищу после самоуничтожения
На сегодняшний день нет реальной обрезки, применяемой даже в случае самоуничтожения, но это обязательно должно произойти в будущем. Есть несколько EIP, обсуждающих это.
Даже если обрезка реализована, это не должно происходить в одно мгновение, и вы должны иметь возможность читать хранилище из последнего состояния. Планируется также иметь архивные узлы для хранения состояний на неопределенный срок - не уверен, что это возможно без ограничений, просто исходя из роста блокчейна.
Перераспределение по тому же адресу
Короче говоря: практически это невозможно. Адреса контракта рассчитываются от отправителя и одноразового номера. Одноразовый номер является последовательным, не может быть пробелов и не может быть дубликатов.
Теоретически можно получить тот же хеш с другой комбинацией одноразовых номеров и адресов, но вероятность мала.