链表结构

小天
• 阅读 396

区块链 - 链表结构

背景

上个章节我们简要介绍了区块链作为一种共享的、不可变的账本,有着广泛的应用前景。这一张,我们来深入探讨区块链的架构以及工作原理。在本章介中,我们着重介绍经典的比特币区块链,对于一些最新的区块链功能(比如智能合约),我们将放在后续章节介绍。

链表结构

区块链首次出现是1991年,研究人员想要创建一种工具来为数字文档添加时间戳,以便它们无法回溯或更改。2008年,该技术被中本聪改编和重新发明,创建了第一个加密货币,即基于区块链的比特币。

区块链是包含特定信息(比如交易)的区块,以某种方式在网络中连接在一起的去中心化存储。所以本质上,区块链可以被看做去中心化存储的链表(linked list)。在该链表中,区块主要存储特定信息,以及下一个节点的连接信息。 链表结构

如果你理解链表数据结构,那么事情就简单多了,一般来说,比特别区块中存储的是

  • 交易信息,即谁付给了谁多少比特币。
  • 当前区块的哈希值
  • 前一区块的哈希值

哈希就像指纹一样,唯一地标识一个区块。每个区块哈希都是由特定加密算法 (SHA 256) 生成的。在创建区块的那一刻,它会自动附加一个哈希,而区块中所做的任何更改也会影响哈希的更改。简单地说,哈希有助于检测块中的任何变化。区块中存储了前区块的哈希值,相当于创建了一个链表。例如,区块 45 指向区块 46。链中的第一个区块有点特殊,它被称为创世区块。所有已确认和验证的区块都来自创世区块。

链表结构

区块链在逻辑上是自我验证的:对于已经确认的区块,更改其信息会导致其哈希值变化,从而破坏跟后续区块的连接,因为区块间的连接是通过后续区块存储前区块的哈希值实现的。我们考虑这样的例子:

链表结构

区块1的T1交易记录了Damian给George转账了500个比特币。想象一下,如果这个交易记录被更改了,比如说不是500而是100个比特币,那么区块1的哈希值就会发生变化,从而区块2和区块1不能确认为相互连接。

链表结构

由此,必须要求在区块1后续的所有区块均重新连接并确认,才能真正确认当前更改,即Damian给George转账了100个比特币而非500个比特币。事实上,这是非常困难的,因为基于最长链原则,在区块链发成分叉的时候:比如上面的例子,Damian给George转账100或者500,区块链会确认最长的分叉链。我们在后续章节会详细介绍。

在此,我们会发现一个问题,那就是相对较新的区块比较容易被造假,因为后续连接区块较少,而更加早期的区块相对稳定,难以造假。事实上,确实如此。所以,一般加密货币都会要求某一个区块,要在后续连接x个区块以后,才能予以最终确认。对于比特别,x为6,用时大概为1个小时。这也为比特币在一些实时交易的应用场景中带来了挑战:比如街边买咖啡,超市买菜等。

小结

区块链逻辑结构为链表结构,每一个区块存储特定信息(对比特币来说为交易信息)。每一个区块都保存迁移区块的哈希信息。任何一个更改,都会导致后续连接的区块失效。

点赞
收藏
评论区
推荐文章

暂无数据

小天
小天
Lv1
男 · Meta · 软件工程师
兴趣是最好的老师。
文章
7
粉丝
7
获赞
3