区块链浪潮:连接技术与应用
上QQ阅读APP看书,第一时间看更新

3.2 区块和链

区块存储的是一段时间内的交易信息,实际上是对交易信息的一种封装;在比特币里,一个区块可存储约3000笔交易信息。一旦这个区块被确认,3000笔交易就一同被确认了。如果不对交易信息进行封装,每次确认一笔交易,则需要高频的确认操作,效率较低。

每个区块包含指向上个区块的地址信息,如此环环相扣,形成从最新区块到创世区块的一条“链”。不同的共识机制,提供不同的方案来产生新的区块;有时候,同一时段内有可能产生2个(或更多)内容不同的区块,这就是“分叉”(图3-1)。不同的区块之后,各自又会产生新的区块,而使各个链条有所延长。但一般而言,链条延长的速度是不同的。绝大部分区块链项目都遵循“选最长链作为主链”的规则,这一规则可保证即便出现分叉,在一定时间后,总能有一条链条是公认的“主链”(图3-1)。

图3-1 分叉示意图

由于最长链是唯一的,所有用户都将把同一链条记录在本地数据库上,这就保证了账本的唯一性,也就解决了账本一致性的问题。

此外,链式结构还带来一个好处。所有的区块都通过“链”连接在一起,形成了一个紧密的整体。如果黑客想要篡改历史上的某笔交易内容,则需要篡改交易所在的区块;黑客无法创造一个新的区块并直接进行替换,而需要把从这一区块直至最新区块的整个链条都重新替换(在比特币中,也就是从需要修改的区块开始重新挖矿,连续挖出此后的所有区块,并在进度上最终超过其他所有矿工,创造一条新的最长链),代价高昂。由此可避免篡改交易等攻击。

然而这种数据结构仍然存在问题:数据处理能力较低。在区块链中,为了避免存在冲突的交易信息(不允许持续分叉),也为了保证账本的一致性(需选出唯一的链),区块链采用的是最长单链结构。由于每次只能新增一个区块,在P2P网络中,区块信息的传播、确认需要时间,而区块的容量有限,这就使得一段时间内,能记录的交易信息存在上限。可见,“数据处理能力低”实际上是满足一致性要求而付出的代价。目前比特币区块链平均一秒只能处理约7笔交易,与中心化的电子支付系统存在较大差距。