#blockchain #smartcontracts #clarity #clarity-lang
#блокчейн #смарт-контракты #ясность #clarity-lang #стеки-блокчейн
Вопрос:
В моем смарт-контракте я хочу проверить, является ли логическое значение true, если нет, смарт-контракт должен прерваться или выдать ошибку, например
(begin
(require-true value)
...continue
)
Как я могу это сделать?
Комментарии:
1. Для досрочного выхода и возврата ошибки существует
asserts!
( docs.blockstack.org/references/language-functions#asserts )
Ответ №1:
Вы можете использовать unwrap-panic
в функции, например
(define-private (require-true (value bool))
(unwrap-panic (if value (some true) none))
)
Ответ №2:
asserts!
вернет true и продолжит выполнение, только если логическое выражение, которое оно вычисляет, является true . Если нет, он вернет брошенное значение и завершит текущий поток управления.
Подпись — это: (asserts! boolean-expression thrown-value)
Пример, который вернет true
и продолжит выполнение:
(asserts! (is-eq 1 1) (err 1))