一种用于区块链扩展的多人链下交易方法

文档序号:33449785发布日期:2023-03-15 00:35阅读:30来源:国知局
一种用于区块链扩展的多人链下交易方法

1.本发明属于多人链下交易方法,属于密码学安全及区块链应用领域,具体涉及一种用于区块链扩展的多人链下交易方法,用于区块链的动态扩展。


背景技术:

2.区块链技术是一种可以实现互不信任的实体之间在没有受信任的第三方的情况下进行合作的颠覆性技术。去中心化的特性使得区块链技术在支付领域上拥有广泛的应用前景。但是由于区块链固有的分布式属性,每一笔交易需要经过全网共识节点的确认,导致区块链的可扩展性低,理论上比特币吞吐量7tps,以太坊15tps,远低于传统金融结算系统如visa每秒上千的吞吐量。同时随着越来越多的交易在区块链系统上进行,链上网络状态越来越拥堵。吞吐量低导致的网络拥堵问题极大地限制了区块链在进一步的发展和应用,也使得区块链的可扩展性成为亟待解决的问题
3.链下扩容技术无需修改原有的区块链底层,将交易结算过程安全地转移到链下进行,从而避免链上昂贵的开销和拥堵,实现链下的即时交易。先前研究支付通道允许两个用户在通道通过更新通道资产分配来实现高频交易。然而,pc是采用双人支付模型,在多人支付场景下,建立成对的交易通道从而产生高额的高昂的gas消耗和双方成比例的资产锁定。支付通道网络允许两个(或多个)无通道交易方可借助复杂的路由算法实现多跳支付,从而有效解决pc双人支付模型所遗留的弊端问题。但是,pcn存在多跳支付失败率高和通道资金平衡两个弊端。
4.总的来说,现有的扩展技术的链下扩容依托于原有的区块链底层,侧重于把链上事务卸载到链下来达到减轻主链负担的效果。支付通道作为当前主流的扩容方案,交易双方需要直接在链上建立通道,n个交易方需要建立n(n+1)/2个通道。因此为了把双人通道拓展到多人通道网络,需要依赖复杂的网络路由,通过其他中间节点路由交易,存在交易失败率高和通道失衡的问题。


技术实现要素:

5.为了克服上述现有技术的不足,本发明提供一种基于区块链的多人链下交易方法。具体的交易执行和验证过程放到链下进行,把阶段性的检查点提交到链上合约,这样既能提高交易吞吐量,又能降低交易成本。
6.为了实现上述发明目的,本发明提供如下的技术方案:
7.一种用于区块链扩展的多人链下交易方法,其包括如下步骤:
8.步骤1、通过部署通道智能合约创建链下支付通道;
9.步骤2、初始化链下支付通道,通过随机领导者选举机制选出领导者;
10.步骤3、用户通过链下交易机制进行点对点的即时交易,领导者处理链下交易和维护全局的用户状态;
11.步骤4、经过即时交易后,验证者对领导者对本轮交易所产生的检查点进行共识,
验证者达成链下共识后进入步骤3;如没有达成,则进入步骤5;
12.步骤5、挑战者对领导者发起交易欺诈挑战、状态欺诈挑战、超时挑战这三种挑战中的任一种挑战,最后依照不同的挑战类型对存在作恶行为的领导者实施惩罚,交易欺诈挑战、状态欺诈挑战、超时挑战这三种挑战中的任一种挑战的挑战结束阶段结束后将重新进入下一轮的循环,若挑战成功则重新选举领导者后步骤2,若挑战不成功则重新进入步骤3。
13.进一步地,所述用户包括付款方和收款方,所述领导者用于响应所述用户的交易请求和确定所述用户的交易顺序,所述验证者用于检查所述领导者所发布的批交易集合信息、最新状态信息和检查点无误信息,判断是否达成链下共识,若达成链下共识,用户进入下一轮次的交易阶段。
14.进一步地,所述步骤1的具体步骤为:
15.s101:在链上部署通道智能合约后,用户拥有具有唯一标识的合约地址;
16.s102:所述验证者根据所述合约地址存入一定的资产作为抵押物;
17.s103:经约定时间,若干数量的验证者加入链下支付通道后,链下支付通道进入初始状态。
18.进一步地,所述步骤2的具体步骤为:
19.s201:以所述验证者资产作为权重采用随机领导者选举机制选出领导者;
20.s202:选出所述领导者后初始化通道轮次数为0;
21.s203:待加入的用户向指定的通道合约存入一定的资金后,再向所述领导者发起加入通道请求;
22.s204:所述领导者把所述用户添加到用户列表,根据所述用户存入的资金初始化新用户的链下状态。
23.进一步地,所述步骤3的具体步骤为:
24.s301:所述付款方向所述收款方发起交易消息;
25.s302:所述收款方收到来自所述付款方的交易消息后,回复所述收款方的签名表示同意;
26.s303:所述付款方向所述领导者发送附有所述付款方和所述交易方的签名的交易信息;
27.s304:所述领导者检查所述付款方和所述收款方的地址和签名的合法性、交易金额是否大于付款方余额,检查无误后把有效交易添加到批交易集合;
28.s305:所述领导者发送带有交易id的交易回执以及所述领导者的签名至所述付款方。
29.进一步地,所述交易回执为txreceipt={tx,txid},其中tx表示交易消息,txid表示当前交易在当前批交易集合里面的执行序号。
30.进一步地,所述步骤4的具体步骤为:
31.s401:领导者将收到的交易添加到批交易集合后在本地执行交易,每执行一笔交易都产生一个过程状态,以过程状态的序列作为默克尔树节点生成过程状态根;
32.s402:以批量交易集合、最终状态、用户列表和退出列表分别生成交易根、过程状态根、最终状态根、用户列表根和退出列表根;
33.s403:所述领导者打包检查点;
34.s404:所述领导者向所述验证者公布所述批量交易集合、所述最终状态和所述检查点;
35.s405:所述验证者对来自领导者的所述批量交易集合、所述最终状态和所述检查点验证;
36.s406:所述验证者检查无误后回复对当前检查点的签名表示同意,直到所述领导者收集到所有验证者的签名表示达成链下共识;
37.s407;所述领导者通过发起链上交易提交检查点;
38.s408:所述领导者广播新的一轮状态后进入新的轮次,轮次数加1。
39.进一步地,所述检查点包括领导者id、轮次数、交易根、过程状态根、最终状态根、用户列表根和退出列表根。
40.进一步地,所述步骤5的具体步骤为:
41.s501:根据不同情况,验证者发起交易欺诈挑战、状态欺诈挑战或者超时挑战;
42.s502:挑战成功后,恶意的领导者的押金将被扣除,最后选举新的领导者进入新的交易轮次。
43.进一步地,所述不同情况分为三种:
44.情况一:所述验证者在验证过程中发现当前批交易集合里面存在欺诈交易,所述验证者调用所述交易欺诈挑战,提交相关的检查点、错误的交易和当前交易的默克尔证明作为挑战依据对所述领导者发起挑战;
45.情况二:所述验证者在验证过程中发现当前交易执行存在欺诈的状态转移,所述验证者调用所述状态欺诈挑战,提交相关的检查点、起始状态和最终状态及其状态根,交易和相关的默克尔证明对领导者发起挑战;
46.情况三:所述领导者拒绝更新状态或者处于离线状态,所述领导者需要再被发起所述超时挑战后,在时间长度t内响应挑战才能解除所述超时挑战。
47.本发明的有益技术效果至少在于以下:
48.本发明提供的用于区块链扩展的多人链下交易方法,易于进行区块链的动态扩展,把双人通道拓展到多人通道网络,改善了区块链中交易失败率高和通道失衡的问题,将具体的交易执行和验证过程放到链下进行,把阶段性的检查点提交到链上合约,这样既能提高交易吞吐量,又能降低交易成本。
附图说明
49.利用附图对本发明作进一步说明,但附图中的实施例不构成对本发明的任何限制,对于本领域的普通技术人员,在不付出创造性劳动的前提下,还可以根据以下附图获得其它的附图。
50.图1为本发明实施例用于区块链扩展的多人链下交易方法流程示意图。
51.图2为本发明实施例的链下共识流程示意图。
52.图3为本发明实施例的过程状态根生成示意图。
53.图4为本发明实施例的链下交易系统主要流程图。
具体实施方式
54.为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和实施例对本发明做进一步说明。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互组合。
55.在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开说明书的具体实施例的限制。
56.实施例
57.如图1所示,本发明提供的用于区块链扩展的多人链下交易方法,其包括以下步骤:
58.步骤1、通过部署通道智能合约创建链下支付通道。
59.s101:为了保证通道在区块链网络里面具有唯一性,链上部署通道的智能合约后得到合约地址作为唯一标识。
60.s102:通道允许多个验证者和用户加入到通道,验证者首先根据s11的合约地址存入一定的押金作为抵押物,该抵押物将作为验证者竞选领导者的权重:
[0061][0062]
其中ci代表验证者vi的押金。
[0063]
可信随机数生成:
[0064]
r=radomgernerate(stateroot
e-1
)r∈(0,2
256
)(2)
[0065]
其中sre-为上一轮的状态根。
[0066]
当r满足一下公式:
[0067][0068]
其中表示从w1到w
i-1
求和,表示从w1到wi求和,vi当选为本轮领导者。
[0069]
s103:经过约定时间,若干数量的验证者加入通道后,通道进入初始状态。
[0070]
初始状态为步骤3中的选领导者,初始轮次,加入初始用户等。
[0071]
步骤2、初始化支付通道,通过随机领导者选举机制选出领导者。
[0072]
s201:选举阶段以通道验证者资产作为权重采用随机选举机制选出领导者,押金占比越大,被选为领导者的几率越高,同时作为领导者的作恶成本越高。
[0073]
s203:待通道完成初始选举后进入就绪状态,用户向指定的通道合约存入一定的资金后,向领导发起加入通道请求。
[0074]
s204:领导者验证用户的加入请求后把用户添加到用户列表,根据用户存入资金初始化用户的链下状态。
[0075]
领导者对用户的状态初始化。
[0076]
s205:经过约定时间后,链下通道进入打开交易阶段。
[0077]
s206:自首轮初始化后,其他希望加入通道的验证者和用户都需要提前一轮提出加入申请。
[0078]
步骤3、用户通过链下交易机制进行点对点的即时交易,领导者处理链下交易和维护全局的用户状态。
[0079]
步骤3链下交易的过程如图2所示,具体包括以下步骤:
[0080]
s301:通道交易发起者向交易接受方发起交易tx={from,to,value,nonce}σf,其中from表示交易的发起方,to表示交易的收款方,value表示交易的价值,nonce表示这笔交易的唯一标识,相当于uuid,σf代表付款方的签名。
[0081]
s302:收款方收到来自交易发起者的交易tx后,根据付款方的地址和签名验证该笔交易的合法性后,回复对该笔交易的签名σ
t
表示同意交易。
[0082]
s303:交易发起者向领导者发送附有双方签名σf和σ
t
的交易tx={from,to,value,nonce}σf,σ
t

[0083]
s304:领导者收到交易tx后,领导者对来自付款人的交易tx进行有效性验证(签名有效性、余额是否足够、非双花交易等),检查无误后把有效交易tx添加到批交易集合。
[0084]
具体地:(1)验证批量交易集合中每一条交易有效性;(2)检查经过每一条笔交易后的状态是否正确;(3)状态转移后的状态根是否正确。
[0085]
s304:领导者发送带有交易id的交易回执txreceipt={tx,txid}至交易双方。其中txid代表该笔交易在该批交易集合里面的执行序号,σ
l
代表领导对这笔交易的授权。
[0086]
步骤4、经过即时交易后,验证者对领导者对本轮交易所产生的检查点进行共识,验证者达成链下共识后进入新的轮次重新进入步骤3;如链下共识失败,则进入步骤5。
[0087]
步骤4链下共识的过程如图3所示,链下共识具体包括以下步骤:
[0088]
s401:领导者将收到的交易添加到批交易集合,最后根据交易txid的顺序在本地执行交易,每执行一笔交易都产生一个新的状态根:sr:
[0089]
sri=m(statei).root
[0090]
其中m代表生成默克尔树,root代表改默克尔树的根。
[0091]
s402:结合交易前和交易后的状态根生成过程状态isi:
[0092]
isi=h(sri||sr
i+1
||h(txi))
[0093]
其中,sri交易执行前的状态根,sr
i+1
代表交易执行后的状态根。
[0094]
s402以过程状态序列作为默克尔树节点生成过程状态根(intervalstateroot),生成过程具体如图4所示。
[0095]
s402:领导者通过默克尔化生成以批量交易集合、最终状态、用户列表和退出列表生成交易根、最终状态根、用户列表根和退出列表根
[0096]
s403:领导者打包检查点checkpoint(leaderid,paymentroot,intervalstateroot,finalstateroot,enrolledroot,exitroot)检查点包含领导者id,轮次号、交易根,过程状态根,最终状态根、用户列表根和退出列表根。
[0097]
s404:领导者在约定时间内向验证者公布本轮的批量交易集合、最终状态和检查点,此处检查点作为共提案,其余的数据作为链下共识验证所需的共识验证数据。
[0098]
s405:验证者对来自领导者的根据s404所提供的数据验证领导者的检查点提案。
[0099]
s406:检查无误后回复对该检查点的签名表示同意,直到领导者收集到所有验证者的签名表示投票。
[0100]
s407:领导者通过发起链上交易提交检查点到链上智能合约后广播新的一轮状态
后进入新的轮次。
[0101]
步骤5、挑战者对领导者发起交易欺诈挑战、状态欺诈挑战或者超时挑战,最后依照不同的挑战类型对存在作恶行为的领导者实施惩罚,挑战阶段结束后将重新进入下一轮的循环。
[0102]
s511:监管者在验证过程中发现批交易集合里面存在欺诈交易,验证者可以调用智能合约函数交易欺诈挑战输入参数分别是错误的检查点、错误的交易和这笔交易的默克尔证明。
[0103]
s512:从cpf提取交易根paymentroot(pr),使用输入参数txf和通过默克尔验证函数验证错误交易txf是否该交易根的叶子,如果是则进入下一步,否则挑战失败。
[0104]
s513:验证txf中领导者的签名是否正确,正确则进行下一步,错误则挑战失败
[0105]
s514:验证txf中付款人和收款人的签名是否正确,如签名验证错误则证明领导者在伪造了一笔错误的交易,挑战成功。如签名验证正确则挑战失败。
[0106]
s521:验证者在验证过程中发现某笔交易执行的时候存在欺诈的状态转移,验证者调用智能合约函数状态欺诈挑战智能合约函数状态欺诈挑战输入参数分别是错误的检查点、初始状态根、结果状态根、执行的交易、过程状态的默克尔证明、初始状态、结果状态、初始状态的默克尔证明和结果状态的默克尔证明。
[0107]
s522:使用输入参数sr1,sr2,tx生成is:
[0108]
is=h(sr1||sr2||tx)
[0109]
其中sr1和sr2分别是交易tx执行前后的状态根。
[0110]
s523:从cpf过程状态根intervalstateroot(isr),使用输入参数通过默克尔验证函数验证s522所生成的is是否属于过程状态根的叶子,如果是则进入下一步,否则挑战失败。
[0111]
s524:使用输入参数tx和state1执行交易过程如下:
[0112]
state2′←
excute(tx,state1)
[0113]
如果执行结果state2′
与输入参数state2不相等,则进入下一步,否则挑战失败。
[0114]
s525:使用参数sr1,h(state1),和以及sr2,h(state2),使用默克尔验证函数验证state1和state2是否分别属于sr1和sr2的叶子,如验证通过则挑战成功,否则挑战失败。
[0115]
s531:领导者在规定时间内没有更新链下状态,发起超时挑战。在时间t之内,领导者无法调用智能合约响应挑战则超时挑战成功,否则挑战失败。
[0116]
本发明重点是把双人通道拓展到多人通道网络,改善了区块链中交易失败率高和通道失衡的问题,易于进行区块链的动态扩展,而且成本低。
[0117]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1