Рынок снова приносит некоторые интересные имена. $TRUMP $BEAT Оба привлекают много внимания на графике. На этом этапе я просто пытаюсь понять, как вообще всем удаётся находить эти движения раньше меня.

Раньше я думал, что неудачный вызов смарт-контракта — это по сути просто ошибка.

Но чем больше я смотрел на DuskVM, тем интереснее становился сценарий отказа.

До начала выполнения Dusk проверяет такие вещи, как подпись баланса отправителя и nonce. Если базовые условия не выполняются, транзакция не доходит до обычного выполнения.

Но что происходит, когда что-то идёт не так во время выполнения?

Вот это для меня гораздо важнее.

Смарт-контракт может менять состояние во время работы, но при неудачном вызове эти изменения не остаются просто «лежать» там. Изменения состояния из этого неуспешного выполнения не фиксируются.

Поэтому вы не получаете контракт, застрявший на полпути между его прежним состоянием и неполной новой версией.

Здесь важен и газ. Выполнение контракта потребляет газ, а значит сбой — это не только вопрос того, был ли итоговый результат успешным. По пути всё равно тратятся ресурсы выполнения.

Это заставило меня пересмотреть то, что на самом деле означает «безопасное выполнение».

Дело не только в том, чтобы успешные транзакции работали.

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

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

Иногда самая важная часть смарт-контракта — это не то, что случается, когда всё идёт как надо.

А то, что делает сеть, когда оно идёт не так.

@Dusk_Foundation $DUSK #dusk

Что важнее всего, когда вызовы терпят неудачу?
🔄 State rollback
67%
⛽ Gas handling
33%
9 проголосовали • Голосование закрыто