区块链技能原理

概述

中本聪在2008年宣布的比特币白皮书中提出了区块链的概念,比特币是现在最大的的区块链运用,它根据密码学原理使得任何达到共同的两边都能够直接进行付出,不需要第三方中介的参加

区块链的每一个区块包括前一个区块的加密散列值,时刻戳以及买卖数据,这样的触及使得区块难以被篡改,以比特币的区块链账本为例,每个区块由前一个区块的加密散列值,若干条买卖数据以及一个随机数构成,矿工经过工作量证明将买卖打包成账本区块以保持区块安全性

区块链技术原理
区块链技能首要处理的是数字钱银中的两大问题:两层付出问题拜占庭将军问题

总的来说:区块链技能是一种以非对称加密技能对买卖进行数字签名,经过工作量证明等共同机制进行记账节点和谐,数据以链式区块形式组织存储的分布式账本技能。

两层付出问题

两层付出(又称一币多付双花进犯double-spending)是同一笔数位钱银能够被重复花用两次或更屡次的情形,是一种数位钱银失利模式的设想。因为数位钱银是采纳电子档案的型态,而电子档案可被复制,所以花用数位钱银,能造成不从原持有者扣除已花用的金额,却能付出“购买”商品与服务的消费的现象,这将随便多出已付出但未扣除的金额,或是使收款者随便收到多重付出的金额,此现象让整体的数位钱银流通量添加,造成“通货膨胀”而导致数位钱银贬值,然后不再让人信赖并愿意持有及流通。任何数位钱银都有避免两层付出的办法。

在传统金融体系中,钱银有着物理实体(贵金属、纸币等),天然避免了两层付出问题。

在区块链之前的数字钱银,是经过可信的中心化第三方组织确保不呈现两层付出问题。

区块链技能经过共同机制分布式账本,不需要可信第三方就能够处理两层付出问题。

拜占庭将军问题

在分布式计算中,不同的计算机经过通讯交流信息达到共同而按照同一套协作策略行动。但有时分,体系中的成员计算机可能出错而发送过错的信息,用于传递信息的通讯网络也可能导致信息损坏,使得网络中不同的成员关于全体协作的策略得出不同定论,然后破坏体系共同性。拜占庭将军问题被认为是容错性问题中最难的问题类型之一。

形象的来说,拜占庭将军问题实际上是分布式网络的简化模型,将军是计算机,而信差是通讯体系,在区块链环境中,咱们能够把每个区块链地址看作一个将军,把区块链之间的点对点通讯看作信差

在区块链中,共同算法被引进处理这个问题

技能完成细节

分布式账本

分布式账本的完成首要根据区块链的独特结构,区块链的独特结构使得咱们能够运用轻节点和全节点来分布式的存储一切买卖以及以较低的开销验证买卖的存在性,从微观视点来说,区块链便是一系列根据哈希值进行链接的区块,每个区块包括区块头和买卖数据两部分,区块链首要借助区块头结构完成数据的不行篡改性,区块的结构以及区块头的结构如下

区块结构

巨细 字段 描绘
4字节 区块巨细
80字节 区块头
1-9字节 买卖计数器 买卖的数量
可变 买卖 记录在区块里的买卖信息

区块头结构

巨细 字段 描绘
4字节 版本号
32字节 父区块哈希值
32字节 merkle根 该区块中买卖的merkle树根的哈希值
4字节 时刻戳 区块发生的时刻
4字节 难度目标 POW算法下的难度目标
4字节 nonce 用于POW算法确认难度目标的随机数

因为区块链实际上是一条依托于前一个区块哈希的链表,当进犯者想要修正链上的某一笔买卖时,它需要修正链上的一切数据

接下来咱们介绍一下全节点和轻节点的概念

全节点储存了区块链上一切的区块,因为其占有的空间较大,全节点一般一个地区只要少量几台

轻节点则运行在每台运用区块链的计算机上,轻节点又名简单付出验证节点,它只存储区块头而不存储区块体,这一特色使其占用空间大大减小,而借助于存储的买卖Merkel跟哈希值,轻节点能够经过向全节点发起Merkel path proof恳求来验证接收到的买卖是否存在与区块链上,因为区块链的不行变性,简单付出节点经过查看一笔买卖所属区块后的区块个数来验证买卖是否双化

**Merkel path proof** 当轻节点需要验证一笔买卖是否存在时,它会向全节点发送一个买卖验证恳求,恳求中携带买卖的区块hash,全节点在找到这笔买卖的方位后返回一条**该买卖到Merkel树顶元素的途径**,轻节点经过校验途径的hash值是否与本地的Merkel根hash共同来验证买卖是否存在

共同机制

区块链网络实际上便是一个分布式网络,对于根据网络的数据同享体系来说,中心化程度越高,体系越简单达到共同,中心化程度越低的体系越难达到共同,而区块链现在首要采用POW和POS机制来确保共同性

工作量证明(proof of work)

工作量证明被运用在前期的比特币中,用于确保比特币网络分布式记账的共同性

POW机制的核心思想是经过引进分布式节点的算力竞争来确保数据共同性和共同的安全性,在比特币中,一切参加挖矿的节点都是在寻觅一个随机数,要求这个随机数双HASH后的哈希值的前n个值等于前一个区块的规定值,n的值取决于前一个区块的难度系数。当挖矿节点找到符合要求的随机数后,该节点就能取得当时节点的记账权,取得必定数额的比特币作为奖赏

**当两个矿工节点同时找到一个符合要求的随机数时怎么办?**

当呈现这种状况时,呈现竞争的一切矿工节点会持续就之前挖到的区块持续进行工作量证明,等待下一个区块生成,选择长度最长的支链添加到主链

权益证明(proof of stake)

POW机制有一个很明显的缺点,大量算力资源被糟蹋在了无含义的计算上,为了处理POW的缺点,以太坊提出了POS机制

POS机制本质上是采用权益证明代替POW的算力证明,在以太坊中,拥有以太币最多的节点挖矿难度最低