
一、区块里记录的交易是否都只是转账
交易的含义取决于具体网络。比特币开发者指南以交易输入和输出说明资金如何流转;以太坊交易文档则将交易解释为经过签名、用于更新网络状态的指令,涵盖转账、合约部署和合约调用。
因此,理解一条记录需要先确定网络及交易类型。把所有交易都看成“某地址向另一地址付款”,会遗漏合约调用等操作的含义。以下说明分别适用于对应网络,不能直接套用于所有区块链。
二、有交易哈希是否代表已经写入区块
以太坊交易文档区分了交易生成哈希、广播、进入待处理交易池和被纳入区块等阶段。交易哈希是识别交易的线索,其存在本身不能证明交易已经入块。
“能够识别这笔交易”和“这笔交易已被区块收录”回答的是不同问题。解释记录状态时,应明确所处阶段,避免把提交、收录和最终确定混为一谈。
三、同一笔资金能否被重复记录并花费
在比特币中,普通交易通过输入引用先前交易的输出。同一个输出在有效链上只能被花费一次;再次花费已经使用的输出属于双重花费。全节点会独立验证区块,而不是无条件接受收到的记录。
这里限制的是同一输出被重复花费,并不意味着同一地址只能参与一次交易。以太坊采用账户交易序号等机制组织交易,两种模型的字段含义不能直接互换。
四、历史记录为什么难改,区块高度能否唯一定位
比特币将交易哈希组织成默克尔树,并把根值写入区块头;区块头还关联前一区块。修改历史交易会牵动后续关联,工作量证明进一步增加改写成本。
但“难以改写”不宜表述为任何情况下都绝不变化。出现竞争分支时,比特币节点在有效链中遵循累计工作量最大的链。同一高度可能出现不同区块,因此定位具体区块应使用区块哈希。
五、费用字段和合约数据为什么容易看错
以太坊交易中的 gasLimit 表示计算资源用量上限,不能直接当作实际手续费。合约调用的数据字段还可能包含函数选择信息及参数,需要结合合约接口解释。
阅读记录时,应区分资源数量、单位资源价格以及操作内容。一个字段只能说明交易的某个方面:看到费用上限不能直接得出实际支出,看到接收地址也不足以完整解释一次合约调用。