分布式服务-区块链

概述

http://www.ruanyifeng.com/blog/2017/12/blockchain-tutorial.html

blockchain-001.jpg

  • 安全,信任,去中心化
  • 特殊的分布式数据库
  • 区块链的作用是存储信息,读写 -> 数据库
  • 任何人都可以架设服务器加入区块链网络
    • 什么是区块链网络?
  • 没有管理员,也无法产生管理员

区块(block)

概述

blockchain-002.jpg

  • 区块链由一个个区块组成,也是名称由来
  • 区块很像数据库的记录,每次写入数据,就是创建一个区块
  • 组成
    • 区块头(Head):当前区块的元信息
      • 生成时间
      • 区块体Hash
      • 上一个区块Hash
      • ...
    • 区块体(Body):实际数据
区块Hash

Hash = SHA256(区块头)
  • 区块Hash被定义为区块头的Hash,由本区块和上一区块共同决定
  • Hash计算的耗时性保证区块篡改的几乎不可行性,除非掌握全网51%以上算力

采矿

  • 由于必须保证节点之间的同步,所以新区块的添加速度不能太快
  • 试想一下
    • 你刚刚同步了一个区块,准备基于它生成下一个区块
    • 但这时别的节点又有新区块生成,你不得不放弃做了一半的计算,再次去同步
    • 因为每个区块的后面,只能跟着一个区块,你永远只能在最新区块的后面,生成下一个区块
    • 所以,你别无选择,一听到信号,就必须立刻同步
  • 区块链的发明者中本聪(假名,真实身份至今未知)故意让添加新区块,变得很困难
    • 他的设计是:平均每10分钟,全网才能生成一个新区块,一小时六个
    • 这种产出速度不是通过命令达成,而是故意设置了海量计算
    • 只有通过极其大量的计算,才能得到一个有效Hash(和区块Hash不是一个概念),从而把新区块添加到区块链
  • 这个过程叫采矿(mining),因为计算有效Hash的难度,好比在全世界的沙子里面,找到一粒符合条件的沙子
  • 计算Hash的机器就叫做矿机,操作矿机的人就叫做矿工

难度系数

概述

blockchain-003.jpg

blockchain-004.jpg

  • 为什么计算Hash这么困难?
    • 不是任意一个Hash都可以,只有满足条件的Hash才会被区块链接受
    • 这个条件特别苛刻,使得绝大部分Hash都不满足要求,必须重算
    • 区块头包含一个难度系数(difficulty),这个值决定了计算Hash的难度
    • 举例来说,第100000个区块的难度系数是14484.16236122
  • 有效Hash机制
    • 区块链协议规定:使用一个常量除以难度系数,得到目标值
    • 值(猜测由矿机自己来给) -> Hash算法 -> Hash值 -> 小于目标值的Hash才是有效的
    • 目标值非常小,Hash小于该值的机会极其渺茫,可能计算10亿次,才算中一次
    • 这就是采矿如此之慢的根本原因
    • 区块头里面还有一个Nonce值,记录Hash重算的次数
    • 第100000个区块的Nonce值是274148111,即计算了2.74亿次,才得到了一个有效的Hash,该区块才能加入区块链
难度系数调节
  • 就算采矿很难,但也没法保证,正好十分钟产出一个区块
  • 有时一分钟就算出来了,有时几个小时可能也没结果
  • 总体来看,随着硬件设备的提升,以及矿机数量的增长,计算速度一定会越来越快
  • 为了将产出速率恒定在十分钟,中本聪还设计了难度系数的动态调节机制
  • 他规定,难度系数每两周(2016个区块)调整一次
  • 如果两周里面,区块的平均生成速度是9分钟,就意味着比规定速度快了10%,因此难度系数调高10%
  • 如果平均生成速度是11分钟,意味着比规定速度慢了10%,难度系数调低10%
  • 难度系数越调越高(目标值越来越小),导致采矿越来越难

区块链分叉

  • 同时有两个区块加入,应该采纳哪一个呢?

     

    blockchain-005.jpg

  • 现有规则

    • 新节点总是采用最长的那条区块链
    • 如果有分叉,将看哪个分支在分叉点后面,先达到6个新区块(称为"六次确认")
    • 按照10分钟一个区块计算,一小时就可以确认
    • 由于新区块的生成速度由计算能力决定,所以这条规则就是说,拥有大多数计算能力的那条分支,就是正宗的区块链

       

      blockchain-006.jpg

总结

  • 区块链代价
    • 效率:10分钟 + 同步时耗
    • 能耗:无数无意义计算
  • 场景
    • 不存在所有成员都信任的管理当局
    • 写入数据不要求实时使用
    • 挖矿收益能够弥补本身成本

       

      blockchain-007.jpg

PBFT

  • 共识机制

比特币

http://www.ruanyifeng.com/blog/2018/01/bitcoin-tutorial.html

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>