区块链

大致了解区块链


从某公众号偶然看到关于区块链的文章,很早就听说过区块链的大名,现在就把自己理解到的东西记录一下。


  • 区块链的本质是一种特殊的分布式数据库。

  • 区块链的最大特点是彻底无中心的,区块链没有管理员。

  • 区块链由一个个区块组成。每次写入数据就是创建一个区块。每个区块包含两部分

   区块头(Head):记录当前区块的元信息  
   区块体(Body):实际数据
  • 区块头包含了当前区块的多项元信息
生成时间  
实际数据(即区块体)的Hash  
上一个区块的Hash  
...  
  • 如何理解Hash?Hash就是计算机针对任意内容计算出的一个长度相同的特征值。区块链的Hash长度是256位。计算出来的Hash值可以保证只要原始内容不同,Hash值一定不同

    -  推论1:每个区块的Hash都是不一样的,可以通过Hash标识区块。
    -  推论2:如果区块的内容变了,它的Hash一定会改变。  
    
  • Hash的不可修改,前面说过区块头包含很多内容,其中有当前区块体的hash和上一个区块的hash。这意味着,如果当前区块的内容变了,或者上一个区块的 Hash 变了,一定会引起当前区块的 Hash 改变。所以假设有人修改了一个区块,那么他就必须修改后面所有的区块,否则这个被修改的区块就脱离区块链了。再加上hash的计算很耗时,所以要同时修改多个区块几乎不可能发生。正是因为这种机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改

  • 采矿
    由于必须保证节点之间的同步,所以新区快添加的速度不能太快。所以区块链设计者故意让添加区块链变得很困难,他的设计是平均每10分钟全网才能生成一个新区块。
    这种产出速度是因为故意设置了海量的计算,才得到当前区块的有效hash。从而把新区快添加到区块链。
    这个过程就叫做采矿。计算hash的机器就叫做矿机,操作矿机的人就叫做矿工

  • 难度系数
    只有满足条件的hash才会被区块链接受,而且这个条件非常苛刻,使得绝大部分Hash都不满足要求。
    区块头包含一个难度系数(difficulty),这个值决定了计算Hash的难度。区块链协议规定,使用一个常量除以难度系数,可以得到目标值(target)。所以,难度系数越大,目标值越小。
    target = targetmax / difficulty
    而hash的有效性跟目标值密切相关,只有小于目标值的hash才算有效的,并且由于目标值非常小,hash小于该值的机会就极其渺茫。这就是采矿如此之慢的原因
    区块头里面还有一个Nonce值,代表了计算hash重算的次数。
    eg:第十万个区块的难度系数是14484.16236122,它的Nonce值为274148111。也就是说明了在1W4左右的难度系数下,计算机计算了2.74次才得到一个有效的Hash,改区块才能加入区块链。

  • 难度系数的动态调节
    由于采矿很难,所以无法保证正好十分钟产出一个区块,因为有时一分钟就算出来了,有时几小时可能也没结果。
    为了将产出速度恒定,区块链设计者(中本聪)设计了难度系数的动态调节机制–难度系数每两周(2016和区块)调整一次。如果这两周内,区块的平生产出速度是9分钟,那么难度系数就要提高10%;如果平均生成速度是11分钟,就意味着难度系数要降低10%难度系数越来越高(目标值越来越小),导致采矿越来越难
    总体来看,随着硬件设备的提升,以及矿机的数量增长,计算速度一定会越来越快。

  • 区块链的分叉
    如果两个人同时向区块链写入数据(同时有两个区块加入),因为他们同时都连着前一个区块,就形成了分叉。这时应该采纳哪一个区块呢?

    现在的规则是,新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先打到6个新区块(称为”六次确认”)。按照10分钟一个区块算,一个小时就可以确认。

    由于新区快的生成速度有计算能力决定,所以这条规则就是说:拥有大多数就算能力的那条分支,就是正宗的比特链

  • 总结
    区块链是无人管理的分布式数据库。2009年至今已经运作了8年多。没出现大的问题证明了它的可行性。
    为了保证数据的可靠性,区块链的代价一就是效率,数据写入区块链,最少要等待十分钟,所有节点都同步数据,则需要更多的时间;二是能耗,区块的生成需要矿工进行无数无意义的计算,这是非常耗费能源的。
    导致区块链的适用场景非常有限。

1. 不存在所有成员都信任的管理当局
2. 写入的数据不要求实时使用
3. 挖矿的收益能够弥补本身的成本
    如果无法满足上述的条件,那么传统数据库是更好的方案。  

  • 目前区块链的最大应用场景(也可能是唯一应用场景),就是一比特币为代表的加密货币。

  • 以上内容均总结于阮一峰大神的博客。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值