
PoR(Prof of Reputation),信誉证明共识协议,目前顶级的区块链技术的底层共识技术,由公有链项目贝克链Bitconch完成研发。
贝克链已于2018年10月3日向全球发布MVP测试报告,在五个分布式节点(分别位于纽约、阿姆斯特丹、法兰克福、新加坡、北京)公网环境下,峰值速度超过12万TPS,是目前已知的同等运行条件下速度最快的基础公链。贝克链的高性能就得益于由贝克链团队自主研发的PoR信誉共识协议,该算法在结构上包括四个部分:
创新的Bit-R信誉量化体系:用于选诚信节点,并有效抗中心化
基于PBFT的拜占庭容错过程:提高共识效率
创新的BLAZE技术:提高并行处理效率
SHARDING数据分片技术:实现多节点协作
图2. PoR信誉共识协议架构图
Bit-R信誉量化体系
区块链技术的核心是共识算法,共识算法的本质是在分布式网络中,各节点互不信任的条件下,通过举证稀缺资源的方式,形成了纳什均衡的博弈场,赢得各方的信任,快速在各个节点之间达成一致,并同步的完成任务。
PoW,Proof of Work/工作量证明,举证的是矿工的时间和电力;PoS,Proof of Stake/权益证明,举证的是权益,用持币数量或币龄计算。共识就是能够举证某项稀缺资源,因而被信任,可以参与共识,贡献算力,获得奖励。贝克链提出通过举证信誉的方式,来获得共识的达成。
交易数据模型与社交图谱建立
贝克链提出的Bit-R信誉体系(Bitconch Reputation System)是基于有向无环图的DAG交易数据模型和Social Graph社交图谱模型建立的区块链世界的信誉和声望量化体系。
图3(a)和(b)展示了交易数据结构和社交图谱之间的互动关系。15个用户产生了从Tx0,Tx1到Tx13的14笔交易,构建了如(b)所示的社交关系。随着交易Tx的增多,社交图谱中各个节点之间会有越来越多的边,社交网络趋向成熟。
如图4(a)和(b)所示,当新交易Tx14和Tx15生成时,其中Tx14表示用户N1向N4转账m个BUS,Tx15表示N5向N1转账n个BUS,如果m>n,对于N1的信用贡献,Tx14大于Tx15的权重。除了交易额对信誉贡献的影响之外,用户N14和N15本身信誉值的越高,这笔交易的信誉贡献权重越大。随着交易的不断增多,社交图谱中各个节点之间的联系不断增加,提供更多的社交数据喂养信誉值。
信誉模型和数学抽象
通过对用户社交、持币时间、算力贡献三个维度的活跃度进行数学建模,描绘了用户在区块链世界中的行为习惯和活跃程度,以及作为节点参与共识和记账的可信程度和算力贡献程度,如图5所示。
在区块链网络中,贝克链将信誉Bit-R由三个维度构建:社交活跃度D、时间活跃度T和贡献活跃度C。公式分别如下:
(1)
(2)
(3)
(4)
(5)
其中 ω_n为权重,在某个时间t内,D(α,t)为节点的社交活跃度,T(β,t)为每个节点的时间活跃度,C(γ,t)为贡献活跃度。为了能让用户有持续不断的活跃度,同时也为了让后来者能更加公平的参与系统运行,避免先行者优势(FMA)带来的马太效应,我们规定Bit-R随着时间而进行衰减,如公式(2)所示。
图5. Bit-R量化信誉演示图
社交活跃度D:见公式(3)。由一个节点在应用社交网络中朋友的数量、与朋友互动的频率(即热度)、朋友的信誉值和交易额大小等多种因素决定。如图5所示,Tom只有少数几个朋友低频次单向交流。而Jack有很多朋友,与朋友之间也是频繁互动的,有的朋友是高信誉用户,与有的朋友之间互为可信节点,适用于“交易通道”的高频离线交易。则Jack的D值远远高于Tom的D值。在对社交活跃度进行数学抽象时已经充分考虑女巫攻击的可能性,详见2.6章节。
时间活跃度T:见公式(4)。该指标主要由用户持有BUS的币龄决定,我们认为通证的长期持有者比非持有者更可信,作恶动机更小。但与PoS共识中Stake权益不同,财富并非衡量节点是否可信的唯一标准。如图所示,T(β,t)的对数公式为广大的中产阶级用户提供获得高信誉机会。
贡献活跃度C:见公式(5)。该指标描述节点用户对于系统的贡献度C(γ,t),表示在时间为t时,节点对于系统做了多少的贡献,N是系统Account Nonce值,用于记录用户对于系统贡献的频率(分享文件和参与记账)。系统将会按定时任务对文件状态进行检查。
PBFT实用性拜占庭容错
实用性拜占庭容错过程包括两个部分:
定义可信节点列表
一个基于PBFT的拜占庭容错过程
诚信节点的定义和选择
定义诚信节点(Transaction Validator),在区块链网络中,有用户数为N,每个用户都有Bit-R信誉值,根据每个节点的信誉值筛选出前5%的高信誉值的节点进入“节点候选池(Candidates Pool)”,标记为列表,相当于节点社群中的“优秀公民”。
候选名单采用季度竞选制度,每季度更新一次。由于竞选节点数量的不确定性,为了保障有效去中心化同时兼顾系统效率,候选节点池设上限为500个,下限为30个。
即:
当N>10,000时,=500
当N<600时,=30
30 ≤ ≤ 500
诚信节点列表中的节点,系统每回合从候选名单中随机选择M个节点轮流参与验证共识,通过拜占庭容错过程,验证网络中的新交易。验证成功的交易被记录到系统的分布式账本之中,同时增加相应节点的信誉值。拜占庭容错过程,可以在有限作恶节点存在时,仍然为系统提供安全性和活性的保证。作恶的节点的信誉分数将被减少或扣除,并被取消共识和记账权益。
由于Bit-R信誉分数的差异主要来自于社交活跃度而非时间活跃度,所以诚信节点可能主要来自于贝克链生态中的商业开发者或社群组织,是生态中流量的主要贡献者。
拜占庭容错过程
在获得之后,信誉证明通过一个基于PBFT的拜占庭容错过程验证交易的正确性并更新账本。为了清晰的说明过程,我们做出如下定义:
系统中存在两种节点:非故障节点和故障节点。
非故障节点:
系统中运行正常,遵守规则并且无错误的节点。
故障节点:
出现错误的节点,包括超时、数据损坏和恶意行为(拜占庭错误)等。
我们做出如下规定:
节点验证交易,只会输出两种状态:0为验证成功,1为验证失败。
所有的诚信节点会在有限时间内做出决策。
所有的诚信节点会做出相同决策。
POR将共识分为若干个任期,每一任期都会从所有节点中,选择信誉值最高的5%的节点组成候选人池(Candidate Pool),每个任期包含若干回合,每个回合会处理若干交易数据,因此可定义为第k周期的诚信节点列表。中含有M个节点,是从所有节点中信誉值最高的百分之五所选择出来的。
达成共识流程:
使用分布式随机数生成算法,中节点生成一个随机字符串
在M中所有节点中被广播,上一个回合结束。
根据,从随机选择出一个Leader节点,和相应的投票节点(Voting Node)。
Leader节点负责交易的广播。投票节点验证交易,并投票。
Leader节点负责通过哈希函数,在各个节点之间同步周期和回合数。
有若干未验证交易Tx0。
本回合又有若干新交易生成Tx1。
未验证交易Tx0和新生成Tx1,汇聚到Leader节点,组合成待验证交易列表Tx。
Tx会在中广播,中的投票节点会验证交易,并进行投票,若交易获得足够多的投票,则该交易会被确认,并被更新到账本中。
中的节点会分为Leader节点和Voter节点。的作恶节点小于m/3,即投票数>2m/3,则该回合定义为成功。中节点的贡献活跃度增加,相应节点的交易活跃度增加。
创新的BLAZE并行架构
为了进一步提高系统并行处理效率,提高运算速度,贝克链团队首次提出BLAZE(Bitconch Ledger Access Zero-delay Extension)贝克链零延迟账本访问技术,简称BLAZE并行处理技术。
BLAZE的架构设计受到了Classic RISC pipeline(经典精简指令集流水线)的启发,如图6和7所示。将区块链验证中的数据Fetch、解码Decode、哈希运算Hash、状态变更State、写数据Write的五个步骤,在操作期间,每个流水线阶段一次处理一个指令。这些阶段中的每一个都包括一组初始指令,这些指令对进入的交易的输出进行操作。
图6. 创新的贝克链零延迟账本访问技术
图7. BLAZE架构图
Finality Time(终态确定时间)
终态确定时间是确认区块链上的数据最终状态所需要的时间。提高区块链的速度,就是要减少终态确定时间。POR算法通过Reputation定义了诚信节点,缩小了确认终态的节点数量,从而减少了确定时间。但是要达到亚秒级的速度,还需要快速的验证大量的交易块(本地),同时快速的在网络各个节点之间快速的广播(网络)。对于交易验证来说,签名验证是最需要消耗时间的部分(瓶颈),此外还有诸多如网络驱动、数据依赖性的管理等诸多部分都需要消耗时间(瓶颈)。我们需要定义一个可以让所有的硬件的等待时间最少的架构,因此贝克链借鉴了CPU设计中的经典精简指令集流水线设计思想,将多核处理(CPU和GPU)和五步流水线结合起来,可以达到验证交易速度的大量提升。
SHARDING数据分片技术
POR支持通过分片技术(Sharding)提高吞吐量。分片技术借鉴于经典数据库中的分区技术,当数据吞吐量很大的时候,一个数据库的读写会需要很长的时间,因此可以通过将数据分别存储在不同的数据库的不同的表中,提供高速访问数据的能力。在POR中,我们从高信誉节点中选择N个节点,作为Sharding节点,Sharding节点通过和leader节点保持同步,每个Sharding节点打包处理自己所关心的数据,通过上一层的Leader节点再一次将每个Sharding节点打包的交易进行确认。
首先在所有的记账节点中,定义一组Sharding节点和Leader节点。在这里我们使用分布式随机数生成算法,选择Sharding节点和Leader节点。Sharding节点负责分流汇聚到Leader节点的Tx,通过系统时钟,Sharding节点和Leader节点保持同步,并且可以同步验证交易的正确性,系统时钟在这里充当了一个信息通道的作用,保证Leader节点和Sharding节点之间的一致性。每一个Sharding节点给自己处理的交易,加上一个标记序列(Sharding ID),Leader节点和投票节点可以通过校验ShardingID,从而对于交易进行确认。
系统架构图及其他相关技术
BVM虚拟机并兼容以太坊智能合约
贝克链通过提供多种工具支持开发者打造属于自己的分布式应用,丰富贝克链的生态系统。贝克链提供了基于Solidity的编程语言BO和相对应的虚拟机BVM,如图所示。在贝克链上,开发者通过编程语言将商业逻辑转化为智能合约,智能合约通过虚拟机(Virtual Machine),将编程语言编程成机器可以运行的字节码。
BVM相对于EVM有三大优势:
第一、更容易开发强大功能的智能合约
相比较以太坊的65个opcodes,贝克链为了方便开发者能开发更优质的DAPP,会提供更多可选的opcodes和标准库,扩展更多的社交和落地应用的功能。因为智能合约中通常都有大量的代币存在,一旦出现错误将对开发者和用户造成巨大损失,因此BVM将会提供智能工具,检测交易顺序、时间戳、意外处理和可重入漏洞(Reentrancy Vulnerability)等常见Bug。为了提升开发速度,让开发者更容易编写智能合约,BVM将是一个基于寄存器的虚拟机。
第二、提供接口,使智能合约和外部进行通信
相对于EVM和外部世界隔离(无法使用网络、文件或者其他进程的权限)的沙箱环境,BVM通过数字签名建立传输通道,解决智能合约和外部世界的通信问题。
第三、支持多语言开发
为了能让更多的开发者加入贝克链社区,BVM未来将支持Python,Java,C++等多种开发语言。
图7. BVM虚拟机架构图
系统架构图
贝克链通过零知识验证将交易详情进行加密,从而保护用户的隐私。为了应对将来量子计算机时代的到来,贝克链将采用抗量子攻击的密码学算法。贝克链提供套件可以让用户生成可修改的智能合约模板。用户根据贝克链提供的模板和规则,可以开发出易于升级和管理的智能合约。贝克链支持不同的挂钩机制(Two-way Peg/双向锚地)实现主链和侧链的结合,并将为开发者提供侧链开发模板。在未来的应用场景中,贝克链作为主链将主要提供可信记账和信誉管理,更丰富的商业功能将开放并支持侧链进行实施。例如:贝克链将提供分布式存储功能,开发者可以在自己的侧链上实现文件存储、多媒体等功能。
图8. 贝克链系统架构图
注:▲项为采用了当前最先进的技术或算法;
★项为贝克链具有自主知识创新和核心竞争力的技术或算法
安全性分析
女巫攻击
用户发动女巫攻击的目的是希望通过低成本的创建多个虚假账户来获取系统信誉奖励。由于每个用户的Bit-R信誉值是由持币数量和时间、历史交易、算力贡献值构成,如果大量的假账号没有持币和算力贡献值,这就使虚假账号缺乏1~2个维度的信誉分数,仅仅依靠交易数来积累Bit-R信誉值是有上限的,难以像绝大多数的真实用户一样通过三个维度获得更高信誉分数。
由社交活跃度计算公式可知,其中为每次交易的权重函数,与交易金额正相关,是交易对象,为关于信誉值的对数函数,用于控制当过小时,即一个节点和一个或者多个低信誉度交易,并不能显著提高自己的值,这有效规避了试图通过增加虚假用户恶意提升信誉的可能。在社交活跃度计算时,不仅取决于交易数量,还取决于好友本身的信誉值,与一群虚假的没有信誉的账号互刷交易,信誉分数的增长也是有限的。而交易本身需要在机器上运行,需要电费和时间,假账号需要大量的时间来积累Bit-R值,成本非常高,根据朴素的经济学原理,是非常不划算的。
双花攻击
由于POR信誉共识算法采用的是确定性模型。若系统出现双花交易,由于拜占庭容错过程的确定性特质,即使两笔交易被同时确认,当其中的一个被更新到账本上后,另一个由于余额不足就会被自动舍弃,从而避免了双花攻击的出现。 作恶的节点将被追溯并受到惩罚,信誉值降低,失去参选信任节点的资格。由于节点的作恶成本远高于作恶可能带来的收益,所以作恶动机极低。
Runtime失败和超时失败
当Leade节点出现硬件故障、断电、Bug时,其余的Validator节点可以触发选举,重新选择下一个Leader节点。这个时间段内的所有交易将不会被确认,会在新的Leader节点出现并开始工作之后,重新确认。
如果出现网络超时,系统也会重新触发选择新的Leader。
拜占庭容错性
POR信誉共识算法中采用了PBFT实用性拜占庭容错算法,具有2/3的拜占庭容错性。
有效抗中心化
贝克链采用两种方式来有效抗击中心化,预防节点之间联合作恶:
(一)扩大诚信候选节点范围至所有节点的5%,从候选池中按照时间任务随机选择共识和记账节点。参与共识的节点范围越大,联合作恶的可能性越小。
(二)基于Bit-R信誉值来选节点。Bit-R信誉值是每个用户和节点行为画像和历史交易记录,不能像代币一样合并和转移,所以节点之间联合作恶可行性小。
PoR诚信节点 vs DPOS超级节点
贝克链基于Bit-R信誉值选超级节点比DPOS基于持币量选超级节点更能够有效抗击中心化,防止节点作恶。
贿选,是DPOS算法在竞选超级节点过程中被广为诟病的弊端之一,因为用代币(钱)来选节点很容易导致参选节点之间为了谋取利益最大化而组织起来,贿选往往是难以避免的,取证过程也非常困难,因此难以通过社群治理来杜绝和惩戒。
贝克链采用的PoR共识算法是基于Bit-R信誉值来选节点,每个节点信誉分数由社交活跃度(DAPP应用项目的用户量、普通用户的其朋好友数量、交易历史)、时间和算力贡献活跃度等决定,是经过时间积淀的。钱的合并是非常容易操作的,但信誉的合并是非常困难的,两个开发者不可能把流量合并在一起,即便合并,用户也未必愿意使用新的产品;两个社群即便要合并在一起,曾经的交易记录也无法复制,需要重新再来。因此,Bit-R信誉解决了DPOS在竞选超级节点过程中可能出现的“贿选”弊端,能够更加有效的抗击中心化,超级节点在参与共识的博弈中作恶成本更高。
制衡哲学打破区块链的三角困境
可扩展性、安全性和去中心化被认为是区块链的“三角悖论”,又称“不可能三角”。贝克链通过技术创新和制衡哲学实现了区块链的扩展性、安全性和有效去中心化。如图9.所示,通过PoR信誉共识等底层算法优化使贝克链实现了高可扩展性和安全性,贝克链创新的POR共识算法是以实用性拜占庭容错算法为基础,增加BLAZE架构和Sharding技术进一步提升系统可扩展性,但这种算法本身无法做到狭义的“完全去中心化”,而是巧妙的采用信誉值来提高可信节点的作恶成本,减少联合作恶的可能性。
前5%高信誉用户进入候选池,使更多的诚信节点可以参与共识,候选池中的节点再按时间任务选出有限的节点(专业设备、时时在线)参与共识,保障贝克链具有高性能,交易被快速度确认,并保持全网一致性。由于信誉的累计需要付出很高的时间成本。所以,贝克链通过信誉制衡机制达到有效抗击中心化。
图9. 贝克链的三角平衡图