
数据结构:交易、区块与哈希
理解区块链数据,可以先看三个问题:记录了什么、怎样关联、依据什么验证。交易表达一次操作,区块组织交易记录,哈希则用于形成数据摘要和关联标识。哈希不是加密后的原文,也不能代替交易内容本身。
比特币开发者指南介绍,区块头记录前一区块头的哈希,并通过默克尔根关联区块中的交易。节点独立验证区块;交易输入引用先前输出,未花费输出构成UTXO。工作量证明与链选择规则共同参与历史记录的维护。
状态模型:UTXO与账户
UTXO可理解为尚未被使用的交易输出。分析这类数据,需要追踪输出由哪笔交易产生、是否已被花费。账户模型则围绕账户状态及其变化组织信息。两种模型的数据查询方式不同,不能把某条链的字段直接套用到另一条链。
以太坊交易文档将交易描述为经过密码学签名、用于更新网络状态的指令。相关概念包括接收地址、金额、nonce、输入数据及Gas费用字段;交易可以转移价值、部署合约或调用合约。
授权与执行:签名、nonce和Gas
数字签名用于验证交易授权,不代表签名者的现实身份已经得到认证。理解交易时,需要把授权是否有效与操作执行结果分开。
以太坊账户交易中的nonce是顺序计数器;比特币区块头中的nonce用于工作量证明尝试。名称相同,所属对象和用途却不同。
Gas衡量执行所需的计算资源,Gas限额约束可消耗的资源数量,费用字段约束单位资源的价格。合约输入数据还涉及ABI编码:只有结合相应接口定义,原始字节才能被解释为函数及参数。
常见问题:收录是否等于成功
交易进入区块,不等于合约操作一定执行成功;执行结果与区块是否稳定也属于不同问题。分析数据时,应分别关注收录状态、执行结果以及所在链的确认或最终性机制。
默克尔证明能帮助核验交易是否包含在特定区块中,但这类包含关系证明不能独立证明交易满足全部规则。区块高度也不适合作为跨分支的唯一标识,因为竞争分支可能出现相同高度的区块。
适用范围:先确定链和数据对象
阅读区块链数据之前,应先明确所属网络、交易类型和字段定义。比特币的UTXO与工作量证明、以太坊的账户交易与合约执行,分别对应不同机制。上述概念有助于理解数据之间的关系,但不能据此认定所有区块链采用相同结构或安全规则。