
智能合约的适用范围
智能合约是部署在区块链上、按代码执行的程序。以太坊合约在特定地址保存代码与状态,用户可以通过交易调用其函数。这里的“智能”指按预设逻辑处理输入,不代表程序能够自行理解现实情况。下文以以太坊解释执行机制,以比特币说明账本基础;两种网络的具体设计不能直接混用。
账本、哈希与共识
比特币开发者指南展示了底层记录的组织方式:区块通过前一区块的哈希连接,交易经默克尔树汇总,节点按共识规则验证区块。比特币还通过工作量证明增加改写历史的成本。

这些概念回答不同问题:哈希帮助识别数据变化,默克尔树支持核验交易是否被收录,共识规则约束节点接受哪些记录。对于合约而言,可靠记录与正确业务逻辑是两个层面;网络接受某次执行,并不能证明开发者写出的规则符合原本意图。

账户、状态与函数
理解合约可以从“保存什么、允许谁改、怎样修改”入手。状态是程序保存的数据,函数描述处理规则,账户与地址提供交互入口。例如库存规则需要同时表达数量记录、领取条件与补充权限,仅保存一个库存数值无法构成完整流程。
编译、虚拟机与Gas
以太坊上的Solidity、Vyper等语言需要编译为虚拟机可执行的形式;部署属于交易,需要支付Gas费用。语言用于表达规则,虚拟机负责执行,Gas用于计量执行所需资源。
代码能被编译,只说明它满足相应语言要求,不能据此判断权限设置或业务条件正确。理解执行资源也有助于认识合约的边界:链上程序受到资源约束,不能把任意复杂计算都视为可以无限执行。
合约组合与预言机
合约可以调用其他合约,形成组合功能;涉及链外信息时,则需要预言机将数据带入链上。这两种机制分别扩展了可调用的功能和可使用的数据。
适用条件也随之增加:调用其他合约需要考虑对方接口与规则,使用外部数据需要考虑其真实性和时效性。程序严格执行与输入可靠是不同要求,执行一致并不会自动消除错误输入。
多重签名与常见问题
多重签名把授权条件设为多个有效签名达到指定门槛,适用于需要多人共同控制操作的场景。它能分散单一密钥承担的责任,但不能替代对合约逻辑的检查。
合约会自行得知现实事件吗?不会,链外事件需要数据传入。公开合约是否允许任何人执行所有操作?公开可交互与操作权限是不同概念,函数仍可设置调用条件。自动执行是否保证结果正确?结果取决于代码、输入和权限规则是否共同满足业务要求。