专注SIP通讯产品与方案

区块链技术简介

        区块链是随着比特币等数字加密货币的出现而兴起的一种全新的去中心化的基础架构,是分布式计算模式,目前区块链已经高度引起各级政府部门、金融机构、科技企业和市场的重视与关注。2016年美、英等发达国家相继将区块链技术上升至国家战略层面,成立了区块链发展联盟。同年,中国国务院印发的《“十三五”国家信息化规划》也首次将区块链列入中国的国家信息化规划,并将其定为战略性前沿技术之一。
区块链技术简介(图1)
        区块链最初的应用就是比特币,比特币采用的是区块链1.0的技术。比特币是一串使用密码学方法产生的数据块,每一个数据块中包含了过去5〜10分钟内所有的比特币网络交易的信息,而这用于验证其信息的有效性(防伪)和生成下一区块。
比特币技术
        区块链技术最初脱胎于2008年出现的比特币技术,是一种去中心化的、无须信任积累的信用建立范式。区块链技术的本质是用数据区块(Block)取代了目前互联网对中心服务器的依赖,这样数据变更或交易都记录在一个云系统之上,理论上实现了数据传输中数据的自我证明,长远来说超越了常规意义上需要依赖中心的信息验证模式,降低了全球“信用”的建立成本。
区块链的特点
区块链具有去中心化、时序数据、集体维护、可编程及安全可信等特点。
1)去中心化
        区块链中数据的验证、记账、储存、维护等基本过程均是基于分布式系统结构,采用的是数学计算方法来建立分布式节点间的信任关系,从而形成新型的无中心结构的又可信任的分布式系统。
2)时序数据
        区块链是采用带有时间戳的链式区块结构,所谓链式区块即下一个区块的块头连接到上一个区块块身的尾部。
3)集体维护
        集体维护是区块链系统采用一定的方式方法来保证分布式系统中的所有节点都能参与数据区块的验证,并通过共识算法将新区块添加到区块链中。
4)可编程
        区块链技术的脚本代码系统非常灵活,支持用户创建高级的智能合约、货币或其他去中心化的应用。
5)安全可信
        区块链的安全可信分为数据的安全可信和系统的安全可信。区块链技术是采用非对称密码学的原理对数据进行加密,同时借助分布式系统各节点的工作量证明等共识算法形成的强大算力来抵御外部攻击(如黑客),从而保证区块链数据的不可篡改和不可伪造性,因而具有高安全性。
区块链的基础架构
        区块链技术的基础架构模型如图所示。区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成。
区块链技术的基础架构
1)数据层
        数据层是区块链架构底层的技术,是基础。主要实现两个功能:一个是相关数据的存储,另一个是账户和交易的实现与安全。数据存储主要是基于Merkle树,是通过区块的方式和链式的结构来实现的。
2)网络层
        网络层封装了区块链的组网方式、消息传播协议和数据验证机制等主要要素。结合实际的应用需求,通过设计特定的组网方式、传播协议和数据验证的机制,使得区块链系统中每一个节点都能参与区块数据的校验和记账过程,仅当区块数据通过全网大部分节点的验证后,才可以记入区块链。网络层主要用来实现网络节点的连接和通信,是在没有中心服务器且需要依靠用户群的情况下来交换信息的互联网体系。 
3)共识层
        怎样在分布式系统中高效地达成共识是分布式系统领域的重要研究课题。区块链技术的核心优势之一就是能够在决策权分散的去中心化系统中使得各节点高效地针对区块数据的有效性达成共识。
        共识层主要实现全网所有节点对交易和数据达成一致性,防范拜占庭攻击、女巫攻击等共识攻击,其算法称为共识机制,因为其应用场景不同,区块链2.0出现了多种富有特色的共识机制。
(1)ProofofStakeCPoS,权益证明)
        原理:节点所能获取区块奖励的概率与该节点所持有的代币数量和时间成正比,在得到区块奖励后,该节点的代币持有时间清零,重新计时。但因为代币在初期分配时有很高的人为因素影响,这就导致了后期贫富差距过大。
(2)DelegateProofofStake(DPoS,股份授权证明)
        原理:所有的节点投票选出若干个委托节点,区块完全由这若干个委托节点按照一定算法生成。
(3)Casper(投注共识)
        原理:以太坊的下一代共识机制,每个参与共识的节点都要支付一定的押金,节点获取的奖励和押金成正比,如果有节点不守规矩则押金被扣掉。
(4)PraCTIcalByzantineFaultTolerance(PBFT,拜占庭容错算法)
        原理:PBFT共识机制是基于异步网络环境下的状态机副本复制协议,本质上它的共识是由数学算法来实现,因此区块的确认不像一般公有链一样在若干区块之后才安全,这样就可以实现出块即确认。
(5)ProofofElapsedTimeCPoET,消逝时间量证明)
        原理:该共识机制由Intel提出,核心是用intel支持SGX技术的CPU硬件,在受控安全环境(TEE)下随机产生一些延时,同时CPU从硬件级别证明延时的可信性,类似于彩票算法,谁的延时低,谁就获取记账权。这样,增加记账权的唯一方法就是增加CPU的数量,这样就具备了当初中本聪设想的一个CPU一票的可能,同时增加的CPU会提升整个系统的资源,变相实现了记账权与提供资源之间的正比例关系。
不同的共识机制有不同的优缺点,适应于不同的应用场景,如表所示。
4)激励层
区块链共识过程通过汇聚大规模的共识节点的计算资源来实现共享区块链账本的数据验证和记账工作。主要实现区块链代币的发行,如以太坊,定位以太币为平台运行的燃料,并可以通过挖矿获得,每挖到一个区块固定奖励5个以太币,同时运行智能合约和发送交易都需要向矿工支付一定的以太币。
表共识算法的优缺点
共识算法 PoS DPoS Casper PBFT PoET
性能 较高 较高
区中心化程度 完全 完全 完全 半中心化 半中心化
最大允许作恶节点数量 51% 51% 51% 33% 51%
是否需要代币 .否
应用类型 公有链 公有链 公有链 联盟链 联盟链
能否防范女巫攻击
技术成熟程度 成熟 成熟 未应用 成熟 未应用
需要专用硬件
 
5)合约层
合约将可编程的特性赋予了账本,区块链2.0通过虚拟机的方式运行代码实现合约的功能,如以太坊的以太坊虚拟机(EVM)。同时,这一层通过在合约上添加前台界面,与用户进行交互,形成去中心化的应用(DAPP)O
区块链技术的原理
在互联网世界和物联网世界中建立一套全球通用的数据库,区块链技术要解决如下问题,才能更好地与物联网结合:
(1)建立一个严谨的数据库,使得该数据库在能够储存海量的信息的同时又能在没有中心化结构的体系下保证数据库的完整性。
(2)记录并储存下这个严谨的数据库,使得即便已经参与数据记录的某些节点崩溃,仍然能够保证整个数据库系统的正常运行与信息不丢失。
(3)使这个严谨且完整储存下来的数据库变得可以信任,使得可以在如今互联网无实名的背景下或者即将到来的万物互联的物联网世界中取得信任并成功规避骗局。
区块链构建了一套比较完整的、连贯的数据库技术来解决上面问题。另外,为确保区块链技术的可进化性与可扩展性,区块链系统的设计者引入了“脚本”的概念来实现数据库的可编程性。以下四大技术构成了区块链的核心技术。
1)核心技术一:区块+链
为建立一个严谨的数据库,区块链把数据库结构中的数据分成不同的区块,每个区块通过特有的密码链接到上一区块的尾部,前后顺连来完成一套完整的数据,这也是“区块链”这三个字的来源。
区块,在区块链技术中,数据以电子刻录的形式被永久地储存下来,存放这些电子记录的文件称为“区块(block)”。
区块结构,区块会记录区块生成的时间段内所有的交易数据,区块主体就是交易信息的集合。每一种区块链的设计结构可以不同,但大结构上分为块头(header)和块身(body)两部分。块头用于链接并用来保证区块链数据库的完整性,块身则包含了经过验证的、块创建过程中发生的所有价值交换的记录。区块结构有两个特点:第一,每一个区块上记录的交易数据是在上一个区块形成之后,该区块被创建前发生的所有的价值交换,这个特性保证了数据库的完整性。第二,绝大多数情况下,新区块完成后就加入到区块链的最后,自此区块的数据就将记录且再也不能改变或删除。这个特点保证了数据库的严谨性,即不能被篡改。
每一个区块的块头都包含了前一个区块交易信息的所有值,所以这就使得从第一个区块到当前区块连接在一起形成了一条长链。“区块+链”的结构为我们提供了一个完整数据库。从第一个区块开始,到最新产生的区块为止,区块链上存储了系统的全部的历史数据,提供了数据库内每一笔数据的查找功能。区块链上的每一条交易数据,都可以通过“区块链”的结构追本溯源,一笔一笔进行验证。
2)核心技术二:分布式结构——开源的、去中心化的协议
        有了区块+链的数据之后,接下来就需要来考虑记录和储存的问题。在现有中心化的体系中,数据都是集中记录并储存在中央服务器上。但是区块链结构设计精妙的地方就在这里,它并不支持把所有数据记录并储存在中心化的一台或几台服务器上,而是让每一个参与数据交易的节点都记录并储存下所有的数据。
去中心化
        关于怎样使所有的节点都来参与记录的问题,区块链的办法是构建一套协议机制,让全网每一个节点在参与记录的同时也来验证其他节点记录的结果是否正确。只有当全网大部分节点甚至所有节点都同时认为这个记录没有错误时,全网才能认可记录的真实性,记录数据才允许被写入区块中。
        关于储存“区块链”这套严谨数据库,区块链的办法是构建一个分布式结构的网络系统。
        分布式记账,会计责任的分散化(Distributedaccountability)o从硬件的角度讲,区块链是大量的信息记录储存器组成的网络,区块链的设计者希望通过自愿原则来建立一套每个人都可以参与记录的分布式记账体系来记录发生在网络中的所有价值交换活动,从而分散了会计的责任。
        分布式传播,区块链中每一笔交易的传播都采用分布式的结构,每一次交换都传播到网络中的每个节点。根据P2P网络层协议,消息由单个节点被直接发送给全网其他所有的节点。 
分布式存储,区块链技术让数据库中的全部数据均分散存储于所有的计算机的节点中,并进行实时更新。完全去中心化的结构设置使数据能实时记录,并在每一个参与数据存储的网络节点中更新,这极大提高了数据库的安全性。
3)核心技术三:所有权的信任基础——数学
        有了严谨的数据库,配套可用协议,在运用于实际时,需要解决这个严谨且完整储存下来的数据库值得信赖的问题,使得可以在互联网无实名背景下以及万物互联的物联网世界中成功规避骗局。
        为解决这一问题,区块链的设计者使用了“非对称加密数学”的方法。即在加密和解密的过程中分别使用非对称的两个密码,两个密码分别是:加密时的密码(公钥)在全网是公开可见的,所有人都可以用自己的公钥来加密一段信息;解密时的密码(私钥)只有信息的拥有者才知道,被加密的信息只有拥有相应私钥的人才能够解密。
        从信任的角度来看,区块链是用数学的方法来解决信任的问题。在区块链技术中,所有的规则都以算法程序的形式来表述,人们完全不需要了解交易对方的品德,更不需要来求助第三方机构来进行交易,而只需要信任数学算法就可以了。区块链技术的背后,实质上是算法在为人们创造信用,达成共识。
4)核心技术四:可编程的智能合约——脚本
        脚本为一种可编程的智能合约。如果区块链技术只是用来做某种特定的交易,那就没有必要进行脚本的嵌入了,系统根据需要满足的条件直接定义完成价值交换活动即可。在一个去中心化的环境下,所有的协议都需要提前取得共识,那脚本的引入就很重要了。有了脚本之后,区块链技术就会使系统有能力处理一些无法预见的交易模式,也保证了这一技术在未来的应用中不会过时,增加了技术的实用性。
        一个脚本实质上是众多指令的列表,这些指令记录在每一次的价值交换活动中,价值交换活动的接收者要获得这些价值,或花费掉自己曾收到的留存价值需要满足以下两个条件:一个公钥,以及一个签名,才能使用自己之前收到的价值。脚本的神奇之处在于可编程性:它可以灵活改变花费掉留存价值的条件,如脚本系统可能会同时要求两个私钥或几个私钥或无须任何私钥等,它可以在发送价值时附加一些价值再转移。