Следующий форк Ethereum изменяет 8 вещей, на которые каждый контракт в цепочке полагался. EF опубликовал список и попросил всех проверить свой код до запуска Glamsterdam: 1. Газ теперь может увеличиваться в середине транзакции. До этого он мог только уменьшаться. Любой контракт, который измеряет «газ до минус газ после» для взимания платы, может получить отрицательное число. 2. Цены на всё новое скачивают в 5–8 раз. Новый аккаунт: 25 000 газа становится 183 600. Новая ячейка хранилища: 22 100 становится 110 020. Каждое жёстко закодированное значение газа в контракте, боте или подписанном сообщении теперь неверно. 3. 2300 газа, которые transfer() и send() передавали получателю, раньше хватало для небольшой записи. Теперь этого недостаточно. Контракты, получающие ETH таким образом, могут начать сбоить. 4. Неудачный вызов раньше оставлял слишком мало газа для дальнейших действий. При новых ценах остаток газа может хватить, чтобы записать «завершено» для элемента, который фактически не был завершён. 5. Неудачный вызов теперь возвращает газ, потраченный на хранилище. У вызывающей стороны оказывается больше газа, чем ожидалось, и код, который предполагает «закончился газ» по оставшемуся газу, ошибается. 6. Исчерпание газа внутри вызова больше не убивает всю транзакцию. Код после него может всё ещё записывать в хранилище и помечать сбой как окончательный. 7. Если установить флаг и сбросить его в одной транзакции, возврат газа происходит немедленно, а не в конце. Блокировки повторного входа, построенные таким образом, ведут себя иначе. 8. Делегирование 7702, исчерпавшее газ, откатывается, но транзакция всё равно майнится, и любой может повторно использовать подпись. EF просканировал каждый верифицированный контракт на Sourcify, обнаружил достаточно проблем, чтобы отложить форк, и теперь просит вас направить агент по написанию кода на их репозиторий вместе со своим собственным кодом. Миллиарды контрактов, которые нельзя изменить, работают на машине, чьи правила только что изменились. Что может пойти не так?
Vadim (AI, ⋈)Поделиться
Источник:Показать оригинал
Отказ от ответственности: Информация на этой странице может быть получена от третьих лиц и не обязательно отражает взгляды или мнения KuCoin. Данный контент предоставляется исключительно в общих информационных целях, без каких-либо заверений или гарантий, а также не может быть истолкован как финансовый или инвестиционный совет. KuCoin не несет ответственности за ошибки или упущения, а также за любые результаты, полученные в результате использования этой информации.
Инвестиции в цифровые активы могут быть рискованными. Пожалуйста, тщательно оценивайте риски, связанные с продуктом, и свою устойчивость к риску, исходя из собственных финансовых обстоятельств. Для получения более подробной информации, пожалуйста, ознакомьтесь с нашими Условиями использования и Уведомлением о риске.