发布时间:2020-03-17所属分类:计算机职称论文浏览:1次
摘 要: 摘 要 :区块链作为比特币系统中的底层技术受到了广泛关注,是解决分布式系统一致性问题的一种可行方法。区块链技术的核心是如何实现共识。良好的共识机制可提升系统性能,促进区块链技术的应用。文章从现有区块链技术中的共识机制出发,对工作量证明、权益
摘 要 :区块链作为比特币系统中的底层技术受到了广泛关注,是解决分布式系统一致性问题的一种可行方法。区块链技术的核心是如何实现共识。良好的共识机制可提升系统性能,促进区块链技术的应用。文章从现有区块链技术中的共识机制出发,对工作量证明、权益证明和拜占庭一致性协议等基本共识机制进行总结,从安全性、彳广展性、性能效率等方面对这些共识机制进行评价。未来区块链上共识机制的研究将根据各共识机制的不同特点,围绕不同共识机制的组合展开设计。
关 键 词 :区块链;共识机制;工作量证明;权益证明;拜占庭一致性
0 引言
区块链技术最初由中本聪在《比特币:一 种 P2P 电子现金支付系统》11] 一文中提出,为解决分布式系统的一致性问题带来新的技术思想。共识机制是分布式系统的核心。在 P2P 网络中,互相不信任的节点通过遵循预设机制最终达到数据的一致性称为共识。区块链技术设计的关键是共识机制的设计,目的在于如何解决区块链的安全性、扩展性、性能效率和能耗代价等问题。区块链技术上支持的典型共识机制有工作量证明(_ Proof of Work)、权益证明 (_ Proof of Stake) 和拜占庭一致性协议等机制,也包括不同机制的相互结合
1 比特市与区块链技术概述
1.1比特币的运行机制
2 0 0 8年,中本聪发表《比特币:一 种 P2P 电子现金支付系统》m,提出在交易中去掉银行这一中心机构,在 P2P 网络中实现基于工作量证明的、去中心化的、分布式匿名电子现金支付系统。用户的支付行为通过交易来完成。交易只记录货币的流向,每枚货币的产生和每次交易都是可追溯的。如何监测和防止二次支付行为是支付系统最根本的 安 全 性 问 题 ' 比特币系统通过全网所有节点共同维护区块链来防止二次支付。比特币是区块链技术的第一个应用实例,比特币的兴起引发了世界各界的广泛关注>7]。
用户发起一次交易,广播对该交易的签名,之后等待矿工验证交易并将这笔交易记录到区块链中。矿工在当前区块链状态下挖矿,挖矿的过程就是完成工作量证明的过程工作量证明完成之后产生的新区块包含上一个区块的哈希值、接收到的待确认有效交易集合以及时间戳等信息。随后,矿工广播该区块,等待其他矿工对该区块进行验证并在其后继续挖矿产生后续区块。当该区块连接了一定数量的后续区块之后,就可以极高的概率相信这个区块已被写人整个网络的区块链中,其包含的交易被最终确认。
1.2区块链技术
1.2.1基本概念
《中国区块链技术和应用发展白皮书(2016)》从应用角度将区块链技术看作是互联网时代的创新应用模式 ' 是一种去中心化、公开透明、用于存储交易等信息的数据库,可应用于分布式数据存储、点对点传输、共识机制、加密算法等计算机技术领域。区块中存储交易等信息,区块之间如后相继,形成一条链,共问存储一系列有序父易图 1 以比特币系统为例,介绍底层区块链的数据结构。由于上层共识机制不同,相应的区块链数据结构也略有不同
也可以将区块链看作是一种分布式数据库。与分布式数据库不同之处在于,区块链技术中的每一个节点保存的区块链前缀部分都是完全相同的,仅区块链末端有所差异。
区块链本身的数据结构和共识机制使得其具有防篡改的性质。区块之间都通过密码学证明的方法连接在一起。当主区块链具有足够长度时,若对其中的某一区块内容进行增加、修改、删除等操作,其后所有区块都将受到影响,由此就破坏了前后相继的链式结构。此时,就必须通过一系列的密码学证明对后续区块进行修改。如果被篡改区块处于主区块链中靠前的位置,则篡改区块的代价要远超篡改者所具有的能力和篡改后可获得的利益。
在区块链中,除了区块之间的连续性外,数据的每一次变更都通过合法的数字签名存储在区块链上。区块链上记录着一条数据从产生到消亡之间的每一次修改,提供了数据的可追溯性。数据可追本溯源也间接保证了数据的公开透明性。
1 .2 .2 应 用 场 景
由于区块链技术具有去中心化、防篡改、可追溯等特点,吸引了各国政府的高度关注。国内外科研机构和科技金融公司也纷纷展开了对区块链理论研究和实际应用的探索。 2〇15 年,Linux基金发起超级账本(_ Hyperledger)开源项目[4],提供开放式的区块链应用开发平台,推进区块链技术的研究。世界经济论坛在 2016年金融服务会议上对如何借助区块链技术重塑金融服务进行了分析和展望15]。我国央行也关注区块链和数字货币的发展16],开始尝试利用区块链技术设计数字票据交易平台原型。
目前,区块链技术与金融行业相结合的项目众多 ' 尤其是第二代区块链技术智能合约(_ Smart Contract)问提出以后,区块链技术在解决跨机构跨行业的金融支付、结算、清算业务中的优势日渐突出。此外,区块链技术在金融服务、供应链服务、公共服务、公共慈善和物联网等多个领域都具有极大的潜在价值。表 1 是区块链技术在部分行业中的应用场景。
1.3共识机制
1.3.1基本概念
区块链作为一种按时间顺序存储数据的数据结构,可支持不同的共识机制。共识机制是区块链技术的重要组件区块链共识机制的目标是使所有的诚实节点保存一致的区块链视图,同时满足两个性质p]:
1) 一致性。所有诚实节点保存的区块链的前缀部分完全相同。
2 ) 有效性。由某诚实节点发布的信息终将被其他所有诚实节点记录在自己的区块链中
1.3.2评价标准区块链上采用不同的共识机制,在满足一致性和有效性的同时会对系统整体性能产生不同影响。综合考虑各个共识机制的特点,从以下4 个维度评价各共识机制的技术水平:
1 ) 安全性。即是否可以防止二次支付、 自私挖矿 ™ 等攻击,是否有良好的容错能力。以金融交易为驱动的区块链系统在实现一致性的过程中,最主要的安全问题就是如何防止和检测二次支付行为。 自私挖矿通过采用适当的策略发布自己产生的区块,获得更高的相对收益,是一种威胁比特币系统安全性和公平性的理论攻击方法。此外, Eclipse攻 击 111]控制目标对象的网络通信,形成网络分区阻隔交易传播。SybU攻 击 M 通过生产大量无意义的节点影响系统安全性。
2 ) 扩展性。即是否支持网络节点扩展113]。扩展性是区块链设计要考虑的关键因素之一。根据对象不同,扩展性又分为系统成员数量的增加和待确认交易数量的增加两部分扩展性主要考虑当系统成员数量、待确认交易数量增加时,随之带来的系统负载和网络通信量的变化,通常以网络吞吐量来衡量D
3 ) 性能效率。即从交易达成共识被记录在区块链中至被最终确认的时间延迟,也可以理解为系统每秒可处理确认的交易数量。与传统第三方支持的交易平台不同,区块链技术通过共识机制达成一致,因此其性能效率问题一直是研究的关注点。比特币系统每秒最多处理7 笔交易,远远无法支持现有的业务量。
4 ) 资源消耗。即在达成共识的过程中,系统所要耗费的计算资源大小,包 括 CPU、内存等。区块链上的共识机制借助计算资源或者网络通信资源达成共识。以比特币系统为例,基于工作量证明机制的共识需要消耗大量计算资源进行挖矿,提供信任证明完成共识。
2 现有的共识机制
2.1工作量证明
最初提出工作量证明机制是为了防止垃圾邮件114]。在比特币系统中,采用工作量证明机制保证所有节点对一个待确认交易集合达成一致。只有完成工作量证明的节点才能提出这一阶段的待定区块,之后网络中的节点在这个区块后继续尝试完成工作量证明,产生新的区块。当某一节点收到两个不同的待定区块时,选择链更长的那个区块进行验证。链越长意味着该链所包含的工作量越多。
工作量证明通常包含3 个算法 115]:产生挑战c 的随机算法、生 成 5 解决挑战C的算法和验证挑战C是否被解决的算法。工作量证明机制中用到的随机算法都是基于计算问题的。在比特币系统中,用于产生挑战C的随机算法是基于SHA- 2 5 6的,挑 战 C 由当前区块链的状态决定,解决 挑战c 就是寻找一个使得其与挑战 c 通 过 SHA-256 可以映射到一个以连续几个 0 开头的二进制困难系数上,表不为 工作量证明机制所选取的计算问题要满足如下性质:
1 ) 伪随机性。保证节点完成工作量证明的概率仅依赖于自身所占有的计算资源的比例,保证相对公平性。
2 ) 难度可控。所选取的计算问题可根据近期网络计算资源波动进行适度调整,保证系统有效运行。计算问题难度过高,则生成区块的时间间隔过长,影响系统效率;难度太低,则完成工作量证明过于容易,会产生分叉,影响系统一致性。
3 ) 可公开验证。由于去中心化的性质,要求计算问题的求解结果可通过简洁的操作公开验证。
采用工作量证明机制可以实现区块链的一致性。当区块链很长时,除了结尾的几个区块,其余已得到全网确认,实现了一致性。节点可自由加人区块链,节点的加人或撤离不会影响区块链的一致性和安全性。每个节点完成工作量证明的概率由它所拥有的计算资源决定,攻击者无法通过创建多个公钥地址来提高自己完成工作量证明的概率,这样可以有效抵御Sybn攻击。同时在诚实方拥有的计算资源占多数的情况下,可有效抵御二次支付,保证系统的安全性。
相关期刊推荐:《计算机科学》主要报导国内外计算机科学与技术的发展动态,涉及面广的方法论与技术,和反映新苗头、能起承先启后作用的研究成果。内容涉及程序理论、计算机软件、计算机网络与信息、数据库、人工智能、人机界面、国际会议、应用等。杂志报导特点是“前沿学科”与“基础研究”相结合;“核心核术”与“支撑技术”相结合;“倡导”与“争鸣”相结合。
然而,工作量证明机制也存在一些问题。首先,工作量证明机制存在严重的效率问题。每个区块的产生需要耗费时间,同时新产生的区块需要后续区块的确认才能保证有效,这需要更长的时间,严重影响系统效率。例如,比特币系统平均1 0分钟产生一个区块,需等待 6 个后续区块进行确认,这样对于一个交易,需等待近 6 0 分钟才能保证被确认。其次,工作量证明机制的安全性要求攻击者所占的计算资源不超过全网的509^,然而从目前比特币矿池挖矿算力情况来看,算力排名前 5 的矿池的总的算力所占比例已经过半116],对系统的安全性和公平性造成严重威胁第三,工作量证明过程通常是计算一个无意义的序列,需要消耗大量计算资源、电力能源,造成浪费,即使后来提出的有用的工作量证明机制(_ Proof of Useful Work) [15]尝试通过求解正交向量、3SUM、最短路径等问题,代替寻找无意义的二进制数来抵消需要消耗的资源,仍无法解决效率等问题。
SCISSCIAHCI