
共识要解决什么问题
区块链中的共识,是让分布式节点对交易顺序和账本状态形成一致判断。以太坊开发者文档将共识机制描述为协议、激励和相关规则构成的整体;比特币开发者指南则说明,全节点独立验证区块,并通过共识规则维护一致账本。两者共同体现了一个前提:参与者需要共享记录,同时保留独立核验能力。
条件一:确实需要多方维护共同状态
当多个参与者共同记账,又不能仅依赖某一方决定最终记录时,共识机制才有明确用途。例如,同一笔可支配余额出现相互冲突的支出记录,系统必须确定哪些记录可以进入共同账本。仅仅把数据复制到多台机器,并不能自动解决这种冲突。

条件二:验证规则统一,数据能够核验
节点需要依据一致的规则判断交易和区块是否合法,并获得完成验证所需的数据。规则应能让节点针对相同输入得出一致结论。否则,即使记录传播到所有节点,各方也可能因判断标准不同而长期分歧。

合法性验证与分支选择承担不同任务:前者排除违反规则的记录,后者处理多个有效候选历史之间的竞争。不能用投票或资源权重替代交易本身的合法性检查。
条件三:参与方式与安全机制匹配
开放网络允许参与者创建多个身份,因此不能简单采用一个身份一票。工作量证明和权益证明分别借助计算投入、质押资源限制身份扩张带来的影响,但完整共识还需要区块产生和分支选择等规则。
比特币在有效候选链之间比较累计工作量;以太坊的相关机制使用按质押权重计算的验证者投票。这说明共识中的权重口径取决于协议,不能把节点数量多直接理解为具有决定权。
条件四:通信与故障处于协议假设范围内
节点必须能够传播区块及相关消息。延迟可能让节点暂时看到不同历史,持续断网则会妨碍状态同步。评估适用性时,需要同时考虑能否避免确认互相冲突的结果,以及能否持续处理新记录。
共识的安全性有条件:恶意参与者掌握的资源、验证者在线情况和网络通信,都可能影响结果。不同协议的假设和门槛不同,不能用一个固定百分比概括所有机制。
常见问题:达成共识就代表信息真实吗
共识能够帮助节点确认哪些记录符合协议、按什么顺序进入账本,但不能独立证明链外信息真实。若录入的是现实事件、货物状态等数据,其真实性仍依赖相应的数据来源和核验过程。
共识也不要求所有节点在每一时刻都显示完全相同的链头。传播延迟和竞争区块可能造成暂时差异,机制需要规定如何收敛,以及何时能够把记录视为足够稳定或已最终确定。