
先确定所讨论的计算层次
区块链的计算模式需要注意哪些问题,首先取决于讨论的是程序执行、交易验证,还是共识中的工作量计算。这些环节承担不同任务,不能用同一个“算力”指标概括。理解某条链时,应先明确它记录什么状态、允许什么操作,以及节点依据哪些规则接受结果。
执行模式:确定性与资源边界
以太坊开发文档将EVM描述为确定性的状态转换环境:在相同初始状态、交易序列和执行规则下,执行结果应一致;Gas用于计量操作消耗的计算资源。EVM还区分执行期间的内存、交易结束即清除的瞬态存储,以及纳入全局状态的持久存储。

这意味着评估合约计算时,既要看能否得到预期结果,也要看执行所需资源是否受控。设计数据保存方式时,应明确数据只服务于当前执行、需要在同一交易内共享,还是需要供后续交易继续使用,避免混淆不同生命周期。

验证模式:有效交易与有效历史
比特币开发指南说明,全节点独立验证区块;普通交易使用未花费交易输出,已花费的输出不能再次使用。工作量证明针对区块头进行哈希计算;出现竞争分支时,节点在有效链中依据累计工作量选择历史,同一高度可能存在不同区块。
因此,检查交易是否合法与确定采用哪段历史,需要分别理解。工作量证明的哈希计算不能直接等同于业务程序的执行能力。应用若要准确关联区块,也不能只依赖区块高度,还应考虑区块哈希及分支变化。
适用条件与常见问题
是否所有区块链都用Gas?不能把EVM的资源计量方式推广到所有系统。比较不同计算模式,应分别核对其执行规则、资源限制和费用机制。
节点得到一致结果,是否代表业务逻辑正确?一致性说明节点按共同规则处理数据;程序是否符合业务需求,仍需单独检查。错误的业务规则也可能被一致执行。
交易进入区块后是否永远不变?比特币的竞争分支表明,应用需要区分已被收录与后续历史选择。处理依赖链上记录的业务时,应考虑分支变化对记录状态的影响。上述两种模式各有具体适用范围,不能据此推断所有区块链具有相同的执行能力或确认特性。