
一、先建立三个层次的认识
区块链不是一种单独的算法。入门可以依次回答三个问题:记录怎样组织,交易怎样判断有效,不同节点怎样选择共同认可的历史。它们分别涉及数据结构、验证规则和共识机制,不能互相替代。
Bitcoin Developer Guides的区块链章节侧重解释账本结构与验证;Ethereum的共识机制文档则强调,共识由协议、激励与分叉选择等要素共同构成。两种视角结合起来,更容易理解各项技术的职责。
二、哈希与默克尔树解决什么问题
在比特币中,区块头引用前一区块头的哈希,交易的哈希则逐层汇总为默克尔根。前者关联历史,后者让交易集合能够通过一个根哈希进行校验。
学习时要区分“发现变化”和“阻止变化”:哈希关联使记录修改影响后续校验,但修改历史的难度还依赖共识机制。默克尔证明可以用于核验交易是否被包含在特定区块中,却不能单独证明交易符合全部规则。
三、通过UTXO理解交易验证
比特币使用未花费交易输出,即UTXO,记录可被后续交易引用的输出。同一个输出不能在有效链中重复花费;普通交易的输出总额不能超过输入总额,差额可作为手续费。
这一模型适合帮助初学者理解双花检查与金额约束,但不能直接当作所有区块链的通用账本模型。分析其他系统时,需要先确认它采用怎样的状态表示和更新规则。
四、工作量证明与权益证明的边界
工作量证明要求区块头哈希满足目标条件。比特币节点在符合验证规则的候选链之间,依据累计工作量选择链,而不是简单比较区块数量。
以太坊采用基于权益证明的共识机制,由验证者参与区块提议与证明,并结合权益权重、奖励和惩罚协调参与行为。工作量证明与权益证明都不是完整共识的全部,还需要相应的验证规则和分叉选择机制。
五、适用条件与常见误区
为什么节点可能暂时看到不同历史?区块传播需要时间,接近同时产生的候选区块可能形成分叉,因此协议需要处理竞争分支。看到一个区块,不等于网络已经对它形成稳定的一致认识。
区块高度能唯一标识区块吗?不能,竞争分支可能出现同高度区块。学习算法时,应始终分清标识、包含关系、有效性与链选择:它们回答不同问题,任何一个检查结果都不应被扩大解释为对整个系统的保证。