综合介绍
区块链是每一笔已确认比特币交易的历史记录。它使得每个完整节点能够独立确定哪些密钥和脚本控制着哪些比特币。在本章中,我们将探讨区块链的结构,以及它如何利用密码学承诺和其他巧妙的技巧使得每个部分都易于完整节点(有时甚至是轻量级客户端)进行验证。
区块链数据结构是一个有序的、反向链接的交易块列表。区块链可以存储为一个平面文件或简单的数据库。区块通过“反向链接”方式相互关联,每个区块都指向链中的前一个区块。区块链通常被视为一个垂直堆栈,每个区块都叠加在其他区块之上,而第一个区块则作为堆栈的基础。区块叠加在一起的可视化结果导致了使用诸如“高度”来指代距离第一个区块的距离,以及“顶部”或“尖端”来指代最近添加的区块等术语。
区块链中的每个区块都由哈希标识,使用 SHA256 密码哈希算法对区块的标头生成。每个区块还通过区块标头中的“上一个区块哈希”字段提交给前一个区块,即父区块。将每个区块与其父区块链接起来的哈希序列创建了一条链,一直回溯到创世区块。
尽管一个区块只有一个父区块,但它可以有多个子区块。每个子区块都提交给同一个父区块。在区块链“分叉”时会出现多个子区块,这是由于不同的矿工几乎同时发现了不同的区块。最终,只有一个子区块会成为被所有完整节点接受的区块链的一部分,从而解决了“分叉”。
“上一个区块哈希”字段位于区块标头内部,从而影响当前区块的哈希。对父区块的任何更改都需要子区块的哈希发生变化,这又需要更改孙区块的指针,进而改变孙区块,依此类推。这个序列确保了一旦一个区块有了许多后代,它就不能在不强制重新计算所有后续区块的情况下进行更改。由于这样的重新计算需要大量的计算(因此需要大量能源消耗),因此存在着一个长链条的区块链深层历史不容易更改的特性,这是比特币安全的一个关键特征。
一个理解区块链的方式类似于地质形成中的地层或冰川核心样品。表层可能会随着季节变化,甚至在沉淀之前就被吹走。但是一旦你深入到几英寸深度,地层就会变得越来越稳定。当你看到数百英尺深时,你看到的是一个保持不变数百万年的过去的快照。在区块链中,最近的几个区块可能会根据分叉而进行修改。前六个区块就像几英寸的表土一样。但是一旦你深入到区块链的更深处,超过六个区块,区块就越来越不可能改变。在回溯到 100 个区块之后,稳定性已经非常高,以至于 coinbase 交易(包含创建新区块的比特币奖励的交易)可以被花费。尽管协议始终允许通过更长的链来撤消链,并且任何区块被撤消的可能性始终存在,但是随着时间的推移,这种事件的概率会减小,直到变得微不足道。
Last updated