拓展模块6.3 了解区块链的核心技术_第1页
拓展模块6.3 了解区块链的核心技术_第2页
拓展模块6.3 了解区块链的核心技术_第3页
拓展模块6.3 了解区块链的核心技术_第4页
拓展模块6.3 了解区块链的核心技术_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

06信息技术(拓展模块)模块6.3了解区块链的核心技术区块链核心技术有分布式的数据库、密码学的公私钥体系、P2P网络和共识机制6.3了解区块链的核心技术03目录CONTENTS6.3.1区块链的系统架构数据层的核心技术共识层的核心技术6.3.26.3.36.3.5合约层的核心技术激励层的核心技术6.3.46.3.1区块链的系统架构

区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成,每层分别完成一项核心功能,各层之间互相配合,实现一个去中心化的信任机制。(1)数据层-描述区块链技术的物理形式数据层封装底层数据区块,以及相关的数据加密和时间戳等基础数据和基本算法;(2)网络层-实现区块链网络中节点之间的信息交流。网络层则包括分布式组网机制、数据传播机制和数据验证机制等。(3)共识层-让高度分散的节点在去中心化的系统中针对区块数据的有效性达成共识。共识层主要封装网络节点的各类共识算法,主要有工作量证明(ProofofWork)、权益证明(ProofofStake)和股份授权证明(DelegatedProofofStake)算法。(4)激励层-提供一定的激励措施,鼓励节点参与区块链的安全验证工作。激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等;(5)合约层-主要是指各种脚本代码、算法机制以及智能合约等。合约层主要封装各类脚本、算法和智能合约,是区块链可编程特性的基础。(6)应用层-封装了区块链的各种应用场景和案例6.3.2数据层的核心技术1.非对称加密算法(1)互联网传输数据时的问题在P2P网络系统中,节点之间数据传输采用广播的形式,例如A节点向B节点传输信息,A节点首先向相邻节点扩散信息,以此类推,直到信息传送至B。但在此过程中存在如图6-16所示的四个问题。一是窃听,A向B发送信息可能在传输中被C窃听;二是假冒,A以为向B发送了信息,而B有可能是C假冒的,反过来,B以为从A那里收到了信息,而A也有可能是C假冒的;三是篡改,即使B确实收到了A发送的信息,但是,也有可能该信息的内容在传输过程中被C恶意更改了,这种行为叫作“篡改”。四是事后否认,B从A那里收到了信息,但是,作为信息发送者A可能对B抱有恶意,并在事后声称“这信息不是我发送的”。解决上述四个问题所用到的安全技术如表6-1所示。图6-16互联网传输数据时的问题序号互联网传输的问题解决方法1窃听加密2假冒消息认证或数字签名3篡改4事后否认数字签名表6-1互联网中用到的安全技术6.3.2数据层的核心技术1.非对称加密算法(2)加密的基础知识在现代互联网社会中,为了防止信息在互联网中传输被窃听,加密技术是必需要用的,下面简单介绍加密技术的基本原理。首先,计算机识别由0和1这两个数字表示的二进制数据,文本、图像、音频、视频等数据信息在计算机中都是用二进制来表示的,如图6-17所示。在此基础上介绍如何加密数据信息。图6-17计算机只能理解二进制数6.3.2数据层的核心技术1.非对称加密算法(2)加密的基础知识加密就是用“秘钥”对数据进行数值运算,把数据信息变成第三者无法理解的形式的过程,加密后的数据信息称为“密文”,如图6-19所示。反过来,解密就是通过秘钥进行运算,把密文恢复成原本数据信息的过程,把密文恢复成原本数据信息的操作称为“解密”,如图6-20所示。上述,将数据信息变成第三者的计算机无法理解的形式传输,收到的加密数据信息再将其恢复成原本数据信息的一系列操作就是加密技术。图6-19加密运算生成密文图6-20解密运算得到原本数据6.3.2数据层的核心技术2.哈希函数哈希函数是一种求哈希值的加密算法,哈希函数是现代密码体系中的一个重要组成部分,哈希函数常常用于验证信息是否被篡改。哈希函数y=Hash(x)可以将任意长度的信息(输入值x)转化成固定长度(如,64byte)的二进制字符串(输出值y),该输出值称为哈希值,又称摘要、散列。图6-23哈希函数原理示意图哈希函数本质就是一种数学函数,输入的长度可以是任意的,但输出的长度是固定的,相同的数据输入将得到相同的输出结果,哈希函数可以简单理解为搅碎机,把文件搅碎为固定长度的哈希值,如图6-23所示。6.3.2数据层的核心技术1.非对称加密算法(4)非对称加密非对称加密又称公钥加密,是加密和解密使用不同秘钥的一种加密方法,加密用的秘钥叫公开密钥(简称公钥),解密用的秘钥叫私有密钥(简称私钥)。公钥和私钥是一对,如果用公钥加密,只有用对应的私钥才能解密;反之,如果用私钥加密,只有用对应的公钥才能解密。图6-22非对称加密的处理流程下面以如图6-22所示的A准备通过互联网向B发送数据信息的案例,介绍非对称加密的处理流程。首先,需要由接收方B来生成公开秘钥和私有秘钥,并将公开秘钥发送给A;二是A使用B发过来的公开秘钥加密要发送的数据信息,生成密文并发送给B;三是B收到密文,使用私有秘钥对密文进行解密,得到原本的数据信息。非对称加密算法包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。如果加密和解密都使用相同的秘钥,即只有一个密钥(该密钥可以加密也可以解密),称为对称加密,也叫作共享秘钥加密。6.3.2数据层的核心技术2.哈希函数哈希函数适合存储区块链数据的优点在比特币系统中采用的是双SHA256哈希函数,通俗来说就是将不同长度的原始数据用两次SHA256哈希函数进行处理,再输出长度为256的二进制数字来进行统一的识别和存储。单向性哈希函数处理过的数据是单向性的,正向计算(由数据计算其对应的哈希值)十分容易。逆向计算(俗称“破解”,即由哈希值计算出其对应的数据)极其困难。输出值定长哈希函数处理不同长度的数据所耗费的时间是一致的,输出值也是定长的。输入相近输出差异巨大哈希函数的输入值即使只相差一个字节,则将得到一个千差万别的结果,且结果无法事先预知。Hash优点6.3.2数据层的核心技术3.默克勒(Merkle)树Merkle树是数据结构中的一种树,可以是二叉树,也可以是多叉树,它具有树结构的所有特点,使用它可以快速校验大规模数据的完整性。比特币区块链系统中的采用的是Merkle二叉树,它被用来归纳一个区块中的所有交易信息,最终生成这个区块所有交易信息的一个统一的哈希值,区块中任何一笔交易信息的改变都会使得Merkle树改变。图6-23哈希函数原理示意图Merkle二叉树的工作原理是将非叶子节点的所有子节点进行组合,对组合结果进行哈希计算得到哈希值,向上不断递归运算产生新的哈希节点,最终只剩下一个Merkle根存入区块头中,每个哈希节点总是包含两个相邻的数据块或其哈希值,如图6-23所示。6.3.2数据层的核心技术4.区块和链(1)区块链结构区块链以区块为单位组织数据。全网所有的交易记录都以交易单的形式存储在全网唯一的区块链中。图6-26区块形成示意图区块是一种记录交易的数据结构。每个区块由区块头和区块主体组成,区块主体只负责记录前一段时间内的所有交易信息,区块链的大部分功能都由区块头实现,如图6-26所示。图6-25区块链结构6.3.2数据层的核心技术4.区块和链(2)区块形成过程在当前区块加入区块链后,下一个区块的生成过程如下。①把在本地内存中的交易信息记录到区块主体中;②在区块主体中生成此区块中所有交易信息的Merkle树,把Merkle树根的哈希值保存在区块头中;③把上一个刚刚生成区块的区块头的数据通过SHA256算法生成一个希值填入到当前区块的父哈希值中;④把当前时间保存在时间戳字段中;⑤难度值字段会根据之前一段时间区块的平均生成时间进行调整以应对整个网络不断变化的整体计算总量,如果计算总量增长了,则系统会调高数学题的难度值,使得预期完成下一个区块的时间依然在一定时间内。6.3.2数据层的核心技术4.区块和链(3)区块链的分叉在区块链中,由矿工挖出区块并将其链接到主链上,一般来讲同一时间内只产生一个区块,如果发生同一时间内有两个区块同时被生成的情况,就会在全网中出现两个长度相同、区块里的交易信息相同但矿工签名不同或者交易排序不同的区块链,这样的情况叫做分叉。图6-27区块链分叉示意图某一节点若收到多个针对同一前续区块的后续临时区块,则该节点会在本地区块链上建立分支,多个临时区块对应多个分支。该僵局的打破要等到下一个区块被链接,系统将保留较长链条的分支。其他分支将会被网络彻底抛弃,如图6-27所示。6.3.2数据层的核心技术5.时间戳和不可篡改性时间戳是指从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,通常是一个字符序列,唯一地标识某一刻的时间,时间戳的工作原理如图6-28所示。在比特币系统中,获得记账权的节点在链接区块时需要在区块头中加盖时间戳,用于记录当前区块数据的写入时间。每一个随后区块中的时间戳都会对前一个时间戳进行增强,形成一个时间递增的链条。6-28时间戳的工作原理示意图时间戳为未来基于区块链的互联网和大数据增加了一个时间维度,使得数据更容易追溯,重现历史也成为可能。同时,时间戳可以作为存在性证明(Proofof

Existence)的重要参数,它能够证实特定数据必然在某特定时刻是的确存在的,这保证了区块链数据库是不可篡改和不可伪造的。6.3.2数据层的核心技术6.数字签名图6-29数字签名原理示意图数字签名就是在发送信息后面加上另一段内容,作为发送者的证明并且证明信息没有被篡改。如图6-29所示,发送者A将要发送的信息用哈希算法处理得出一个哈希值,再用私钥对该哈希值进行加密,得出一个签名。然后发送者再将信息和签名一起发送给接收者。接收者B使用发送者的公钥对签名进行解密,还原出哈希值,再通过哈希算法来验证信息的哈希值和解密签名还原出来的哈希值是否一致,如果这两个摘要相同,则接收方就能确认该数字签名是发送方的,并且信息没有被篡改。6.3.3共识层的核心技术共识层的核心是共识机制,即所有记账节点之间如何达成共识,去认定一个记录(区块)的有效性,它既是共识认定的方法,也是防止篡改的手段。目前,主要的共识机制有:PoW工作量证明算法、PoS股权证明算法和DPoS股份授权证明算法等。1.PoW工作量证明算法—比特币区块链的共识机制工作量证明可以简单理解为一份证明,用来确认你做了一定量的工作。工作量证明机制是比特币、莱特币等所采用的共识机制,矿工通过付出算力来挖矿进而获得相应的区块奖励。工作量证明由比特币引入,可以保证恶意节点不超过51%即可达成共识,是目前区块链最经典、也是最久经考验的共识机制,但是,PoW共识机制也有下列三个缺点。一是51%攻击:当攻击者掌握了全网51%的算力时,其攻击总能成功,因为他总可以让自己的链成为最长的链。因此,全网节点越多,抗攻击能力越强,安全性越好。二是高延迟:区块出现时间的间隔不能太短,出块时间过短意味着挖矿难度降低,会增加多个节点同时算出答案的概率,导致频繁分叉。三是资源浪费:计算机计算密码谜题需要大量的算力,需要高性能的计算机设备、消耗大量电力等资源。6.3.3共识层的核心技术2.POS股权证明算法—以太坊区块链的共识机制权益证明机制(ProofofStake,简称PoS)是对PoW机制的改进,与节点需要做计算工作证明不同,PoS按照各节点拥有的密码货币的数量和时间竞争记账权,这种模式下持有密码货币的数量越多、时间越长,率先“挖出”区块的概率就越高。这种机制类似于利息制度,PoS算法中有一个名词叫做“币天”,是货币数量与持有天数的乘积(例如若持有60个密码货币20天,则币天为1200),各节点每发现一个区块,拥有的币天就会被清零,每清空365个币天,可获得一定数量的新币奖励,(相当于持币利息),如获得0.05个币的利息,可以理解为年利率5%。PoS作为PoW的一种升级共识机制,成功地改进了PoW机制的一些缺陷。一是低延迟:根据每个节点所持有代币的数量和时间,等比例的降低挖矿难度,在一定程度上缩短了共识达成的时间。二是资源消耗少:不再需要消耗大量能源进行计算。PoS的缺点是破坏者对网络攻击的成本低,网络的安全性有待验证。另外拥有代币数量大的节点获得记账权的几率更大,会使得网络的共识受少数富裕账户支配,从而失去公正性。6.3.3共识层的核心技术3.DPoS股份授权证明算法股份授权证明(DelegatedProofofStake,简称DPoS)机制是让每一个持有BTS(比特股的货币)的人对整个系统资源当代表的人进行投票。获得票数最多的101个代表将进行交易打包计算。对此,可以理解为有101个矿池,彼此权利完全对等。那些握着BTS选票的人可以随时通过投票更换这些代表,如果他们提供的算力不稳定或者利用手中的权利作恶,那些愤怒的选民们就会立刻把他踢出整个系统,而后备代表随时顶上去。优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。缺点:选举固定数量的见证人作为记账候选人有可能不适合于完全去中心化的场景。另外在网络节点数少的场景,选举的见证人的代表性也不强。6.3.4激励层的核心技术激励层的核心是发行机制和激励机制,以比特币为例,比特币最开始由系统奖励给那些创建新区块的矿工,该奖励大约每四年减半。刚开始每记录一个新区块,奖励矿150个比特币,该奖励大约每四年减半。依次类推,

到2140年左右,新创建区块就没有系统所给予的奖励了。届时比特币全量约

为2100万个,这就是比特币的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论