Разработка смарт-контрактов и Dapp на Solidity #7 — Обработка ошибок, Модификаторы

Автор Lyubov Stishevskaya
Разработка смарт-контрактов и Dapp на Solidity #7 — Обработка ошибок, Модификаторы

друзья.

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

Кот родил ошибку породил все данные которые там быть не должны у вас должна быть возможность откатить состояние назад в эфириуме есть не инструментов которые позволяют нам обрабатывать ошибки 1 инструмент — это assert.

Это самый жесткий способ ошибок внутри скобок помещается какая-то логическая проверка данных и в случае если проверка вернёт. Фолз Остёр прекратит действия смарт-контракта все его состояние все значения переменных откатиться на шаг назад такими какие они были до транзакции причём газ которые вы использовали для вызова транзакции полностью сжигается по сути он работает как условный оператор If в котором есть какое-то условие и в случае если — это условие вернёт трубу космос будет продолжаться, но случай если он вернет l100 выбросит ошибку осталось нужно использовать внутри логики smartcontrol. Когда уже произошла какая-то работа в смарт контракте и если получается неверный результат вы отказываете все значения назад до транзакции следующий инструмент — это ренуар его в отличие от чего нужно указывать в начале функция для проверки входных данных в последних версиях языка для него можно дополнительную строку которая будет отображаться при наступлении данные ошибки, а также в третьем обновление эфириума. Метрополис которой запланирован на будущее данная проверка будет полностью возвращается газ пользователем и предназначается она в первую очередь для проверки именно входных данных которые смарт-контракт получает либо из другого смарт-контракта либо из вне блокчейна. Я уже после выполняется код всего остального смарт-контракта и последний инструмент — это revert он не принимает в себя не каких параметров он просто. Астана действия смарт-контракта в том месте где мы его прописали делается это. Для более сложной проверки логики смарт-контракта которая выглядит. Так у нас есть какое-то условие далее происходит какой-то кот. Далее идет тут еще одно условие например в случае если — это условие ложно мы возвращаем Resort. О'кей Теперь давайте посмотрим — это дело на практике сейчас мы напишем похожую функцию как в предыдущем уроке только она будет не анонимный фулбек функции она будет обычный функции с ключевым словом People суть её будет заключаться в том, что мы будем возвращать отправленные половину отправленных денег которые были отправлены на эту функцию на указанный адрес через параметр. И первую проверку которую мы сделаем — это реклайнер мы сделаем проверку на то, что отправляемая сумма будет кратно двум. То есть — это будет чётное число которое можно поделить на 2 далее перед тем как производить сама отправку мы создадим локальную переменную Balance BY for Transfer которую запишем баланс текущий баланс нашего смарт-контракта сделаем. Это для того чтобы в дальнейшем проверить корректность всего выполнения смарт-контракта для того чтобы получить адрес баланса нам нужно написать в следующую строку ключевое слово these возвращает адрес нашего смарт-контракта помощи метода баланс мы узнаём его текущий баланс далее мы произведем отправку половины наших эфиров и в конце мы сделаем проверку концерт в которой проверим, что баланс нашего смарт-контракта уменьшился на то количество на которое было нужно понятно, что этот пример довольно абстрактный здесь — это к чему, что — это условия вернёт нам True, но в случае если бы у нас была более сложная логика то возможно — это было бы не совсем очевидное и — это нужно было бы проверять. И давайте предположим, что данного условия вернёт на вопрос, что тогда произойдет. Как будет работать контракт в данном случае допустим первая проверка была и смарт-контракта отправляет на указанный адрес текущую сумму эфиров дали. Он про условия и случае если она возвращает false то смарт-контракт отверстий назад. То есть он снова забирает у этого адреса те деньги которые были отправлены и возвращает на адрес человека в принципе вызвавшие эту функцию то есть эфира несколько раз сначала они пришли на адрес. Смарт контракта. После этого они половиной была отправлена на указанный адрес в параметре и в случае произошёл. Фолз всё произошло неправильно то все действия откатились назад эфиры вернулись с адреса на которые были отправлены в этот адрес человека который вызвал эту функцию OK. Теперь когда вы понимаете как работают проверка на ошибки смарт-контрактов мы рассмотрим следующую тему — это они нужны для оптимизации проверок и парикмахеров для того чтобы более наглядно объяснить, что они из себя представляют. Давайте создадим ещё одну функцию она будет делать аналогичные действия, но вместо отправки на адрес который указывается через параметр мы отправим на адрес. Аврора до этого мы создадим переменную умер далее инициализируем его в конструкторе никогда. Мы уже видоизменились кот 2 нашей функции она будет отправлять в половину денег на адрес нашего огня. И теперь мы видим, что данная функция имеет две функции одинаковые проверки вводимых данных сейчас у нас контракт. Довольно простой, но на практике контракты значительно больше и в. Да у нас будет больше функций с проверками чтобы каждый раз не писать повторяющуюся проверку проще было бы вынести этот куда-нибудь в одно место для этого используют.

0 комментариев
0

Читайте также