一种区块链中基于hub的状态通道交易方法
技术领域
1.本发明涉及一种区块链中基于hub的状态通道交易方法,属于区块链交易技术领域。
背景技术:2.区块链是一种利用分布式账本技术解决多方信任问题的创新性解决方案。通过区块链技术,可以在不依赖于任何第三方可信机构的前提下,建立可信分布式系统,然而当前的区块链系统性能存在严重不足,无法满足现实业务的需求,这使得区块链的发展受到了大大的限制。
3.区块链扩容是提升区块链有限处理能力的一个重要途径。目前有两种类型的扩容方案,一种是链上扩容方式,即通过直接修改区块链的基础规则来改进区块链自身。另一种是链下扩容方式,目的是把计算转移到链下进行,不直接改动区块链本身的规则,而是在其之上再架设一层来处理具体的事务,只在需要共识参与时才与区块链进行信息交互与传播。具体的扩容方案有状态通道、侧链等。在链下扩容方案中,大量的事务通常只在参与节点间进行,不会进行全网传播,效率直接取决于节点间的网络性能,显然效率更高。
4.状态通道可以提供一种“即时”的交易——参与者无需等待任何的区块确认。闪电网络和雷电网络是链下扩容方案的代表,实现了通道内的双向支付功能和跨通道支付功能,用户能够在链下进行交易,使区块链支持高频小额交易成为可能。由于在闪电网络和雷电网络中每一个状态通道都仅仅与两个用户相关,致使它们的网络拓扑复杂,导致跨通道支付的路由寻路困难、算法复杂低效。如多个用户之间存在高频的双向支付,而闪电网络和雷电网络的每一个状态通道都只适用于两个用户之间的价值转移,致使多数的交易都需要进行跨通道支付或者任意两个用户之间都建立双向支付通道,这将导致其交易性能过低。
5.区块链状态通道中,每打开和关闭一个状态通道都需要一个链上交易打开状态通道,如果只给发一笔交易,会很造成资源的浪费和降低交易效率,不适合低频操作。而且状态通道的参与者要保持随时在线,状态通道的参与者需要对与自己相关的交易进行签名、以及对交易记录进行验证,如果不在线,资产就有可能损失掉,需要一直在线对于参与者来说是限制状态通道交易效率的一个重要因素;同时每一个状态通道都只适用于两个用户之间的价值转移,致使多数的交易都需要进行跨通道支付或者任意两个用户之间都建立双向支付通道,这将导致其交易性能过低。
技术实现要素:6.本发明所要解决的技术问题是提供一种区块链中基于hub的状态通道交易方法,通过hub与其它用户进行交易和支付转账,实现了多方之间的通道交易,提高应用效率。
7.本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种区块链中基于hub的状态通道交易方法,基于区块链环境下状态通道中所加入的hub,针对状态通道中所加入的n个交易用户,实现各交易用户之间的多方交易,n≥2;所述状态通道交易方法中,
基于hub所接收各交易用户分别对应用户id、用户公钥、用户状态、用户账户余额构成的用户信息集合,结合初始化状态通道交易次数为0、状态通道交易详细信息列表为空,执行如下步骤a至步骤g;
8.步骤a.初始化计时器为0,并开启计时器,然后进入步骤b;
9.步骤b.判断计时器到达预设第一超时阈值之前,hub是否未接收到来自交易用户的指令,是则进入步骤f;否则若该指令为交易指令,则发送该交易指令的交易用户即为交易发送者,并进入步骤c;若该指令为关闭指令,则进入步骤f;此外其余情况也进入步骤f;
10.步骤c.hub判断用户信息集合中是否存在与交易指令中交易接收者用户公钥相同的用户公钥,是则将用户信息集合中该用户公钥所对应交易用户的用户状态保存到交易接收者对应的用户状态中,并进入步骤d;否则将交易接收者对应的用户状态设置为不在线状态,并进入步骤d;
11.步骤d.交易发送者针对交易发送者用户id、交易接收者用户id、交易金额、交易支付者、时间进行加密生成交易标识tradeid,并发送给hub,由hub根据用户信息集合,判断交易支付者所对应用户账户余额是否小于交易金额,是则返回错误信息,并返回步骤b;否则进入步骤e;
12.步骤e.基于hub,根据交易接收者对应的用户状态,完成交易标识tradeid所对应交易双方之间的交易,并更新状态通道交易次数、状态通道交易详细信息列表、以及交易中交易发送者、交易接收者分别所对应的用户账户余额,然后返回步骤b;同时在完成交易的过程中,若存在错误信息,则返回步骤b;
13.步骤f.hub针对状态通道交易详细信息列表和状态通道交易次数进行判断,若状态通道交易详细信息列表不为空、且状态通道交易次数等于状态通道交易详细信息列表长度时,则将针对状态通道交易详细信息列表中所有交易记录进行hash运算打包成区块,并广播进行区块链确认,然后进入步骤g;若其余情况,则直接进入步骤g;
14.步骤g.hub修改交易双方的用户状态均为空闲状态。
15.作为本发明的一种优选技术方案:所述步骤e包括如下步骤e1至步骤e4;
16.步骤e1.hub判断交易接收者对应的用户状态,若交易接收者对应的用户状态等于空闲状态,则进入步骤e2;若交易接收者对应的用户状态等于交易状态或不在线状态,则进入步骤e3;
17.步骤e2.hub更新交易接收者的用户状态为交易状态,交易发送者将交易标识tradeid发送给交易接收者,交易接收者对交易标识tradeid中交易金额进行验证,若不正确,则返回错误信息,并返回步骤b;若正确,则交易接收者对交易标识tradeid进行签名,并将签名后的交易标识tradeid返回给交易发送者,交易发送者针对所接收交易标识tradeid中交易接收者的签名、以及交易金额、交易发送者用户id、交易接收者用户id进行验证,若验证通过,则交易发送者针对所接收交易标识tradeid进行签名,并将签名后的交易标识tradeid发送给hub,由hub更新交易接收者的用户状态为等待状态,并进入步骤e4;否则返回错误信息,并返回步骤b;
18.步骤e3.hub判断交易标识tradeid是否包含双重签名,是则进入步骤e4;否则hub针对交易标识tradeid进行签名,并将签名后的交易标识tradeid返回给交易发送者,交易发送者针对所接收交易标识tradeid中的交易金额进行验证,若验证通过,则交易发送者针
对所接收交易标识tradeid进行签名,并将签名后的交易标识tradeid发送给状态通道,然后进入步骤e4;若验证未通过,则返回错误信息,并返回步骤b;
19.步骤e4.hub针对状态通道交易次数进行加1更新,并由状态通道针对所接收的交易标识tradeid进行签名,并按时间添加到状态通道交易详细信息列表,然后hub针对此次交易中交易发送者、交易接收者分别所对应的用户账户余额进行更新,然后返回步骤b。
20.作为本发明的一种优选技术方案:执行步骤d的起始时刻时,初始化计时器为0,并开启计时器,在执行步骤d至步骤e的过程中,若计时器达到预设第二超时阈值时,仍未完成交易,则直接定义为超时,并返回步骤b。
21.作为本发明的一种优选技术方案:针对状态通道交易次数、状态通道交易详细信息列表构建组合信息,并对该组合信息生成唯一标识,由该唯一标识与该组合信息关联,构成状态通道标识;所述步骤g中hub修改交易双方的用户状态均为空闲状态的同时,清除状态通道中状态通道标识的缓存数据。
22.本发明所述一种区块链中基于hub的状态通道交易方法,采用以上技术方案与现有技术相比,具有以下技术效果:
23.本发明所设计一种区块链中基于hub的状态通道交易方法,在区块链状态通道基础上,引入交易枢纽hub的概念,用户加入状态通道的hub中,当交易双方都在线时,用户间进行交易和支付转账信息签名,将确认的转账信息(承诺交易)发送给hub,通过hub实现了多方之间交易;当交易接收方不在线时,交易发送方通过与hub进行签名确认交易,实现双方的交易;设计方法将区块链中的复杂的计算和操作转移到hub中执行,实现交易的快速处理,并且设计使得用户可以加入到任意一个hub中,通过hub与其它用户进行交易和支付转账,实现了多方之间的通道交易,有效解决了多个用户之间存在高频的双向支付的应用场景,并在一定程度上降低了网络拓扑、路由寻路和算法的复杂,且提高了状态通道交易的效率。
附图说明
24.图1是本发明所设计区块链中基于hub的状态通道交易方法的流程示意图。
具体实施方式
25.下面结合说明书附图对本发明的具体实施方式作进一步详细的说明。
26.本发明设计了一种区块链中基于hub的状态通道交易方法,基于区块链环境下状态通道中所加入的hub,针对状态通道中所加入的n个交易用户,实现各交易用户之间的多方交易,n≥2;所述状态通道交易方法中,按图1所示,基于hub所接收各交易用户分别对应用户id、用户公钥userpkii、用户状态userstatei、用户账户余额useramounti构成的用户信息集合userinfo={userinfo1,userinfo2,...,userinfon},userinfoi={id,userpkii,userstatei,useramounti},状态通道将交易用户useri区块链上的状态通过区块链api“锁定”在多重签名智能合约中,结合初始化状态通道交易次数为0、状态通道交易详细信息列表list为空,针对状态通道交易次数、状态通道交易详细信息列表list构建组合信息,并对该组合信息生成唯一标识,由该唯一标识与该组合信息关联,构成状态通道标识channelid,执行如下步骤a至步骤g,实现状态通道交易方法。
27.步骤a.初始化计时器为0,并开启计时器,然后进入步骤b。
28.步骤b.判断计时器到达预设第一超时阈值之前,hub是否未接收到来自交易用户的指令,是则进入步骤f;否则若该指令为交易指令,则发送该交易指令的交易用户即为交易发送者senderuser,并进入步骤c;若该指令为关闭指令,则进入步骤f;此外其余情况也进入步骤f。
29.步骤c.hub判断用户信息集合中是否存在与交易指令中交易接收者receiverstate用户公钥相同的用户公钥,是则将用户信息集合中该用户公钥所对应交易用户的用户状态保存到交易接收者receiverstate对应的用户状态中,并进入步骤d;否则将交易接收者receiverstate对应的用户状态设置为不在线状态notonline,并进入步骤d。
30.步骤d.交易发送者senderuser针对交易发送者senderuser用户id、交易接收者receiverstate用户id、交易金额、交易支付者、时间进行加密生成交易标识tradeid,并发送给hub,由hub根据用户信息集合,判断交易支付者所对应用户账户余额是否小于交易金额,是则返回错误信息,并返回步骤b;否则进入步骤e。
31.步骤e.基于hub,根据交易接收者receiverstate对应的用户状态,完成交易标识tradeid所对应交易双方之间的交易,并更新状态通道交易次数、状态通道交易详细信息列表list、以及交易中交易发送者senderuser、交易接收者receiverstate分别所对应的用户账户余额,然后返回步骤b;同时在完成交易的过程中,若存在错误信息,则返回步骤b。
32.实际应用当中,上述步骤e具体执行如下步骤e1至步骤e4。
33.步骤e1.hub判断交易接收者receiverstate对应的用户状态,若交易接收者receiverstate对应的用户状态等于空闲状态waiting,则进入步骤e2;若交易接收者receiverstate对应的用户状态等于交易状态trading或不在线状态notonline,则进入步骤e3。
34.步骤e2.hub更新交易接收者receiverstate的用户状态为交易状态trading,交易发送者senderuser将交易标识tradeid发送给交易接收者receiverstate,交易接收者receiverstate对交易标识tradeid中交易金额进行验证,若不正确,则返回错误信息,并返回步骤b;若正确,则交易接收者receiverstate对交易标识tradeid进行签名,并将签名后的交易标识tradeid返回给交易发送者senderuser,交易发送者senderuser针对所接收交易标识tradeid中交易接收者receiverstate的签名、以及交易金额、交易发送者senderuser用户id、交易接收者receiverstate用户id进行验证,若验证通过,则交易发送者senderuser针对所接收交易标识tradeid进行签名,并将签名后的交易标识tradeid发送给hub,由hub更新交易接收者receiverstate的用户状态为等待状态,并进入步骤e4;否则返回错误信息,并返回步骤b。
35.步骤e3.hub判断交易标识tradeid是否包含双重签名,是则进入步骤e4;否则hub针对交易标识tradeid进行签名,并将签名后的交易标识tradeid返回给交易发送者senderuser,交易发送者senderuser针对所接收交易标识tradeid中的交易金额进行验证,若验证通过,则交易发送者senderuser针对所接收交易标识tradeid进行签名,并将签名后的交易标识tradeid发送给状态通道,然后进入步骤e4;若验证未通过,则返回错误信息,并返回步骤b。
36.步骤e4.hub针对状态通道交易次数进行加1更新,并由状态通道针对所接收的交
易标识tradeid进行签名,并按时间添加到状态通道交易详细信息列表list,然后hub针对此次交易中交易发送者senderuser、交易接收者receiverstate分别所对应的用户账户余额进行更新,然后返回步骤b。
37.步骤f.hub针对状态通道交易详细信息列表list和状态通道交易次数进行判断,若状态通道交易详细信息列表list不为空、且状态通道交易次数等于状态通道交易详细信息列表list长度时,则将针对状态通道交易详细信息列表list中所有交易记录进行hash运算打包成区块,并广播进行区块链确认,然后进入步骤g;若其余情况,则直接进入步骤g。
38.步骤g.hub修改交易双方的用户状态均为空闲状态waiting,并清除状态通道中状态通道标识channelid的缓存数据。
39.上述步骤执行的同时,进一步设计在执行步骤d的起始时刻时,初始化计时器为0,并开启计时器,在执行步骤d至步骤e的过程中,若计时器达到预设第二超时阈值时,仍未完成交易,则直接定义为超时,并返回步骤b。此设计,即在执行交易的同时,引入交易超时限定设计,保证交易过程中的安全性。
40.上述技术方案所设计一种区块链中基于hub的状态通道交易方法,在区块链状态通道基础上,引入交易枢纽hub的概念,用户加入状态通道的hub中,当交易双方都在线时,用户间进行交易和支付转账信息签名,将确认的转账信息(承诺交易)发送给hub,通过hub实现了多方之间交易;当交易接收方不在线时,交易发送方通过与hub进行签名确认交易,实现双方的交易;设计方法将区块链中的复杂的计算和操作转移到hub中执行,实现交易的快速处理,并且设计使得用户可以加入到任意一个hub中,通过hub与其它用户进行交易和支付转账,实现了多方之间的通道交易,一定程度上降低了网络拓扑、路由寻路和算法的复杂,而且提高了状态通道交易的效率。
41.由于闪电网络和雷电网络中需要交易用户、以及通道间用户对交易进行确认,要求交易用户同时在线,而本发明所设计区块链中基于hub的状态通道交易方法在实际应用中,通过hub的枢纽作用解决交易接收者不在线的情况,最终实现状态通道多用户交易,提高状态通道交易的效率。
42.上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。