You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Clarity合约public函数执行路径类型不匹配错误排查求助

Clarity合约public函数类型不匹配问题修复

你的问题出在public函数的执行路径返回类型不一致:

  • 当asserts!验证失败时,会返回一个错误响应((err ERR-NOT-AUTHORIZED)),属于response类型
  • 验证通过后执行var-set,返回的是bool类型(表示变量是否设置成功)

Clarity要求public函数的所有分支必须返回相同类型,所以编译器报错检测到两种不同类型的返回值。

解决方法很简单,把成功路径的返回值包装成统一的response类型即可,比如用ok包裹var-set的结果:

(define-public (changeRatio (newRatio uint))
  (begin
    (asserts! (is-eq tx-sender (var-get contract-owner)) ERR-NOT-AUTHORIZED)
    (ok (var-set ratio newRatio))
  )
)

如果不需要返回var-set的结果,也可以直接返回固定的成功响应,比如(ok true),效果是一样的。

内容的提问来源于stack exchange,提问作者Brian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:44:54