一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分片区块链实现方法与流程

2022-02-24 13:34:55 来源:中国专利 TAG:


1.本发明涉及区块链技术领域,尤其涉及一种分片区块链实现方法。


背景技术:

2.自从比特币被首次提出以来,区块链技术一直在飞速发展。区块链技术具有去中心化、数据透明公开和交易历史不可篡改等优点,在金融、物联网和供应链管理等各个领域都有着巨大的应用潜力。但是,目前存在一些限制区块链技术的问题,其中最关键的是安全性和性能问题。
3.当前的区块链系统存在各种安全问题,例如针对普通区块链可能存在的双重花费攻击和日蚀攻击,针对采用工作量证明的区块链的自私挖矿攻击、顽固挖矿攻击和区块扣留攻击等,针对采用权益证明的区块链的无利害关系攻击、打磨攻击和长程攻击等。与此同时,有一些致力于区块链安全性分析的工作,如,链质量、链增长和共同前缀三个区块链应当满足的基本特性、公共账本应当满足的一致性和活性。这些基础的安全性能研究和分析为其他区块链系统的设计和安全性分析奠定了良好的基础。设计安全的区块链协议并证明其安全性是当前研究的关键和热点。
4.区块链的性能表现是其能够得到广泛应用的另外一个关键因素。而在性能指标中,最重要的指标是交易吞吐量和交易确认时间。传统的第三方支付能够实现每秒钟几千甚至上万级别的交易吞吐量,而目前大多数区块链系统的吞吐量处于每秒几十或者几百的量级。目前来说,提高区块链系统吞吐量的方法可以分为链上方法和链下方法。在所有链上方法中,分片区块链技术是最有前途的技术之一。分片区块链的基本思路是将网络中所有节点分为多个分片,每个分片负责处理并维护该分片对应的区块链。网络中的交易也根据一定的规则被分配到不同的分片。分片内节点只需对该分片掌管的交易进行验证、计算和存储。这样一来,分片区块链便能实现交易处理能力的可扩展性,即随着网络中节点数量的增加,全网处理交易的能力随之增加。可扩展性使得分片区块链通常拥有更高的交易吞吐量。
5.通常,分片区块链具有以下三个特征。第一个是通信分片,参与节点被分为不同的分片,其中每个分片中的节点大部分时间仅需要内部通信。第二个是计算分片,即每个分片仅负责处理其相应的交易。第三个是存储分片,即不同分片的节点仅需要存储其相应分片的区块链历史数据。而且,分片区块链有几个重要组成部分:节点选择,节点分配,片内共识,跨片交易处理和分片重配置。其中,片内共识和跨片交易处理是每个分片区块链中必不可少的部分。
6.然而,目前大多数分片内共识都依赖于拜占庭容错协议,该协议的处理效率低而通信复杂度高。同时,目前的跨片交易处理方案容易受到攻击,例如拒绝服务攻击和重放攻击等。


技术实现要素:

7.本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的目的在于提出一种分片区块链实现方法,以使分片区块链实现交易处理可扩展、交易安全、交易快速确认、低系统开销。
8.为达到上述目的,本发明实施例提出了一种分片区块链实现方法,所述方法包括以下步骤:初始化步骤:各分片委员会生成公共参数,并根据所述公共参数生成节点公私钥对和公钥证明,以及将节点公钥和公钥证明发送给数字证书认证机构,所述数字证书认证机构根据所述公钥证明和所述节点公钥更新各分片委员会的公钥列表;交易输入可用性确认步骤:用户提交交易至相应输入分片,各输入分片委员会内运行快速拜占庭容错算法判断接收到的交易输入是否可用,并在交易输入可用时生成相应的可用性证明,以及将交易输入的可用性状态及其可用性证明发送给输出分片,其中,输入分片委员会内运行快速拜占庭容错算法包括:在第一轮中,输入分片委员会领导者根据当前轮的交易输入构建提议,输入分片委员会成员根据对应的节点私钥对所述提议构建投票,输入分片委员会领导者根据投票和对应的节点公钥构建承诺凭证;在第n轮中,输入分片委员会领导者根据当前轮的交易输入和上一轮的承诺凭证构建提议,输入分片委员会成员根据对应的节点私钥对所述提议构建投票,输入分片委员会领导者根据投票和对应的节点公钥构建承诺凭证,其中,n为大于等于2的整数,所述提议包括交易输入的可用性状态;重复进行所述第n轮的操作,直到所述第一轮的提议被承诺;跨片交易确认步骤:输出分片根据可用性证明进行多签名聚合生成总签名和交易证明,并将所述总签名和所述交易证明发送给相关输入分片,输入分片根据所述总签名和交易输入的可用性状态更新本地未花费交易输出池状态,输出分片根据交易输入的可用性状态判断交易的合法性,并运行快速拜占庭容错算法将合法交易写入区块链。
9.本发明实施例的分片区块链实现方法,各分片委员会在初始化步骤中生成公共参数,并根据公共参数生成公私钥对和公钥证明,以及将节点公钥和公钥证明发送给数字证书认证机构,数字证书认证机构根据公钥证明和节点公钥更新各分片委员会的公钥列表。在用户提交交易至相应输入分片后,各输入分片委员会内运行快速拜占庭容错算法判断接收到的交易输入是否可用,其中,快速拜占庭容错算法由多轮投票构成。在第一轮中,输入分片委员会领导者根据交易输入参数构建提议,输入分片委员会成员根据对应的节点私钥对提议构建投票,输入分片委员会领导者根据投票和对应的节点公钥构建承诺凭证。在第n轮中,输入分片委员会领导者根据当前轮的交易输入和上一轮的承诺凭证构建提议,输入分片委员会成员根据对应的节点私钥对提议构建投票,输入分片委员会领导者根据投票和对应的节点公钥构建承诺凭证,其中,n为大于等于2的整数,提议包括交易输入的可用性状态。重复第n轮的操作,直到第一轮的提议被承诺。第一轮的提议被承诺后,生成相应的可用性证明,并将交易输入的可用性状态及其可用性证明发送给输出分片。输出分片根据可用性证明进行多签名聚合生成总签名和交易证明,并将总签名和交易证明发送给相关输入分片,输入分片根据总签名和交易输入的可用性状态更新本地未花费交易输出池状态,输出分片根据交易输入的可用性状态判断交易的合法性,并运行快速拜占庭容错算法将合法交易写入区块链。由此,可使分片区块链实现交易处理可扩展、交易安全、交易快速确认、低系统开销。
10.另外,本发明上述的分片区块链实现方法还可以具有如下附加的技术特征:
11.根据本发明的一个实施例,所述分片区块链实现方法还包括:各分片委员会采用bls多签名算法生成公共参数par:(g1,g2,g
t
,e,g1,g2,p)

par,其中,g1,g2,g
t
是素数阶p的乘法群,g1,g2生成元分别为g1,g2,e是非退化的双线性映射,满足e(g
x
,gy)=e(g,g)
x,y
,h0:{0,1}
*

g2和h1:{0,1}
*

g1是安全哈希函数。
12.根据本发明的一个实施例,所述分片区块链实现方法还包括:各分片委员会采用bls多签名密钥生成算法生成公私钥对keygen(par)

(pki,ski),其中,ski、pki分别为第i个分片委员会的节点私钥、公钥,ski∈[0,p-1],且ski为整数,pki对应的公钥证明为
[0013]
根据本发明的一个实施例,所述数字证书认证机构根据所述公钥证明和所述节点公钥更新各分片委员会的公钥列表,包括:所述数字证书认证机构验证各分片委员会发送的节点公钥和公钥证明(pki,πi)是否满足e(πi,g2)=e(h1(pki),pki);如果满足,则判定节点公钥ski合法,其中,所述数字证书认证机构将所述节点公钥ski添加到对应分片委员会的公钥列表中:pklist

pklist∪{pki},并公布公钥列表pklist={pk1,pk2,

,pku}。
[0014]
根据本发明的一个实施例,所述输入分片委员会领导者构建承诺凭证和提议的过程如下:在第r轮,输入分片委员会领导者收集第r-1轮的投票mv,并将其解析为{(vote,h(p
r-1
),si)}
|2f 1|
,其中,2f 1为收集到的有效投票,si为签名份额,r为大于等于2的整数;利用bls多签名生成算法得到多签名(σ,apkt,t,p
r-1
)

combine(par,pklist,p
r-1
,{si,pki}
|2f 1|
);构建承诺凭证msc
r-1

(σ,apkt,t,h(p
r-1
));接收到交易tx,从所述交易tx中确认出属于当前分片委员会shardc的交易输入ii,在当前分片未花费交易池utxoc中查询ii是否可用,如果可用,令b=1,如果不可用,令b=0,构建第r轮的请求pr=ii||h(tx.id)||b,其中,h(tx.id)为交易序列号tx.id的哈希值;构建第r轮的提议m
np

(new-proposal,pr,msc
r-1
),并在当前分片委员会广播m
np

[0015]
根据本发明的一个实施例,所述输入分片委员会成员构建投票的过程如下:在第r轮,输入分片委员会成员接收到提议m
np
,将其解析得到承诺凭证msc
r-1

(σ,apkt,t,h),并确认第r-1轮接收到的请求p
r-1
;判断承诺凭证的合法性:验证(h=h(p
r-1
)λ(mulver(par,pklist,σ,apkt,t,p
r-1
)=1是否成立,如果是,则将p
r-1
的状态设置为已准备:p
r-1
.state

prepared,且将p
r-2
的状态设置为已承诺:p
r-2
.state

committed,输出已承诺的请求及其承诺凭证(msc
r-2
,p
r-2
);解析提议pr为ii||h(tx.id)||b,并在当前分片未花费交易池utxoc中查询ii的可用性状态,如果状态与b的值相同且在本轮还未投票,则投票:计算签名份额si←
sharesign(par,ski,pr),构建投票mv←
(vote,h(pr),si),发送mv给当前分片委员会领导者。
[0016]
根据本发明的一个实施例,所述重复构建承诺凭证、提议和投票的过程如下:在第r 1轮,输入分片委员会领导者收集第r轮的投票,构建承诺凭证mscr,构建本轮请求p
r 1
,构建本轮提议m
np

(new-proposal,p
r 1
,mscr),各输入分片委员会成员接收到m
np
,验证mscr合法性,输出((msc
r-1
,p
r-1
),构建投票mv←
(vote,h(p
r 1
),si);在第r 2轮,分输入片委员会领导者收集第r 1轮的投票,构建承诺凭证msc
r 1
,构建本轮请求p
r 2
,构建本轮提议m
np

(new-proposal,p
r 2
,msc
r 1
),各输入分片委员会成员收到m
np
,验证msc
r 1
合法性,输出((mscr,pr),构建投票mv←
(vote,h(p
r 2
),si);输入分片委员会领导者将交易输入ii的可用性状态
及其证明((mscr,pr)发送给输出分片。
[0017]
根据本发明的一个实施例,所述输出分片根据可用性证明进行多签名聚合生成总签名和交易证明,包括:输出分片委员会领导者从输入分片shardc接收到可用性证明(msci,pi),并将msci解析为(σi,apkti,ti,hi),将pi解析为ii||h(tx.id)||bi;判断多签名合法性:验证(ii∈shardc)λ(hi=h(pi))λ(mulver(par,pklistc,σi,apkti,ti,pi))是否成立,如果是,则得到交易证明tc

tc∪{(apkti,ti,pi)};如果tc中元素的个数为k,查询tx所有输入分片的公钥列表{pklist}
|k|
,进行多签名聚合得到总签名:将总签名和交易证明(∑,tc)发送给交易tx所有输入分片委员会领导者。
[0018]
根据本发明的一个实施例,所述输入分片根据所述总签名和交易输入的可用性状态更新本地未花费交易输出池状态,包括:输入分片委员会领导者收到输出分片发送的(∑,tc),在当前分片内广播(∑,tc);输入分片委员会成员收到(∑,tc),将tc解析为{(apkti,ti,pi)}
|k|
,每个pi解析为ii||h(tx.id)||bi;判断总签名的合法性:验证mulagver(par,{pklist}
|k|
,∑,tc)是否等于1,如果是,则判断每个bi是否都等于1,i=1~k,如果是,则判定tx为合法交易,对于每个当前分片掌管的bi=1的输入ii,将其从当前utxoc移除;如果有至少一个bi不等于1,则将每个当前分片掌管的bi=1的输入ii在utxoc中解锁。
[0019]
根据本发明的一个实施例,所述输出分片根据交易输入的可用性状态判断交易的合法性,并运行快速拜占庭容错算法将合法交易写入区块链,包括:输出分片委员会领导者判断tc中的每个输入对应的bi是否均等于1,如果是,则在快速拜占庭容错算法中将tx作为请求发起提议,并在当前分片内广播(∑,tc);输出分片委员会成员在投票时,判断总签名的合法性:验证mulagver(par,{pklist}
|k|
,∑,tc)是否等于1,如果是,则判断每个bi是否都等于1,i=1~k,如果是,则判定tx为合法交易,对tx进行投票;输出分片委员会领导者收集投票,构建承诺凭证和提议,输出分片委员会成员验证承诺凭证的合法性,并构建投票,重复构建承诺凭证、提议和投票两轮,交易tx被承诺,每个输出分片委员会成员输出承诺证明(msc,tx);输出分片委员会领导者将承诺证明(msc,tx)发送给用户,完成交易确认。
[0020]
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
[0021]
图1是本发明一个实施例的分片区块链实现方法的流程图;
[0022]
图2是本发明一个实施例的初始化步骤的流程图;
[0023]
图3是本发明一个实施例的交易输入可用性确认步骤的流程图;
[0024]
图4是本发明一个实施例的交易确认步骤的流程图;
[0025]
图5是本发明一个实施例的密钥生成算法的流程图;
[0026]
图6是本发明另一个实施例的分片区块链实现方法的流程图;
[0027]
图7是本发明一个实施例的快速拜占庭容错算法的示意图。
具体实施方式
[0028]
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
[0029]
下面参考附图1-7描述本发明实施例的分片区块链实现方法。
[0030]
图1是本发明一个实施例的分片区块链实现方法的流程图。
[0031]
s11,初始化。
[0032]
作为一个示例,如图2所示,初始化步骤的流程可如下:
[0033]
s110,各分片委员会生成公共参数。
[0034]
具体地,各分片委员会采用bls多签名算法生成公共参数par:(g1,g2,g
t
,e,g1,g2,p)

par,其中,g1,g2,g
t
是素数阶p的乘法群,g1,g2生成元分别为g1,g2,e是非退化的双线性映射,满足e(g
x
,gy)=e(g,g)
x,y
,h0:{0,1}
*

g2和h1:{0,1}
*

g1是安全哈希函数。
[0035]
s111,根据公共参数生成节点公私钥对和公钥证明。
[0036]
具体地,各分片委员会采用bls多签名密钥生成算法生成公私钥对keygen(par)

(pki,ski),其中,pki是第i个分片委员会的节点公钥,ski是第i个分片委员会的节点私钥。
[0037]
作为一个示例,如图5所示,上述bls多签名密钥生成算法的流程可如下:
[0038]
s1111,节点随机选取范围内的整数,作为私钥。
[0039]
具体地,节点pi随机选取范围[0,p-1]内的整数,作为私钥ski。
[0040]
其中,pi是第i个分片委员会的节点,ski∈[0,p-1]且是整数。
[0041]
s1112,计算得到节点公钥。
[0042]
具体地,计算得到作为节点公钥pki。
[0043]
s1113,计算公钥证明。
[0044]
具体地,计算公钥证明:
[0045]
其中,πi是第i个节点委员会的公钥证明。
[0046]
s112,将节点公钥和公钥证明发送给数字证书认证机构。
[0047]
s113,数字证书认证机构根据公钥证明和节点公钥更新各分片委员会的公钥列表。
[0048]
具体地,数字证书认证机构验证各分片委员会发送的节点公钥和公钥证明(pki,πi)是否满足e(πi,g2)=e(h1(pki),pki);如果满足,则判定节点公钥ski合法。
[0049]
进一步地,如图6所示,数字证书认证机构将节点公钥ski添加到对应分片委员会的公钥列表中:pklist

pklist∪{pki},并公布公钥列表pklist={pk1,pk2,

,pku}。其中,pklist是委员会的公钥列表。
[0050]
s12,交易输入可用性确认。
[0051]
作为一个示例,如图3所示,交易输入可用性确认步骤的流程可如下:
[0052]
s120,用户提交交易至相应的输入分片。
[0053]
具体地,如图6所示,用户产生交易tx后,确认每个输入i1,

,ik对应的输入分片,并将交易tx提交给所有输入分片委员会的领导者,并开始计时,若在预设时间内用户未接收到交易完成的信息或交易拒绝的信息,则用户将交易信息发送给委员会中其他节点,由其他节点代替领导者处理该交易。其中,交易tx的输入为(i1,

,ik),交易tx的输出为o,即
每个交易平均有k个输入和1个输出,网络一共包含m个分片shard1,

,shardm。
[0054]
s121,开始第一轮投票。
[0055]
s122,输入分片委员会领导者根据当前轮的交易输入构建提议。
[0056]
具体地,接收到交易tx,从交易tx中确认出属于当前分片委员会shardc的交易输入ii,在当前分片未花费交易池utxoc中查询ii是否可用,如果可用,令b=1,且更新当前分片未花费交易池,如果不可用,令b=0,构建第1轮的请求p1=ii||h(tx.id)||b,其中,h(tx.id)为交易序列号tx.id的哈希值;进一步地,如图6所示,输入分片委员会领导者将该请求作为提议m
np
在当前分片委员会广播。其中,m
np
是快速拜占庭容错算法中的新提议消息,上述未花费交易池是指未经本技术方案处理的所有交易的信息的集合。
[0057]
s123,输入分片委员会成员根据对应的节点私钥对提议构建投票。
[0058]
可选地,若输入分片委员会成员接收到的是第一轮投票的提议m
np
,则输入分片委员会成员接收到提议m
np
后,将m
np
解析为请求p1,进而将请求p1解析为ii||h(tx.id)||b,并在当前分片未花费交易池utxoc中查询ii的可用性状态,如果状态与b的值相同且在本轮还未投票,则投票:计算签名份额si←
sharesign(par,ski,p1),构建投票mv←
(vote,h(p1),si)。
[0059]
若输入分片委员会成员接收到的是第2轮投票的提议m
np
,则输入分片委员会成员接收到提议m
np
后,将其解析得到承诺凭证msc
r-1

(σ,apkt,t,h),并确认第1轮接收到的请求p1;判断承诺凭证的合法性:验证(h=h(p1)λ(mulver(par,pklist,σ,apkt,t,p1)=1是否成立,如果是,则将p1的状态设置为已准备:p1.state

prepared;解析请求p2为ii||h(tx.id)||b,并在当前分片未花费交易池utxoc中查询ii的可用性状态,如果状态与b的值相同且在本轮还未投票,则投票:计算签名份额si←
sharesign(par,ski,p2),构建投票mv←
(vote,h(p2),si)。其中,si是节点签名份额;σ是bls多签名,由2f 1个签名份额聚合而成;apkt是多签名对应的公钥,与签名者公钥相关;t是比特映射,用来标记公钥列表被使用的公钥。
[0060]
若输入分片委员会成员接收到的是第r轮投票的提议m
np
,则输入分片委员会成员接收到提议mnp后,将其解析得到承诺凭证msc
r-1

(σ,apkt,t,h),并确认第r-1轮接收到的请求p
r-1
;判断承诺凭证的合法性:验证h=h(p
r-1
)λ(mulver(par,pklist,σ,apkt,t,p
r-1
))=1是否成立,如果是,则如图7所示,将p
r-1
的状态设置为已准备:p
r-1
.state

prepared,且将p
r-2
的状态设置为已承诺:p
r-2
.state

committed,输出已承诺的请求及其承诺凭证(msc
r-2
,p
r-2
)。解析请求pr为ii||h(tx.id)||b,并在当前分片未花费交易池utxoc中查询ii的可用性状态,如果状态与b的值相同且在本轮还未投票,则投票:计算签名份额si←
sharesign(par,ski,pr),构建投票mv←
(vote,h(pr),si)。其中,上述r为大于等于3的整数。
[0061]
其中,上述委员会成员对请求进行签名时使用的bls多签名份额签名算法sharesign(par,ski,m)

si的步骤为:输入公共参数par、节点私钥ski、消息m;进而计算得到签名判断上述(h=h(p
r-1
)λ(mulver(par,pklist,σ,apkt,t,p
r-1
))=1是否成立前,需要使用bls多签名验证算法判断mulver(par,pklist,σ,apkt,t,p
r-1
)的结果是否为1,具体为:验证条件apkt=π
{i|t[i]=1}
pklist[i]是否满足;如果上述条件满足,继续验证条件e(σ,g2)=e(h0(m),apkt)。如果满足,输出1;否则,输出0。
[0062]
需要说明的是,若输入分片委员会成员对提议进行了投票,则其在投票之后,需要更新未花费交易池。
[0063]
进一步地,如图6所示,输入分片委员会成员发送mv给当前分片委员会领导者。
[0064]
s124,输入分片委员会领导者根据投票和对应的节点公钥构建承诺凭证。
[0065]
具体地,在输入分片委员会成员发送mv给分片委员会领导者后,输入分片委员会领导者收集投票mv,并将其解析为{(vote,h(p
r-1
),si)}
|2f 1|
,其中,2f 1为收集到的有效投票,si为签名份额,r为大于等于2的整数;利用bls多签名生成算法得到多签名(σ,apkt,t,p
r-1
)

combine(par,pklist,p
r-1
,{si,pki}
|2f 1|
);构建承诺凭证msc
r-1

(σ,apkt,t,h(p
r-1
))。
[0066]
可选地,在步骤s123之后也可以直接执行步骤s125。即,若在步骤s125中判断提议没有被承诺,则执行步骤s124,进而执行步骤s128;若在步骤s125中提议被承诺,则执行步骤s124,进而执行步骤s126。
[0067]
其中,上述输入分片委员会领导者计算多签名时使用的bls多签名生成算法combine(par,pklist,m,{si,pki}
|t|
)

(σ,apkt,t,m)的步骤为:输入公共参数par,公钥列表pklist,消息m,t个签名份额和公钥{si,pki}
|t|
;初始化有效签名列表:对于每个签名份额si,如果条件(pki∈pklist)∧(e(si,g2)=e(h0(m),pki))满足,则:siglist

siglist∪{(si,pki)};如果|siglist|=t,则计算多签名多签名公钥公钥使用标记映射t

[b1,b2,...bu],t中u个元素与公钥列表pklist中u个公钥对应,对于每个i=1到u,如果(-,pki)∈siglist,则设置b1←
1。
[0068]
s125,提议是否被承诺。
[0069]
具体地,若对提议进行签名的输入分片委员会成员的数量超过输入分片委员会成员的总数量的50%,则输入分片委员会领导者认为提议被承诺。
[0070]
s126,生成相应的可用性证明。
[0071]
具体地,若在步骤s125中,提议被承诺,则生成相应的可用性证明。
[0072]
作为一个示例,若对于某一个交易的提议,当前已进行了r轮投票,则在第r 1轮,输入分片委员会领导者收集第r轮的投票,构建承诺凭证mscr,构建本轮请求p
r 1
,构建本轮提议m
np

(new-proposal,p
r 1
,mscr),各输入分片委员会成员接收到m
np
,验证mscr合法性,输出(msc
r-1
,p
r-1
),构建投票mv←
(vote,h(p
r 1
),si);进一步地,在第r 2轮,分输入片委员会领导者收集第r 1轮的投票,构建承诺凭证msc
r 1
,构建本轮请求p
r 2
,构建本轮提议m
np

(new-proposal,p
r 2
,msc
r 1
),各输入分片委员会成员收到m
np
,验证msc
r 1
合法性,输出(mscr,pr),构建投票mv←
(vote,h(p
r 2
),si)。此时,若该提议被承诺,则相应的可用性证明是(mscr,pr)。
[0073]
s127,将交易输入的可用性状态及其可用性证明发送给输出分片。
[0074]
具体地,输入分片委员会领导者将交易输入ii的可用性状态及其证明(mscr,pr)发送给输出分片。其中,pr是快速拜占庭容错算法中第r轮的请求;mscr是多签名证明,即2f 1个投票消息聚合产生的多签名。
[0075]
s128,开始下一轮投票。
[0076]
具体地,若在步骤s125中,提议没有被承诺,则获取投票mv,开始下一轮投票。
[0077]
s129,输入分片委员会领导者根据当前轮的交易输入和上一轮的承诺凭证构建提议。
[0078]
作为一个示例,若对于某一个交易的提议,当前正在进行第r轮投票,则输入分片
委员会领导者收集第r-1轮的投票mu,并将其解析为{(vote,h(p
r-1
),si)}
|2f 1|
,其中,2f 1为收集到的有效投票,si为签名份额,r为大于等于2的整数;利用bls多签名生成算法得到多签名(σ,apkt,t,p
r-1
)

combine(par,pklist,p
r-1
,{si,pki}
|2f 1|
),进而构建承诺凭证msc
r-1

(σ,apkt,t,h(p
r-1
));接收到交易tx,从交易tx中确认出属于当前分片委员会shardc的交易输入ii,在当前分片未花费交易池utxoc中查询ii是否可用,如果可用,令b=1,且更新当前分片未花费交易池,如果不可用,令b=0,构建第r轮的请求pr=ii||h(tx.id)||b,其中,h(tx.id)为交易序列号tx.id的哈希值,进而构建本轮提议m
np

(new-proposal,pr,msc
r-1
),并在本委员会内广播该提议。
[0079]
s13,跨片交易确认。
[0080]
作为一个示例,如图4所示,跨片交易确认步骤的流程可如下:
[0081]
s130,输出分片根据可用性证明进行多签名聚合生成总签名和交易证明。
[0082]
具体地,输出分片委员会领导者从输入分片shardc接收到可用性证明(msci,pi),并将msci解析为(σi,apkti,ti,hi),将pi解析为ii||h(tx.id)||bi;进一步的,判断多签名合法性:验证(ii∈shardc)λ(hi=h(pi))λ(mulver(par,pklistc,σi,apkti,ti,pi))是否成立,如果是,则得到交易证明tc

tc∪{(apkti,ti,pi)};如果tc中元素的个数为k,查询tx所有输入分片的公钥列表{pklist}
|k|
,进行多签名聚合得到总签名:将总签名和交易证明(∑,tc)发送给交易tx所有输入分片委员会领导者。其中,tc是交易证明集合,用来证明多签名聚合的总签名的合法性。
[0083]
其中,上述进行多签名聚合得到总签名时使用的bls多签名聚合算法的步骤为:对于每个i=1到k,验证是否mulver(par,pklisti,σi,apkti,ti,mi)=1;如果是,计算
[0084]
s131,将总签名和交易证明发送给相关输入分片。
[0085]
具体地,如图6所示,输出分片收集承诺凭证,实现多签名聚合后,将生成的总签名和交易证明发送给输入分片。
[0086]
s132,输入分片根据总签名和交易输入的可用性状态更新本地未花费交易输出池状态。
[0087]
具体地,输入分片委员会领导者收到输出分片发送的(∑,tc),在当前分片内广播(∑,tc);输入分片委员会成员收到(∑,tc),将tc解析为{(apkti,ti,pi)}
|k|
,每个pi解析为ii||h(tx.id)||bi;判断总签名的合法性:验证mulagver(par,{pklist}
|k|
,∑,tc)是否等于1,如果是,则判断每个bi是否都等于1,i=1~k,如果是,则判定tx为合法交易,对于每个当前分片掌管的bi=1的输入ii,将其从当前utxoc移除;如果有至少一个bi不等于1,则将每个当前分片掌管的bi=1的输入ii在utxoc中解锁。
[0088]
其中,上述验证mulagver(par,{pklist}
|k|
,∑,tc)是否等于1的步骤为:对于每个i=1到k,验证是否如果是,验证是否e(∑,g2)=e(h0(mi),apkti)。如果是,输出1;否则,输出0。
[0089]
s133,输出分片根据交易输入的可用性状态判断交易的合法性,并运行快速拜占庭容错算法将合法交易写入区块链。
[0090]
具体地,输出分片委员会领导者判断tc中的每个输入对应的bi是否均等于1,如果是,则在快速拜占庭容错算法中将tx作为请求发起提议,并在当前分片内广播(∑,tc);输出分片委员会成员在投票时,判断总签名的合法性:验证mulagver(par,{pklist}
|k|
,∑,tc)是否等于1,如果是,则判断每个bi是否都等于1,i=1~k,如果是,则判定tx为合法交易,对tx进行投票;输出分片委员会领导者收集投票,构建承诺凭证和提议,输出分片委员会成员验证承诺凭证的合法性,并构建投票,重复构建承诺凭证、提议和投票两轮,交易tx被承诺,每个输出分片委员会成员输出承诺证明(msc,tx);输出分片委员会领导者将承诺证明(msc,tx)发送给用户,完成交易确认。
[0091]
综上,本发明实施例的分片区块链实现方法,可使分片区块链实现交易处理可扩展、交易安全、交易快速确认、低系统开销。
[0092]
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,

计算机可读介质

可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0093]
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
[0094]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0095]
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
[0096]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0097]
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
[0098]
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
[0099]
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献