
账本结构:哈希与默克尔树
区块链与应用技术涉及哪些技术概念,可以从记录、验证和执行三个层面理解。比特币开发者指南展示了账本结构:区块包含交易,区块头引用前一区块头的哈希;交易哈希逐层汇总形成默克尔根。全节点依据共识规则独立验证区块。
哈希把数据关联起来,使历史内容的变化能够被检查出来。默克尔树则支持用部分中间哈希验证某笔交易是否包含在区块中。两者回答的是数据完整性和包含关系问题,不能单独证明记录对应的现实事件真实发生。

交易模型:输入、输出与双重支付
比特币使用未花费交易输出,即UTXO,描述可供后续交易使用的输出。普通交易的输入引用此前的输出,同一输出不能在有效链上重复花费。

理解这一模型时,应把“钱包余额”的界面表达与底层记录区分开来。应用展示一个总额,底层验证仍需检查具体输出及其花费状态。UTXO是比特币的技术模型,不能据此推断所有区块链都采用相同结构。
共识机制:工作量证明与分叉
比特币的工作量证明要求区块头哈希满足目标条件;出现有效分支时,节点依据累计工作量选择链。因此,区块高度表示位置,却不能始终唯一标识区块。
共识关注参与节点如何遵守共同规则并确定历史记录。哈希关联与工作量证明配合,提高修改历史的成本,但“难以修改”不等于任何条件下都绝对不可改变。应用需要考虑分叉对记录状态的影响。
应用执行:智能合约与虚拟机
以太坊开发者文档将智能合约描述为特定地址上的代码和状态。交易可以调用合约函数;Solidity、Vyper等语言编写的合约需要编译,由以太坊虚拟机执行,部署和执行涉及Gas。合约之间还可以相互调用。
合约适用于能明确表达为程序条件的规则。自动执行的准确性取决于代码是否正确表达业务要求:程序按规则运行,并不意味着规则本身没有遗漏。合约组合也要求关注被调用合约的行为和依赖关系。
适用边界与常见问题
合约能直接读取现实世界信息吗?以太坊合约本身不能直接获取链外数据,需要预言机等机制提供信息。应用因而还需区分链上执行是否正确与输入信息是否可信。
多签能解决所有安全问题吗?多签通过要求多个有效签名分担授权责任,有助于减少单个密钥造成的风险,但不能代替业务逻辑检查。理解区块链应用,应分别审视记录、共识、代码和外部数据的边界。