
误区一:把排序理解成一种统一算法
讨论区块链排序算法有哪些常见误区,首先要区分排序对象:区块内交易如何排列、竞争分支如何选择,以及历史何时获得稳定确认。这些问题处于不同层次,不能用一个算法名称全部概括。
普通排序算法接收一组数据后按规则排列;区块链还需要处理节点信息不同步、竞争提案和有效性验证。因此,局部排列完成不代表全网已经认可。
误区二:先广播的交易必然先执行
交易通过网络传播,各节点接收消息的时间可能不同。以太坊开发者文档描述的是节点维护本地待处理交易池,这并不构成全网共享的先到先得队列。
判断交易先后,需要区分提交时间、节点接收时间和最终区块中的位置。某个节点先看到一笔交易,只能说明该节点的观察结果,不能据此推导全网执行顺序。
误区三:手续费决定唯一顺序
手续费提供打包激励,但不能单独决定一切。交易还必须符合协议的有效性要求,排序也需要考虑交易之间的依赖。
比特币开发者指南说明,交易输入引用此前交易的输出,并禁止重复花费。理解这类依赖时,可以把交易看成有前置条件的操作:若条件尚未满足,仅按费用高低排列不能保证结果有效。
误区四:最长链就是区块最多的链
比特币在有效候选链之间比较累计工作量,不能只数区块数量。以太坊权益证明机制则使用LMD-GHOST依据验证者证明的权重选择链头。两者的比较依据不同。
因此,“最长链”这种简写需要结合具体协议解释。还应先确认候选区块有效,再讨论选择哪条分支;选择规则不能使无效交易变得有效。
误区五:进入区块就意味着顺序永久固定
区块被接收与历史达到最终性属于不同阶段。以太坊通过Casper-FFG处理检查点最终性;比特币则依靠后续工作量积累提高修改历史的成本。
回答“交易顺序确定了吗”时,需要说明是在某个节点当前视图下成立,还是已经满足相应协议的确认条件。暂时认可的链头,不应直接等同于永久不变的历史。
误区六:顺序一致就代表排序公平
一致性关注节点能否认可同一份有序记录;公平性关注交易按什么标准获得位置。节点最终同意一种顺序,并不能单独证明它符合先到先得等公平标准。
常见问题是能否只替换排序算法来改善全部表现。判断时应分别考察传播、打包、验证和确认环节:局部排序的变化,不足以直接推出全网确认更快或安全性更高。上述解释适用于理解基本机制,具体规则仍需按目标链分别分析。