
先明确术语适用的网络
区块链编程市场涉及不同技术体系,同一个词需要结合上下文理解。以太坊开发文档中的智能合约,重点是程序及其状态;比特币开发指南中的交易,重点是已有输出如何被授权花费。阅读开发需求时,应先确定讨论的是哪种网络、哪类数据和哪种权限。
智能合约、状态与Gas
在以太坊中,智能合约是位于特定地址的代码与数据。函数描述可执行的操作,状态保存相关数据。Solidity、Vyper属于合约编程语言,编译后的程序由以太坊虚拟机执行;部署和改变链上状态的交易需要支付Gas费用。

理解这些词可以借助库存规则:库存数量属于状态,补充库存属于函数,谁能补充属于权限条件。程序按规则执行,并不意味着规则没有缺陷;“自动执行”也不表示合约会自行定时启动。

交易、UTXO与脚本
比特币普通交易的输入引用此前的输出,输出在尚未被花费时称为UTXO,即未花费交易输出。txid标识交易,输出索引定位其中的具体输出,脚本规定花费条件。钱包显示的余额可以来自多个UTXO。
理解输入与输出时,可以分别问:本次使用哪些已有记录,又产生哪些新记录?这里的“交易”描述链上数据结构,不能直接等同于市场中的买卖成交。以太坊合约调用同样可能是一笔交易,但不能直接套用UTXO模型。
预言机、可组合性与多重签名
以太坊合约不能独立读取链外现实信息,预言机用于把链外数据提供给合约。可组合性指合约可以调用其他合约。多重签名则要求达到设定的有效签名门槛才能执行相关操作。
这三个词分别回答数据从哪里来、程序如何协作、执行由谁授权。它们对应不同问题:引入外部数据不会自动解决授权问题,增加签名要求也不能证明外部数据准确。
常见问题:公开是否意味着可以任意操作
合约公开可访问,不代表所有函数都允许任何人成功调用,执行仍受代码中的权限和条件约束。比特币输出可被查看,也不代表查看者能够花费它,仍需满足对应脚本条件。判断一个术语的实际意义,要同时看数据结构、验证规则和权限边界。