《05区块链如何保持数据一致性》学习笔记

《05区块链如何保持数据一致性》学习笔记

我正在区块链研习社学习区块链相关的知识,现在在补课学习基础课程的内容。基础课程,包含如下内容,学习地址如下区块链研习社基础课程


区块链研习社基础课程

这是我学习基础课程的第5篇学习笔记。


《我是默克尔不是默克树》


一致性问题,涉及到区块的结构以及区块链的不可篡改性。


1、什么是哈希


哈希,英文对应 Hash , 一般说的都是哈希函数。百度百科中提到哈希一般翻译做散列,就是把任意长度的输入,通过散列算法,变换成固定长度的输出。这种转换是一种压缩映射,也就是说散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出。


简单来讲,就是将一个较长的字符串a转化为一个固定长度的字符串b,然后用b这个字符串取代表之前的a。经过哈希转换后,无法通过b还原出原来的a。


哈希算法在文件校验、数字签名以及鉴权协议都有很好的应用。哈希算法是一种非常高效的算法,所以使用非常频繁。



2、简单的判断一致性方法


两个文件是不是相同?可能的办法有:(1)比较文件大小,如果不一致,则说明是不同的文件。(2)看文件的内容。(3)查看文件的详细信息。以上是属于低级的方法。


一个靠谱的办法就是使用 MD5,它是一种被广泛使用的哈希函数。如果你从网站上下载了一个文件,自己运算得出的MD5 与网站公布的 MD5 一致,则表示这个文件没有被篡改过。



3、区块链如何保持数据的一致性——默克树


如图所示为区块的结构,非常重要务必掌握。


区块结构


区块头结构


第三行的默克树的根值,正是一个哈希值,区块链技术就是利用这个哈希值来判断区块的数据是否被篡改过。


然而每个区块可能包含很多个交易,其内容就会非常多,对整体进行哈希运算,效率是非常低下的。所以才有了默克尔树,即默克尔哈希树。它通过对每一个叶子节点进行哈希计算,并不断往上递归,最后构建成一个树形结构。


优点:不用保存每一个交易的哈希值,而是将所有的交易构建成这样一个默克树,以树的根节点的哈希值作为所有交易内容的一个映射,存放于区块的头部结构中。在保证数据完整性,防止被篡改的同时,减少了运算量,提高了效率。一旦被篡改,还能进行快速定位。


在默克树计算节点

上图可以感受一下。更多内容可以参见《精通比特币》第七章区块链



大体意思明白了,详细细节待后续学习^_^


吉祥

20170910

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 所有货币都需要一些方法来控制供应,并强制执行各种安全属性以防止作弊。在法定货币方面,像中央银行这样的组织控制货币供...
    Nutbox_Lab阅读 3,200评论 1 3
  • 最近区块链名声大噪,尤其在金融领域,各方研究火热,那区块链到底是哪儿来的?先来看一下区块链的发展轨迹吧! 2008...
    皮袋君阅读 1,207评论 1 12
  • “您回去吧,再见”学智拖过行李箱放在自己面前,对着旁边的矮个子男人说。 “智儿,我送你到宿舍吧,帮你铺个被子啥的…...
    国宴阅读 676评论 15 13
  • 做个心中有风景的瑜伽女子,带着身心灵去看美景,眼前美景醉人,而你何尝不是一道风景呢? 将自己置于这眼前的风景之中,...
    安若莲生阅读 491评论 0 1
  • 你浪费掉了太多的自以为是又狼狈不堪的青春。那里,有笑有泪,有自信有迷茫,你伤人也被人伤,难免颓废与寂寞;也许你会坚...
    心咯OK我阅读 605评论 0 0