APP下载

基于门限密码方案的共识机制

2019-12-18田有亮岳朝跃

计算机研究与发展 2019年12期
关键词:竞价保证金记账

王 缵 田有亮 岳朝跃 张 铎

1(贵州省公共大数据重点实验室(贵州大学)贵阳 550025)2(贵州大学计算机科学与技术学院 贵阳 550025)3(贵州大学数学与统计学院 贵阳 550025)4(贵州大学密码学与数据安全研究所 贵阳 550025)(vinheres@163.com)

近年来,随着比特币等虚拟货币持续火爆,区块链技术的研究呈现出井喷式增长态势,被誉为未来10年内最有可能提高人类社会生成力的新科技之一.2008年比特币电子现金系统被提出[1],实现了真正意义上的去中心化可信任的P2P自组织网络[2]交易平台.在该文献中,区块链被描述为用于记录比特币交易的一种分布式账本技术[3].该技术利用数字签名技术实现点对点的交易,通过对交易和时间戳等信息进行随机Hash,并将Hash结果利用工作量证明机制(proof of work,PoW)写入一个可以无限延伸的链式数据结构中,并通过发放代币(比特币)来激励全网节点共同维护区块链系统.但是区块链的应用不仅仅局限于比特币等电子货币系统[4],现在人们在隐私保护[5]、物联网[6]、供应链[7]、医疗健康[8]等众多领域不断进行区块链应用场景的研究与应用开发.

区块链是一种分布式的系统,系统中的所有节点共同保障该系统的正常运行.在这种分布式系统中,区块链为解决网络延时、传输错误、去中心化导致的数据分歧(拜占庭节点)等问题,需要一种共识机制来使各个节点达成共识,保证数据的最终一致性,其主要思想是解决区块链分布式账本的一致性和记账权问题,其目标是使所有的诚实节点保存一致的区块链账本.由此可见,共识机制是区块链技术的核心所在.

“共识机制”一词近几年被频繁使用,其名主要由工作量证明机制而得来.随着对分布式账本一致性问题的不断探索,很多算法被提出来,其中有很多算法回归了对传统分布式一致性算法的改进,其在算法思路上已经跳出了“证明”的语义,故可以进一步概括为共识机制.因此,可以将共识机制研究热点概括为2个方向:传统分布式一致性算法的改进算法和证明机制算法.如Paxos和Raft算法就是传统分布式一致性算法的代表,它们一般不能直接作为区块链的共识机制使用[9],这是由于其假设系统中每个节点都是诚实的、不作恶的,而实际的去中心化的区块链网络中,节点之间互不了解、互不信任,存在欺骗和作恶的可能.而在这种情况下,不得不提到适用于联盟链的BPFT(practical Byzantine fault tolerance)算法[10],它可以在拜占庭节点数不超过全网节点数量1/3的情况下保障数据的一致性,但是其效率与参与共识的节点数量相关,并不适用于节点数量过多的公有区块链系统,并不具备良好的扩展性;另一类是证明机制算法,如基于工作量证明的PoW共识算法[11-12],严重浪费资源(电力消耗),且长达10 min的交易确认时间使其不适用于中小额交易的场景;基于权益证明的PoS(proof of stake)共识算法,在2012年8月应用于电子货币系统点点币(peercoin)[13],在其共识机制中,节点消耗的币龄(代币数量乘以拥有代币时长)越多,其产生区块的难度就越低。这也导致某些节点积累币龄,长时间不参加记账,同时较PoW算法也更容易引起区块链分叉,而且其本质仍采用“挖矿”机制来产生区块,同样还面临性能瓶颈;基于PoW和PoS算法的有机结合算法,如权益速度证明(proof of stake velocity,PoSV)[14]、燃烧证明(proof of burn,PoB)[15]、行动证明(proof of activity,PoA)[16]和2跳共识算法[17]等.为解决PoS中“屯币”现象,2014年4月Ren提出了PoSV共识算法,在这份蜗牛币(reddcoin,RDD)白皮书中,其改进了PoS中币龄是时间的线性函数的问题,在PoSV算法前期使用PoW实现代币分配,在后期则使用PoSV维护网络长期安全;2014年5月基于PoW和PoS提出了PoB共识算法,并发行了Slimcoin.PoB共识算法通过“燃烧”矿工持有的Slimcoin(把Slimcoin发送至特定的无法找回的地址)来竞争新区块的记账权,燃烧的Slimcoin越多则挖到新区块的可能性就越大;2014年12月提出的PoA共识机制,采用PoW挖出的部分代币以抽奖的方式分发给所有活跃节点,而节点拥有的权益越高,其被抽中的概率也就越大,Bentov等人[16]不仅提出了PoA共识机制,还指出了PoW共识机制在比特币系统后期带来的“公地悲剧”问题,但并没有结合博弈论给出分析与证明;2017年4月2跳共识被提出,其解决思路是在PoW算力的基础上引入PoS权益,使得新区块的产生依赖于诚实节点占有大多数的联合资源(算力+权益).综上而言,这些共识算法都致力于取长补短、解决PoW与PoS存在的能源消耗与安全风险问题,在能源消耗、安全风险、吞吐量与性能等方面都有所突破,但都没有跳出“挖矿”式共识模式.

因此,本文针对比特币系统后期可能出现的“公地悲剧”问题、系统的性能瓶颈及“挖矿”的资源消耗等问题,首先利用博弈论分析比特币系统后期“公地悲剧”现象,在此基础上提出了一种基于门限密码方案[18]的共识机制(a consensus mechanism based on threshold cryptography,TCCM).在TCCM共识机制中,本文利用门限群签名理论[19-21]构建了记账节点保证金模型,获得区块链记账权的节点可以通过该模型提交保证金,同时该模型也保证了保证金的安全.其次,本文还利用门限加解密理论[22-23]构造了区块链记账权竞价模型,该模型通过节点竞价的方式产生记账节点,获得记账权的节点提交保证金来实现节点信用背书.最后,重构奖励机制,让收益能够奖励给存储、验证、传播区块的节点,使得更多的节点参与到共识的全过程中.

本文的主要贡献有4个方面:

1)结合博弈论分析并证明了比特币系统后期“公地悲剧”的存在性,解释了“公地悲剧”所引发的比特币系统后期的安全问题;

2)设计了基于门限群签名方案的保证金模型,该模型不仅为节点能够诚实地产生新区块提供背书,也设计了一种特殊的交易形式以确保保证金的安全;

3)设计了基于门限加解密理论的区块链记账权竞价模型,该模型使得节点通过竞价拍卖的方式获得记账权,并能够保证记账节点产生的随机性,有效地防止记账权垄断现象;

4)重构了区块链的奖励规则,使得越来越多的节点参与到共识的各个环节,能让更多的非记账节点通过系统获利,解决了“公地悲剧”问题,新共识机制打破了原有的“挖矿”式共识模式,有效地降低了资源消耗.

1 比特币系统的“公地悲剧”问题分析

在文献[16]中,Bentov等人指出PoW共识机制在比特币系统后期会导致“公地悲剧”问题,主要指:当区块奖励可以忽略不计时,即奖励(几乎)完全是交易费用组成,比特币系统会出现显著的利润减少.由于节点存在自私的心理,都想尽可能不花费更多费用去使用系统的公共资源(矿工算力),比如转账、支付等.于是,使用者都不愿意把费用支付给“矿工”用于系统维护,大量低价值交易就不断出现.这必然导致“矿工”挖出来的交易费越来越少,于是造成网络算力下降,敌手攻击成本降低,系统越来越不安全,越来越多的使用者(节点)离开,网络节点数下降,直至整个比特币网络系统崩溃,这就是“公地悲剧”问题.为解决该问题,Bentov等人[16]认为矿工可以尝试形成只接受高额交易的协议,设置每个块中的交易传递的总价值上限、限制块的大小等,但没有从博弈论的角度给出分析.本文在此基础上,结合博弈论具体分析并证明了比特币系统的“公地悲剧”的存在性.

在区块链系统中,假设有m个节点维护系统,且每个节点都是理性的参与者.gi∈[0,+)表示节点i产生的交易数量,代表m个节点每轮(1次共识过程)产生交易的总数;v表示每笔交易的交易费用.假设是v是G的函数,v=v(G).因为每笔交易至少有一定比特币的交易费用才会吸引节点由于利益的驱使去进行“挖矿”,如若不然,整个比特币系统的安全性就会受到挑战.假设每轮系统存在最大的交易总数Gmax,当G0;当G≥Gmax,v(G)=0.随着交易总数的增加,每笔交易的费用就会降低.从另一方面说,当记账节点尽可能包含更多的交易时,会使得单笔交易的交易费降低,导致更多地交易总量.因此,本文假设:

(1)

如图1所示:

Fig.1 The fee for each transaction decreases as the total number of transactions increases图1 每笔交易的交易费随着交易总数增加而下降

在系统中,节点会根据收集的交易费总价值来确定是否竞争“挖矿”.假设进行Hash计算时,每笔交易的平均资源消耗为c,对于“挖矿”成功的节点s,其利润函数为

(2)

(3)

其中,fail≠s.式(2)(3)的一阶导数分别为

(4)

(5)

S′(g1,g2,…,gm)=ξ(pi×S(g1,g2,…,gm)+

(1-pi)×Q(g1,g2,…,gm)),i=1,2,…,m,

(6)

式(6)的最优化的一阶条件是

(7)

式(7)可以解释为增加一笔交易有正负2方面的效应,正的效应是这笔交易产生交易费v(G),负的效应是这笔交易会导致该轮每笔交易的交易费都降低.

m个节点一阶条件定义了m个反应函数:

g*=gi(g1,…,gi-1,gi+1,…,gm),
i=1,2,…,m,

(8)

因为:

(9)

(10)

所以根据隐函数存在定理可得:

(11)

将m个节点的一阶条件(即式(7))相加,可得:

(12)

系统最优的目标是最大化:

(13)

其中,ϖ表示系统实际情况下参与“挖矿”的节点数量且满足ϖ

式(13)的最优化的一阶条件为

v(G**)+G**v′(G**)=ϖc,

(14)

这里,G**是比特币系统最优的交易数量,比较整个系统最优(见式(14))与单个节点最优的一阶条件(见式(12))可以看出,G*>G**,即系统实际运行时产生的交易数量过多,系统负荷过大,系统的矿工数量不足以满足交易数量,公共资源(矿工算力)被过度使用,从而引起比特币系统安全性的担忧.

2 系统模型

本节主要提出了节点保证金模型和区块链记账权竞价模型.

2.1 保证金模型

为了防止参与共识节点的作弊、无故离线、频繁分叉等拜占庭行为,本文提出了一种基于门限群签名理论的保证金模型,旨在通过抵押保证金抑制节点的拜占庭行为,利用门限群签名技术提高保证金的安全.

如图2所示,该保证金系统模型的参与方包括:可信中心(trust center,TC)(这一般由区块链系统监管机构负责);缴纳保证金的节点ID0;签名合成者(signature combiner,SC);保证金管理节点集合T={T1,T2,…,Tn},其身份信息分别为ID1,ID2,…,IDn.本文将缴纳和退还保证金的行为看成是一种特殊的交易,在该交易中,由缴纳保证金的节点ID0向T(由区块链系统中多个节点构成)缴纳保证金.每一位缴纳保证金的节点需要通过对前一次交易(一般交易)和下一位拥有者(保证金管理者集合)的公钥签署一份随机散列的数字签名,并将这个签名附加在保证金的末尾,那么保证金就提交给了T.当缴纳保证金的节点诚实地完成了1轮或者多轮区块链共识,由保证金管理者集合T对前一次交易(特殊的交易)和下一位拥有者(需返还保证金的节点ID0)利用门限群签名技术签署一份随机散列的数字签名,并将这个签名附加在返回的保证金的末尾,保证金就返还给了之前缴纳保证金的节点ID0.

Fig.2 The schematic diagram of margin model图2 保证金模型示意图

该保证金模型包含保证金缴纳和保证金退,对于缴纳保证金部分与比特币系统类似,只是将下一位拥有者的公钥替换成金管理节点集合T的群公钥gp,故不作详细阐述;保证金退还部分利用了门限群签名技术,在文献[24]的方案基础上做出了调整与修改,具体包含系统初始化、签名、签名验证3个部分.每个部分具体为:

1)初始化setup(t,n)

① 设置系统参数

② 设定相关密钥及参数

③ 密钥分发

TC为保证金管理节点集合颁发另一部分私钥,这一过程需要节点和TC交互执行:

首先,TC计算节点的另一部分私钥:

yi=f(IDi),

(15)

将yi通过秘密通道发送给相应的节点,并广播αiG的值.

节点接收到私钥yi后,验证:

(16)

如果式(16)成立,节点则接收yi为其另一部分私钥;反之,拒绝接收并要求TC重新生成另一部分私钥.

至此,节点生成了私钥di=xi+yi=xi+f(IDi),公钥Di=diG,并公开节点公钥Di和用户身份信息IDi.

2)签名

① 节点生成份额签名Sign(Ti,IDi,di,preTr,Df)

为了防止签名被敌手追踪,本文使用SC的公钥PKSC加密自身的身份,同时选取一个随机值Random使每次加密后的密文均不相同:

(17)

② 合成门限群签名Combine(ri,si,Di,preTr,Df)

本过程由签名合成者SC完成,包括份额签名验证和签名合成2个方面.

3)签名验证

其他节点接收到门限群签名(R,S)后,根据z=h(preTr+Df)计算z,并验证SG+z(gp+W)=R是否成立.如果成立则接收签名,即将其放入交易池中;否则拒绝该门限群签名,即抛弃该笔交易,意味着保证金返还失败.

2.2 记账权竞价模型

关于区块链记账权问题,本文考虑到区块链网络中可能存在拜占庭节点,提出了一种基于门限加密方案的记账权竞价模型,旨在通过参与共识的节点之间相互竞价来产生区块链的记账节点,同时利用多方参与决策来抑制拜占庭节点的恶意行为.

Fig.3 The bidding model of the right of accounting图3 记账权竞价模型

记账权竞价模型如图3所示,设参与共识节点集合U={U1,U2,…,Um},其身份信息分别为ID1,ID2,ID3,…,IDm,解密服务器节点集合T={T1,T2,T3,…,Tn},其中,T⊆U,且解密服务器集合即保证金节点集合,由n个解密服务器利用自己的私钥联合产生秘密份额和系统公钥,参与共识的节点利用产生的系统公钥加密竞价金额得到密文,同时利用自己私钥对密文和上一轮记账节点编号的Hash值进行签名,并在区块链系统中广播签名和密文.当解密服务器节点收到密文和签名,先根据密文验证签名的正确性,如果不正确,则丢弃签名;如果正确,利用自己的秘密份额解密出解密因子,并在全网广播解密因子,任何收到t个解密因子的解密服务器节点验证解密因子的正确性后,就可以通过组合解密出竞价金额.值得注意的是t>f,f为解密服务器节点集合中拜占庭节点个数,且假设:

f<└(n-1)/3」.

与(k,n)门限加密方案类似,该记账权竞价模型由5个步骤组成:

1)系统初始化

设秘密选定一个大素数p,Fp表示有限域,E(a,b)为Fp上的椭圆曲线,G为椭圆曲线的基点,q为G的阶(p,q为奇素数).公开E(a,b)和G.这与保证金模型初始化系统参数类似,椭圆曲线采用E.

2)设置秘密份额及公钥

由Ti运行,每个解密服务节点执行步骤:

①Ti随机选择一个整数di∉[1,q-1]作为私钥,并计算公钥Qi=diG.

②Ti产生随机整数集{ai,k|k=1,2,…,t-1}⊆Fp且ai,t-1≠0,构造t-1次多项式:

fi(x)=di+ai,1x+…+ai,1xt-1modq,

(18)

其中,fi(0)=di.

③Ti计算fi(IDj)并发送给Tj(j≠i),fi(IDj)保留.同时计算并广播验证参数:

aik=aikG,k∈{1,2,…,t-1},

(19)

当Tj(j≠i)接到其他n-1个解密服务器节点的广播信息后,验证fi(IDj)的有效性为

(20)

若式(20)成立,则fi(IDj)有效;否则Tj拒绝接收fi(IDj)并要求Pi重新发送.

④Ti收到其他n-1个解密服务器节点Tj发送的fi(IDj)之后,自己的秘密份额F(IDi)可计算为

(21)

Ti计算Yi=F(IDi)Gmodq,并广播Yi.

⑤ 由Lagrange插值法,利用公开信息Yi计算解密服务器节点组公钥:

(22)

公开解密服务器节点组公钥y.

3)加密

将竞价金额Mo(明文)映射为有限域FP上的一个元素M,并分割成2个部分M=m1+m2.设竞价区块链记账权节点Ui.

①Ui选取一个随机数k,1≤k≤q-1.

②Ui进行计算:

c0=kG,
(x1,y1)=k×y,
c1=(x1,m1)modp,
c2=(y1,m2)modp.

(23)

③ 利用ECC进行签名:

σ=Sign(h((c0,(c1,c2)),IDpr),SKui),

(24)

其中,SKui为竞价节点的私钥,h(·)为单向函数,IDpr为上一次记账节点的编号.

④ 将密文CM=(c0,(c1,c2))和σ发送给T.

4)部分解密

由Ti运行,设T中t个解密服务器节点集合为W={T1,T2,…,Tt},W中的成员Ti收到密文CM后,计算:

hashValue=h(CM,IDpr),

(25)

通过解密签名,得到:

τ=Unsign(σ,Pu).

(26)

比较hashValue和τ,如果不相等,则选择丢弃密文CM与签名σ;反之,Ti使用自己的秘密份额F(IDi),计算各自的解密因子Si:

(27)

5)组合与比较

由W中的解密服务器节点运行.该步骤包括2个部分,验证解密因子Si的真实性和组合Si恢复明文M.

①W中的节点彼此交换Si,并验证解密因子Si的真实性:

(28)

若式(28)成立,则Ti提交的Si是正确的,否则要求重新Ti重新发送解密因子.

② 当W中解密服务器收到t份正确的Si后,就按步骤计算m1和m2以此来解密明文M:

(29)

③ 通过映射关系,根据M求得竞价金额Mo.

3 共识机制设计

本节主要从初始化、区块构建、区块验证和区块链组装4个部分阐述共识机制(TCCM).

3.1 初始化阶段

当节点收到新区块并通过验证(round轮共识结束),节点中的伪随机数生成程序就会自动运行,并以round轮记账节点的身份编号作为随机种子从参与共识的节点中选出n个解密服务器节点,需要注意的是该程序产生的n个伪随机值是在1~m(m为参与共识节点的个数)之间,具有良好的随机性.因为随机种子为round轮记账节点的ID,所以产生的n个解密服务器节点具有一致性.

当round+1轮的记账权竞价正式开始后,决定竞争记账权的节点们,通过区块链记账权竞价模型提交报价金额.如算法1所示,当报价阶段结束后,所有解密服务器节点i会广播自己保存的最大的竞价金额Moi(理论上可以是ε位小数,0<ε<+)和竞价节点编号N,round轮记账节点通过广播收到这些竞价金额和竞价节点编号,选取最大的竞价金额的节点,并通过签名的形式提议获得此次记账权的节点.当解密服务器节点收到round轮记账节点的提议后,如果发现它该报价金额的确是最大的(即该记账金额大于等于它保存的竞价金额),它也会继续提议由自己重新签名的信息.当round+1轮记账节点接收到至少t条这样的提议信息后,并验证签名的正确性后,就通过保证金模型提交保证金.需要注意的是,保证金金额一般要大于单个区块交易总价值上限1/2,这也是为了保证交易的安全性并提高获取记账权的门槛.同时,当记账节点没有在规定的时间产生新区块,round轮的记账节点再次广播竞价金额次之的节点编号,以此类推,直至在提交保证金的情况下产生新区块.

算法1.记账权竞价算法.

/*广播阶段*/

①Moi=节点i的报价金额;

② ifMoi为解密服务器节点Tx解密的最大金额then

③ 广播 “Moi+竞价节点编号N”+其签名;

④ end if

/*提议阶段*/

⑤ ifMoj为round轮记账节点接收到最大金额then

⑥ 提议“Moj+竞价节点编号N”+其签名;

⑦ end if

⑧ if解密服务器节点Ty解密金额不大于Mojthen

⑨ 提议“Moj+竞价节点编号N”+其签名;

⑩ else

3.2 区块构建

构建区块是区块数据的填充过程.本文将由节点产生的含有代币的数据称为“交易”.所有的节点都需要检查交易的合法性,再将交易保存在交易池.本节首先定义了区块头的数据结构:

nVersion,区块版本号,4 B;

hashPrevBlock,上一个区块的区块头的Hash值,32 B;

hashMerkleRoot,由区块中所有交易构造的Merkle根,32 B;

nTime,Unix时间戳,4 B.

为了避免比特币后期会导致的“公地悲剧”问题,本文对区块的交易填充做了详细规定:1)设置每个区块中交易传递的总价值上限;2)在满足条件规定1的前提下,规定每个区块中的交易总量不得超过G**.G**代表了系统最优情况下的交易量,即保证区块链网络安全的交易量.

由于区块收入是整体网络安全的基础,在“公地悲剧”的情况下,系统安全性将会很弱.因此,维护健康的网络需要一些协议执行的规则来保护参与共识的节点作为一个群体,例如设置每个块中的交易量上限.如果适当选择上限,矿工实际上可以通过这种上限获得更多的收益,从而保证了区块链系统的安全.通过这种方式使得块空间成为稀少资源,交易费就会上涨;为了将交易填充到区块中必须与其他节点竞争,并支付更高的交易费用.设置每个块中的交易总量,使得记账节点不能通过接受低收费交易来打破市场,因为记账节点只能把这么多的交易放到块中.同时,单笔交易的交易费具有波动性会导致交易的总费用是一个不确定的,即区块收入不确定,节点无法准确估计竞价金额Mo,这也给节点竞争区块链记账权带来了挑战.

当记账节点完成了区块数据的正确填充,就会立刻将新区块发送给其所有相邻节点.这些相邻节点成功验证并接受这个新区块后,也会继续以类似的方式传播该区块.

3.3 区块校验

新区块在网络中以广播的方式进行扩散,其验证由节点独立进行,确保只有有效的区块才会在网络中传播,从而获得奖励.反之,由于区块的无效性会导致节点失去奖励,并扣押保证金.记账节点的奖励R:

R=AllTrExp-Mo,

(30)

其中,AllTrExp表示该区块的交易费总价值,Mo表示竞价金额,且新区块的交易费总价值是由记账节点自己独立收集,由于网络原因存在差异.

当节点收到新区块时,它会按照标准验证清单对该区块进行一一核查,其标准一般包括:

1)验证记账节点的合法性.在提交保证金的前提下,通过执行区块链记账权竞价模型中最后一步,利用收集到的广播的解密因Si合成竞价金额,核实竞价金额的节点身份信息.

2)验证区块数据填充的有效性.

3)区块大小在长度限制之内.

若没有通过验证,这个区块将被拒绝,同时广播所有验证数据.当n个解密服务器节点中,有t个解密服务器节点通过对验证数据的计算,发现该区块是不合法的,这t个解密服务器节点就可以通过保证金模型,与参与共识的节点瓜分保证金.同时,重新产生记账节点.反之,如果验证通过了,本轮将通过保证金模型返还上一轮记账节点的保证金,同时由参与共识的节点通过保证金模型分享竞价金额.

需要注意的是,返回保证金的交易并没有打包到当前区块中,而是区块链系统会在产生足够多区块后,才会触发保证金模型返回保证金,这是为了保证记账节点的诚实性,不会发起区块链“分叉”攻击而导致“双花”问题.

同时,本文借鉴了“闪电网络”的思想[25],只有参与共识的节点积累了足够的奖励,才会启动保证金模型进行奖励分发,这是为了减少区块链网络中小额交易数量,缓解节点的通信与计算压力.

3.4 区块装配

在区块的装配阶段,主要是将新区块装配至区块链主链中.当某个节点接收并验证通过了新区块,它会将新区块连接到现有的区块链上,将它们组装起来.由于新共识机制明确规定了记账节点,故不存区块链的分叉问题,也就不存在由于分叉而导致的区块链系统资源的浪费.

随着越来越多的节点加入区块链系统,单位时间的交易量也会持续增加,节点为了竞争区块空间,势必会提高交易费,区块收入也会相应增加.由于区块收入是整体网络安全的基础,区块收入的增加必将带来区块链系统安全性的提高.

4 安全性分析与讨论

本节我们主要对TCCM共识机制的安全性进行分析,并从中小额交易、激励机制等方面进行讨论.

4.1 抗“公地悲剧”攻击

首先考虑2个节点竞争区块链记账权,i=1,2.令bi≥0是竞价节点的竞价金额,vi为该轮区块的交易费总价值.由于各个节点收集的交易并不相同且不确定,所以对于不同竞价节点vi是一个不确定的值,且任意俩竞价节点都不知道对方的竞价金额bi.但可以确定的是,vi(被标准化)在[0,1]区间均匀独立分布,竞价节点i的效用函数如下(如果2节点的竞价金额相同,节点以等概率获得记账权):

(31)

设节点i的出价bi(vi)是关于其价值vi的严格递增可微函数.从理性前提出发,没有节点愿意支付高于交易费总价值的竞价金额,即bi>1≥vi不可能是最优的情况.由于该博弈是对称的,故只需要考虑对称出价战略:b=b*(v).给定v和b,节点i的期望效用为

ui=(v-b)Prob(bj

(32)

其中,bj是节点j的出价策略,Prob(·)代表bj

根据对称性,bj=b*(vj),有:

Prob{bjProb{vj

(33)

这里Φ(b)=b*-1(b)是b*的逆函数(节点选择b时他的价值是Φ(b)).在式(33)中,由于v在区间[0,1]均匀分布,Φ(b)∈[0,1],则Prob(vj<Φ(b))=Φ(b).因此,节点i面临的问题是:

(34)

最优化的一阶条件是:

-Φ(b)+(v-b)Φ′(b)=0.

(35)

如果b*(·)是节点i的最优战略,Φ(b)=v.因此:

(Φ(b)-b)Φ′(b)=Φ(b),

(36)

式(36)微分方程可以写成:

(37)

解式(37)偏微分方程可得:

b*=v/2,

(38)

如式(38)所示,这里的贝叶斯均衡为,每个节点的出价是它在该轮收集到的交易费总价值的一半.根据出价最高的节点获得区块链记账权,去除竞价金额,记账节点还是获得一半的交易费,这对于众多验证、存储、传播的节点来说是不公平的.

但是,节点出价与实际单个区块的总交易费之间的差距随着竞价节点个数的增加而递减.设有m个节点,每个节点开始对于vi是不确定的,但都在[0,1]区间上的均匀分布,如果最终收集到的交易费总价值vi的节点i出价为b,则期望效用函数为

(39)

最优化的一阶条件为

-Φm-1(b)+(v-b)(m-1)Φm-2Φ′(b)=0,

(40)

解式(40)微分得:

(41)

如图4所示(v=1),b*(v)随着m的增加而增加.当m→时,b*→v.即参与共识的竞价节点越多,记账所花费的竞价金额就越高.可见,当m趋于无穷时,记账节点由于高昂的竞价金额而几乎分不到交易费.

Fig.4 The trend of the bidding amount with the number of bidding nodes图4 竞价节点数量与竞价金额变化趋势

综上,一方面,m趋于无穷这种情况也是不可能存在的,由于节点提交的保证金对于大多数节点来说是个门槛,很多节点没有那么多保证金,所以会选择参与验证、存储等非记账过程.另一方面,更多节点参与竞争记账权,竞价金额就会越高,用于非记账行为的奖励就会越高,就会吸引更多的节点参与区块的验证、存储等非记账过程,有利于区块链系统的利益分配.新的激励机制会导致越来越多的节点参与共识过程,不会出现“节点少交易多”的情况,能达到抑制“公地悲剧”的目的,区块链系统也会变得更加安全可靠.

4.2 抗“垄断”性

抗“垄断”性质主要是指竞争区块链记账权具有随机性.以PoW算法为例,它并不具有良好的随机性,主要是其记账权依赖算力竞争,算力越来,获得记账权的概率就越大.至目前为止,全球大部分算力被矿池垄断,全球前5的大矿池共计拥有超50%的算力.共识机制安全的一个关键因素就是记账节点的随机性(抗“垄断”).

在TCCM共识机制中,由于每个节点都是自私且理性的,都希望用最小的代价获得记账权来使得自己利益最大化.在拍卖记账权的过程中,竞争区块记账权的节点无法提前预知本轮共识的交易费总量且各个节点收集的交易费具有不确定性(见3.2节),所以节点无法准确给出竞价金额Mo;其次Mo表示一个理论值是ε(0<ε<+)位小数,在一个合理区间有无数种可能.在这种理性前提下,这些都导致没有节点可以垄断记账权.

4.3 讨 论

在中小额交易方面,TCCM共识机制是PoW共识机制的良好扩展;对于大额交易,TCCM共识机制有所欠缺,这是由于保证金的金额只大于单个区块交易总价值上限1/2,当单笔金额或者新区块中某账户累计金额超过单个区块交易总价值上限1/2时,出于安全考虑,仍采用PoW共识机制.幸运的是,在区块链系统中大额交易很少,中小额交易占大多数,显然依赖大量计算资源消耗的PoW共识机制并不适用,而TCCM共识机制在资源消耗方面更有优势,且更适用于中小额交易的处理,有利于提高交易处理效率.

TCCM共识机制改进了区块链系统的激励机制.在PoW共识机制中,交易费只支付给创建区块的矿工,而传播、验证和存储交易的成本是由网络中的所有节点分担,并没有给予奖励,这就导致矿工(矿池)尽可能自己保持每笔交易来收取费用,尽可能地避免传播自己产生的交易.在TCCM共识机制中,虽然每个区块都设置价值上限,但是对于解决“公地悲剧”问题帮助不大,因为整个用户仍然希望发送大量的低价值交易.因此,3.3节考虑给予奖励给每个参与共识验证的节点,这使得节点更愿意参与节点验证工作,进一步提高系统安全.

5 性能分析

本文将从时间开销、吞吐量等指标分析该共识机制的性能.

假设TMUL表示模乘法运算的时间开销,TEC_MUL表示椭圆曲线上乘法运算的时间开销,TEC_ADD表示椭圆曲线上加法运算的时间开销,TH表示Hash运算的时间开销,Tblock表示区块产生时间.根据文献[20],有TEC_MUL≈29TMUL,TEC_ADD≈0.12TMUL.由于模加法和模减法的计算开销很低,可忽略不计.本文所提出的共识机制时间开销为:归还保证金Tmon、产生记账节点Tacc、产生区块Tblock.假设参与记账权竞争的节点个数为J.

归还保证金的开销为

Tmon=(4t+2)TEC_MUL+2(t-1+2)TEC_ADD+
3tTMUL+(t+1+1)TH=
(119.24t+58)TMUL+(t+2)TH,

产生记账节点的时间开销为

Tacc=(2+2t)JTEC_MUL+TH+(2t+1)JTEC_ADD=
(58.12+58.24t)JTMUL+TH,

则总的时间开销为

Tsum=Tmon+Tacc+Tblock=
(119.24t+58+58.12J+58.24tJ)
TMUL+(t+3)TH+Tblock.

根据官方文档和已有的测试,本文对比了PoW和PoS公有链共识算法与TCCM共识机制,如表1所示,发现TCCM共识机制在TPS、时延、交易确认时间、交易不可更改时间、资源消耗、时间复杂度等方面都具有优势.

Table 1 Performance Indicators of PoW,PoS,TCCM表1 PoW,PoS,TCCM性能指标

针对区块链共识机制比较了PBFT算法和TCCM共识机制(解密服务器节点集合T在安全范围内尽量小)的吞吐量.吞吐量是衡量系统单位时间内处理交易的能力.本文适用每秒交易数 (transac-tion per second,TPS)来表示.区块链应用中交易吞吐量指单位时间内交易从产生到被确认并写入区块链中的交易总数:

TPSΔt=SumTransactionsΔt/Δt,

(42)

其中,Δt为交易产生到区块被确认的时间间隔,即出块时间;SumTransactionsΔt为该时间间隔内被确认区块中包含的交易总数.

本文取Δ时间间隔分别为50 s,60 s,100 s,300 s等不同时间间隔,每个时间间隔测试20~30次,取其均值作为共识机制的TPS值.如图5所示,本文通过Matlab绘制了TPS随着间隔变化的趋势图.

Fig.5 Comparison of throughput between PBFT algorithm and TCCM consensus mechanism图5 PBFT算法和TCCM共识机制的吞吐量比较

6 总 结

本文提出了一种基于门限密码方案的共识机制,它是PoW共识机制一种良好的扩展.在新的共识机制中,设计的保证金模型既能够保证记账节点能诚实地产生区块,也确保了保证金的安全转移;设计的记账权竞价模型不但为竞价拍卖提供了安全的环境,而且记账节点的产生具良好的随机性,有效地防止了记账权垄断.在此基础上,本文重新设计了节点的激励机制,利用记账节点的竞价金额对区块验证、传播和存储等活动进行奖励,极大地维护了区块链系统的安全,避免了“公地悲剧”问题.同时,TCCM共识机制能更好地处理中小额交易,极大地提高了区块链系统的吞吐量,但TCCM在大额交易方面需要PoW协议的介入以保证交易安全,后续工作将对其改进与完善.

猜你喜欢

竞价保证金记账
财务自由第1步,从记账开始
记账类APP
解密主力开盘竞价做假意图
记账理财的好处有哪些
大力清理规范工程建设领域保证金
警惕出境游保证金陷阱
让手机帮你记账吧!
五花八门的保证金到底能保证啥
安徽农民工工资保证金可差异化缴存
中百信网络竞价系统