
交易、区块与状态
理解区块链应用,可以先看三个问题:记录什么操作、怎样组织记录、如何判断操作有效。交易表达操作,区块组织交易,节点依据协议规则验证记录与状态变化。不同区块链的数据模型和执行规则并不相同。
比特币开发指南介绍了未花费交易输出(UTXO):交易使用先前尚未花费的输出,并产生新的输出。同一输出不能重复花费。它还说明,区块通过前一区块头的哈希相连,交易哈希组成默克尔树,节点遵循共识规则验证区块,并在有效分支之间依据累计工作量选择链。

哈希、默克尔树与共识
哈希把数据映射为摘要,使数据变化能够被检测。默克尔树逐层汇总交易哈希,支持用部分中间哈希验证某笔交易是否包含在区块中。这里需要区分“记录被包含”和“记录内容有效”:包含证明解决前一个问题,完整验证还需要检查相应规则。

共识机制帮助分布式节点形成一致的记录。对应用而言,交易被广播、被区块收录和获得更稳定的确认是不同阶段。涉及分支竞争时,应用不能仅凭一次收录就假定记录永远不会变化。
智能合约、执行环境与资源消耗
以太坊开发文档将账户、交易、EVM、Gas、节点与共识列为基础概念,并覆盖智能合约、客户端接口、存储、预言机和扩容等应用技术。智能合约是部署在链上地址的程序;EVM提供执行环境,Gas衡量交易执行所需的计算资源。
智能合约适合把可明确表达的规则交给链上执行。例如,一项操作是否满足条件,需要转化为程序能够检查的输入和逻辑。程序执行的一致性并不保证业务规则设计正确,因此合约测试、安全检查和升级机制也属于应用设计的一部分。
接口、存储与外部数据的适用条件
去中心化应用还需要用户界面与链上系统连接。客户端库和JSON-RPC等接口承担查询、提交请求等工作,钱包参与身份认证与操作授权。界面显示成功和链上执行成功之间存在处理过程,应用应明确展示相应状态。
当业务依赖链外信息时,需要考虑预言机及其数据来源;需要保存大量内容时,需要区分链上记录与外部存储。采用扩容方案或跨链桥时,则要进一步理解其验证方式、数据可用性及额外信任条件。
常见问题:应用是否需要全部技术
并非每个应用都需要智能合约、预言机或跨链桥。只查询已有记录的工具,与需要修改链上状态的应用,技术需求不同。应先明确业务依赖哪些数据、谁能发起操作、哪些规则必须共同验证,再确定所需组件。
链上可验证也不等于现实内容真实。区块链能够提供规则范围内的记录与验证能力,但外部数据是否准确、程序是否符合业务意图,仍需分别判断。