我是靠谱客的博主 柔弱钥匙,最近开发中收集的这篇文章主要介绍简单理解链表与区块链(blockchain),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  “区块链”类似于c语言里的链表,其中“区块”相当于链表中的Node节点,Node节点之间相互串联形成“链”。


                                                                            链表的概念(如图)

  换一种“实现”方式,每个石柱保存下一个石柱的经纬坐标,进而可以准确找到下一个节点。




  现实中的“链表”是用铁链拴住的一根一根的石柱,而在C语言中,石柱被替换成了一个struct结构体,两个石柱之间的铁链被替换成了内存指针。


  每个Node的节点包含一个保存下一个Node节点的指针域(即一个指针变量,假设为next),next保存下一个Node节点在内存中的地址,这样,计算机程序可以从第一个节点开始,依次找到后面所有处于链表中的节点,并访问每个节点中保存的数据(data段)内容。


   区块链中,除了创世区块(区块即Node节点,创世区块是整个区块链上的第一个区块)外,每个区块都是根据其所在链中的上一个区块的头部Hash值生成的。 隐含的意思是说,我是上一个区块的孩子,我必须遗传来自父母的一部分基因,没有上一区块就没有我(不然我就会无家可归,挂载不到整条链上)。这个血缘关系就是上下区块之间的纽带,无须怀疑其真实性(可以通过Hash值进行验证),且子区块可以根据自身遗传基因(父区块的Hash值)向前遍历。 简单地将,就是用Hash值代替了内存指针。

  一条区块链一般可以由世界各地的计算机设备共同维护,每台设备可以有完整的拷贝,但正常情况下,每台设备所拥有的最新的区块链拷贝应该是相同的。就像天上有一只月亮,每台计算机都采集显示它的缩影,月亮是唯一的,所以每台计算机看到的月亮缩影应该都是相同的。

  区块链是去中心化的,它由很多同等地位的运维工程师(客户端)共同维护运转。每当有一个新区块(新孩子出生)被孵化出来,且即将要加入到区块链中时,孵化师(客户端)会向其他人发布广播,让大家一起见证新生命的诞生。所有人会亲自验证新生婴儿的血脉,如果新生儿确实是上一区块的孩子(Hash验证),那么便承认它的身份,让它加入到区块链中。这样,大家对结果达成共识,那么区块链数据便能达到唯一性。当然,技术实现中,共识机制并不是这么简单实现的。

  另外,每个区块生成并挂载到区块链上后(从大家都验证并承认它的身份后开始),它的数据不能再做任何改变。
刚才说过,孩子的出生是依靠父母基因的。每个区块的基因都是特定的,由整个区块的数据内容Hash而成,如果数据内容改变,其自身的Hash值就会(必须)发生改变。那么不管是当前区块的孩子们,还是所有的孵化师们,都不会同意的。
  想想小说中的故事,有两个非常强大的人物在打架,其中一个人打不过对手,趁对方不注意,通过时光隧道回到了过去,杀掉了对手的爷爷...

  剧情虽然夸张,但历史不允许被修改的道理确是大家所共知的。强行改变区块链中的父节点,相当于把该父节点后面的所有子节点统统舍弃,重新添加,导致该节点之后所有计算出子区块的客户端的努力都白费了,劳作既是代价,也是金钱。

  比特币是一个和区块链紧密相关的产物,想要理解区块链,总是不自觉得往比特币上面去靠。我思来想去,是因为比特币中蕴含着的利益博弈,是理解区块链在人心驱动下的精髓,也是区块链价值的核心所在。区块链唯一的信仰,就是每个人(客户端)都会牟取自己的利益。支持对自己有利的行为,反对对自己有害的行为,监督其他人的不合规矩的行为(一般都不符合自己的利益)。它(比特币规则)坚信这一点,并以此为核心,形成的一系列附加规则,通过人与人之间相互制约,监督,建立起一套完整的货币体系。

  






最后

以上就是柔弱钥匙为你收集整理的简单理解链表与区块链(blockchain)的全部内容,希望文章能够帮你解决简单理解链表与区块链(blockchain)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部