区块链原理与实践- 课件 第1-3章 概述、数据层、网络层_第1页
区块链原理与实践- 课件 第1-3章 概述、数据层、网络层_第2页
区块链原理与实践- 课件 第1-3章 概述、数据层、网络层_第3页
区块链原理与实践- 课件 第1-3章 概述、数据层、网络层_第4页
区块链原理与实践- 课件 第1-3章 概述、数据层、网络层_第5页
已阅读5页,还剩175页未读 继续免费阅读

下载本文档

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

文档简介

第1讲区块链概述本讲内容01.区块链基本技术及概念03.区块链特点02.区块链分类04.区块链在信息时代的作用05.典型技术发展历程06.典型区块链系统07.区块链技术发展方向08.本章小结1区块链

基本技术及概念区块链基本技术分布式账本密码学算法智能合约共识机制区块链基本技术及概念分布式账本中心化与去中心化中心化Centralization客户服务器模式C/S去中心化Decentralization对等网络模式P2P区块链基本技术及概念分布式账本分布式记账分布式账本区块链账本区块链基本技术及概念通俗理解,区块链就是一个分布式账本。区块链中的每一个区块可以理解为一页账本页。一个区块(Block)是由多笔交易记录所组成的。区块一般包括区块头(BlockHeader)和区块体两部分。类似协议报文头部,区块头部一般是固定长度,不同的区块可以设计不同头部。分布式账本区块链账本区块链基本技术及概念构成区块及区块链的核心技术是杂凑函数。杂凑函数(也称杂凑算法),是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数,也被称单向散列函数、哈希函数、hash函数等,它是密码学中重要的一种保证数据完整性的方法。杂凑函数具有单向性、抗碰撞性、可验证性等特点。正因为杂凑函数的这些性质,保证了区块内容的无法篡改。共识机制区块链基本技术及概念共识机制是区块链构建非中心化“信任”网络的核心技术之一。通俗来讲,共识是达成同步、一致的一个过程。共识机制是区块链可靠运行的核心支撑,目前的各类共识机制很难做到同时兼顾系统交易吞吐量和可扩展性。比特币、以太坊等公有链使用的POS或POW类型的共识机制,其优点是能够支持大规模的去中心化网络,其主要缺点是交易效率很低。例如,比特币每秒能够处理的交易数大约为7笔(TPS,transactionper-second,每秒处理的交易数)。联盟链共识机制是目前效率最高的,如PBFT的TPS能达到1000,但目前联盟链的主流共识算法仅支持小规模网络,当节点数量过多时共识机制就会崩溃。共识机制的一种分类方法是将其按照是否存在恶意破坏节点导致不一致,分为“拜占庭算法”和“非拜占庭算法”。共识机制区块链基本技术及概念“拜占庭将军问题”是LeslieLamport在1982年提出的一个假想问题。拜占庭帝国国图辽阔,军队之间相隔很远,军队之间通信需要靠信使传递。当发生战争时,分隔在不同地域的军队需要联合通过信使传递信息,才能进行联合作战获取胜利。但在将军们互相传递信息的过程中,如果出现叛徒将军或者叛徒信使,就会在军队之间传递错误信息,导致无法联合取胜。在可能存在叛徒的情况下,怎样保证忠诚将军之间不受影响的传送并获得一致正确的作战信息?“拜占庭将军问题”所描述的分布式一致性问题就是区块链共识问题。其实质是在可能存在硬件错误、网络拥塞、恶意节点的分布式系统中,怎样达成节点之间的信息一致共识。将考虑存在恶意节点或故障节点的分布式一致性算法称为“拜占庭算法”,将不考虑人为故障的分布式一致性算法称为“非拜占庭算法”。共识机制区块链基本技术及概念以比特币为代表的公有链共识问题除了考虑传统分布式网络中的容错问题外,还考虑了节点可能出现恶意行为的问题,因此属于“拜占庭算法”。这种区块链分布式架构假设在一个不可信分布式网络中,在没有中心节点以及可能存在恶意节点的情况下,要求保证各诚实节点达成对交易内容的一致共识和一致记账。其典型代表如:实用拜占庭容错算法(PBFT),工作量证明机制(POW)、权益证明机制(POS)、股份授权证明机制(DPOS)等。另一种共识协议的分类方法是从如何选取记账节点的角度,现有的区块链共识机制可以分为选举类、证明类、随机类、联盟类和混合类共5种类型共识机制选举类共识PBFT区块链基本技术及概念PBFT算法的缺点:①扩展性较差:计算效率依赖于参与节点的数量,因此仅适用于节点数量较少的区块链系统。②去中心化程度弱。PBFT算法仅适用系统节点固定的联盟链或私有链环境,不适用于完全去中心化的公有链环境。③容错率较低。恶意或故障节点数量必须少于三分之一的系统总节点数量。PBFT算法的优点:①在现有的共识速度较其他共识机制较快,可以实现秒级共识。选举类共识是指矿工节点在每一轮共识过程中通过“投票选举”的方式选出当前轮次的记账节点,首先获得半数以上选票的矿工节点将会获得记账权。例如PBFT、Paxos和Raft等。实用拜占庭容错算法(PBFT)的算法复杂度为多项式级。假设系统内所有节点为3n+1个,故障节点必须小于等于n个。节点被分为主节点和从节点两类。整个算法包括客户请求、主节点序号分配、节点间相互交互、节点相互确认序号并执行客户端请求,节点分别响应客户端等五部分组成。共识机制证明类共识POW区块链基本技术及概念参加计算这一随机数来争夺记账权的节点被称为“矿工”。正如前面介绍的,Hash函数是一个单向抗碰撞函数,已知H()的输入X,计算H(X)是容易的。反之,已知H(X)反推X就是一个困难问题。所谓“挖矿”,就是要给定H(X)值的条件,比如小于某个固定值,求输入X。这里不给定H(X),而是给出H(X)的前几位为0这一限制条件的目的是为了控制求X的难度,以控制获取节点记账权的时间间隔。节点获得了记账权,就意味着可以由记账节点生成区块,比特币系统一般将区块生成时间间隔控制在10分钟左右。求得满足H()要求的随机数x,必须通过大量的穷举性计算获得,这是节点算力的具体表现。证明类共识,被称为“ProofofX”类共识,即矿工节点在每一轮共识过程中必须证明自己具有某种特定的能力,证明方式通常是竞争性地完成某项难以解决但易于验证的任务,在竞争中胜出的矿工节点将获得记账权。例如PoW和PoS共识算法等。比特币中所使用的POW共识算法,俗称为“挖矿”,就是要计算一个给定难度的Hash值的输入值,谁先计算出满足要求的随机数,谁就获取了记账权。由于挖矿需要耗费大量算力,为了鼓励矿工参与争夺记账权,比特币系统会采用特有的激励机制,奖励获取记账权的节点一定额度的比特币,这也是“挖矿”这一名称的来历。共识机制证明类共识POW区块链基本技术及概念如果两个“矿工”同时“挖出”满足条件的随机数,同时生成两个新区块,这时区块链就存在“软分叉问题”。分叉是指同一时间段内全网不止一个节点计算出随机数,可能会存在多个节点在网络中同时广播它们各自打包好的合法临时区块。某一节点若同时收到多个针对同一前续区块的后续临时区块,则该节点会在本地区块链上建立分支。但是这种分支是临时性的,区块链采用“最长合法原则”,等到下一个区块被生成即下一个工作量证明被挖出时,这下一个区块被添加到哪条链上,哪条链被证实是最长的,哪条链就成为合法链。系统自动丢弃分叉短链。为了防止出现分叉,通常一笔交易所在区块上链后续又有5个新链接的区块,也就是这笔交易得到6次确认后,才被认为最后得到了确认。共识机制证明类共识POW算法的缺点区块链基本技术及概念①资源浪费。挖矿行为造成了大量的资源浪费,包括电力资源和计算机算理资源等。②共识时间长。挖矿时间长,而且挖矿过程中存在分叉问题,上链确认时间也长,导致共识时间过长,比如比特币每秒只能进行7笔交易,每笔交易的确认时间一般为1小时。③51%算力攻击。POW算法基于51%假设,如果恶意节点掌握了全网超过50%的算力,就可能对网络进行破坏。以比特币为例,由于奖励比特币的激励机制,导致出现了大量集中的矿池,背离了去中心化的初衷,有可能出现51%算力攻击。POW算法优点:①工作量证明具有完全去中心化的优点,节点可以在不需要认证身份的条件下自由加入和退出网络,因此POW是公链较常使用的一种共识算法。共识机制证明类共识POS区块链基本技术及概念常见的权益证明机制根据每个节点拥有代币的多少和时间,依据算法等比例地降低节点的挖矿难度,从而加快了寻找随机数的速度。比如点点币中拥有最长链龄的比特币获得记账权的几率大。也就是说,在这种共识机制可以缩短达成共识所需的时间,但本质上仍然需要网络中的节点进行挖矿运算。POS算法的缺点:①记账权不够随机。掌握代币量多的节点,获得记账权的几率较其他节点大,容易失去公正性,导致无法实现系统的完全去中心化。POS算法的优点:①共识时间较POW短,同时降低了POW的资源浪费率。权益证明(POS)权益证明机制的运作方式是矿工必须拥有一定数量的代币才能获得竞争记账权力,POS上的“挖矿”是以货币的持有量为基础的。但是,如果仅靠代币量来决定记账权,会出现掌握代币量最多的节点控制记账权的情况,这种共识方法就会变成中心化记账方式。为了避免出现这种情况,不同的权益证明一般需要配合不同的工作量证明(POW)方法来增加记账的随机性。共识机制随机类共识区块链基本技术及概念随机类共识是指矿工节点根据某种随机方式直接确定每一轮的记账节点,例如Algorand和PoET共识算法等。Algorand共识是为了解决PoW共识协议存在的算力浪费、扩展性弱、易分叉、确认时间长等不足。Algorand共识的优点包括:能耗低,不管系统中有多用户,大约每1500名用户中只有1名会被系统随机挑中执行长达几秒钟的计算;民主化,不会出现类似比特币区块链系统的“矿工”群体;出现分叉的概率低于10-18。共识机制联盟类共识DPOS区块链基本技术及概念股份授权证明机制(DelegatedProofofStake,DPOS)尝试通过民主集中制实现共识。股份授权证明机制与董事会投票类似。首先由全体节点投票选举出一定数量的节点代表,由节点代表来代理全体节点确认区块、维持系统有序运行。节点代表轮流生成区块,如果在给定的时间片内无法生成区块,则将权限交给下个时间片对应的节点代表。全体节点可以通过投票随时罢免和任命新代表,实现实时的民主。DPOS算法的缺点:①记账权不够随机。类似于POS,选取固定数量的代表节点记账存在中心化的隐患,无法实现完全去中心化架构。DPOS算法的优点:①共识时间较短。股份授权证明机制可以大大缩小参与验证和记账节点的数量,从而达到秒级的共识验证。联盟类共识是指矿工节点基于某种特定方式首先选举出一组代表节点,而后由代表节点以轮流或者选举的方式依次取得记账权。这是一种以“代议制”为特点的共识算法,例如DPoS等。DPoS不仅能够很好地解决PoW浪费能源和联合挖矿对系统的去中心化构成威胁的问题,也能够弥补PoS中拥有记账权益的参与者未必希望参与记账的缺点。共识机制混合类共识区块链基本技术及概念混合类共识是指矿工节点采取多种共识算法的混合体来选择记账节点,例如PoW+PoS混合共识、DPoS+BFT共识等。通过结合多种共识算法,能够取长补短,解决单一共识机制存在的能源消耗与安全风险问题。共识机制区块链基本技术及概念无论哪种共识算法,均是包含四个阶段的一个循环过程。每一轮循环完成一次共识,生成一个新区块。如图所示,每个循环的四个阶段分别是:第一步,选取记账节点。从全体节点中选取具有记账权的节点。第二步,生成区块。由记账节点按照一定的策略将一段时间的交易打包到一个区块中,并向全网节点进行广播。第三步,验证区块。全网节点收到新打包区块后,分别进行数据的完整性、正确性验证和发送者身份信息等内容验证。如果验证通过,则反馈信息,如果打包新区块得到全网大部分节点的验证认可,则可以作为新区块添加到区块上。第四步,上链记账。记账节点将新区块添加到从创始开始迄今为止最长的一条主链上。完成一次完整共识操作和区块生成上链过程。共识过程的输入是数据节点生成和验证后的交易或数据,输出则是封装好的数据区块以及更新后的区块链。4个阶段循环往复执行,每执行一轮将会生成一个新区块。非对称密码算法区块链基本技术及概念除了杂凑函数外,区块链技术用到的密码学中最多的是公钥密码技术。非对称密码技术也称为公钥密码技术。密码体制可以分为对称密码体制和非对称密码体制两种。对称密码体制,其加密算法和解密算法的密钥是同一个。与对称密码体制不同,在非对称密码体制中,每一个用户都会两个密钥,一个密钥是对外公开的,系统里所有的用户都可以获知的,称为用户公钥;另一个密钥只有用户本人知道,不能透漏给其他任何用户,称为用户私钥。因此,非对称密码算法也被称为公钥算法。一般来说,用户的公钥和私钥需要配合使用,例如使用用户A的公钥对某个信息进行加密,必须使用A的私钥才能进行解密还原信息。正是因为公钥的公开和私钥的私密性质,以及公私钥配合运算的这种特点,使得非对称密码体制可以对信息进行加密,还可以实现对信息的签名。假定Alice想使用非对称密码算法对信息M进行加密,并发送给Bob。这时,Alice会使用Bob的公钥对信息M进行加密。这是因为,只有Bob有对应的私钥才能进行解密还原信息。能够实现这一功能的非对称密码算法被称为公钥加密算法。非对称密码算法区块链基本技术及概念如图所示,假定Alice想与Bob签署一项协议,需要Alice进行数字签名。Alice可以使用自己的私钥对信息进行运算,发送给Bob。Bob收到后用Alice的公钥可以进行验证这一数字签名。因为Alice的私钥只有Alice自己知道,因此可以实现证明Alice的身份、其他人不能伪造Alice操作、以及Alice不能抵赖自己没有签署过或谎称是其他人签署的。也就是说,实现了现实世界的签名盖章效果。能够实现之一功能的算法,称为签名算法。非对称密码算法区块链基本技术及概念在区块链中,公钥加密算法和数字签名算法是其基础支撑技术。比特币的用户地址、钱包就是该用户的公钥进行杂凑运算和编码后的一串乱数。当Alice付给Bob比特币时,首先会使用Alice自己的私钥进行签名,以保证这笔交易确实是Alice付给Bob的。同时还会使用Bob的公钥进行加密,这样只有用Bob的私钥才可以解密,可以保证只有Bob能够领到这笔钱,其他的人都不能够获得这笔钱。由于比特币的用户地址是其公钥,这个公钥里是不包含有用户个人身份信息的,因此具有一定的隐私保护作用。区块链系统能够提高较好的隐私效果,除了个人身份可以使用公钥表示外,主要还是因为其分布式特点。传统金融系统中所有的真实用户身份信息都存在于中心化的第三方机构,致使金融用户的隐私有极高的泄露风险。而区块链支撑的加密货币不存在这一第三方,同时使用公钥作为用户地址实现用户身份的匿名性,即用户不需要提供任何个人身份信息,因此大大提高了对个人身份信息的隐私保护。但是,这种匿名性也不是牢不可破的。如果通过对区块链上交易信息和地址的关联性分析,仍然可以获得用户身份的相关信息,所以区块链技术仅仅是在一定程度上提高了用户的隐私性。在实际中,有些用户为了充分保护其自己的身份隐私,还会设置不止一对公私钥对。这是因为比特币没有所谓账户的概念,只有每个用户的未花费记录UTXO。然而,技术这把双刃剑在为用户提供隐私保护的同时,也为区块链的治理和监管提出了很大的挑战。智能合约区块链基本技术及概念区块链技术之所以能够与各个行业进行广泛结合,智能合约起到了关键作用。上世纪90年代,NickSzabo最早提出“智能合约”这一概念,并将其定义为“执行合约条款的计算机交易协议”。当时的智能合约主要是嵌入到某些物理设备中,用于在没有可信第三方参与的情况下,作为各方共同信任的程序化代理,可以高效安全的自动履行合约并创建对应的智能资产。由于应用场景所限,直到2008年比特币提出之前,智能合约都没能得到普遍关注和应用。区块链技术赋予了智能合约广阔的应用空间,区块链所构建的分布式网络及多节点同时运行智能合约、合约运行结果保持一致、上链确认等特点,为智能合约,也就是为“执行合约条款的计算机交易协议”提供了适合的应用环境。智能合约反过来也为区块链广泛应用提供了基础支撑,可以说是区块链应用的灵魂。通俗来说,区块链上的智能合约就是能够自定义逻辑的程序代码,部署于区块链网络节点上,利用智能合约可以根据实际的应用需求开发出适用于各种场景的区块链应用程序DAPP,是区块链应用的趋势和关键。实际上,智能合约就是一段程序,但这段程序是运行在区块链系统上的。之所以能够产生与运行在传统信息系统上的传统程序所无法达到的“用程序保证约定自动执行,用程序算法代替人仲裁和执行合同”的效果,是因为其所运行的区块链系统环境具有的数据透明、不可篡改、方验证的特点,这些环境特点是传统信息系统所不具备的。截止目前,智能合约主要包括脚本型、图灵完备型和可验证合约型三类。智能合约脚本型智能合约区块链基本技术及概念以比特币为代表的脚本型智能合约,使用基于堆栈的脚本语言,只能够在有限的执行环境里进行简单的处理。这种脚本语言主要依靠操作码,在有限的执行次数内进行算术运算、位运算、密码运算等指令。操作码不具备循环等复杂的功能,是非图灵完备的语言。脚本型智能合约仅有的简单功能所具有的主要优点是可以有效避免因编写疏忽等原因造成的无限循环或其他类型的编程中存在安全隐患,防止更多脚本漏洞被黑客利用,利于可编程货币的安全。但是,其明显缺点是应用场景较窄,仅适合于加密货币类应用。以比特币为例,比特币的每一笔交易都依赖于锁定脚本和解锁脚本。锁定脚本是使用脚本语言在输出交易上添加附加条件,比如付款方要输出到收款方的公钥地址上。与其配合使用的是解锁脚本,要求解锁时,用该公钥地址对应的私钥来解密才能获得相应金额的比特币。智能合约图灵完备型智能合约区块链基本技术及概念图灵完备型智能合约是目前最主流的智能合约。其典型代表是以太坊(Ethernet)和超级账本(HyperLedger)。所谓图灵完备是指能用该类编程语言模拟任何图灵机。图灵完备的智能合约能够使用任意数量的变量,编写出各种复杂逻辑,实现各种操作。与脚本型智能合约相比,具有强大的开发能力。以太坊是第一个提供图灵完备语言的智能合约平台,主要用于构建公有链。其智能合约编写语言主要是Serpent和Solidity,合约代码运行在以太坊虚拟机(EthereumVirtualMachine,EVM)中。超级账本是目前最流行的一种联盟链开发平台。其智能合约称为链码(Chaincode),由Go语言编写,同时也支持Java、Python等其他开发语言。链码运行在Docker容器环境内。智能合约可验证型型智能合约区块链基本技术及概念智能合约创业公司Kadena项目下属的Chainweb项目,主要应用于安全性和效率要求较高的商业交易场合,所提出的编程语言Pact是非图灵完备的可验证智能合约系统,可以直接编写运行在Kadena区块链上,目前该项目正在开发中。总体来说,智能合约具有以下特点:它是部署在节点或区块链上的一段代码,通过事件触发后自动执行合约条款,运行结果会输出到区块链中。智能合约能够及时响应,准确执行,受人为干扰较小。但是目前其功能还较弱,交互性还比较差,调试运行环境与经典程序相比还有一定差距,与一般代码一样,也存在漏洞等安全问题。区块链典型工作流程区块链基本技术及概念从区块链结构角度来说,目前区块链包括块链式结构和图形结构(DAG)两类。目前主流且较为成熟的系统还主要是经典的块链式结构,比如前面所介绍的比特币、以太坊、超级账本等(DAG相关内容将在共识层进行介绍)。本小节主要介绍块链式结构区块链的一般工作流程,一般包括发起交易、广播交易、验证交易、生成区块和区块上链几个阶段。其他相关概念双重支付区块链基本技术及概念区块链来源于比特币,双重支付是比特币为代表的所有数字货币需要解决的问题,其实质是分布式系统的一致性问题。双重支付也称为双花,就是一笔钱被重复使用了两次。在数字货币中,双重支付是一直是困扰数字货币的棘手问题,一笔钱(实际上是一个数字)很容易被发送到两个收款地址并被两个收款人确认。举例来说,假设Carol是一个恶意用户,有3个数字币。他先花3个数字币在Alice那儿买了一本书,Carol将3个数字货币发送给Alice的同时,又使用这3个数字币在Bob那儿买一束花。能够让Carol实现双重支付的一个主要原因是,数字货币极易被无成本的拷贝成多份,同时网络传输有延迟。Carol可以利用网络延时,在Alice确定接收这笔钱之前,使用这3个数字币在Bob处买到一束花。特别是在比特币等去中心化货币系统中,由于没有第三方机构监控,更容易发生双重支付问题。为了防止双花问题,比特币等以区块链为技术支撑的数字货币利用时间戳、共识、签名等方式,较好的解决了去中心化环境下数字货币的双花问题。其他相关概念双重支付区块链基本技术及概念①时间戳在区块的设计中,每个区块头会有一个时间戳记录该区块的生成时间。利用该时间戳,可以区分交易产生的先后顺序。②签名机制在前面的例子中,Carol在付费给Alice或Bob时,需要对支付的3个数字货币用自己的私钥进行签名运算。其目的是证明这笔数字货币确实是Carol认可且花费出去的,根据数字签名的特性,Carol无法对自己的签名过的信息抵赖,因此如果Carol存在双重支付行为,就有据可循。③最长合法原则在以区块链为支撑的数字货币系统中,所有信息对全网公开。如果Carol存在双重支付的情况,则Carol对Alice的交易(简称交易1)和Carol对Bob的交易(简称交易2)均会向全网广播,并会先后被全网所有节点获知。交易1和交易2中只能有1笔会被最终认可。其他相关概念UTXO与交易记录区块链基本技术及概念如图所示,一条交易主要记录了比特币的流转内容,包括交易输入、交易输出两部分。交易输入分为发币交易(CoinBase)输入和普通交易输入。在一个比特币区块记录的多笔交易中,第一笔一般是一个称为“发币交易”的特殊交易,其付款方为比特币系统,也就是新区块生成时,系统奖励的比特币,即通常所说的“挖矿奖励”。所有比特币的产生都是通过挖矿奖励获得的。普通交易输入包括前交易Hash值、前交易输出索引、签名和公钥(通常称为解释脚本)。交易输出包括利用收款人公钥加密后的输出金额和输出地址等。输出地址是收款人的公钥通过杂凑和编码后的乱数。交易输出实际上代表了资金的转移,需要有收款人的私钥才能解密,以及为比特币设定类似花费条件这样的锁定脚本。传统金融交易的核心建立在用户账户上的。其他相关概念UTXO与交易记录区块链基本技术及概念比特币系统的交易与传统基于账户的思维完全不同。在比特币系统中没有传统账户或钱包的概念,只有UTXO(UnspentTransactionOutputs)未花费交易输出的概念。仍以Alice有12.5元要付给Bob2.5元这一交易为例,这里1元代表1个比特币,也就是1B,如图11,为了简化问题,省略了签名加密过程。其他相关概念UTXO与交易记录区块链基本技术及概念比特币交易包括以下几个重点:(1)任何一笔交易的输入总额与交易输出总和相等。每笔交易所有的资金来源(输入)来自以前系统某几个用户的UTXO未花费金额,也就是交易输出。如表中,这笔交易的输入总额来自于Carol的前输出索引号为4的UTXO,总金额为2.5B,该笔交易的输出总额也就是UTXO总额是Carol的1.5B与David的1B的总和,也是2.5B。表1:UTXO例子(2)比特币交易中没有我们熟悉钱包或账户的概念,个人的资产实际上就是通过追随个人的所有“未花费记录”计算出来UTXO值。(3)为了保证输入的真实性,付款人需要用自己的私钥对输入信息进行签名。收款人会用付款人公钥进行验证。(4)输出地址实际上收款人的公钥,只有拥有收款人私钥才能够对解密,获得相应的比特币。2区块链分类区块链分类根据节点进入区块链网络是否需要许可,可以将区块链分为公有链(PublicBlockChain)、私有链(PrivateBlockChian)和联盟链(ConsortiumBlockChain)如下图所示。公有链(Public

BlockChain)私有链(Private

BlockChian)联盟链(Consortium

BlockChain)公有链区块链基本技术及概念公有链是一种完全去中心化的区块链。节点没有准入门槛,所有节点可以随时进入或退出网络,全程无需进行任何身份认证和授权,因此也被称为非许可链(PermissionlessBlockChain)。每个节点享有同样的权利和义务,完全对等、信息完全公开透明,所有节点都有权参与共识,都可以存储一份完整的区块链账本,都可以获知链上所有信息。公有链的记账节点一般通过共识算法产生。共识机制一般使用工作证明量POW或权益证明POS,或者POW和POS混合型的共识机制。与其他类型区块链相比,公有链具有以下特点:①完全去中心化:在陌生节点中建立共识,形成节点间完全对等的网络。②匿名性:节点可以任意进入网络,不需要进行任何约束和证明。与其他类型区块链相比,用户具有较强的匿名性。③激励性:为了保证对等节点愿意为网络做出贡献,公有链一般都设置有激励机制,多数通过发币来激励节点参与共识。每个节点所获得的奖励与其在共识过程中所做的贡献成正比。比特币和以太坊都是采用公有链架构。目前基于区块链的各种虚拟货币基本上都是衍生自比特币,因此也都采用的是公有链形式。私有链区块链基本技术及概念私有链一般运行在一个组织内部,其读写权限和记账权限由组织进行规定。由于节点需要进行身份认证和权限分配,因此是一种许可链(PermissionBlockChain)。私有链一般是半中心化结构,可以采用实用拜占庭容错或非拜占庭容错的共识机制,与公有链相比,其共识效率较高。其主要价值是利用区块链技术提供不可篡改、可追溯、自动执行的高安全高可靠性的运行平台,主要用来在组织内部进行审计追踪、共享数据等。币科学公司(CoinSciences)团队创建的多链(Multichain)是一个开源的私有链开发平台。多链的部署迅速,声称90秒就可以在企业内部创建一条私有链。多链向后兼容比特币,能使私有区块链和比特币区块链相互转换,其主要特点是能够解决隐私与权限控制等问题。多链能够支持去中心化交易所、货币结算、债券发行等多种第三方资产,可以自定义如区块的产生时间、挖矿方式、共识程度、激励报酬等各种区块链参数,具有权限管理和本地资产跟踪等功能。区块链上的内容仅由部分参与者看到,可以控制交易是否被允许,提供更加灵活高效的挖矿机制等。联盟链区块链基本技术及概念联盟链是介于私有链和公有链之间的一种许可链。一般由多个不同组织构成。比如要搭建一条医疗区块链,就可以将多家医院、保险公司、省市医保中心等不同组织构成一条联盟链,每个组织就是联盟链的一个机构,也就是一个区块链上的一个具备完整账本的完全节点。区块链上的读写权限和记账权限由联盟链规则决定。其记账节点一般由系统选定,参与共识的节点较公有链少很多。因此一般不采用工作量证明POW,较多采用Raft、PBFT等共识算法。根据实际的应用需求,联盟链节点可以包括公开节点和授权节点两类。网络中的部分节点作为公开节点可以任意接入网络,授权节点必须通过授权才能接入网络。联盟链区块链基本技术及概念联盟链中最具代表的开发平台包括R3联盟、超级账本(HyperLedger)。2015年9月成立的R3金融联盟,开始有高盛、摩根大通、西班牙银行、瑞士信贷银行等九家联合发起,中国平安是第一家加入其中的中国企业。R3联盟主要针对金融系统进行区块链技术开发,其采用的技术平台称为R3Corda。Corda是一种开源分布式账本技术。不发行虚拟加密货币,成员管理使用X.509公钥证书,数据只在符合条件的交易相关方之间共享,共识也是只在相关各方之间进行,交易通过智能合约来进行,合约由双方许可的第三方代理或被授权方来保障实时运行。超级账本(Hyperledger)是目前最具代表性的联盟链开发平台,可以用于各种应用的联盟链搭建。由Linux基金会于2015年发起,包括Fabric,SawtoothLake,Iroha,Blockchain-explorer四个子项目。Fabric致力于通过易配置的权限管理、可扩展的技术架构、开放的接口、可插拔的组件化来为不同应用提供通用的联盟链开发平台。Fabric系统架构包括链码服务(chaincode)、成员服务和区块链服务三部分。其中,链码是扩展的智能合约。成员服务用PKI及CA来认证和管理用户身份。区块链服务使用P2P协议、可插拔共识算法来管理分布式账本。Fabric节点被分为背书(Endorser)、排序(Orderer)、认可(Committer)等不同角色。联盟链区块链基本技术及概念与其他类型的区块链相比,联盟链的主要特点是:①部分去中心化联盟链成员需要注册许可,因此是一种部分去中心化结构。成员的采用分布式存储,但运行管理中的部分功能还需要集中式处理。②成员管理不同于公有链的完全公开和对成员无任何管理,联盟链有成员管理服务,对成员的进入退出、操作行为等会进行认证、授权、监控、审计等。③数据不公开联盟链的数据仅限于联盟内机构及其授权用户有权限访问。有的联盟链平台(如超级账本),还会针对不同业务建立不同的通道,同一通道内节点可以共享数据,不同通道之间数据不共享不公开。④交易速度快联盟链的成员节点数量有限,容易达成共识,其交易速度较快。⑤不需要特殊激励记账节点一般是预先选好的,且系统是部分中心化结构,因此一般不需要采用发币等激励机制。3区块链特点区块链特点对等性可信性功能性开放性可靠性匿名性对等性区块链特点区块链的最大特征就是节点之间的对等性。整个区块链网络采用无中心或弱中心的架构,采用分布式存储、传输、验证等方式。在理想情况下,完全去中心化的设计使得每个节点具有相同的权利和数据资源。区块链中任何一个节点都拥有一份完整的账本拷贝,这样资源能够在节点间达到真正的全面共享和信息的完全公开透明。对等性要求节点在享受相应权利的同时,也要承担集体维护网络的义务。比如,系统中任何一笔交易都要由全体节点(或至少是背书节点)进行验证和认可;再如,记账节点的选举需要大多数节点形成共识等。同时,为了保证在完全对等环境下,每个节点愿意为系统的正常运转做出贡献,区块链设计了独特的激励机制,最成功的当属比特币的挖矿奖励,比特币这种激励机制巧妙的融合在发币、交易、打包、上链等全过程中。开放性区块链特点在去中心的区块链系统中(常见于公有链),节点可以随时加入和退出区块链,系统具有最大限度的开放性。在私有链和联盟链中,其开放性体现在节点之间的数据共享。可信性区块链特点可信性是区块链的最关键特点。实际上,对等性这一特征并不是区块链所独有的。分布式网络,尤其是P2P系统中节点都具有对等性。在区块链技术出现之前,怎样保证在节点在完全对等环境下行为的可信,一直是P2P网络的难点。从技术的角度上说,区块链的可信性是由共识、杂凑、非对称密码技术、分布式记账等多种技术配合的结果。区块链技术采用杂凑函数保证了凡是上链数据都不可篡改,链上数据只能增加和查找,不能进行删除和修改;利用链式结构、时间戳等机制建立数据之间的关联关系,保证链上数据可永久回溯;利用公钥加密、私钥签名等技术保证了交易不能伪造不能抵赖,以及区块链网络中信息传递及数据的安全性;利用分布式共识机制和分布式记账保证各节点数据的一致性。这些机制的巧妙结合,保证了数据只要上链,就会被所有节点永久记录。区块链网络的这种广而告知、全程留痕、共同见证的做法使得各对等节点即使在没有第三方机构监督下,也必须诚实行为,不敢作恶,在不可信的网络环境下搭建起了可信基础设施。可靠性区块链特点各类智能合约的可编程性,为各类交易和应用提供了灵活广阔的开发空间。各种区块链系统通常都是开源的,代码和数据的开放性,也使区块链能够为各种应用提供适合的功能。匿名性区块链特点匿名性在某些区块链系统中,特别是在公有链系统中,为了保护用户的隐私,采用将公钥作为用户地址的方式。在某种程度上,保护了用户的隐私。节点只需要公开地址,不需要公开真实身份,就能够在匿名节点中建立信任。虽然身份信息不公开,但节点的所有操作是公开。因此,用户的身份等隐私信息还是可以通过大量搜集用户行为分析获得,这种匿名性和隐私保护并不是完全的匿名和完全的隐私保护。4区块链

技术发展历程区块链技术发展历程区块链1.0时代区块链2.0时代区块链3.0时代区块链技术起源于2008年10月31日“中本聪”在网络上发表的一篇关于比特币的论文《一种点对点的电子现金系统》。从2008间至今的在短短的十年间,区块链技术发展迅速,其应用已经远远超出了加密货币的领域,其价值也被各国政府和企业肯定和重视。在区块链的发展过程中有几个标志性的阶段和事件。区块链1.0时代区块链技术发展历程“中本聪”在2009年1月完成了第一笔比特币转账,标志着第一个区块链系统—比特币正式上线。比特币是第一个成功运营的去中心化数据货币系统。比特币的出现不是凭空而来的,它是建立在对等网络技术、密码技术、分布式系统技术的发展之上的。实际上,对数字货币的研究可以追溯到上世纪80年代。1983年DavidChaum利用盲签名技术设计了应用于银行小额支付系统的e-Cash;上世纪90年出现的HashCash、B-money采用了工作量证明的共识机制。这些数字货币使用到了加密算法、共识机制,但基本上都需要一个中心化的第三方机构,无法做到去中心化下建立信任,虽然这些系统都有这样那样的缺陷而未能实现,但都为比特币的出现做出了有益的探索和实践。比特币代表的是区块链1.0时代,被称为是可编程货币时代。这个阶段的区块链技术仅能用于实现加密货币及其支撑的转账、汇款和数字支付等有限金融业务。区块链1.0时代,其技术主要面向比特币以及其各种衍生货币,主要用于完全去中心化场景的公有链,其共识机制主要采用工作量证明POW,交易效率较低。其智能合约属于非图灵完备型,采用简单脚本实现简单的转账等功能。区块链2.0时代区块链技术发展历程“2013年年末,以太坊创始人维塔利克.布特林VitalikButerin发布了以太坊初版白皮书,标志着以太坊的诞生。2014年7月24日起,以太坊进行了为期42天的以太币预售。2016年初,以太坊的技术得到市场认可,以太币价格暴涨,同时在以太坊平台上开发的各种应用开始发展。以太坊是一种图灵完备的公有链开源开发平台。基于智能合约,开发人员能够建立和发布下一代分布式应用。和比特币事先设定好的系统不同,以太坊是一种灵活的、可编程的区块链。在以太坊网络中,开发者可以创建符合自己需要的、具备不同复杂程度的区块链应用(DAPP)。以太坊的出现标志着区块链进入2.0时代,即可编程经济时代。区块链2.0时代的突出特点是出现了图灵完备的智能合约,可以支持各种复杂程序设计,可以支持如股票、债券、期货、贷款、智能资产等更广泛的非货币金融应用。在共识算法上,与区块链1.0时代相比,除了使用工作量证明POW外,还出现了权益证明POS、股份授权证明机制DPOS等。比特币所代表的区块链1.0应用局限性很大,以太坊是第一个区块链技术的通用开源平台。从以太坊出现后,区块链这个技术名称才慢慢从比特币中剥离出来,并逐渐成为一门独立的科学技术。区块链3.0时代区块链技术发展历程从以太坊发布第一个通用开源开发平台和图灵完备的智能合约开始,区块链技术逐渐从仅限于金融行业应用,开始面向各行各业应用展开。区块链技术本身进入了迅速发展阶段。除了公有链这种完全去中心化的形式外,又出现了部分去中心化和弱去中心化的联盟链和私有链。2015年R3金融联盟及其开发平台Corda的出现和Hyperledger超级账本联盟及其各种开发平台的出现,使得区块链可以被应用于政府、科学、文化、健康等社会活动各方面的治理和建设中,因此,区块链3.0时代也被称为可编程社会时代。与2.0时代相比,区块链共识算法中更加丰富,除了POW、POS、DPOS等共识机制外,更出现了实用拜占庭算法PBFT、随机共识算法等各种机制。序号共识方法类型典型算法1证明类PoW,PoS2选举类PBFT,Paxos,Raft3随机类Algorand,PoET4联盟类DPoS5混合类PoW+PoS,DPoS+BFT区块链技术发展历程基于不同的开源开发平台的各种智能合约其运行环境和机制各不相同。面向各类应用对区块链的各种性能要求也不断提高,可扩展性、安全性、交易性能、监管治理与隐私保护等各种问题被提出,并成为科研和开发的热点。面向更多应用场景、面向更大用户群体、提供更快的交易速度、更好的应用界面和体验以及与大数据、人工智能、物联网、移动网络等技术的有效结合越来越成为人们关注和研发的重点。区块链发展到今天,在数字货币领域的应用已经日趋成熟,但是在智能合约、分布式存储等方面的应用还处于起步阶段。区块链这一技术的发展过程与以往的互联网、人工智能、大数据发展历程均有所不同,其发展与金融的紧密关联,其发展速度热度之快,也造成了一些概念上的混淆和观念上的混乱。区块链技术发展历程首先,区块链技术不等同于比特币。如前面我们反复强调的,区块链技术起源于比特币,其基本思想和技术与比特币中所用到的技术有千丝万缕的关联。比特币是一种加密货币。而区块链技术是可以支撑各种加密货币,比特币只是其中之一。区块链所能支撑的应用也不仅仅是发行各种虚拟货币,可以应用于社会生产的其他方面。其次,区块链技术不仅仅是一个分布式数据库。区块链作为一种信任基础设施,是一揽子技术的综合体。分布式存储是实现区块链可信、公开、透明等优势的一种技术方法。区块链目前还不能作为一个独立的分布式数据库存在和使用,其存取效率和使用便捷性等各方面都存在问题。再者,区块链不是万能技术。首先,区块链仍然处于技术发展早期,自身仍然有很多问题尚未得到很好解决,其次由于其技术特点,区块链不能解决现有互联网环境下的所有问题,目前其应用场景还十分有限。在现有阶段,区块链技术更适合落地于价值链长、跨机构、跨部分沟通环节复杂、节点间存在博弈行为的场景,它是对传统信息技术的升级、对现有商业环境的优化而非颠覆。此外,区块链的定位越来越多的被认为需要与云计算、大数据、人工智能、5G等新兴技术交叉演进,共同构建数字经济的底层基础设施。5区块链

典型系统比特币比特币历史事件区块链典型系统2008年8月18日,域名在被匿名注册。2008年11月9日,中本聪在注册了bitcoin开源项目。2008年11月1日,中本聪(SatoshiNakamoto)在P2Pfoundation网站上发布了比特币白皮书——《比特币:一种点对点的电子现金系统》(《Bitcoin:APeer-to-PeerElectronicCashsystem》),陈述了他对电子货币的新设想,比特币就此面世。2009年1月3日,中本聪开发的比特币系统上线,并挖出了第一个区块即比特币创世区块,中本聪本人获得了50个比特币的奖励,标志着比特币系统的正式诞生。2010年5月21日,美国一名程序员用10000个BTC买了价值25美元的2个披萨。这是比特币在现实世界的首次真实交易。2017年比特币最高市值为1比特币=19783美元,2个披萨价值1亿多美元,因此这两个比萨也被戏称为天价比萨,当天被定为“比特币披萨日”。2010年9月第一个矿池Slush出现,集合多节点合作挖矿,并挖出了首个区块。2012年11月,比特币奖励数量第一次减半,减少挖矿奖励为25个比特币。2019年10月,中共中央政治局提出把区块链作为核心技术自主创新重要突破口,加快推动区块链技术和产业创新发展。比特币是第一个最成功的分布式货币系统,从2009年1月上线开始,一直到目前虽然出现过些漏洞和分叉,但是总体运行平稳。比特币也是区块链技术的源头和第一个成功金融应用。比特币项目公布后,很多人对中本聪本人充满了好奇,对其身份有各种猜想。有的认为他是日本人,有的人认为是一个团队。中本聪在2011年4月最后一次出现,给软件开发者邮件里留言:“我要去做别的事儿了”。比特币比特币优势区块链技术发展历程比特币在2009年出现后,十一年时间迅速从小众圈子到大众投资,从少有人知发展出世界关注的区块链技术。比特币的价格更是从不到1美分起起伏伏,最高逼近2万美元。比特币的强劲势头与其特有的优势密不可分。总体来说,比特币具有以下优点:防止通胀匿名性完全去中心化永久记录比特币比特币优势防止通胀区块链技术发展历程为了防止通货膨胀,比特币的发行总量为2100万。创世块挖出的区块奖励为50个比特币,以后每4年挖矿奖励减半,预计在2140年全部挖完。为了限制比特币发行量,设定一般10分钟左右生成一个不超过1MB大小的区块。系统会根据挖矿速度,调节需要计算的杂凑值的难度。调节挖矿速度的周期为2016个区块(大约2周时间),系统会根据本周期内挖矿时间的快慢来调整挖矿难度,保证平均出块时间为10分钟。历史上最快的出块时间为10秒,最慢出块时间为1小时。比特币比特币优势匿名性区块链技术发展历程比特币使用椭圆曲线密码(ECC)的公钥来作为用户的地址。实际上,为了进一步保证用户的匿名性,用户地址是其ECC公钥先进行SHA256杂凑,再进行RIPEMD160杂凑运算后,最后再进一步利用Base58编码后得到的才是实际用户的公钥。这种复杂的计算,保证了用户的隐私,也保证了比特币的完全去中心化架构中随进随出的特点。比特币比特币优势完全去中心化区块链技术发展历程比特币采用基于暴力求解Hash的工作量证明的共识机制,以及挖矿的奖励和交易手续费的激励机制,可以保证矿工及所有匿名参与者的诚信,比特币能够在没有第三方机构的情况下平稳运行。可以说,比特币成功的解决了在完全去中心化的网络环境中的信任和价值传递问题。比特币比特币优势永久记录区块链技术发展历程比特币创造性提出的采用哈希链来连接各区块,各区块在全网所有参与者均有备份,保证了记录到区块链上的交易是得到全网共识和背书的,并且是被永久记录的。如果想对交易进行伪造篡改抵赖需要付出超过全网51%的算力,这种高昂的代价保证了交易的安全和准确。比特币比特币问题高能耗低存储和交易效率半隐私价格波动大应用场景有限监管困难区块链技术发展历程比特币比特币问题高能耗区块链技术发展历程比特币的挖矿需要耗费大量的算力。2009年比特币刚出现时使用普通机器的CPU还能够进行挖矿。2010年就出现了使用GPU进行挖矿,2011年出现使用FPGA挖矿,2013年出现使用ASIC专用矿机挖矿,2016年出现矿池挖矿。比特币矿机的运算速度发展飞快,带来的是巨大的耗电量和环境污染。据统计,2018年比特币挖矿耗电为730亿度,约为奥地利全国一年的电量。一个区块一般包括上千笔交易,而每笔交易的耗电量平均在900度。比特币比特币问题低存储和交易效率区块链技术发展历程比特币的低交易效率是它的主要缺陷,其交易速率为每笔7秒。同时,区块正式被确认需要等待生成6个区块的时间,区块确认时间一般为1个小时,也就是平均每笔交易的实际确认时间是1个小时。比特币的每个区块的存储量小于1M,每个区块能够包含的交易数非常有限。随着比特币交易量的迅速增加,1M的区块存储量已经不能够满足实际需要。为了提升比特币的性能,出现了如隔离见证等各种链上扩容方案。链上扩容方案通过改变区块链底层结构,如增加区块大小、缩短出块时间等,提升区块链可扩展性。2017年8月,BCH(比特币现金)在比特币区块高度478558执行硬分叉,将区块扩容到8M,通过该链上扩容解决比特币系统中区块拥堵和手续费高等问题。比特币比特币问题半隐私区块链技术发展历程比特币的用户没有类似传统货币的钱包和地址,使用的是UTXO。其用户地址是公钥进行杂凑和编码后的一串随机数值,常被认为具有较好的匿名性和隐私保护效果。实际上,由于区块链中所有的交易内容及收付款等细节都需要向全网广播并获得全网节点的认可,如果想要获取某个交易方的真实身份信息,可以很容易搜集到交易方的相关信息。通过大量的关联数据分析,能够分析出其身份等隐私信息。比特币没有实现完全匿名,只是“将脸遮住进行交易”,实现的是交易细节完全对外公布的“半隐私”。比特币比特币问题价格波动大区块链技术发展历程比特币在出现之后,其价格变化如过山车般巨大。在比特币出现的十一年间,曾经两次单价接近2万美元。2019年10月中旬,其总市值超过3千亿美元。但比特币在最低价格时仅为1美分,比特币这样高的价格波动是所有股票证券等前所未有的。其巨大的价格波动,也带来了巨大的投资风险,因此比特币的炒作被多国政府明令禁止。比特币比特币问题应用场景有限区块链技术发展历程目前很少有有商家支持实际使用,比特币的实际购买能力还是非常有限的,除了炒作以外,目前还不具备实际的流通货币功能。比特币比特币问题监管困难区块链技术发展历程比特币的去中心化和匿名性等优点也十分容易被利用进行洗钱、逃税、跨国境资金转移等非法活动,为地下黑市的运行提供了一条安全稳定的资金渠道。比如,著名的勒索病毒WannaCry通过比特币来实现对用户资产的勒索,Wannacry勒索病毒袭击的原因与比特币本身并没有直接关系,黑客之所以要求以比特币支付赎金,主要是看中了它在全球转账汇款时的种种优势,从而成为了被选中的支付手段。比特币的去中心化、匿名性的优点也正是其难以监管的主要症结所在。比特币之后出现了一系列基于比特币的衍生币。这些衍生币包括建立在比特币之上开发的适应于某个特定业务系统和协议的代币,如万事达币(MasterCoin)等;也有通过修改比特币参数或改变共识算法而产生的各种新代币,比如莱特币(Litecoin)、质数币(Primecoin)等。这些衍生币的出块时间都有所提高,最快在0.5分钟挖出一个区块,最慢在10分钟挖出一个区块。以太坊区块链技术发展历程以太坊(Ethereum)是2013年由加拿大籍俄罗斯裔的90后年轻人维塔利克.布特林(VitalikButerin)受比特币启发而创建的一个开源公有链平台,其官网网站为。以太坊在很多地方设计参考了比特币的思想,又对比特币进行了很多拓展。以太坊通过在虚拟机EVM(EthereumVirtualMachine)上运行图灵完备的智能合约,利用以太币(Ether)提供激励,实现去中心化的应用。比特币的底层区块链技术仍有很多局限。特别是受其非图灵完备的脚本语言限制,比特币所采用的底层区块链技术很难扩展到其他的应用上。本质上来说,比特币区块链技术仅是一种货币应用。在以太坊出现前,在比特币基础上拓展出的各种加密货币基本上都是在比特币区块链系统上创建货币或创建新的协议,无法为某种应用独立的创建该应用所需要的区块链。以太坊的目标是提供一个带有内置、成熟的图灵完备语言的区块链,用这种语言可以使开发者能够创建任意的基于智能合约的去中心化应用。这些应用基于共识、具有可扩展、标准化、易于开发、易于协同等特点。与比特币仅作为一个货币系统相比,以太坊打造的是一个基于智能合约的去中心化应用平台,也是一个分布式网络平台,可以面向更为复杂、灵活的应用场景。以太坊白皮书称,以太坊之上有主要三类应用。第一类是金融应用,如子货币、金融衍生品、对冲合约、储蓄钱包等;第二类是半金融应用;第三类是例如在线投票和去中心化治理等非金融应用。以太坊1.以太坊大事件区块链技术发展历程作为一个在不断发展和完善过程中的公有链开源平台,以太坊项目发布之初就对外宣布以太坊的发展分为4个阶段:Frontier(前沿)、Homestead(家园)、Metropolis(大都会)和Serenity(宁静)。以太坊每次升级到一个新的阶段都会进行一次硬分叉。Frontier(前沿)是以太坊试验阶段,目标是将挖矿和交易等运行起来,建立分布式应用测试环境,吸引更多的人参与到以太坊项目中,扩大以太坊的影响和价值。Homestead(家园)是以太坊第一个正式产品级发行版本。在前沿和家园阶段,以太坊的共识机制采用的都是工作量证明POW。2017年以太坊基金会成员HudsonJameson宣布推出ETH第三个重要阶段Metropolis(大都会),称这是以太坊从PoW算法转移到PoS算法的重要阶段。大都会为以太坊带来了庞大数量的更新以及大量的新特性,一次分叉不足以成功实现“大都会”。所以,以太坊核心社区决定分拜占庭(Byzantium)和君士坦丁堡(Constantionple)两个阶段来实现。拜占庭阶段发布了集钱包功能和合约发布等丰富功能的图形化界面软件“Mist”,引入了零知识证明,抽象账号等新技术,使用的共识算法仍然是PoW。君士坦丁堡阶段则使用混合共识算法“PoW+PoS”,为过度到“宁静”阶段做铺垫。以太坊的最后一个阶段是Serenity(宁静),前三个阶段以太坊共识算法采用POW或以POW为主,而在宁静阶段以太坊共识机制将完全采用权益证明机制(POS)Casper投注共识协议,以太坊将进入2.0阶段。区块链技术发展历程下面详细介绍写以太坊发展历史中的重要事件。2013年11月,以太坊创始人VitalikButerin发布以太坊初版白皮书《下一代智能合约与去中心化应用平台》(ANextGenerationSmartContractandDecentralizedApplicationPlatform)。2014年2月,Vitalik在迈阿密比特币会议上首次公布以太坊项目,组建了以太坊的核心开发团队。2014年4月,以太坊核心成员GavinWood发布以太坊黄皮书,介绍了以太坊虚拟机(EVM)技术。2014年7月,以太币预售募集,以太坊基金会创建。7月24日起,以太坊进行了为期42天的以太币创世纪预售,共募集到价值1843万美元的比特币,成为当时排名第二的众筹项目。2015年5月,以太坊发布了代号为Olympic的最后一个测试网络(POC9),为了鼓励更多人进行测试,参与测试者会获得以太币奖励。以太坊测试网络POC共经历了9个版本的测试最终完成。2015年7月,以太坊网络发布,标志着以太坊平台正式运行。2015年7月30日以太坊第一阶段Frontier(前沿)正式开始,以太坊官方公共主网发布,创世块产生。第一阶段引入了Gas(燃气)、可用性等关键特征。区块链技术发展历程2016年3月,以太坊升级到Homestead家园阶段。在此阶段,以太坊提供了图形界面的钱包,易用性得到极大改善,以太坊不再是开发者的专属,普通用户也可以方便地体验和使用以太坊。2016年7月,以太坊遭受DAO漏洞攻击,出现了其历史上第一次非计划硬分叉,出现了原链经典以太坊(ETC)和分叉链(ETH)。2017年3月,企业以太坊联盟(EnterpriseEthereumAlliance,EEA)成立,旨在创建一个企业级区块链解决方案,并共同研究以太坊产业标准。2017年7月,以太坊遭受Parity钱包1.5及更高版本漏洞的越权函数调用攻击,损失约3000万美元的以太币。2017年10月,“大都会”的第一个版本"拜占庭"于以太坊(区块高度4370000)时成功分叉。2017年11月,由于开发者和用户“失误操作”意外触发的代码漏洞,导致价值超过1.54亿美元的以太币被冻结锁死,至今未能找回。2019年2月,以太坊项目进行“大都市”的第二个阶段君士坦丁堡硬分叉,这次分叉的特性就是平滑处理掉所有由于"拜占庭"所引发的问题,并引入PoW和PoS的混合链模式。区块链技术发展历程以太坊(1)智能合约以太坊最大的价值在于设计并实现了图灵完备的智能合约,大大拓展了区块链技术的应用场景和范围。以太坊将智能合约作为一个特殊的合约账户,为其分配了20个字节的合约账户地址。以太坊还设计了智能合约开发的专用编程语言,包括Serpent和Solidity。官方推荐语言为类似JavaScript的Solidity。Solidity是一种“面向合约”(或面向对象)的高级编程余元,支持强类型、继承、库以及自定义类型等。(2)以太坊虚拟机以太坊智能合约的运行环境在以太坊虚拟机(EVM)里。EVM是一种基于栈的虚拟机,被部署在执行智能合约操作的每个节点上,负责对智能合约进行指令解码,按照堆栈顺序(先进后出)执行代码。EVM是一个完全独立的沙盒,智能合约代码在EVM内部执行与外界完全隔离。区块链技术发展历程以太坊(3)Gas燃料与比特币相比,图灵完备的以太坊智能合约引入了循环语句。为了防止出现无限循环等故障,任何代码运行都要进行计费。计费机制以Gas燃料为单位,每执行一条合约指令就会消耗固定的燃料。例如,创建智能合约、调用消息、访问账户数据等,虚拟机上的所有运行操作都会花费一定的燃料。燃料可以控制合约代码指令执行的上限。燃料会有价格,GasPrice是运行每一步需要支付矿工的费用,以以太币计费。每笔交易运行前会对执行代码所引发的计算步骤(包括初始消息和所有执行中引发的消息)用StartGas做出限制,StartGas是整个交易中所使用的最大燃料量。StartGas乘以GasPrice得到的值是交易发起方需要预先支付的以太币。如果在执行交易的过程中,“用完了燃料”即超过了最大燃料量,合约运行终止并回滚到初始状态。但是,已经支付的交易费用不可收回。如果交易执行中止时,还剩余燃料,那么这些燃料费将退还给发送者。区块链技术发展历程以太坊(4)以太币以太币(Ether)是整个以太坊网络能够正常运转的激励机制重要组成。以太币的最小单位为wei,1Ether等于1018个wei。以太币有三种渠道可以获得,一种类似于比特币,挖矿成功的矿工可获得以太币奖励,其奖励币值根据以太坊网络所处的不同阶段而不同。在Frontier阶段,奖励为5ETH;在Homestead阶段,奖励为3ETH,在Metropolis阶段奖励为2ETH。阶段越高奖励币值越低,当系统升级到Serenity(宁静)阶段,系统共识以POS为主,将取消挖矿奖励。目前每年大约可通过挖矿挖出一千万个以太币。以太币的第二个获得渠道是交易的燃料费用。第三个渠道是通过账户之间的交易转账获得。区块链技术发展历程以太坊(5)Ghost协议在比特币挖矿过程中出现软分叉,会根据最长原则处理。比特币的交易确认时间一般为1小时,分叉点后产生5个区块后才会最终确定丢弃哪些区块。在比特币中,被丢弃的区块其矿工将得不到任何报酬。与比特币中区块链出块时间相比,以太坊区块链中将出块时间从10分钟降低到15秒。由于出块时间短,会频繁出现软分叉的情况。以太坊用Ghost(GreedyHeaviest-ObservedSub-Treeprotocol)贪婪最重可观察子树协议来处理频繁分叉,选择主链以及决定如何奖励矿工等问题。不同于比特币的最长链规则,以太坊将分叉区块也考虑进去,选择出一条包含了分叉区块在内区块数目最多(最重)的链作为主链。如图13所示:图13:以太坊最重链原则(来自网络)区块链技术发展历程以太坊在上图可见,使用比特币中的最长链原则,0<-1B<-2D<-3F<-4C<-5B为最长主链;在以太坊中使用最重子树原则0<-1B<-2C<-3D<-4B为最重主链。此外,对于在最长链中被包含进去了的造成链分叉的块,例如上图中的3E和3C,Ghost协议对它们也有一套对应的处理机制。孤块,完全没用的块,对挖出的孤块的矿工没任何奖励。比特币链中的分叉块都是孤块。在以太坊中如上图中的2B、3B、2D、3F、4C、5B和攻击者制造的恶意链上的所有区块都是孤块。叔块,被一定范围内的后续子块所打包收纳的块,挖出叔块的矿工会按照一定算法给予以太币奖励。比如3E、3C被4B打包收纳,并给予以太币奖励,因此3E、3C是两个叔块。叔块的奖励规则是:主链区块获得基础奖励(3Eth);一个区块最多引用两个叔块;主链区块在包含一个叔块时可以获得挖矿奖励的1/32,交易费不会奖励给叔块。以太坊区块链中7代及其以内的叔父区块都能得到奖励,超过7代的叔父区块将不会得到奖励,这样是为了避免有些矿工专门在之前的链上制造分叉获取奖励的恶意情况出现。区块链技术发展历程以太坊如图14所示,假设以太坊根据Ghost的最终原则形成了以下一条包含叔块3A、3B、3C、3D的主链,则4打包收纳叔块3A、3B,4获得出块奖励和另外1/32的出块奖励作为收纳奖励,叔块3A、3B的挖矿者跟4仅有一代之隔(这也是叔块这一名称的来由),因此分别获得7/8的出块奖励。被5收纳的叔块3C、3D,与5有两代之隔,出块奖励降低,分别获得6/8的出块奖励。叔块的奖励依次类推,超过7代的叔父区块将不会得到奖励。图14:叔块的以太币奖励规则(来自网络)区块链技术发展历程以太坊(6)账户与比特币不同,以太坊有账户的概念。以太坊账户包括两类,一类是外部用户账户(ExternallyOwnedAccounts,EOA),一类是智能合约账户(ContractsAccounts)。外部账户地址是该账户公钥的后20字节,由对应的账户私钥控制。外部账户可以创建交易,发送交易消息给另一个外部账户来触发转账,或发送消息给一个合约账户来触发新智能合约的创建或已有智能合约的调用等。外部账户的获取可以通过以太坊客户端Geth或以太坊钱包客户创建。合约账户不能发起交易,仅能被外部用户调用,对应一个20个字节的地址,该地址在创建合约时确定,有合约创建的外部地址和该外部地址发出过的交易数量计算得到。因此,外部账户和合约账户的创建顺序可理解为用户先创建外部账户,在创建智能合约时创建合约账户。创建外部账户不需要花费燃料,但创建合约账户需要花费燃料。区块链技术发展历程以太坊以太坊的账户包含四个部分:Nonce随机数。该账户为外部账户时,表示该账户创建的交易序号,实际上是确定每笔交易只能被处理一次的计数器。该账户为合约账户时,表示外部账户创建的合约序号,没创建一次会加1。Balance账户余额:账户目前的以太币余额。CodeHash代码哈希值:账户的合约代码的哈希值。StorageRoot:账户存储内容组成的MerklePatriciaTree树的根Hash值。区块链技术发展历程以太坊(7)区块以太坊区块结构与比特币相比有很大差别。以太坊区块包括一个区块头,一个uncle区块的列表,一个交易的列表。如图15所示。图15:以太坊区块结构(来自网络)区块链技术发展历程以太坊的区块头部内容比比特币区块头部内容更多。比如在以太坊区块头中就包含有父块哈希值、叔块哈希值、状态根哈希值、交易数哈希值和交易树根哈希值等。这里要注意的是,虽然同样采用类似哈希树根存储多个交易的杂凑值,但以太坊引入了状态树(StateRoot)、交易数(TransactionRoot)、收据树(ReceiptsRoot)。其中交易树的叶子存储的是交易,用来计算交易树的根哈希值,用来保证交易数据的完整性。收据树叶子节点存储的是交易生成的收据,用来计算收据树的根哈希值,用来保证交易完成证明。交易树和收据树都是Merkle树。状态树的叶子节点存储的是账户交易状态,是一个全局树,为了提高查找和存储效率,以太坊采用MerklePatriciaTree结构计算状态树的根杂凑值。状态树保证区块链数据的一致性和以太坊数据的回滚。图16:以太坊区块头部内容(来自网络)区块链技术发展历程以太坊(8)共识方法在以太坊发展的过程中,它的共识算法对于不同的阶段,分别是:PoW共识,PoW+PoS混合共识和PoS共识。如前所述,以太坊在公布的四个版本阶段中,在Frontier、Homestead两个阶段使用的还是类似比特币工作量证明POW的变化算法Ethash。考虑到比特币所出现的矿机矿池,可能会发起51%攻击,工作量证明算法Ethash在执行时要消耗大量内存,与计算效率关系较小,因此制造专门的Ethash芯片较为困难,可以在一定程度上抗ASIC(专用集成电路)矿攻击。但是,无论如何,工作量证明产生的巨大资源消耗和浪费一直被大家诟病。以太坊项目一直尝试将工作量证明算法改成权益证明POS算法。以太坊POS算法构建时还有很多缺点,不能保证平等挖矿。因此,其PoS的发展历程经历了三个版本,即PoS1.0、PoS2.0以及PoS3.0,在PoS演化过程中,不断用惩罚作恶模型来修正缺点,最终进化到Capser共识机制。以太坊在Metropolis的君士坦丁堡阶段,使用PoW和PoS混合协议,并声称到了Serenity版本阶段会完全使用PoS共识机制(Capser)。实际上,目前以太坊还支持基于权利证明PoA(ProofofAuthority)的clique共识协议,可支持搭建私有链和联盟链。区块链技术发展历程以太坊(9)扩展性以太坊使用Ghost协议解决了出块速度提高和分叉的矛盾,但以太坊的吞吐量仍然不高,一般是20TPS,仍需要其他扩容方案,提高其可扩展性。区块链技术发展历程超级账本超级账本Hyperleger项目由Linux基金会在2015年发起的开源项目,该项目包括多个面向不同场景和目的的子项目。目前使用最为广泛的是作为面向企业的带有准入机制的联盟链分布式账本平台HyperledgerFabric项目,其开源内容主要公布在Github上。Fabric基于Go语言实现,在2017年7月推出Fabric1.0正式版本,随后经历了v1.1、1.2、1.3、1.4版本。2019年1月推出的Fabric1.4版本是首个长期支持版本,其稳定性和可操作性都较之前版本有很大进步,本书主要示例均搭建在1.4版本上。2020年1月,Fabric发布了V2.0版本,2.0版本在链码生命周期管理、应用模式、数据共享模式、链码启动、Raft共识等方面进行了改进,提升了链码、数据隐私、共识效率等多方面的性能。图17:HyperledgerFabric项目模块及组件(来自网络)区块链技术发展历程超级账本作为联盟链的开源开发平台,Fabric有以下技术特点。(1)多种角色划分Fabric包含三类角色:客户端(Client)、节点(Peer)、排序者(Order),Fabric这种多角色划分有利于提高交易处理效率。应用客户端(Client)用于将终端用户的交易请求发送到区块链网络节点(Peer)。为了提高交易处理效率,节点分为多种类型,如背书节点(Endorser),确认节点(Committer),主节点(Leader),锚节点(Anchor)。Peers节点是一个逻辑的概念,Endorser和Committer可以同时部署在一台物理机上。排序节点(Order)负责对交易排序后打包成区块,并将结果返回给Committer节点,一般由Order集群来实现。(2)增加了用户身份和权限管理Fabric使用成员服务提供者MSP(MembershipSe

温馨提示

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

评论

0/150

提交评论