
适用范围与基本概念
以下主要讨论以太坊智能合约及链外数据接入。以太坊开发文档将智能合约描述为位于链上地址的代码与状态,用户可通过交易调用其功能。其他区块链的实现细节可能不同,不能直接套用所有结论。
误区一:智能意味着能自行判断
智能合约按预先定义的逻辑处理输入,不会自行理解人的真实意图。自动售货机可以帮助理解这一点:程序检查付款与库存条件,再决定是否更新记录。如果规则遗漏了特殊情形,自动执行也不会主动补齐规则。

误区二:自动执行就是无需触发
自动执行描述的是规则被调用后的处理过程。合约通常需要交易或其他合约调用来触发执行,不能仅凭现实中发生了一件事就自行行动。设计定时或事件驱动功能时,需要明确由谁发起调用、条件如何验证以及执行所需费用。

误区三:合约天然知道链外事实
合约本身不能直接获取链外事件,需要预言机把外部信息传入链上。Chainlink Data Feeds 文档介绍的数据传递方式,是由预言机网络汇集来源并发布链上数据,供合约读取。
读取到一个数值,只说明程序取得了输入。它是否适合当前用途,还取决于数据含义、更新时间和覆盖范围。例如,某项数据反映的是特定时点的状态,就不能自动解释为此后始终有效。
误区四:公开与自动执行等于安全
公开可调用不代表所有功能都向任何人开放,合约可以设置权限条件。同样,按代码执行也不等于业务规则正确:权限设置、输入检查或逻辑存在缺陷时,程序仍可能忠实执行有问题的规则。
合约之间能够相互调用,但组合功能也意味着需要理解依赖关系。判断一个功能的行为,不能只看入口,还应考虑它调用的合约和使用的数据。
常见问题:出错能撤回吗,多签能解决所有风险吗
链上交互不能按普通应用的撤销按钮来理解。即使系统另设补偿流程,也不代表原交易记录被抹除,因此必须区分记录不可逆与业务上的后续处理。
多签要求达到预设数量的有效签名,有助于分散授权责任,但不能修复合约逻辑或外部数据问题。它能否容忍部分密钥丢失,也取决于剩余签名是否仍能达到门槛。