zhouxi | 发布于 2018-07-12 03:36:26 | 阅读量 88 |
发布于 2018-07-12 03:36:26 |

1.区块链是什么

  区块链是一种数据的记录的方式,就像平常使用的Excel表格,Word文档一样,按照一定的格式将我们的数据存储在电脑上。与传统的记录格式不同的是,区块链是将产生的数据按照一定的时间间隔,分成一个个的数据块记录,然后再根据数据块的先后关联串联起来,也就是区块链
  区块链是一整套技术组合的代表,在这一组合技术的配合下才能焕发出惊人的能力。区块链系统有很多种,但是无论什么样的区块链系统,其技术部件的组合都是类似的。
  最基本的技术组合如下:
      1. 共识机制
      2. 密码学算法
      3. p2p网络
      4. 交易脚本系统
      5. 区块链账本记账技术

1.1 区块链结构

  区块链,就是区块+链,区块就是指数据块,每个数据块之间通过某个标志链接起来,从而形成一条链,如图:

  以比特币来说,大约每10分钟产生一个区块,区块中主要包含了交易事务数据以及区块的摘要信息。如下为比特币中区块链数据的组成示意图:

  从上图可以看到区块数据在逻辑上分成了区块头区块体,每个区块头中通过梅克尔根关联了区块中众多的交易事务,每个区块之间通过区块头哈希值串联起来。在区块链系统中,一个节点产生的数据或者更改的数据发送到网络中的其他节点接受验证,而其他节点是不会验证通过一个被篡改的数据,因为跟自己的本地区块链账本数据匹配不起来,这是区块链数据不可篡改的一个很重要的设计。
  

BTC†区块头和区块的结构:
  
  区块头描述:

数据项目的更新时间字节大小
Version(版本)区块版本号更新软件后,指定了一个新的版本号4
hashPrevBlock(前一区块的hash)前一区块的256位hash值新的区块进来时32
hashMerkleRoot Merkle(根节点hash值)基于一个区块中所有交易的256位hash值接受一个交易时32
Time(时间戳)从1970-01-01 00:00 UTC开始到现在,以秒为单位的当前时间戳每几秒就更新4
Bits(当前目标的hash值)压缩格式的当前目标hash值当挖矿难度调整时4
Nonce(随机数)从0开始32位随机数产生hash时(每次产生hash随机数时都要增长)4

一个区块的区块结构如下:

数据项描述长度
Magic no(魔法数)总是0xD9B4BEF94字节
Blocksize(区块大小)到区块结束的字节长度4字节
Blockheader(区块头)包含6个数据项80字节
Transaction counter(交易量)正整数v1 = varint1-9字节
Transactions(交易)交易列表(非空)–许多交易

  

1.2 共识机制

  共识就是大家达成一致的意思,区块链是一个分布式的对等网络结构,在这个结构中没有哪个节点是“老大”,所以没有办法让一个节点随意发布的信息让全部节点都同意认可。如何让每个节点通过一个规则将各自的数据保持一致是个很核心的问题。这个问题的解决方案就是制定一套共识算法。
  共识算法其实就是一个规则,每个节点都按照这个规则去确认各自的数据。在区块链系统中,比较常用的共识算法有:Pow(Proof of Work 工作量证明)PoS(Proof of Stake 权益证明),DPoS(Delegate Proof of Stake 委托权益证明),PBFT(Practical Byzantine Fault Tolerance 实用拜占庭容错算法),Paxos ,Raft等。
  区块链系统就是通过这种算法或者共识算法来使得网络中各个节点的账本数据达成一致的。   

1.3 密码学算法

  密码算法在区块链系统中的应用很多而且很巧妙,首先区块之间的链接,不是靠数据地址来关联,而是靠哈希值来关联的。区块链账本对每个区块都会计算出一个哈希值,称为区块哈希。通过区块哈希来串联区块,这有个很好的作用就是,如果有人篡改了其中某个区块数据,那么后面的数据都要进行修改。
  除了整个区块会被计算哈希值外,区块中包含的每一笔事务数据也会被计算出一个哈希值,称为事务 哈希
  每个事务哈希都可以唯一的表示一个事务,对一个区块中所有的事务进行哈希计算后,可以得出一组事务哈希,再通过对这些事务哈希进行加工处理,最终会得出一颗哈希树的数据结构。哈希树的顶部就是树根,称为梅克尔根。通过每个梅克尔根就可以将整个区块中的事务约束起来,只要区块中的事务有任何改变,梅克尔根就会发生变化,利用这点可以确保区块数据的完整性
  密码算法在区块链系统中的应用不止这些,还包括通过密码算法来创建账户地址,签名交易事务等。

1.4 脚本系统

  脚本就是指一组程序规则,这是区块链设计的精髓,脚本系统使得在区块链中可以实现各种各样的业务功能。区块链系统之所以能形成一个有价值的网络,依靠的就是脚本系统。

1.5 P2P网络

  在分布式的网络结构中不存在一个指定服务器,各个节点没办法通过一个服务器来直接交换彼此的身份信息,就只能通过彼此联系并传播信息。在区块链系统中,这一功能一般会定义成一种协议,称为节点发现协议
  除了发现节点外,更重要的一个功能就是同步数据。节点要保持自己的账本数据是最新的,就必须时时更新自己的数据,通过向邻近节点发送数据请求来获得最新的数据,节点彼此都充当服务者和被服务者。

2. 区块链的分类和架构

  通过公式算法达成节点的账本数据一致。通过密码算法确保账本数据的不可篡改以及数据发送的安全性。通过脚本系统扩展账本数据的表达范畴。区块链系统就是一种特别设计的数据库系统或者分布式数据库系统,在这个数据库中可以存储数据货币,也可以存储逻辑更复杂的智能合约,以及范围更广阔的各种业务数据。

2.1 区块链架构

  1. 区块链1.0架构(BTC为代表)
      在这个架构中分为核心节点和前端工具,核心节点中“矿工”功能主要承担两个任务:

    第一个:通过竞争获取区块数据的打包权后将内存池(发送在网络中但是还没有确认进区块的交易数据,属于待确认交易数据)中的交易数据打包进区块,并且广播给其他节点。
    第二个:接受系统对打包行为的数字货币奖励,从而系统通过这种奖励方式完成新增货币的发行。

    架构如图:

      在前端工具中,钱包工具是提供给用户管理自己账户地址以及余额。浏览器则用来查看当前区块链网络中发生的数据情况。RPC客户端和命令行接口都是用来访问核心节点的功能的。核心节点相当于一个服务器,通过RPC服务提供功能调用接口。 

  2. 区块链2.0架构(以太坊为代表)
      区块链2.0架构的代表产品就是以太坊,结构如下图:
      
      与1.0架构相比,最大的特点就是支持智能合约,在以太坊中,使用智能合约开发工具开发合约程序,并且编译为字节码,最终部署到以太坊的区块链账本中。部署后的智能合约是运行在虚拟机上的,称为“以太坊虚拟机”。正是通过这样的智能合约的实现,扩展了区块链系统的功能。   

  3. 区块链3.0架构(linux基金会的超级账本项目为代表)
      在3.0架构中,超越了对数字货币或者金融的应用范畴,而将区块链技术作为一种泛解决方案。结构如下图:
      
      在3.0架构中,数字货币不再是一个必选组件,如果需要可以通过智能合约的方式来实现数字货币。与之前相比,最大的特点就是增加一个网管控制,实际上就是增加了对安全保密的需求支持,并且通过数据审计加强对数据的可靠性管理。   

    3. 区块链分类

3.1 根据网络范围

根据网络范围,可以划分为公有链私有链联盟链

  • 公有链
      公有链就是完全对外开放,任何人都可以任意使用,没有权限的设定,也没有身份认证之类,不但可以任意参与使用,而且发生的所有数据都可以任意查看,完全公开透明。
    特点:在公有链的环境中,节点数量是不固定的,节点的在线与否也是无法控制的,甚至节点是不是一个恶意节点也不能保证。

  • 私有链
      私有链就是指不对外开放,仅在组织内部使用系统,比如企业的票据管理,账务审计,供应链管理等,或者一些政务管理系统。私有链在使用过程中,通常是有注册要求的,即需要提交身份认证。
    特点:在私有链的环境中,节点数量和节点的状态通常是可控的,因此在私链中一般不需要通过竞争的方式筛选区块数据的打包者,可以采用更加节能环保的方式。

  • 联盟链
      联盟链的网络范围介于公有链和私有链之间,通常使用在多个成员角色的环境中。
    特点:联盟链一般用在明确的机构之间,因此与私有链一样,节点的数量和状态也是可控的,也是采用更加节能环保的共识机制。

3.2 根据部署环境

  • 主链
      主链就是部署在生产环境的真正的区块链系统,主链也可以说是由正式版客户端组成的区块链网络,只有主链才是会被真正推广使用的。区块链系统会由于种种原因导致分叉,比如挖矿的时候临时产生的小分叉,此时将最长的那条原始的链条称为主链。

  • 测试链
       就是开发者为了方便大家学习使用而提供的测试用途的区块链网络。

3.3 根据对接类型

  • 单链
    能够单独运行的区块链系统都可以称为“单链”。

  • 侧链
      侧链属于一种区块链系统的垮链技术,主要是由比特币侧链发起的。每一种区块链系统都有自己的优缺点,侧链就是一种将不同的链结合起来,打通信息孤岛,彼此互补。

  • 互联链
      从技术角度来讲,区块链系统之间的互联,可以彼此互补,每一类系统都会有长处和不足之处,彼此进行功能上的互补,如果说每一条链都是一条神经的话,一旦互联起来,就像是神经系统一般,将会给我们的社会发展带来更新层次的智能化。


最后

 后面我会详细分析比特币中的技术



内容更新于: 2018-07-13 05:53:36
链接地址: /blog/post/zhouxi/5d76d458c5fa

上一篇: 比特币地址

下一篇: k8s calico BGP 网络验证

88 人读过
comments powered by Disqus
文档导航