TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.49K subscribers
Post #1142 1.03K
Solidity hints. Часть 7

Понемногу выходим из состояния выходного дня и возвращаемся к работе, несмотря на лето и дару в 38...

Сегодня у нас по плану очередной пункт из репо Chinmaya и звучит он как:

10. On receiving funds from a selfdestruct / coinbase miner reward, the contract can not react to it, and it doesn’t require a contract to have receive or fallback functions.

В общем плане можно перевести как, контракт так или иначе получает Эфир от самоуничтожающихся контрактов и майнеров, и не может не принять его, даже если отсутствуют функции fallback или receive. Давайте разберем более детально этот пункт.

Для того, чтобы контракт мог принимать нативный токен - Эфир - на свой счет, в нем должны быть функции receive или fallback, или какая-либо другая с модификатором payable. Однако существуют способы пополнить счет контракта, даже если он напрямую запрещает это.

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

Второй вариант - уничтожение контракта через selfdestruct. Другими словами, вы можете уничтожить свой контракт, на котором есть Эфир на балансе, и указать адрес другого контракта в сети. В этом случае тот также получит активы на свой счет, даже если нет необходимых функций.

Интересный факт о selfdestruct. Несмотря на то, что он был фактически упразднен при Шанхайском обновлении и его использование не рекомендуется в текущих версиях Solidity, начиная с 0.8.24 эту функцию можно использовать только в момент создания контракта (EIP-6780).

Звучит немного странно, но объясню, что это значит.

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

На самом деле, я пока не встречал практического применения создания/уничтожения контракта в одной функции в реальных протоколах, но уже были найдены уязвимости на этом поле! Удивительно, но факт!

Как думаете, в каких случаях можно использовать selfdestruct?

#selfdestruct
  • 👍 2
More from @solidityset
  1. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
  2. Sep 18, 2026Интересная модель Jev Буквально пару дней назад в Твиттере многие начали обсуждение новой…
  3. Sep 14, 2026Графы повсюду Если вы также следите за новостями в мире ИИ, то наверняка уже все чаще встр…
  4. Sep 10, 2026GTA6, Cyberleek, блокчейн и безопасность Увидел несколько постов (тут и тут) про Cyberleek…
  5. Sep 9, 2026Работа с чистой энергией Дисклеймер Сегодня ава и название канала, наконец, поменялись. Я…
  6. Sep 9, 2026Channel name was changed to «Из Solidity в AI и дальше»
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →