1、区块链导论讲师:第一章第一章 区区块链技术发展块链技术发展区块链导论技术演进特点分析应用模式Contents1.11.21.3区块链导论1.1 1.1 技术演进技术演进技术起源u 1976年,Diffie和Hellman奠定了公钥密码学的发展方向,开创了公钥密码学的新纪元。u 1977年,美国麻省理工学院Rivest、Shamir和Adleman提出RSA公钥密码算法,公钥密码学的研究进入快速发展阶段。u 1980年,计算机科学家Ralph Merkle提出了Merkle-Tree算法,用作分布式网络中数据同步正确性的校验。u 1982年,Lamport提出拜占廷将军问题,标志着分布式网络与计
2、算的可靠性理论和实践进入到实质性阶段。同年,David Chaum提出不可追踪的密码学支付系统,密码学匿名现金系统ECash就是以此为先驱的。1区块链导论技术起源u 1985年,Koblitz和Miller独立提出的椭圆曲线加密(ECC)算法,只需较短的密钥即可达到RSA算法相同的加密强度,降低加密复杂度。u 1993年,“智能合约”的概念由Nick Szabo提出,并于1994年提出理论研究,最终由区块链技术解决并实现。u 1997年,英国的密码学家Adam Back发明了哈希现金,提出第一代工作量证明机制(PoW)算法,是区块链技术的核心要素之一。同年,Haber和Stornetta提出用
3、时间戳的方法保证数字文件安全的协议成为比特币区块链协议的原型。2区块链导论技术起源u 1998年,密码学货币的完整思想正式出现,密码学家David和Nick Szabo同时提出了密码学货币的概念。其中David发明了B-money,Nick Szabo则发明了Bitgold。u 1999到2001的三年时间内,Napster、EDonkey 2000和BitTorrent先后诞生,奠定了P2P网络计算的基础。u 2001年,美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)发布了SHA-2系列算法(Secure H
4、ash Algorithm,安全散列算法),其中包括目前广泛应用的SHA-256算法,这也是比特币最终采用的哈希算法。3区块链导论技术起源u 2004年,Hal Finney推出了自己的电子货币版本,采用了可重复使用的工作量证明机制(RPoW),为比特币的诞生奠定了基础。u 2008年11月16日,中本聪发布了比特币代码的先行版本。u 2009年1月3日,中本聪在一个小型服务器上创建了比特币的第一个区块创世区块(Genesis Block),并获得了其预先设定好的“首矿”奖励50个比特币。4区块链导论区块链发展u 区块链1.0u 区块链1.0为区块链发展的第一阶段,以数字货币的相关应用为起点,
5、以比特币为代表的虚拟货币是区块链技术目前最成功的应用之一。u 2009年初,比特币网络正式上线运行。2010年9月,第一个矿场Slush发明了多个节点合作挖矿的方式,成为比特币挖矿这个行业的开端。2011年4月,比特币官方有正式记载的第一个版本(bitcoin0.3.21)发布。它支持UPNP(Universal Plug and Play),通用即插即用。5区块链导论区块链发展u 区块链1.0u 数字货币的发展体系分为四个部分:比特币区块链;使用比特币区块链协议但不使用比特币的系统,如万事达币、彩色币、合约币等;同时使用独立货币和独立的区块链系统,比如以太坊、瑞波、莱特币和未来币等;侧链,采
6、用独立的网络,但是以比特币作为底层货币的系统,如BTC Relay等。6区块链导论区块链发展u 区块链2.0u 区块链2.0为区块链发展的第二阶段,由数字资产开启,运用于其他金融领域,如银行结算、跨境支付、股权登记转让等。u 2013年11月,Vitalik Buterin发起了Ethereum(以太坊)项目,并在12月发布了以太坊白皮书的首个版本。u 区块链技术适合于智能合约。智能合约是将纸质合约数字化,能被计算机自动执行。智能合约具备两个功能:一个是现实产生的合同,另一个是不需要第三方的、去中心化的、公正、超强行动力的执行者。u 区块链2.0也被称为区块链可编程时代,实现智能合约与区块链技
7、术的结合。7区块链导论区块链发展u 区块链3.0u 从技术的角度来看,以太坊、Corda、ZCash等区块链项目并起,为商用分布式应用设计的区块链操作系统(EOS)逐步实现,可实现分布式应用的性能扩展;同时,区块链技术的共识机制目前也日渐成熟。另外,区块链技术占用的算力也大幅度提高,莱特币还率先实现了隔离见证的技术。u 从行业的角度上看,区块链在全球范围内票据、证券、保险、防伪、存证、溯源、知识产权等十几个领域都有了区块链应用的成功案例。国内国际多家大的金融机构、银行、其他传统企业,也都纷纷建立自己的区块链项目。8区块链导论区块链导论1.2 1.2 特点分析特点分析特点分析u 区块链定义u 区
8、块链实质上是一种分布式记账本,它是P2P网络、共识机制、加密算法等多种计算机技术的集成应用技术。u 狭义的区块链技术是一种以时间顺序排列的链式数据结构,并通过哈希函数等密码学技术保证了数据的不可篡改、不可伪造。u 广义的区块链技术是利用区块的链式数据结构以存储数据、利用链式数据的前后关系验证数据、利用分布式节点生成数据、利用共识算法来更新数据、利用密码学保证数据真实性、利用智能合约保证协议的不可违约性的一种具备高拓展性、高安全性的分布式数据系统。9区块链导论特点分析u区块链特性u 去中心化:去中心化:区块链数据的验证、记账、存储、维护和传输等过程都是基于分布式网络架构,无需第三方机构或中心机构
9、。系统中的所有节点之间都可以自由通信,都共同存储着区块数据。u 透明性:透明性:区块链系统整体上是开放透明的,除节点私钥以外,网络中的节点信息、区块链中存储的数据对所有参与者公开,区块链的源代码也对所有人公开。u 自治性:自治性:区块链系统采用特定的经济激励机制来保证分布式系统中所有节点均可参与数据区块的验证过程,并基于预先设定好的规范或共识协议来增加新区块。10区块链导论特点分析u 区块链特性u 不可篡改性:不可篡改性:区块链技术使用了哈希函数以及非对称加密等对区块数据进行加密,确保了数据和信息的基础安全;同时借助分布式系统、经济激励、共识机制,使大部分节点自发地抵御攻击,保证区块链数据不可
10、篡改和不可伪造。u 可追溯性:可追溯性:区块链的链状结构保存了从第一个区块开始的所有历史数据,连接的形式是后一个区块存储前一个区块的哈希值,区块链上任意一条记录都可通过链式结构追溯源头。u 准匿名:准匿名:区块链系统采用由用户公钥转化而来的地址来确认用户信息。用户在参与区块链系统的交互时,只需要公开地址,不需要公开真实身份,具有交易的准匿名性。11区块链导论区块链导论1.3 1.3 应用模式应用模式应用模式u 分类u 根据网络范围、开放程度的不同,可将区块链的应用模式分为公有链(Public Blockchain)、私有链(Private Blockchain)和联盟链(Consortium
11、Blockchain)。12区块链导论应用模式u 公有链u 公有链是一种非许可链(Permissionless Blockchain),世界上任何个体或团体都可以发送交易,且交易能够获得该区块链的有效确认,任何人都可以参与其共识过程的区块链。u 公有链是真正意义上的完全分布式的区块链系统,通过哈希函数的性质与区块链的结构保证区块链数据的不可篡改,同时将加密算法验证和经济上的激励相结合。u 公有链遵循的原则:每个人从中可获得的激励与对共识过程作出的贡献成正比,从而在陌生的网络环境中建立共识机制,形成去中心化的信用机制。13区块链导论应用模式u 公有链u 公有链是出现最早的区块链应用模式,也是目前
12、使用最广泛的区块链应用模式。目前网络上大量出现的各种虚拟数字货币均基于公有链。u 公有链的两个特点:用户与开发者隔离,在公有链中,程序开发者无权干涉用户,因此用户的各种应用不会受到程序开发者的影响。全部区块链数据处于公开状态。14区块链导论应用模式u 私有链u 私有链是一种许可链(Permissioned Blockchain),是指在一个相对较小范围内建立、仅供小范围内应用的区块链,私有链上的读写权限、参与记账权限按私有组织规则来制定。u 私有链的价值主要是提供安全、可溯源、不可篡改、自动执行的运算平台,同时还可以防范来自内部和外部对数据的安全攻击。15区块链导论应用模式u 私有链u 私有链
13、的三个特点:交易速度大幅提升。安全性大幅提高。交易成本大幅降低。16区块链导论应用模式u 联盟链u 联盟链也是一种许可链,一般是由某个群体内部指定多个预选的节点为记账节点,每个区块的生成由所有的预选节点共同决定,其他接入节点可以参与交易,但不参与记账过程,任何节点都可以通过该区块链开放的API进行限定查询。u 联盟链具备了“去中心化”的特点,它相当于在某个有限的范围内构造了一种公有链,建立了联盟链后,联盟的参与者按区块链的共识机制进行交易的验证和确认,不再需要外部的中心化信任机构,这可以在一定程度上减少流程的损耗,提高交易速度和效率。17区块链导论区块链导论谢谢!谢谢!区块链导论讲师:第二章第
14、二章 区区块链系统框架及技术块链系统框架及技术区块链导论数据层网络层共识层Contents2.12.22.32.42.62.5应用层合约层激励层1区块链系统u 区区块链支撑技术:块链支撑技术:区块链系统是由多种技术相互支撑构成的系统,包括数据区块、时间戳、数字签名、P2P网络、共识算法等,此外还包括Merkle树、UTXO模型(Unspent Transaction Output)等。区块链导论2区块链系统u 系统架构:系统架构:系统层次由高到低分别是应用层、合约层、激励层、共识层、网络层以及数据层。下图为区块链基础架构模型。区块链导论3区块链导论2.1 2.1 数据层数据层数据区块u构成:构
15、成:区块链的数据区块包括区块头和区块体。具体如下图所示。u 区块头:区块头:包含当前区块的版本号、时间戳、当前区块的随机数、Merkle根信息、以及前一区块的哈希值和本区块的哈希值等。u 区块体:区块体:主要包含交易计数和交易详情的交易列表。区块体中的Merkle树会对记录的各个交易进行签名,来保证交易的不可伪造,通过Merkle树的哈希值计算过程产生唯一的Merkle根。4区块链导论链式结构u区块链采用链式结构记录数据,每个参与竞争记账权的节点称为矿工,矿工将当前区块与区块主链上的最末端区块链接,就形成了从初始区块到当前区块的一条区块链,这条区块链记录了所有的交易数据,使得在该条区块链之上的
16、所有数据历史都可以被追溯和查询。5区块链导论链式结构u区块链的链接模型如下图。其中上一区块的哈希值实际上是指上一个区块头部的哈希值,而计算随机数规则决定了哪个矿工可以获得记录区块的权力。u若不同地区的两个矿工同时在当前区块主链上链接新的数据区块时,系统约定在后续区块链接时,将通过计算和比较,将数据区块链接到长度最大的备选链上,形成新的主链。6区块链导论区块链链接模型时间戳u定义:定义:时间戳表示数据在特定时间已经存在的可验证的数据。u意义:意义:u区块链中每个数据区块头都需要加盖时间戳,来记录区块的写入时间,保证每个区块按顺序依次链接,后一个区块的时间戳可以对前一区块的时间戳进行增强,为区块链
17、应用于时间敏感的领域奠定了基础。u保证区块链数据的不可篡改和伪造。7区块链导论哈希函数u定义:定义:哈希函数,也称散列函数,实现将任意长度的输入转换为固定长度的输出。哈希函数值是指由固定长度的数字和字母组成的字符串,区块链通常直接保存哈希函数值,而非原始数据。u特点:特点:具有单向性、易压缩、高灵敏、抗碰撞等特点,适用于存储区块链中的数据。8区块链导论Merkle树u定义:定义:Merkle树是数据结构中的一种树,可以是二叉树,也可以是多叉树,它具有树结构的所有特点。u Merkle二叉树会将区块链中的数据分组进行哈希运算,向上不断递归运算产生新的哈希节点,除底层哈希节点外,其余哈希节点都包含
18、两个相邻的哈希值。Merkle二叉树的根保存在区块头中,其余部分保存在区块体中。u意义意义:Merkle树使得区块头只需包含该区块记录的所有交易经过不断递归运算最终形成的哈希值;同时使得节点在不了解整个区块的情况下,对是否包含某一交易进行验证,极大提高了区块链的运行效率。其作用主要是快速归纳和校验区块数据的完整性。9区块链导论非对称加密u定义定义:非对称加密也称公钥加密,需要两个非对称的密钥,分别是公钥和私钥,其中公钥对所有人公开,私钥自己保存。u意义:意义:u 非对称加密用于保证系统安全性及所有权验证问题。常见的非对称加密算法包括RSA、Elgamal、ECC等,区块链系统中使用的是椭圆曲线
19、加密算法ECC。u 非对称加密除了对数据进行加密外,还可用于数字签名认证,通过私钥签名的交易可以使用对应的公钥对其进行验证,从而对交易发起者进行验证。区块链导论10区块链导论2.2 2.2 网络层网络层网络层u 网络层封装了区块链系统的组网方式、消息传播协议和数据验证机制等要素。u 网络层的设计是为了保证区块链中各个节点间的通信,通过特定的协议和机制,使得每个节点都能参与记账和数据校验等。同时保证数据区块是经过大部分节点验证后才记入区块链中的。11区块链导论网络结构u 区块链系统一般采用P2P网络来组织各个节点参与验证和记账。u P2P 网络是一种不需中心服务器、而是依靠节点间沟通的体系。P2
20、P网络示意如下图所示。网络中的每个节点地位平等,既产生信息,也接收信息,每个节点都承担网络路由、数据验证等功能。12区块链导论P2P网络示意图网络结构u 网络节点根据存储数据量的不同,可以分为全节点和轻量级节点。u 全节点:全节点:存储了从创始区块以来的所有区块链数据,在进行数据校验时不需依靠别的节点,仅依靠自身就可以完成校验更新等操作,但全节点部署时硬件成本较高。u 轻量级节点:轻量级节点:存储部分数据信息,在需要别的数据时可以通过简易支付验证方式向邻近节点请求所需数据来完成验证更新。13区块链导论数据传播协议u 区块链网络交易信息的公布方式是广播,存在两种广播机制:交易广播和区块构造广播。
21、u 交易广播:交易广播:指生成交易的节点将交易信息传播给相邻节点,相邻节点验证后继续传播给其相邻节点,通过节点间的相互传播,使得交易信息快速被网络中的所有节点所接收,若多数节点(51%)接收,则交易通过;若交易信息有错,不再进行广播。u 区块构造广播:区块构造广播:指找到正确随机数后对其进行广播,其他节点进行验证,若大部分节点验证通过,则确认记账权,生成新区块。14区块链导论数据验证机制u 数据验证机制是指节点对广播的交易信息和区块进行验证的过程。区块链没有中心机构进行交易信任校验和保证,因此每一项交易都需要依靠全网节点的验证来保证,至少经过多数(51%)节点验证的交易才能取得信任。u 在比特
22、币系统中,每个节点都时刻监听区块链网络中广播的交易数据与新区块。节点会收集网络中已经广播但未确认的交易和区块,按照预先定义的标准,从不同方面验证交易数据和区块的有效性,并将有效的交易数据整合至当前区块中。15区块链导论区块链导论2.3 2.3 共识层共识层共识层u 共识层封装了各种共识算法。在分布式系统中,决策权越分散的系统达成共识的效率越低,但系统稳定性高;决策权越集中的系统达成共识效率高,但稳定性差。u 区块链共识技术的优势之一是在去中心化的系统中使节点间对区块数据有效性保持一致。16区块链导论PoW共识uPOW工作原理工作原理u 工作量证明(Proof of Work,PoW)共识机制是
23、通过节点间的算力竞争来保持共识及数据一致,即对于工作量的证明,是生成要加入到区块链中的一笔新的交易信息(即新区块)时必须满足的要求。u 在基于工作量证明(PoW)机制构建的区块链网络中,节点通过计算随机哈希散列的数值解争夺记账权,求得正确的数值解以生成区块的能力是节点算力的具体表现。工作量证明机制具有完全去中心化的优点,节点可以自由进出。17区块链导论PoW共识u POW优缺点优缺点u 在比特币系统中,判定竞争结果是通过工作量证明(PoW)的机制来完成的。PoW的主要特点是计算的不对称性,工作端需要经过长时间运算得到结果,而验证端可以很容易通过结果对工作端所做工作进行检验。u PoW共识机制具
24、有重要的创新意义,但要求的强大算力造成了大量资源浪费,而且交易确认时间过长,不适合小额交易的商业应用。17区块链导论PoS共识 u POS原理原理u 权益证明(Proof of Stake,PoS)共识解决PoW共识机制需要强大算力造成的资源浪费问题,使用权益证明来替换工作量证明。u PoS要求用户证明拥有某些数量的货币,节点对特定数量货币的所有权称为币龄,每次交易都将消耗特定数量的币龄。u POS特点特点u PoS共识过程中挖矿难度与交易输入的币龄成反比。在挖矿过程中,消耗币龄最高的区块将被链接。u PoS共识过程依靠内部币龄,不需大量耗费电力和能源,很大程度上解决了PoW共识机制中资源浪费
25、的问题,同时也缩短了共识时间。但依据权益来选择会导致首富账户的权力过大,甚至支配记账权。18区块链导论 DPoS共识u 股份授权证明(Delegated Proof of Stake,DPoS)共识机制中节点可以自主的选择其信任的节点,利用权益人股票的权力来公平民主的解决共识问题。所有的网络参数,包括交易费用、生成块的时间以及交易大小,都可以通过选出来的代理人来调整。u 比特股(Bitshare)是一类采用DPoS机制的加密货币,其引入了见证人的概念。见证人可以创造区块,比特股持有者选出的N个见证人可以视为N个矿池,每个矿池的权利完全平等,若这些见证人(矿池)提供的算力不稳定、计算机宕机,持股
26、人可以随时通过投票更换见证人。u DPoS是目前看到的最快、最高效、灵活的共识模型,减少了参与验证和记账的节点数量,实现了快速的共识验证。19区块链导论区块链导论2.4 2.4 激励层激励层激励层u 激励层:激励层:激励层提供一定的激励措施鼓励节点参与区块链的日常运作以及共识验证工作。为了鼓励节点参与区块链的运作,例如数字货币等区块链一般会使用特定数量货币的奖励给区块创建者。u 激励层将经济因素集成到区块链技术体系中。在公有链中,区块链系统遵循着激励机制奖励获得记账权的节点,让整个系统朝着良性循环的方向发展。在私有链或联盟链中,不一定需要进行激励。20区块链导论区块链导论2.5 2.5 合约层
27、合约层应用模式u 合约层:合约层:合约层是区块链2.0新出现的拓展架构,但却是区块链延伸各种应用功能的必要支撑,极大地提升了区块链的可拓展性。合约层由合约虚拟机与智能合约两部分组成。u 合约虚拟机:合约虚拟机:是区块链中智能合约的运行基础,为合约代码提供了沙盒式的执行环境。合约虚拟机本身一般不存储到区块链上,而是与区块链并行存储到各个节点计算机中。每个校验节点都会运行合约虚拟机,并将其作为区块有效性校验协议的一部分。21区块链导论应用模式u 智能合约:智能合约:是一种旨在以信息化方式传播、验证或执行合同的计算机协议。以太坊是应用智能合约最早且最成功的区块链,大多数合约虚拟机都是仿照以太坊虚拟机
28、(Ethereum Virtual Machine,EVM)设计。以Solidity语言实现方法为例合约层的整体运作流程如下图。22区块链导论 合约层运作流程区块链导论2.6 2.6 应用层应用层应用模式u 应用层:应用层:应用层又称为业务层,它封装了区块链的各种功能业务与各个行业的应用场景。u 传统的应用层包括数字货币交易平台、数字货币投资平台和数字货币钱包等,在进入区块链3.0后,区块链的应用层便不再仅限于货币交易应用,更多地在于信息的数字化、管理的数字化、资产的数字化,在于应用模式的全方位变化。23区块链导论区块链导论谢谢!谢谢!区块链导论讲师:第三章第三章 密码学技术密码学技术区块链导
29、论哈希算法Merkle树公钥密码算法Contents3.13.23.31密码学技术u 密码算法:密码算法:密码算法是区块链构筑安全、可信的存储与交易网络的核心。u 区块链系统中,使用哈希函数和公钥密码技术等密码学技术。u 哈希函数是实现区块链完整性保护的主要工具,区块链系统中至少包含2个层级的完整性保护。u 公钥密码算法的提出有效地解决了密钥分发传输的问题,私钥加密-公钥解密的应用模式有效解决签名问题。区块链导论2区块链导论3.1 3.1 哈希算法哈希算法哈希函数u定义:定义:哈希(Hash)函数又称散列函数,它是一种单向密码体制,即一个从明文到密文的不可逆映射,能够将任意长度的输入映射成固定
30、长度的输出,即散列值。常用于实现数据完整性和实体认证等。u 数学表述:数学表述:h=H(m),其中H指哈希函数,m是指任意长度的明文,h是固定长度的哈希值。哈希函数对于不同的输入可以获得不同的哈希值,如果出现对于不同的输入获得了相同的哈希值则称为哈希碰撞。3区块链导论哈希算法u特点特点u 单向性:单向性:对于给定的哈希值h,要找到m使得h=H(m)计算上是不可行的。u 易压缩:易压缩:对于任意大小的输入m,哈希值h的长度都很小且固定长度。u 高灵敏:高灵敏:每一位输入的变化输出都会引起输出值发生巨大的变化。u 抗碰撞:抗碰撞:哈希函数的抗碰撞性是寻找两个不同的、能够产生碰撞的消息在计算上是不可
31、行的。4区块链导论哈希函数u 哈希函数:哈希函数:主要用于数据加密、区块生成及链接、共识计算的工作量证明等。u 哈希指针:哈希指针:是一种数据结构,用来链接区块,与指针不同的是,通过哈希指针不仅能确定数据的存储位置,还能确定该数据的哈希值。5区块链导论哈希指针u哈希指针的链接结构如下图。区块链中的每一区块头中都包含该区块的哈希值,后一个区块通过哈希指针与前一个区块相连,并提供前一区块的哈希值。若前一区块的数据发生变化,导致区块哈希值变化,则可以通过哈希指针及时发现数据被篡改。u以比特币系统为例,使用了两个密码学哈希函数:SHA-256和RIPEMD-160。SHA-256哈希函数主要用于加密交
32、易区块的构造,RIPEMD-160哈希函数主要应用于生成比特币地址。6区块链导论哈希指针链接结构SHA-256算法uSHA-256函数属于美国标准与技术局(NIST)发布的安全哈希算法SHA-2系列函数之一。区块链技术使用的是双SHA-256哈希函数将任意长度的原始数据经过两次SHA-256哈希运算后转换为32字节的二进制数字统一存储和识别。uSHA-256算法的输入为长度小于264位的消息,输出是256位的消息摘要,输入消息以512位的分组为单位进行处理。其算法描述如下:u 1.1.消息填充:消息填充:填充一个最高位为1其余位为0的比特串,报文的长度 n(448 mod 512)。然后在消息
33、后附加64位的长度块,其值为填充前消息的长度,从而生成长度为512整数倍的消息分组,填充后消息的长度最多为264位。7区块链导论SHA-256算法u 2.2.初始化缓存:初始化缓存:SHA-256算法会使用一个256bit的缓存来存放该哈希函数的中间值及最终结果。缓冲区一般用8个32位的寄存器A、B、C、D、E、F、H表示,首先要对初始链接变量存储于这8个寄存器中:A=0 x6A09E667 B=0 xBB67AE85 C=0 x3C6EF372 D=0 xA54FF53A E=0 x510E527F F=0 x9B05688C G=0 x1F83D9AB H=0 x5BE0CD19 这些初始
34、化变量是取自前8个素数2、3、5、7、11、13、17、19的平方根的小数部分二进制表示的前32位。8区块链导论SHA-256算法u 3.3.主循环:主循环:消息块是以512位(16个字)为单位进行报文的处理。该算法使用了六种基本逻辑函数,由64步迭代运算组成。每步都以256位缓存值ABCDEFGH为输入,然后更新缓存内容。每步使用一个32位常数值Kt和一个32位的Wt。Kt是常数值,Wt是分组之后的报文。9区块链导论SHA-256算法u 4.4.生成摘要:生成摘要:所有的512-bit分组处理完毕后,对于SHA-256算法最后一个分组产生的输出便是256-bit的报文摘要。u SHA-256
35、算法将原始输入填补分块后,通过数据计算,将细微变化反映在摘要中,保证数据被篡改后可被及时发现;同时在数据计算中,通过不断的运算保证结果唯一及不可逆,从而保证数据的保密性。10区块链导论RIPEMD-160算法uRIPEMDRIPEMD(RACE Integrity Primitives Evaluation Message Digest,RACE原始完整性校验消息摘要)使用MD4的设计原理,并针对MD4的算法缺陷进行改进。u在比特币系统中,RIPEMD-160哈希函数用来生成比特币地址。uRIPEMD-160 同样是使用缓存来存放算法的中间结果和最终的摘要。这个缓冲区由5个32位的寄存器A、B
36、、C、D、E构成,其初始值如下:A=67452301 B=efcdab89 C=98badcfe D=10325476 E=c3d2e1f0。区块链导论11RIPEMD-160算法uRIPEMD处理算法的核心是一个包含10个循环的压缩函数模块,其中每个循环由16个处理步骤组成,在每个循环中使用不同的原始逻辑函数,算法的处理分为两种不同的情况,在这两种情况下,分别以相反的顺序使用5个原始逻辑函数。每一个循环都以当前分组的消息字和160位的缓存值A、B、C、D、E为输入得到新的值。每个循环使用一个额外的常数,在最后一个循环结束后,两种情况的计算结果A、B、C、D、E和A、B、C、D、E及链接变量的
37、初始值经过一次相加运算产生最终的输出。对所有的512位的分组处理完成之后,最终产生的160位输出即为消息摘要。区块链导论12区块链导论3.2 Merkle3.2 Merkle树树Merkle树u定义定义:Merkle哈希树是一类基于哈希值的二叉树或多叉树,其中叶子节点存储数据块的哈希值,非叶子节点则存储该节点对应的所有子节点计算所得的哈希值。u如下图为一个Merkle哈希二叉树。叶子节点“Hash 1”存储数据块“交易1”的哈希值,非叶子节点“Hash 12”存储其子节点“Hash 1”和“Hash 2”组合的哈希值。13区块链导论Merkle树示意图Merkle树14区块链导论uMerkle
38、Merkle树特点树特点uMerkle树中,节点的哈希值都存储在上一级节点里直至根节点。一旦数据被攻击篡改,将导致上级节点哈希指针中的哈希值与本节点不匹配,即使攻击者继续修改上级节点,也不能修改指向根节点的哈希指针,因此数据篡改很容易被发现。uMerkle树使用户可以通过区块头里的Merkle根及哈希值列表来验证某一数据块是否存在于这一Merkle树中。区块链导论3.3 3.3 公钥密码算法公钥密码算法公钥密码算法u 公钥密码算法,又称为双密钥密码算法或非对称密码算法。公钥密码系统使用两个不同的密钥,包括公钥和私钥两种,公钥是指公开的密钥,私钥是指非公开、私有的密钥。通常情况下,发送者通过公钥
39、对信息进行加密,接收方通过私钥对接收到的加密信息进行解密。u 用户还可以使用私钥对自己的交易信息进行数字签名,保证消息传输的完整性,其他用户可使用公钥对消息的签名进行验证。区块链中使用的公钥密码算法是椭圆曲线密码算法。15区块链导论椭圆曲线密码算法u定义:定义:椭圆曲线密码(Elliptic Curve Cryptography,ECC)算法是基于椭圆曲线的一种公钥密码算法。u 1.椭圆曲线的基本概念:椭圆曲线的基本概念:设p为大于3的素数,在有限域Zp上的椭圆曲线 由一个基于同余式 的解集和 一个称为无穷远点的特定点O组成,a,b 是满足 的常数。通过定义适当运算,椭圆曲线E上的点构成Abe
40、l群。记运算为+,设 ,。对于所有的 定义 。如果 且 ,则 。否则 ,其中 可证明E中的点在该运算下构成了Abel群,其单位元为O。对于E中 的元素 ,其逆元为 。16区块链导论23yxaxb23modyxaxbp,ppx yZZpZ324270modabp11=,Px yE22=,QxyEPE=+OP OPP12=xx12yy +=P Q O33+=(,)xyP Q2312xxx3131()yxxy2121211,=3,2yyPQxxxaPQy,x y,x yxy椭圆曲线密码算法u椭圆曲线及其解点的运算的几何意义如下图所示。设 和 是椭圆曲线的两个点,则连接 和 的直线与椭圆曲线的另一个焦
41、点关于横轴的对称点即为 点。17区块链导论11,P x y22,Q xy11,P x y22,Q xy1122+,P x yQ xy椭圆曲线密码算法u 2.椭圆曲线密码:椭圆曲线密码:椭圆曲线密码建立在椭圆曲线解点群的离散对数问题的困难性上,椭圆曲线离散对数问题描述如下:给定群中的点P与点Q,在等式 kP=Q中,已知k和点P求点Q较为容易,而已知点Q和点P求k却十分困难。椭圆曲线密码算法正是基于离散对数问题,例如:使用Q为公钥,k为私钥。18区块链导论椭圆曲线签名与验证签名u 定义:定义:数字签名也称电子签名,是指附加在某一电子文档中的一组特定符号,用于标识签发者的身份以及签发者对文档的认可,
42、并能被接受者用来验证信息在传输过程中是否被篡改。u 数字签名包括密钥生成、签名及验证签名等。其中签名是指签名者对签名消息进行摘要提取,接着利用私钥对其进行签名的过程,验证签名是指验证者获取签名者的公钥,并验证签名是否正确,消息是否被篡改的过程。19区块链导论椭圆曲线签名与验证签名u椭圆曲线签名与验证签名的简要步骤如下:(设Fq为有限域,E为Fq上的椭圆曲线,P是E上的一个有理点,称为基点,P的阶为素数n。)u 1)密钥生成(1)用户A随机选择一个整数a,1an,计算 ;(2)将a作为用户A的私钥,作为用户A的公钥。(3)同理用户B产生的密钥对为 。20区块链导论APaPAP(,)Bb P椭圆曲
43、线签名与验证签名u 2)椭圆曲线数字签名(假设用户A对信息m进行签名,系统有一个哈希函数H。)(1)A随机选择一个整数k,1kn,计算 ;(2)计算 ,如果r=0,则重新选择随机整数。(3)计算 ;(4)计算 ,如果s=0,则重新选择随机整数;则A对m的签名为(s,r)。21区块链导论(,)kPx ymodrxn()eH m1()modskearn椭圆曲线签名与验证签名u 3)验证签名(1)验证是否满足:1rn,1sn,如不满足,则拒绝签名。(2)计算 ;(3)计算 ;(4)计算 ,计算 ;(5)如果 则接受签名。22区块链导论1mod,()wsn eH m1112(,)Ax yu Pu P1
44、1modrxn1rr12mod,moduewn urwn SECP256K1椭圆曲线u椭圆曲线的加密性能随着椭圆曲线参数a,b,G的不同而不同,比特币和以太坊中使用的椭圆曲线是SECP256K1。uSECP256K1椭圆曲线曲线方程为 ,由六元组定义:u(1)素数 ;u(2)a=0;u(3)b=7;23区块链导论baxxy32256329876422222221p SECP256K1椭圆曲线u(4)非压缩形式的基点G为:G=0479BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798483ADA7726A3C4655DA4
45、FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8;u(5)n为G的阶,n=FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D06364141;u(6)协因子h=1。uSECP256K1因为其特定的参数,与其他曲线性能相比可以提高30%,同时可以有效避免后门出现的可能。24区块链导论区块链导论谢谢!谢谢!区块链导论讲师:第四章第四章 共识机制共识机制区块链导论拜占庭容错技术PoW共识机制 PoS共识机制Contents4.14.24.34.44.5其他共识机制DPoS共识机制1区
46、块链导论4.1 4.1 拜占庭容错技术拜占庭容错技术拜占庭容将军问题u问题:问题:拜占庭帝国国土辽阔,每支军队的驻地分隔很远,将军们只能靠信使传递消息。拜占庭帝国在军事行动中,通过将军少数服从多数的集体投票策略选择进攻或者撤退,如果有大部分将军决定进攻,则采取进攻策略,反之选择撤退策略。但是将军或传令官中如果出现叛徒,叛徒会通过传播虚假命令影响其集体投票的结果或统一行动的计划。怎样使得将军们能在一个有叛徒的非信任环境中建立对战斗计划的共识呢?2区块链导论拜占庭容错技术u策略策略:将军们预先制定一种方法或协议,使所有忠诚的将军能够达成一致,而且少数几个叛徒不能使忠诚的将军做出错误的计划。3区块链
47、导论拜占庭将军问题拜占庭容错技术u拜占庭容错技术拜占庭容错技术(BFTBFT):来源于拜占庭将军问题,广泛应用于解决分布式系统容错问题的技术,是由Leslie Lamport提出的关于P2P网络通信的基本问题:在不可靠信道上,通过消息传递的方式难以保证系统状态的一致性。u参与区块链系统共识记账的每一个网络节点相当于将军,节点之间的交易信息传递相当于信使,某些节点可能由于各种原因而产生错误的信息并传达给其他节点。通常,这些发生故障节点被称为拜占庭节点,而正常的节点即为非拜占庭节点。2区块链导论拜占庭容错技术u拜占庭系统普遍采用的假设条件包括:(1)拜占庭节点的行为可以是任意的,拜占庭节点之间可以
48、共谋;(2)节点之间的错误不相关;(3)节点之间通过异步网络连接,网络中的消息可能丢失、乱序并延时到达,但大部分协议假设消息在有限的时间里能传达到目的地;(4)服务器之间传递的信息,第三方可以嗅探到,但是不能篡改、伪造信息的内容和验证信息的完整性。5区块链导论拜占庭容错技术u假设基于拜占庭容错的P2P网络系统是拥有N个节点的系统,则对于每一个请求,该系统需要满足以下条件:(1)当非拜占庭节点有相同的输入信息,则它们会产生同样的结果;(2)如果输入的信息通过验证,非拜占庭节点必须接收这个信息,并输出相应的结果。u基于拜占庭容错的P2P网络系统的实际运作过程中,还需要假设整个系统中拜占庭节点不超过
49、m(mn/2)个,并且每个请求还需要满足安全性和存活性两个指标。(1)安全性:任何已经完成的请求都不能被更改;(2)存活性:能接受并且执行非拜占庭客户端的正常请求。6区块链导论区块链导论4.2 PoW4.2 PoW共识机制共识机制PoW共识机制uPoW共识机制:共识机制:通过算力资源,计算出一个符合规则的随机数,即可获得记账权。uPoW的共识形成过程是俗称的“挖矿”,每个参与竞争记账权的节点称为“矿工”,“挖矿”的过程就是各个“矿工”通过计算资源来竞争同一个难度具有可动态变化和调整的书写问题,并且成功解决该数学问题的“矿工”将获得区块链的记账权。7区块链导论PoW共识机制u以比特币为例,在挖矿
50、过程中,矿工需要不断调整Nonce值,对区块头数据做双重SHA-256哈希运算,使得结果满足给定数量前导0的哈希值。其中前导0的个数,取决于挖矿难度,前导0的个数越多,挖矿难度越大,在每创建2016个区块后将计算新的难度,此后的2016个区块将使用新的难度。挖矿具体过程如下:u 获取16进制的原始区块数据,以80字节长度的区块头数据作为输入;u 不断变更区块头中的随机数Nonce,对变更后的区块头数据做双重SHA-256哈希运算,得到32字节长度的运算结果;u 将运算结果与当前难度值进行比较,如果小于目标难度,即挖矿完成;否则,挖矿失败。8区块链导论PoW共识机制u挖矿难度计算过程如下:u 找