
把PoW、PoS当作完整的共识机制
以太坊开发文档说明,工作量证明和权益证明承担抗女巫攻击、参与出块者选择等作用;完整共识还涉及分叉选择、协议规则及激励约束。因此,教程只介绍挖矿或质押,尚不足以解释节点如何形成一致的链上状态。
学习时应分别追问:谁能参与出块,区块怎样验证,出现竞争分支时怎样选择。不同问题对应不同机制,不能用一个算法名称包办全部解释。

把“最长链”理解为区块数量最多
比特币开发指南中的链选择以累计工作量为依据,并以区块有效为前提。区块高度也不是唯一标识,因为竞争分支可以在同一高度产生不同区块。

这一点适用于理解比特币,不能直接推广到所有区块链。应用记录区块时,需要区分用于定位层级的高度与用于识别具体区块的哈希;仅凭高度相同,无法判断两个节点看到的是同一区块。
把难以篡改理解为永远不会改变
哈希链接使历史修改能够被检测,共识机制进一步约束网络接受哪段历史。但链头出现竞争分支、随后重新选择分支,并不等于哈希失效。
常见问题是:交易进入区块后,是否就可以视为不可逆?这取决于所用网络的确认或最终性机制。应用应区分已被收录与达到相应确认条件,避免把首次看到的结果直接解释成永久状态。
把网络达成一致等同于现实信息真实
共识解决的是节点按照规则认可哪份链上记录。由此不能推出记录描述的现实事件一定真实。例如,应用写入一项业务声明,链上能够记录该声明,却不会仅凭共识自动核验声明涉及的实物或线下行为。
对于连接现实业务的应用,数据如何采集、由谁提交、怎样核验,需要单独说明。账本的一致性不能替代输入信息的真实性验证。
把局部证明当成完整验证
另一个常见问题是:证明交易被某个区块收录,是否就证明一切有效?包含关系、区块有效性以及该区块是否属于认可的链,是不同层次的问题。
阅读教程或设计应用时,应明确实际检查了哪些条件、哪些判断依赖其他组件。只有把证明范围说清楚,才能避免将局部验证能力误写成整个系统的安全保证。