揭露闪电网络支付通道余额的方法、节点及系统

文档序号:28298539发布日期:2021-12-31 23:28阅读:162来源:国知局
揭露闪电网络支付通道余额的方法、节点及系统

1.本发明是关于区块链技术领域,特别是关于一种揭露闪电网络支付通道余额的方法、节点及系统。


背景技术:

2.在比特币诞生之初,比特币创始人中本聪并没有特意限制区块大小,它们在其自身数据结构的控制下最大可以达到32mb。在当时,打包的区块平均大小只有1到2kb,如果设置过高的区块大小上限,则会造成计算资源的浪费和分布式拒绝服务攻击的发生。因此,在当时为了保证比特币系统的安全和稳定,中本聪将区块大小限制在1mb。由于比特币区块大小1mb的限制,比特币(btc)理论上每秒最多支持处理7笔交易。相较于当前的主流支付系统(如visa每秒支持超过5万笔交易,支付宝峰值交易速度可达9万笔)来说,比特币网络的交易速度很慢,还无法支撑起全球范围的交易。
3.一种直观的扩容方式就是增大比特币区块的大小。但这种扩容方式会引发硬分叉的问题,导致新版本的节点无法兼容旧版本的节点。实际上,bch将区块大小提升到8mb以实现比特币的扩容。将区块大小提升到8mb也无法使得交易速度达到主流支付系统的级别,若不限制区块的大小来达到visa的交易速度,根据比特币现有的共识机制——每十分钟产生一个区块,那么一个区块的大小将达到8gb,一年将产生超过400tb的交易数据。普通个人电脑和带宽都无法承载如此大的数据量,这将导致只有少部分有能力验证大区块的个人能够参与到比特币网络中,最终比特币来源于去中心化的优势将荡然无存。
4.比特币的交易处理能力和区块链数据量似乎是一对不可调和的矛盾,闪电网络的出现解决了这看似无法解决的矛盾。
5.闪电网络提供了一个可扩展的微支付通道网络,将大多数区块链上的交易转移到链下执行。若网络中的双方之间有支付通道相连,那么两者之间可以实现双向的高频即时交易,这些交易都不会被广播到区块链上,除非双方有分歧出现时,才会将有分歧的交易广播到区块链上,启动链上共识阶段。若网络中的双方之间不存在直接的支付通道,只要通道网络中存在支付路径,虽然路径中可能经过多个第三方周转,但闪电网络也可以利用这条支付路径实现资金在双方之间的可靠转移。截至2020年10月,闪电网络中有超过14000个节点,锁定的比特币超过1000个,总价值超过1500万美元。由此看来,闪电网络的规模已经较为庞大,其经济价值也已经达到了不可忽视的地步。
6.闪电网络作为新兴的产物,虽然已经被正式地投入使用,但其中存在的问题仍是不可忽视的。其中路由算法的效率低很大程度上是因为支付通道中的余额是不可见的。
7.公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。


技术实现要素:

8.本发明的目的在于提供一种揭露闪电网络支付通道余额的方法、节点及系统,其
能够利用分治的思想,根据收到错误的具体信息,调整支付金额,以更快逼近节点在通道中实际的通道余额,减少发送探测交易的次数,提升探测过程的效率。
9.为实现上述目的,本发明的实施例提供了揭露闪电网络支付通道余额的方法,包括,
10.确认发送方a1与接收方a2之间的n个待探测通道及对应各个待探测通道的两端节点u
i1
和u
i2
;发起者分别与各待探测通道两端节点建立支付通道,其中i、n均为正整数,i≤n;
11.发送方a1向接收方a2发起一笔金额为m_p_a的预探测交易:当节点u
i1
能够转发该预探测交易时,延迟节点u
i2
的交易结算,待探测支付通道的余额增加m_p_a,重复执行该过程,直至u
i1
没有足够的余额转发交易为止;
12.否则执行余额探测过程,余额探测过程为:设定当前交易金额小于当前支付通道余额的上限,当u
i1
响应为余额不足,则设定待探测支付通道的余额可能的上界为当前支付金额;如果u
i1
响应为未知交易,则设定待探测支付通道的余额可能的下界为当前支付金额;重复,直至当前待探测支付通道的余额符合设定精度;
13.返回待探测支付通道的余额,其中待探测支付通道的余额的下限为当前支付金额与待探测支付通道的余额可能的下界之和,待探测支付通道的余额的上限为当前支付金额与待探测支付通道的余额可能的上界之和。
14.在本发明的一个或多个实施方式中,预探测交易中交易金额m_p_a为闪电网络中所允许的路由支付的最大金额。
15.在本发明的一个或多个实施方式中,余额探测过程中当前交易金额为当前支付通道余额的上界与下界之和的一半。
16.在本发明的一个或多个实施方式中,节点u
i2
处的结算延迟时间不大于交易在当前支付通道中所允许的最大存活时间。
17.在本发明的一个或多个实施方式中,n个待探测通道在闪电网络中的未结算交易不大于其所允许存在的最大交易数。
18.在本发明的一个或多个实施方式中,确认发送方a1与接收方a2之间的n个待探测通道及对应各个待探测通道的两端节点u
i1
和u
i2
,设定其余额的预设精度p;发起者分别与各待探测通道两端节点建立支付通道,设定其抵押资金上限均为m_p_a,其中i、n均为正整数,i≤n;初始化各待探测通道的余额的可能下限和可能上限分别为0和m_p_a,初始化各待探测支付通道的余额为0;发送方a1向接收方a2发起一笔预探测交易,交易金额为m,m∈(0,m_p_a]:当节点u
i1
能够转发该预探测交易时,则同一待探测通道对应的延迟节点u
i2
的交易结算并重复如下过程:待探测支付通道的余额增加m,发送方a1再次向接收方a2发起一笔交易金额为m的预探测交易;否则判断当前待探测支付通道的余额可能的上界和下界的差值c是否大于预设精度p,如c>p,则设定当前支付金额为n,其中n不大于当前待探测支付通道的余额可能的上界和下界的平均值,并由发送方a1向接收方a2发起新一笔的预探测交易,交易金额为n:如果收到的响应为资金不足,则设定待探测支付通道的余额可能的上界为当前支付金额;如果收到的响应为未知交易则设定待探测支付通道的余额可能的下界为当前支付金额;重复发送方a1向接收方a2发起新一笔金额为n的预探测交易的过程,通过这一手段不断逼近上界和下界,直至c≤p;返回待探测支付通道的余额[balance
min
,balance
max
],其中待
探测支付通道的余额的下限balance
min
为当前支付金额与待探测支付通道的余额可能的下界之和,待探测支付通道的余额的上限balance
max
为当前支付金额与待探测支付通道的余额可能的上界之和。
[0019]
在本发明的一个或多个实施方式中,确认连接在发送方a1与接收方a2之间的待探测支付通道并设定其余额的预设精度,选定待探测支付通道两端的节点u1和u2,过程发起者分别与节点u1和u2建立支付通道,建立通道时的抵押资金均设置为闪电网络中所允许的最大金额m_p_a;初始化待探测支付通道的余额可能的下界为0,初始化待探测支付通道的余额可能的上界为m_p_a,初始化待探测支付通道的余额为0;发送方a1向接收方a2发起一笔预探测交易,交易金额为m_p_a:当节点u1能够转发该预探测交易时,则延迟节点u2的交易结算并重复如下过程:待探测支付通道的余额增加m_p_a,发送方a1向接收方a2发起一笔交易金额为m_p_a的预探测交易;当节点u1无法转发该预探测交易时,则判断当前待探测支付通道的余额可能的上界和下界的差值是否大于预设精度,如大于则设定当前支付金额为当前待探测支付通道的余额可能的上界和下界的平均值,并由发送方a1向接收方a2发起新一笔的预探测交易,交易金额为当前支付金额:如果收到的响应为资金不足,则设定待探测支付通道的余额可能的上界为当前支付金额;如果收到的响应为未知交易则设定待探测支付通道的余额可能的下界为当前支付金额;重复,直至当前待探测支付通道的余额可能的上界和下界的差值小于预设精度;返回待探测支付通道的余额[balance
min
,balance
max
],其中待探测支付通道的余额的下限balance
min
为当前支付金额与待探测支付通道的余额可能的下界之和,待探测支付通道的余额的上限balance
max
为当前支付金额与待探测支付通道的余额可能的上界之和。
[0020]
在本发明的一个或多个实施方式中,区块链节点,执行如前述的揭露闪电网络支付通道余额的方法的。
[0021]
在本发明的一个或多个实施方式中,区块链系统,包括如前述的区块链节点。
[0022]
需要说明的是,在包括而不限于上述方案实施中,有关支付金额的限定可以为基于存储余额、也可以为基于伪造哈希值或者其它虚拟单位值等。
[0023]
与现有技术相比,根据本发明实施方式的揭露闪电网络支付通道余额的方法,主要针对闪电网络中支付通道余额的不可见性问题,设计出一种闪电网络中支付通道余额探测方案。预先选定待探测支付通道,发起者与支付通道两端的节点建立支付通道,结合预探测过程和精度探测过程,可以实现对于全网支付通道的余额探测。同一时间与多个待探测节点建立支付通道,可以实现并行地对选中的支付通道进行余额探测。最后得到节点的通道余额范围,在路由发现过程中,可以有选择地避开没有能力转发交易的中间节点,提升路由算法的效率,提高交易速度以及交易的成功率。
附图说明
[0024]
图1是根据本发明一实施方式的对单条支付通道执行余额揭露过程示意图;
[0025]
图2是根据本发明一实施方式的对多条支付通道执行余额揭露过程示意图;
[0026]
图3是根据本发明一实施方式的对小容量支付通道执行余额揭露流程示意图。
具体实施方式
[0027]
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
[0028]
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
[0029]
如图1至图3所示,根据本发明优选实施方式的闪电网络通道余额探测方法中:
[0030]
与支付通道的双方都建立支付通道以提高通道余额的可见性。
[0031]
探测过程发送交易的交易金额变化符合二分查找的模式。
[0032]
只需要少数的节点即可对网络中大多数节点的通道余额进行探测。
[0033]
本发明的一个实施例中,
[0034]
本发明的一个实施例中,发起通道余额探测过程的节点可以将被探测节点作为中继节点,将另一个掌控的节点作为目的节点。发起节点所发送的每一笔交易的完成时间可以由发起者决定,中继节点会在力所能及的范围内转发交易,一旦交易金额超出中继节点的转发能力,交易流程终止。在本发明中,中继节点能够转发交易时,交易会被转发至发起者所控制的节点,交易可以被拒绝或延迟拒绝以减少探测过程带来的开销。
[0035]
本发明的一个实施例中,采用符合二分查找的模式可以执行平均log(n)+c次的探测即可得到一定精度的用户通道余额。
[0036]
探测通道余额的步骤为:
[0037]
1)选定待探测的支付通道以及支付通道两端的节点u1,u2,网络中两个由探测过程发起者控制的节点a1,a2分别与支付通道两端的节点建立支付通道,建立通道时的抵押资金funding.capacity均设置为闪电网络中所允许的最大金额m_p_a。
[0038]
2)初始化支付通道余额可能的下界lowervalue为0,初始化支付通道余额可能的上界uppervalue为m_p_a,初始化支付通道的余额currbalance为0。
[0039]
3)节点a1向节点a2发送一笔预探测交易,交易金额设置为m_p_a。
[0040]
4)当u1节点可以转发预探测交易时,将支付通道余额currbalance增加m_p_a,并在u2处延迟交易的结算,跳转至步骤3)。可以转发预探测交易说明u1与u2建立的支付通道的抵押资金大于m_p_a,且u1的通道余额大于m_p_a,将这样的支付通道称为大通道。相对应的将支付通道的抵押资金小于m_p_a的通道称为小通道。当u1节点因资金不足insufficientfunds而无法转发交易时,跳转至步骤5)。
[0041]
5)判断uppervalue与lowervalue的差值是否大于预设的精度,如果大于,则设置当前支付金额currvalue为上界和下界的平均值。生成伪造的哈希值来构建无效的交易,将无效的交易经过u1,u2发送至a2,如果收到的响应为资金不足insufficientfunds,则将uppervalue减小,设置为当前的支付金额currvalue,如果收到的响应为未知的交易哈希unknownpaymenthash,则将lowervalue增大,设置为当前的支付金额currvalue。重复步骤5)直到uppervalue与lowervalue的差值小于预设的精度。
[0042]
6)计算u1支付通道余额的下界balance
min
为currbalance与lowervalue的和,计算u1支付通道余额的上界balance
max
为currbalance与uppervalue的和。将上界与下界的二元组[balance
min
,balance
max
]作为结果返回。
[0043]
本发明的一个实施例中,针对只需少数节点可实现对多数节点进行余额探测,a1和a2可以同时与多个节点建立支付通道,以实现同时对多个支付通道进行支付通道余额探测过程。本发明利用在多支付通道中路由的交易未被结算的时候会消耗支付通道中余额的特点,在a2节点处延迟a1节点发来的交易,延迟的时间不会超过交易在支付通道中所允许的最大存活时间cltv_expiry,同时,在同一支付通道中的未结算交易不会超过支付通道中所允许存在的最大交易数max_accepted_htlcs。对于同时对多条支付通道进行探测的步骤如下:
[0044]
1)选定待探测的支付通道以及支付通道两端的节点n为选中的支付通道的个数。a1分别与建立n条支付通道,a2分别与建立n条支付通道。
[0045]
2)将所有对应的支付通道余额的下界lowervalue
i
初始化为0,上界uppervalue
i
初始化为m_p_a,支付通道的余额currbalance
i
初始化为0。
[0046]
3)节点a1分别设置路由为向a2发送n笔预探测交易,交易金额均为m_p_a。
[0047]
4)对于没有足够资金转发预探测交易的节点,优先执行余额探测过程,此时的余额探测过程只需使得余额的上界和下界的差满足小于预设的精度就可以终止。a1只需要生成一个伪造的哈希值即可用来构建多个无效的交易,多个无效交易之间只有交易金额以及路由有所区别,此做法可以节省构造多个无效交易带来的额外开销。对于返回的错误信息,记录下错误信息的类型是insufficientfunds或是unknownpaymenthash,以及返回错误信息的节点标识。
[0048]
5)对成功转发了预探测交易的节点,累加计算当前的通道余额currbalance
i
,继续发送支付金额为m_p_a的交易。
[0049]
注意,对于无法继续转发交易的节点执行步骤4),对于其余的节点重复执行步骤5)。
[0050]
6)计算每个节点的支付通道余额的下界为currbalance
i
与lowervalue
i
的和,计算每个节点的支付通道余额的上界为为currbalance
i
与uppervalue
i
的和。
[0051]
针对当前的闪电网络中路由发现过程由于通道余额不可见而导致失败的问题,提出一种揭露闪电网络中通道余额的方案。现有技术中,已存在一种探测闪电网络支付通道余额的bda方法。bda只能够揭露通道容量小于单笔支付所允许的最大金额的支付通道,在提出bda方法的当时,bda适用于闪电网络中80%的支付通道。但是随着时间的推移,大容量的通道占比逐渐提高,bda方法适用于的支付通道占比逐步降低。本发明为实现揭露任意容量通道的目的,利用未结算的交易会消耗通道余额的特点,延迟交易的结算,可以通过发送伪造的无效交易,实现对全网支付通道余额的揭露,从而提升路由发现过程的效率及成功率。
[0052]
揭露闪电网络支付通道余额的方法,包括以下步骤:
[0053]
选择路由发现过程中连接在发送方与接收方之间的支付通道,选定支付通道两端的节点,探测过程发起者分别与支付通道两端的节点建立支付通道。
支付通道余额的上界balance
max
为currbalance与uppervalue的和。将上界与下界的二元组[balance
min
,balance
max
]作为结果返回。
[0064]
图2表示对多支付通道执行余额揭露的过程,在多支付通道中路由的交易未被结算的时候会消耗支付通道中余额的特点,在接收节点处延迟发起节点发来的交易,延迟的时间不会超过交易在支付通道中所允许的最大存活时间cltv_expiry,同时,在同一支付通道中的未结算交易不会超过支付通道中所允许存在的最大交易数max_accepted_htlcs。其步骤如下:
[0065]
选定待探测的支付通道以及支付通道两端的节点n为选中的支付通道的个数。a1分别与建立n条支付通道,a2分别与建立n条支付通道。
[0066]
将所有对应的支付通道余额的下界lowervalue
i
初始化为0,上界uppervalue
i
初始化为m_p_a,支付通道的余额currbalance
i
初始化为0。
[0067]
节点a1分别设置路由为向a2发送n笔预探测交易,交易金额均为m_p_a。
[0068]
对于没有足够资金转发预探测交易的节点,优先执行余额探测过程,此时的余额探测过程只需使得余额的上界和下界的差满足小于预设的精度就可以终止。a1只需要生成一个伪造的哈希值即可用来构建多个无效的交易,多个无效交易之间只有交易金额以及路由有所区别,此做法可以节省构造多个无效交易带来的额外开销。对于返回的错误信息,记录下错误信息的类型是insufficientfunds或是unknownpaymenthash,以及返回错误信息的节点标识。
[0069]
对成功转发了预探测交易的节点,累加计算当前的通道余额currbalance
i
,继续发送支付金额为m_p_a的交易,对于无法继续转发交易的节点执行步骤4),对于其余的节点重复执行步骤5)。
[0070]
计算每个节点的支付通道余额的下界为currbalance
i
与lowervalue
i
的和,计算每个节点的支付通道余额的上界为为currbalance
i
与uppervalue
i
的和。
[0071]
图3是对于小容量支付通道进行探测的流程图,利用分治的思想,根据收到错误的具体信息,调整支付金额,以更快逼近节点在通道中实际的通道余额,减少发送探测交易的次数,提升探测过程的效率。
[0072]
包括而不限于上述的实施方案,可以被应用于区块链交易结算中。
[0073]
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1