基于实用拜占庭共识算法(PBFT)的区块链模型的评估
Posted FAFU_kyp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于实用拜占庭共识算法(PBFT)的区块链模型的评估相关的知识,希望对你有一定的参考价值。
摘要
近年来,区块链成为了互联网金融领域的研宄热点。作为一种分布式的账本技术,区块链具有去中心化,不可篡改,安全可信等诸多优势,但同时面临耗能过高,吞吐量低等问题。共识算法作为区块链的核心,决定了区块链达成共识以及产生区块的方式。实用拜占庭共识算法(PBFT)作为目前联盟区块链使用较多的共识算法,具有耗能小,吞吐量高等优点,但存在对带宽要求较高,节点数量固定等缺陷。
研究背景
区块链是一种去中心化的或着严格意义上说是一个多中心化的分布式数据库系统。区块链中的每一个节点都存储这所有的交易记录或者其交易记录Merkle树的哈希值。该系统是由一系列使用密码学方法进行加密以及压缩产生的数据区块后再有序链接而成。由于前一个区块的merkle树的哈希值都包含在下一个区块中,因此在特定时间内,每个区块中的内容都是无法被他人篡改的。
当前,区块链一共发展成为三种差异化类型:公有链,联盟链,私有链。
- 公有链以比特币为代表,公有链上的所有的交易数据都是公开的,因此每个人都可以对公有链上的数据进行验证。由此可以看到公有链是完全的分布式去中心化系统,用户参与度高。
- 联盟链,顾名思义,参与其中的节点都是事先选择好的,并且之间有着一定的联系与关系。相对于公有链而言,联盟链中由于参与节点数量较为固定,节点的信用度更好等原因,其交易速度更快,成本更低,并且交易的耗能也更小。
- 私有链,参与其中的节点更少,比如某些特定的机构,由此可以看出,私有链相对于区块链的本质有所违背,然而可以满足部分场景的应用。
受到可编程货币的影响,各大银行机构都在探索如何将区块链这项技术技术应用于金融行业中。人们试验将智能合约的理念与技术应用于区块链之中,从而进一步形成了可编程金融的模式。
目前区块链中的“数据防伪”,“去中心化”等特点在各个领域都得到了广泛的重视。仲裁,溯源,物流,投票等领域都可以将区块链应用其中。从而让整个社会进入了智能互联网时代,使得区块链不仅仅在金融货币方面降低信任成本,在其他领域也可以得到相应的运用。从而形成一个可编程的社会。
随着互联网技术的飞速发展以及广泛的使用,很多人都认为区块链将会是“下一个互联网”。可以看出人们十分看好区块链技术的发展。目前世界各地的高校,银行,IT企业等都纷纷投入人力物力在区块链的研究中,一个重新定义信任的下一代互联网即将来临。
国外研究现状
目前,比特币以及衍生出来的不同种数字货币仍是区块链的主要研究与应用的对象。而各大互联网,IT等企业涉足区块链之后,着手研究将区块技术推向金融领域,最终将区块链应用到日常生活的各行各业中。目前,瑞波公司推出的ripple协议,希望成为下一代支付协议,使其像通信一样方便。其推出的瑞波币也得到了世界范围内越来越多人的关注。此外,区块链在其他方面也有广泛的应用。Follow My Vote公司开发出了区块链在线投票软件。这个投票软件不同于传统的投票软件,它是一个股份加权投票软件。与此同时,该软件利用区块链技术作为其底层,从而可以保证选民的选票不可被篡改,候选人的选票不可被更改。最终投票确定后的结果也是不可以被更改的,该结果对区块链上的所有用户公开,因此是否正确也可以方便查询。从而可以说这个投票软件可以让投票变得更加公平公开。
IBM发起了一个可以进行食品溯源的区块链项目IBM FoodTrastIBM公司认为食品行业的参与者需要从一个可信的、端到端的观点去看他们的供应链,他们还需要看到整个行业的透明度在不断增加。在食物供应链的整个系统中能对食品进行溯源以确保食品安全。并同时能够更快地对污染进行排查与追踪。这样使得食品链中的供给商、分销商、物流供应商等在每一步操作中都对外透明,从而使最终消费者从中受益。通过ffiM FoodTmst解决方案,若食品安全存在问题,供应商和零售商就能快速有效地追踪和召回产品。这个解决方案为食品供应链的参与者们提供了一个有权限的、共享的食品行业信息视图。若将区块链技术作为数字化战略的核心,则食品行业有机会迅速、高效、准确地应对目前存在的健康风险。从而大大提高视频安全。迄今为止,IBM己与多家公司签约将此项目投入实际使用。
国内研究现状
根据工信部发布的《中国区块链技术和应用发展白皮书》,可以从中梳理出区块链技术不等于数字货币,因此需要将区块链技术与数字货币进行区分。国家大力支持区块链技术的发展,而对于数字货币的管理在短时间内不会放宽。
不同于西方世界着眼于区块链在ICO领域的发展,由于国内监管部门的严密监控,我国更着重于区块链在落地应用方向的研宄。
区块链的研究主要可以分为区块链的侧链与跨链研究、区块链的应用研宄、区块链中智能合约的研究、区块链中的共识算法的改进与可扩展性的研究、区块链中节点数据传输性能的研究、区块链技术的安全研究等。
智能合约技术也是由于区块链技术的出现而再一次的出现在了人们的眼前,然而智能合约技术目前的不稳定性以及安全性等问题,还需要进一步的研究才能真正的应用在实际生活中。而区块链的共识算法,安全性,可扩展性以及节点数据传输性能等都旨在对区块链本身进行改进,从而使得区跨链能够更好地为我们进行服务。
区块链核心技术
区块链数据库
区块链是一个多中心化的分布式记账账本,区块链中的各个节点相当于分布式系统中的数据库,然而其与分布式数据库不一样的地方是没有一个中心管理员去维持各个数据库之间的数据同步。然而在区块链中,数据只能够写入到区块的数据库中,不能够进行删改操作。在区块链中利用各种密码学的技术来保证存储在区块中的数据的安全。并且区块链是一个分布式的系统,篡改一个节点的数据也得不到系统中大部分节点的承认,也只是徒劳而已。这种分布式数据库服务器集群的分布式为了实现服务的恢复与备份,数据的冗余等。然而他们仍然知识属于某一个企业或者机构,因此他们还是中心化管理的数据库集群。
然而由于区块链上的数据是分布式的并且经过了密码学的加密,因此无论是数据的上传者或者数据的存储者,都无法知道某个数据的具体存储的位置。这样就能很好的防止非法的内容污染区块链的数据库。
分布式账本
区块链是一个拥有具体技术的分布式账本,然而分布式账本并不全是区块链。
- 分布式账本在技术层面上与区块链一样是去中心化的,并且为了使得各个账本之间的数据保持一直也使用了共识算法。虽然使用的共识算法存在不同,这是因为传统的分布式账本不需要考虑拜占庭问题。
- 传统的账本结构都有着一个机构去管理着系统上的所有账本数据,从而这个分布式账本似乎并不是真正意义上的去中心化的系统。
在区块链中,我们所要实现的就是一个完全的,100%的去中心化,各个节点管理自己本地账本数据的分布式记账账本。
- 在这个系统中,没有一个机构能够管理着大部分的节点账本。
- 通过哈希函数与时间戳技术将各个账本连接在一起。
- 比特币中的分叉现象就是因为比特币社区中各个挖矿者之间竞争而造成的影响。
这是一种良性的竞争,这表明比特币系统中没有一个机构能够控制区块链上的所有的节点。
共识算法
POW与POS算法是目前公有链使用最多的共识算法。比特币,以太坊等目前比较著名的应用都是使用POW算法或POS算法。通过查阅比特币以及以太坊资料之后可以对POW算法与POS算法的性能可以得到以下一些结论:
目前公认的可以从系统的高吞吐量,低耗能,动态性等方面,根据区块链的使用场景对区块链的共识算法进行改进。
研究方向:
区块链的研究主要可以分为区块链的
- 侧链与跨链研究、
- 区块链的应用研宄、
- 区块链中智能合约的研究、
- 区块链中的共识算法的改进与可扩展性的研究、
- 区块链中节点数据传输性能的研究、
- 区块链技术的安全研究等。
在这其中侧链与跨链主要是为了解决目前单链情况下的存在的性能,容量,隐私以及各个链之间数据不能相互传递的问题。区块链的应用研宄是目前国内外区块链研宄的最热门方向。目前将区块链技术与各个领域各个行业相结合,可以大大增加各个行业的效率,从而得到了很多人的关注。
智能合约技术也是由于区块链技术的出现而再一次的出现在了人们的眼前,然而智能合约技术目前的不稳定性以及安全性等问题,还需要进一步的研究才能真正的应用在实际生活中。而区块链的共识算法,安全性,可扩展性以及节点数据传输性能等都旨在对区块链本身进行改进,从而使得区跨链能够更好地为我们进行服务。
区块链共识算法 PBFT(拜占庭容错)PAXOSRAFT简述
共识算法
区块链中最重要的便是共识算法,比特币使用的是POS(Proof of Work,工作量证明),以太币使用的是POS(Proof of Stake,股权证明)使得算理便的不怎么重要了,而今POS的变体DPOS(Delegated Proof of Stake,股份授权证明)进一步削减算力的浪费,同时也加强了区块链的安全性。
不过,对于不需要货币体系的许可链或者私有链而言,绝对信任的节点,以及高效的需求上述共识算法并不能够提供,因此对于这样的区块链,传统的一致性算法成为首选,PBFT(拜占庭容错)、PAXOS、RAFT。
PBFT(拜占庭容错)
基于拜占庭将军问题,一致性的确保主要分为这三个阶段:预准备(pre-prepare)、准备(prepare)和确认(commit)。流程如下图所示:
其中C为发送请求端,0123为服务端,3为宕机的服务端,具体步骤如下:
1. Request:请求端C发送请求到任意一节点,这里是0
2. Pre-Prepare:服务端0收到C的请求后进行广播,扩散至123
3. Prepare:123,收到后记录并再次广播,1->023,2->013,3因为宕机无法广播
4. Commit:0123节点在Prepare阶段,若收到超过一定数量的相同请求,则进入Commit阶段,广播Commit请求
5.Reply:0123节点在Commit阶段,若收到超过一定数量的相同请求,则对C进行反馈
根据上述流程,在 N ≥ 3F + 1 的情況下一致性是可能解決,N为总计算机数,F为有问题的计算机总数
N=4 F=0 时:
得到数据 | 最终数据 | |
A | 1 1 1 1 | 1 |
B | 1 1 1 1 | 1 |
C | 1 1 1 1 | 1 |
D | 1 1 1 1 | 1 |
N=4 F=1 时:
得到数据 | 最终数据 | |
A | 1 1 1 0 | 1 |
B | 1 1 0 1 | 1 |
C | 1 0 1 1 | 1 |
D | 0 1 1 1 | 1 |
N=4 F=2 时:
得到数据 | 最终数据 | |
A | 1 1 0 0 | NA |
B | 1 0 0 1 | NA |
C | 0 0 1 1 | NA |
D | 0 1 1 0 | NA |
由此可以看出,拜占庭容错能够容纳将近1/3的错误节点误差,IBM创建的Hyperledger就是使用了该算法作为共识算法。
PAXOS
PAXOS是一种基于消息传递且具有高度容错特性的一致性算法。
算法本身用语言描述极其精简:
phase 1
a) proposer向网络内超过半数的acceptor发送prepare消息
b) acceptor正常情况下回复promise消息
phase 2
a) 在有足够多acceptor回复promise消息时,proposer发送accept消息
b) 正常情况下acceptor回复accepted消息
PAXOS中有三类角色Proposer、Acceptor及Learner,主要交互过程在Proposer和Acceptor之间,做成图便如下图所示:
其中1,2,3,4代表顺序。
以下图描述多Proposer的情况,T代表时间轴,图中仅画全一个Proposer与Acceptor的关系:
A3在T1发出accepted给A1,然后在T2收到A5的prepare,在T3的时候A1才通知A5最终结果(税率10%)。这里会有两种情况:
1. A5发来的N5小于A1发出去的N1,那么A3直接拒绝(reject)A5
2. A5发来的N5大于A1发出去的N1,那么A3回复promise,但带上A1的(N1, 10%)
最终A5也会接受10%
上图描述,如果已经Promise一个更大的N,那么会直接Reject更小的N
上述描述了,即使Promise了一个N,如果在未Accepted前,再收到一个更大的N,那么依旧会Reject那个即使已经Promise的N
总流程图氪概括如下:
PAXOS协议用于微信PaxosStore中,每分钟调用Paxos协议过程数十亿次量级。
RAFT
RAFT核心思想很容易理解,如果数个数据库,初始状态一致,只要之后的进行的操作一致,就能保证之后的数据一致。由此RAFT使用的是Log进行同步,并且将服务器分为三中角色:Leader,Follower,Candidate,相互可以互相转换。
RAFT从大的角度看,分为两个过程:
1. 选举Leader
2. Leader生成Log,并与Follower进行Headbeats同步
选举Leader
Follower自增当前任期,转换为Candidate,对自己投票,并发起RequestVote RPC,等待下面三种情形发生;
1. 获得超过半数服务器的投票,赢得选举,成为Leader
2. 另一台服务器赢得选举,并接收到对应的心跳,成为Follower
3. 选举超时,没有任何一台服务器赢得选举,自增当前任期,重新发起选举
同步日志
Leader接受客户端请求,Leader更新日志,并向所有Follower发送Heatbeats,同步日志。所有Follwer都有ElectionTimeout,如果在ElectionTimeout时间之内,没有收到Leader的Headbeats,则认为Leader失效,重新选举Leader
流程图示:
安全性保证
1. 日志的流向只有Leader到Follower,并且Leader不能覆盖日志
2. 日志不是最新者不能成为Candidate
动画演示RAFT:http://thesecretlivesofdata.com/raft/
总结
以上三种一致性算法仅仅只是核心思路而已,如果要具体实现当然还有很多方面需要进一步的完善。以上三种算法都可以作为区块链的共识算法,并且部分公司已经开始使用,不过最出名的还应属IBM的Hyperledger使用的PBFT共识算法。
得到数据 | 最终数据 | |
A | 1 1 1 1 | 1 |
B | 1 1 1 1 | 1 |
C | 1 1 1 1 | 1 |
D | 1 1 1 1 | 1 |
大家好,我是Heaven,欢迎大家关注本订阅号,也欢迎大家通过下面的二维码加本人微信一起聊聊区块链。
以上是关于基于实用拜占庭共识算法(PBFT)的区块链模型的评估的主要内容,如果未能解决你的问题,请参考以下文章