Как потребовать истинное значение в смарт-контракте Clarity?

#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))