单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2019/11/11,#,区块链技术介绍和应用,区块链技术介绍和应用,区块链技术介绍和应用,1,目录,区块链简介,1,特征及分类,2,区块链网络,3,数据结构,4,核心问题,5,目录 区块链简介1 特征及分类2 区块链网络3,2,1.,区块链简介,区块链技术是构建比特币,区块链网络,与交易信息加密传输的基础技术,。它基于密码学原理而不基于信用,使得任何达成一致的,双方直接支付,,从而不需要第三方中介的参与。,互联网上的贸易,几乎都需要借助可资信赖的,第三方信用机构,来处理电子支付信息。这类系统仍然内生性地受制于“基于信用的模式”。,背景,1.区块链简介区块链技术是构建比特币区块链网络与交易信息加密,3,1.,区块链简介,区块链是一个,分布式账本,,一种通过,去中心化,、,去信任,的方式集体维护一个可靠数据库的技术方案。,定义,从数据的角度来看,区块链是一种几乎不可能被更改的分布式数据库。这里的“分布式”不仅体现为数据的,分布式存储,,也体现为数据的,分布式记录,(即由系统参与者共同维护)。,从技术的角度来看,区块链并不是一种单一的技术,而是,多种技术整合,的结果,。,这些技术以新的结构组合,在一起,形成了一种新的数据记录、存储和表达的方式。,1.区块链简介区块链是一个分布式账本,一种通过去中心化、去信,4,区块链的概念首次在2008年末由中本聪(Satoshi Nakamoto)发表在比特币论坛中的论文Bitcoin: A Peer-to-Peer Electronic Cash System提出。,2009年1月3日,中本聪制作了比特币世界的第一个区块“创世区块”并挖出了第一批比特币50个。,2010年5月21日,佛罗里达程序员用1万比特币购买了价值25美元的披萨优惠券,随着这笔交易诞生了比特币第一个公允汇率。,2010年7月,第一个比特币平台成立,新用户暴增,价格暴涨。,区块链的概念首次在2008年末由中本聪(Satoshi Na,5,目录,区块链简介,1,特征及分类,2,区块链网络,3,数据结构,4,核心问题,5,目录 区块链简介1 特征及分类2 区块链网络3,6,2.,特征及分类,特征,去中心,去信任,区块链由众多节点共同组成一个端到端的网络,不存在中心化的设备和管理机构。节点之间数据交换通过数字签名技术进行验证,无需互相信任,只要按照系统既定的规则进行,节点之间不能也无法欺骗其它节点。,开放,共识,任何人都可以参与到区块链网络,每一台设备都能作为一个节点,每个节点都允许获得一份完整的数据库拷贝。节点间基于一套共识机制,通过竞争计算共同维护整个区块链。任一节点失效,其余节点仍能正常工作。,2.特征及分类特征去中心,去信任开放,共识,7,2.,特征及分类,特征,不可篡改,可追溯,单个甚至多个节点对数据库的修改无法影响其他节点的数据库,除非能控制整个网络中超过,51%,的节点同时修改,这几乎不可能发生。区块链中的每一笔交易都通过密码学方法与相邻两个区块串联,因此可以追溯到任何一笔交易的前世今生。,交易透明,双方匿名,区块链的运行规则是公开透明的,所有的数据信息也是公开的,因此每一笔交易都对所有节点可见。由于节点与节点之间是去信任的,因此节点之间无需公开身份,每个参与的节点都是匿名的。,2.特征及分类特征不可篡改,可追溯交易透明,双方匿名,8,2.,特征及分类,分类,联盟链,由若干机构联合发起,介于公有链和私有链之间,兼具部分去中心化的特性。,私有链,建立在某个企业内部,系统的运作规则根据企业要求进行设定,修改甚至是读取权限仅限于少数节点,同时仍保留着区块链的真实性和部分去中心化的特性。,公有链,无官方组织及管理机构,无中心服务器,参与的节点按照系统规则自由接入网络、不受控制,节点间基于共识机制开展工作。,2.特征及分类分类联盟链私有链公有链,9,目录,区块链简介,1,特征及分类,2,区块链网络,3,数据结构,4,核心问题,5,目录 区块链简介1 特征及分类2 区块链网络3,10,3.,区块链网络,交易过程,3.区块链网络交易过程,11,3.,区块链网络,交易过程,第,2,步:,A,将交易单广播至全网,,比特,币就发送给了,B,,每个节点都将收到的交易信息纳入一个区块中,第,1,步:所有者,A,利用他的私钥对前一次交易,(比特货来源),和下一位所有者,B,签署一个,数字签名,,并将这个签名附加在这枚,货,币的末尾,制作成交易单,要点:,B,以,公钥,作为接收方地址,要点:,对,B,而言,该枚比特币会即时显示在比特币钱包中,但直到区块确认成功后才可用。目前一笔比特币从支付到最终确认成功,得到,6,个区块确认之后才能真正确认到帐。,3.区块链网络交易过程第2步:A将交易单广播至全网,比特币就,12,3.,区块链网络,交易过程,第,3,步:每个节点通过解,一道,数学难题,,从而去获得,创建新,区块,权利,,并争取得到比特币的奖励(新比特币会在此过程中产生),要点:,节点反复尝试寻找一个数值,使得将该数值、区块链中最后一个区块的,Hash,值以及交易单三部分送入,SHA256,算法后能计算出散列值,X,(,256,位)满足一定条件(比如前,20,位均为,0,),即找到数学难题的解。由此可见,答案并不唯一,第,4,步:当一个节点找到解时,它就向全网广播该区块记录的,所有盖时间戳交易,,并由全网其他节点核对,要点:,时间戳用来证实特定区块必然于某特定时间是的确存在的。比特币网络采取从,5,个以上节点获取时间,然后取中间值的方式作为时间戳。,3.区块链网络交易过程第3步:每个节点通过解一道数学难题,从,13,3.,区块链网络,交易过程,第,5,步:全网其他节点,核对该区块记账的正确性,,没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块链,。,要点:,每个区块的创建时间大约在,10,分钟。随着全网算力的不断变化,每个区块的产生时间会随算力增强而缩短、随算力减弱而延长。其原理是根据最近产生的,2016,年区块的时间差(约两周时间),自动调整每个区块的生成难度(比如减少或增加目标值中,0,的个数),使得每个区块的生成时间是,10,分钟。,3.区块链网络交易过程第5步:全网其他节点核对该区块记账的正,14,区块链技术介绍和应用课件,15,区块链技术介绍和应用课件,16,区块链技术介绍和应用课件,17,区块链技术介绍和应用课件,18,私钥解锁,私钥解锁,19,区块链技术介绍和应用课件,20,非对称加密选型,基于大整数因子分解问题(IFP)的RSA算法和基于椭圆曲线上离散对数计算问题(ECDLP)的ECC算法。,RSA算法的特点之一是数学原理简单、在工程应用中比较易于实现,但它的单位安全强度相对较低。目前用国际上公认的对于RSA算法最有效的攻击方法-一般数域筛(NFS)方法去破译和攻击RSA算法,它的破译或求解难度是亚指数级的。,ECC算法的数学理论非常深奥和复杂,在工程应用中比较难于实现,但它的单位安全强度相对较高。用国际上公认的对于ECC算法最有效的攻击方法-Pollard rho方法去破译和攻击ECC算法,它的破译或求解难度基本上是指数级的。正是由于RSA算法和ECC算法这一明显不同,使得ECC算法的单位安全强度高于RSA算法,也就是说,要达到同样的安全强度,ECC算法所需的密钥长度远比RSA算法低,非对称加密选型基于大整数因子分解问题(IFP)的RSA算法和,21,3.,区块链网络,节点网络,本章节后续内容,均以比特币网络特性展开阐述,3.区块链网络节点网络本章节后续内容,均以比特币网络特性展开,22,3.,区块链网络,节点网络,任何机器都可以运行一个完整的比特币节点,一个完整的比特币节点包括如下功能:,钱包,允许用户在区块链网络上进行交易,完整区块链,记录了所有交易历史,通过特殊的结构保证历史交易的安全性,并且用来验证新交易的合法性,矿工,通过记录交易及解密数学题来生成新区块,如果成功可以赚取奖励,路由功能,把其它节点传送过来的交易数据等信息再传送给更多的节点,除了路由功能以外,其它的功能都不是必须的。,3.区块链网络节点网络任何机器都可以运行一个完整的比特币节点,23,目录,区块链简介,1,特征及分类,2,区块链网络,3,数据结构,4,核心问题,5,目录 区块链简介1 特征及分类2 区块链网络3,24,4.,数据结构,区块链,区块链以区块为单位组织数据。全网所有的交易记录都以交易单的形式存储在全网唯一的区块链中。,4.数据结构区块链区块链以区块为单位组织数据。全网所有的交易,25,4.,数据结构,区块是一种记录交易的数据结构。每个区块由区块头和区块主体组成,区块主体只负责记录前一段时间内的所有交易信息,区块链的大部分功能都由区块头实现。,区块,4.数据结构区块是一种记录交易的数据结构。每个区块由区块头和,26,4.,数据结构,区块头,版本号,标示软件及协议的相关版本信息,父区块哈希值,引用的区块链中父区块头的哈希值,通过这个值每个区块才首尾相连组成了区块链,并且这个值对区块链的安全性起到了至关重要的作用,Merkle,根,这个值是由区块主体中所有交易的哈希值再逐级两两哈希计算出来的一个数值,主要用于检验一笔交易是否在这个区块中存在,时间戳,记录该区块产生的时间,精确到秒,难度值,该区块相关数学题的难度目标,随机数,(Nonce),,记录解密该区块相关数学题的答案的值,4.数据结构区块头版本号,标示软件及协议的相关版本信息,27,区块链技术介绍和应用课件,28,区块链技术介绍和应用课件,29,区块链技术介绍和应用课件,30,区块链技术介绍和应用课件,31,4.,数据结构,在当前区块加入区块链后,所有矿工就立即开始下一个区块的生成工作。,把在本地内存中的交易信息记录到区块主体中,在区块主体中生成此区块中所有交易信息的,Merkle,树,把,Merkle,树根的值保存在区块头中,把上一个刚刚生成的区块的区块头的数据通过,SHA256,算法生成一个 哈希值填入到当前区块的父哈希值中,把当前时间保存在时间戳字段中,难度值字段会根据之前一段时间区块的平均生成时间进行调整以应对整个网络不断变化的整体计算总量,如果计算总量增长了,则系统会调高数学题的难度值,使得预期完成下一个区块的时间依然在一定时间内,区块形成过程,4.数据结构在当前区块加入区块链后,所有矿工就立即开始下一个,32,目录,区块链简介,1,特征及分类,2,区块链网络,3,数据结构,4,核心问题,5,目录 区块链简介1 特征及分类2 区块链网络3,33,对区块头和nonce进行哈希运算(sha256(str(header)+str(nonce)),,将所得哈希值与目标哈希值进行比较,如果当前nonce值计算的哈希值小于目标哈希值,则挖矿成功。如果这个哈希值不小于目标值,矿工就会修改这个nonce(通常将之加1)然后再试。,其中,,1) 目标哈希值target=2*(256-Difficulty),2) 难度值Difficulty是节点自动调整的,调整规则为 New Difficulty= Old Difficulty*(Actual time of last 2016 Blocks/ 20160 minutes).即:最新2016个区块花费时长与20160分钟(2周,即这些区块以10分钟一个的速率所期望花费的时长)比较所得。,工作量证明,对区块头和nonce进行哈希运算(sha256(str(he,34,5.,核心问题,区块头包含一个随机数,使得区块的随机散列值出现了所需的,0,个数。节点通过反复尝试来找到这个随机数, 这样就构建了一个工作量证明机制。,工作量证明,工作量证明机制的本质是一,CPU,一票,“大多数”的决定表达为最长的链,因为最长的链包含了最大的工作 量。如果大多数的,CPU,为诚实的节点控制,那么诚实的链条将以最快的速度延长,并超越其他的竞争链条。如果想要修改已出现的区块,攻击者必须重新完成该区块的工作量外加该区块之后所有区块的工作量,并最终赶上和超越诚实节点的工作量。,5.核心问题区块头包含一个随机数,使得区块的随机散列值出现了,35,5.,核心问题,同一时间段内全网不止一个节点能计算出随机数,即会有多个节点在网络中广播它们各自打包好的临时区块(都是合法的)。,分叉,某一节点若收到多个针对同一前续区块的后续临时区块,则该节点会在本地区块链上建立分支,多个临时区块对应多个分支。该僵局的打破要等到下一个工作量证明被发现,而其中的一条链条被证实为是较长的一条,那么在另一条分支链条上工作的节点将转换阵营,开始在较长的链条上工作。其他分支将会被网络彻底抛弃。,5.核心问题同一时间段内全网不止一个节点能计算出随机数,即会,36,5.,核心问题,双花,即二重支付,指攻击者几乎同时将同一笔钱用作不同交易。,双花,每当节点在把新收到的交易单加入区块之前,会顺着交易的发起方的公钥向前遍历检查,检查当前交易所用的币是否确实属于当前交易发起方,此检查可遍历到该币的最初诞生点(即产生它的那块区块源)。虽然多份交易单可以任意序的广播,但是它们最终被加入区块时必定呈现一定的顺序。区块之间以,Hash,值作为时间戳则区块,这决定了任意一笔交易资金来源都可以被确定的回溯。,5.核心问题双花,即二重支付,指攻击者几乎同时将同一笔钱用作,37,