基于多要素哈希锁的链上链下数据传输方法
1.本发明涉及数据传输领域,尤其涉及基于多要素哈希锁的链上链下数据传输方法。
背景技术:
2.近年来,区块链技术迅猛发展,特别在区块链智能合约问世过后,迅速成为区块链解决方案的重要组成部分。但是一些实现复杂功能的智能合约是需要外界数据支持的,而区块链的执行环境与外界相对独立,所以一种安全高效的链下数据上链技术就显得尤为重要。
3.现阶段,区块链链上链下数据安全传输技术比较流行的技术就是预言机技术,预言机的功能是将外界信息写入到区块链内,完成区块链与现实世界的数据互通。但是预言机也存在许多安全问题,比如数据质量问题,由于链上节点可能访问不同的链下数据源,因此如何保障数据质量是一个问题;扩展性问题,每当网络中加入一个新的数据源,或现有数据聚合方式要进行调整,都需要大量的网络治理和协调工作让网络中所有节点都达成共识,这增加了共识所需的时间,严重时可能导致整个区块链无法运行。除了预言机技术以外,另一种是哈希锁定技术,对数据进行哈希上锁后,将哈希值进行上链,通过哈希算法的不可逆性保证数据在传输过程中的安全性。但是这种方法只能知道数据是否被篡改,没有保障数据传输的原子性,而且通常是对整个数据进行操作。但在实际应用场景中,我们对数据有各种各样的定制化需求,例如只要特定位置或者组织的数据上链,而要实现这些定制化需求就需要具体考虑需求背后的各个要素,例如位置,组织等等要素。因此,我们的主要目标是构建一种安全且可定制化的链下数据上链机制,以此实现链下数据完整性验证,保障数据的原子性和一致性,满足特定场景下的数据安全和处理性能要求。
4.现有技术一
5.中国发明专利,名称:一种基于状态通道的链上-链下协同的资源交易方法,申请号cn202110688709.5,公开号cn113411338b中提出了一种基于状态通道的链上-链下协同的资源交易方法,资源交易双方在链上开启状态通道后,可以在链下进行多次的资源交易活动,只有当开启、关闭通道或发生争议事件时才需要与区块链系统通信,这种方式可以减少区块链系统需要处理的交易数量与交易双方与区块链系统的通信次数,从而减轻区块链系统的吞吐压力和资源交易流程所需的完成时间。此外,在该方法中还引入了争议处理方法,当资源交易双方不按照系统规定流程进行时,资源交易双方都可以通过创建争议来强制对方遵守资源交易协议,从而保证资源交易的安全与公平。
6.现有技术一的缺点
7.此方法通过在链下开启状态通道进行资源交易,可以在链下进行多次的资源交易活动,只有当开启、关闭通道或发生争议事件时才需要与区块链系统通信,但是资源交易的参与方只有两方,无法完成多个参与方的资源交易需求,且状态通道的开启需求消耗一定的资源,每两个资源交易方就要新开一个状态通道,导致资源消耗较大,利用率较低。
8.现有技术二的技术方案
9.中国发明专利,名称:多人链下状态通道中信息安全保护实现方法及系统,申请号cn202210288131.9,公开号cn114826603a中提出了一种多人链下状态通道中信息安全保护实现方法,通过执行者建立多人链下状态通道并生成系统公共参数后,发起方与接收方加入多人链下状态通道并进行链下状态更新,经执行者验证后更新多人链下状态通道的状态,实现对通道内用户的保护。
10.现有技术二的缺点
11.此方法采用零知识证明的密码学来保证链下状态通道中的数据安全,并且需要多个参与方进行验证确认。通常数据传输对性能的要求是比较高的,零知识证明的时间开销和计算开销都较大,会极大的影响数据的传输。并且等待多个参与方验证确认是需要时间的,如果某一方延迟给出确认信息,那么数据传输的性能将会大大降低。
12.发明所要解决的技术问题
13.区块链的执行环境与外界相对独立,所以区块链难以获取到安全可信的链下数据,虽然已经有预言机技术为区块链提供相对安全可信的数据,但是在处理海量链下交易数据时,存在链上链下数据不一致、并发性能低下等问题,因此本发明提出构建链下传输通道网络作为传输媒介,它由一对用户之间的一组传输通道构成,用于在没有直接建立传输通道的两方之间进行链下传输。并提出基于哈希锁、时间锁、位置锁、组织锁等多要素哈希锁定的链下数据上链机制,根据应用场景,设置并选取不同种类的锁,通过哈希锁定,保证数据的完整性、原子性和一致性,实现链下交易数据或链下资产的完整性验证,满足特定场景下的数据安全和处理性能要求。
技术实现要素:
14.为解决上述技术问题,本发明提供了基于多要素哈希锁的链上链下数据传输方法。
15.本发明的技术方案如下:
16.基于多要素哈希锁的链上链下数据传输方法,包括以下阶段:
17.第一阶段:预处理阶段;
18.第二阶段:提交和锁定阶段;
19.第三阶段:释放阶段。
20.优选地,第一阶段包括以下步骤:
21.s11:多要素哈希锁选取和生成机制;
22.s12:构建链下数据传输通道网络。
23.优选地,s11包括以下子步骤:
24.s111:选择要素锁;
25.s112:形成要素标识;
26.s113:生成多要素哈希锁。
27.优选地,s12包括以下子步骤:
28.s121:开通道;
29.s122:数据传输;
30.s123:关通道。
31.优选地,第二阶段包括3个方面:
32.第1方面发送者:发送者u0创建mehtlc多要素哈希时间锁合约,即mehtlc(u0,u1,v1,s,t1,d)到其下一邻居u1;
33.第2方面中间用户:在提交和锁定阶段,每个中间用户{ui}
i∈[1,n]
从其先前的邻居u
i-1
接受mehtlc。每个中间用户ui验证mehtlc合约的正确性:a.检查锁定时间t
i-1
(t
i+1
>ti)的有效性;
[0034]
b.检查用户u
i-1
是否有足够的手续费γ
<i,i+1>
(γ
<i,i+1>
≥v
i+1
),其中v
i+1
是从vi中减去后的手续费再跟右邻居u
i+1
创建新的mehtlc合约;
[0035]
第3方面接受者:接受者u
n+1
从他的左邻居un接收mehtlc(un,u
n+1
,v
n+1
,s,t
n+1
,d),然后检查合约是否满足t
n+1
>t
now
+δ,如果满足,向左邻居发送要素标识的哈希s的原像r,如果不满足t
n+1
>t
now
+δ或者给出的原像r算出的哈希与要素标识的哈希s不匹配,那么传输将中止,将数据和手续费退回;
[0036]
其中δ为一个小的正值,u0为发送者,u
n+1
为接受者,{ui}
i∈[1,n]
为中间用户,fee(ui)为用户ui的手续费,γ
<i,j>
为用户ui和uj的投入通道押金。
[0037]
优选地,第3阶段包括2个方面:
[0038]
第1方面发送者:如果用户u1在时间t1内提供了一个哈希s的原像r,然后u0将锁定的v1手续费和数据d释放到其下一个邻居u1。
[0039]
第2方面中间用户:每个用户ui在时间ti内提供了一个哈希s的原像r,那么就将锁定的手续费和数据d释放到其下一个邻居u
i-1
。
[0040]
其中u0为发送者,u
n+1
为接受者,{ui}
i∈[1,n]
为中间用户,fee(ui)为用户ui的手续费。
[0041]
本发明基于多要素哈希锁的链上链下数据传输方法的有益效果如下:
[0042]
1.本发明提出基于哈希锁、时间锁、位置锁、组织锁等多要素哈希锁的定义,根据应用场景,设置并选取不同种类的锁,通过哈希锁定,保证数据的完整性、原子性和一致性,实现链下交易数据或链下资产的完整性验证,满足特定场景下的数据安全和处理性能要求。
[0043]
2.本发明设计了链下数据传输通道网络的总体流程,该流程对构建链下数据传输通道网络的主要步骤进行了描述,设计了网络中各个通道可以进行的操作包括操作的参数定义,方法流程。
[0044]
3.本发明的链下数据传输通道网络实现了在没有直接建立传输通道的两方之间进行链下传输,提高了通道的重复利用率。
[0045]
4.本发明设计了多要素哈希时间锁定合约mehtlc(multi element hashed timelock contract),提高了数据在链下数据传输通道网络的流动性和安全性。
[0046]
5.本发明设计了基于多要素哈希锁和链下数据传输通道网络的链上链下数据传输机制总体流程,该流程对链下数据上链的阶段流程进行了描述。
[0047]
6.本发明提高了数据传输的安全性且保证数据的完整性、原子性和一致性。
附图说明
[0048]
图1为本发明方法的示意图。
[0049]
图2为本发明数据传输的总体流程图。
[0050]
图3为本发明多要素哈希锁生成流程图。
[0051]
图4为本发明链下数据传输通道网络图。
[0052]
图5为本发明数据传输上链图。
具体实施方式
[0053]
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
[0054]
1.方法模型
[0055]
基于多要素哈希锁的链上链下数据传输模型,如图1所示,系统的角和功能的具体说明如下:
[0056]
链下数据源:链下数据源为当前时刻需要将自身的数据上传到区块链上的设备。资源需求设备通常为资源有限的物联网的设备,如工业物联网传感器、智慧车辆和虚拟现实设备等。
[0057]
链下数据传输网络:链下数据传输通道网络为不同设备之间的数据传输通道组成的网络,它用于在没有直接建立传输通道的两方之间进行链下传输。
[0058]
多要素哈希锁:多要素哈希锁是对数据从多个维度进行锁定,保证数据在传输过程中安全性、原子性和一致性。多要素是根据具体应用场景的需求提取出相应需要考虑的要素,例如只需要特定位置的数据上链,需要考虑位置要素;只需要的特定的组织或者企业数据上链,就需要考虑组织要素等等要素。将数据映射成多要素标识,用哈希锁对标识进行锁定。
[0059]
区块链节点:区块链节点负责处理并记录来自传输通道网络中的数据,生成多要素哈希锁所需的随机数。
[0060]
2.总体流程
[0061]
数据传输的总体流程如图2所示,大体来说可以分为3个阶段,6个主要的步骤,分别为:
[0062]
(1)多要素哈希锁的生成:链下数据源根据自己的需求确定多要素,生成要素标识,最后组成多要素哈希锁。
[0063]
(2)链下传输通道网络构建:链下数据传输通道网络由每两个链下数据源用户之间的一组传输通道构成,它用于在没有直接建立传输通道的两方之间进行链下传输。一个传输通道有三个操作:分别是offchainopenchannel、offchaintransmission和offchainclosechannel。
[0064]
(3)数据传输:在多要素哈希锁和链下传输通道网络的基础上,利用多要素哈希时间锁定合约mehtlc(multi element hashed timelock contract)的智能合约接口实现链下数据上链的机制,数据通过在链下数据传输通道网络流动,最终上链。
[0065]
(4)数据传输条件验证是否成功:比较验证mehtlc中的条件是否满足。
[0066]
(5)数据传输条件验证是否超时:比较验证mehtlc的条件时是否超时。
[0067]
(6)是否关闭通道:链下数据源完成数据传输后,可以执行offchainclosechannel关闭通道同时将最新的余额广播到链上。第1,2步为预处理阶段,第3,4,5步为提交和锁定阶段,第6步为释放阶段。
[0068]
各阶段具体流程在以下部分详细介绍。
[0069]
3.多要素哈希锁的生成
[0070]
如图3,多要素哈希锁生成流程主要包括三个阶段,分别如下:
[0071]
(1)要素锁的选择:根据具体应用场景的需求提取出相应需要考虑的要素,例如只需要特定位置的数据上链,需要考虑位置要素;只需要的特定的组织或者企业数据上链,就需要考虑组织要素等等要素。多要素(multi element)即根据具体应用场景的需求提取出相应的要素值,式子如下:
[0072][0073]
其中,e1、e2、e3、e4分别为用户输入的位置要素,组织要素,时间要素和其他要素,α(x)、β(x)、η(x)、ξ(x)分别为该要素的要素映射函数,α(x)将用户输入的具体位置信息映射成该位置的经纬度坐标,β(x)将用户输入的某个具体组织映射成唯一的组织编号,η(x)将用户输入的时间映射为块时间,ξ(x)为用户自定义映射函数。整个式子表示在用户输入相应的要素后,进入相应的要素映射函数,对输入的要素进行一个映射,最终输出一个具体的要素值。
[0074]
(2)要素标识的形成:多要素标识r是一个由多要素和随机数r组成的一个字符串,随机数r=random(i)
i∈[0,n+1]
,多要素标识r=(multi element)+r,其中multi element是经过多要素映射函数映射的多要素值,例如位置的经纬度,某个企业组织唯一标识符等等,r是区块链生成相应的随机数。
[0075]
(3)生成多要素哈希锁:对生成的这个多要素标识求哈希即是多要素哈希锁s=hash(r)
[0076]
4.链下数据传输通道网络构建:
[0077]
链下数据传输通道网络由每两个链下数据源用户之间的一组传输通道构成,它用于在没有直接建立传输通道的两方之间进行链下传输。一个传输通道有三个操作:分别是offchainopenchannel、offchaintransmission和offchainclosechannel。任何两个用户都可以通过双方同意并存入保证金在链上执行offchainopenchannel操作来打开传输通道。此后,两个用户都可以通过执行offchaintransmission操作来完成数据传输,而无需在区块链上广播它。最后,任何一方都可以通过执行offchainclosechannel操作来关闭通道,并在区块链上广播最新的相互接受状态。
[0078]
下面分别详细描述这三个操作:
[0079]
(1)开通道:offchainopenchannel(ui,uj,γ
ij
,γ
ji
,fee,t)
→
{1,0},ui,uj是用户
对,信道容量γ=γ
ij
+γ
ji
;γ
ij
(≤β[ui])和γ
ji
(≤β[uj])是对应用户的链上余额;fee和t分别表示手续费和通道时间。这个操作是打开一个通道标识符的新通道。如果此操作成功,则区块链β更新余额(β[ui]=β[ui]
–
γ
ij
和β[uj]=β[uj]-γ
ji
),并返回1,否则返回0。
[0080]
(2)数据传输:给定一组通道将数据d从发送者u0传输到接受者u
n+1
,并将依次从ν里扣除手续费。此操作检索通道信息来自区块链。它检查每个中间用户的条件(γ'
ij
≥νi)。如果满足,则通道余额更新为返回1。否则,通道不更新,返回0。
[0081]
(3)关通道:给定一个信道标识符此操作检索信道信息其中γ
ij
和γ
ji
是双方最后商定的的押金,而γ'
ij
和γ'
ji
是当前的押金。如果超时或者用户发起申请,则区块链b更新余额(β[ui]=β-γ
ij
和β[uj]=β
–
γ
ji
,或者β[ui]=β-γ'
ij
和β[uj]=β
–
γ'
ji
),然后从网络中消除了通道并分别返回1(0)以进行成功(失败)操作。
[0082]
ui表示链下数据源用户,β表示区块链,表示数据源ui和uj之间的信道标识符,fee(ui)表示用户ui需支付的手续费,当多方已经开辟多个链下传输通道,将通道整合成一个链下数据传输通道网络,具体流程如下:
[0083]
如图4,u0、u1、u2、u3都为链下的不同的数据源,假设数据源u0想将数据传输到区块链上,希望沿路径p=u0→
u1→
u2→
blockchain传输数据d。在步骤1中,区块链随机生成一个随机数r,将r的哈希值s通过安全私密的方式发给u0,其中s=h(r),h是哈希函数。从步骤2到步骤9是数据d的传输过程。在步骤2中,发送方u0向其发送传输请求offchaintransmission(u0,u1,v1,s,t1,d)到下一个右邻u1,v是传输数据过程中的手续费(不包括发送方和接收方的费用),每经过一跳手续费会相应的增加,其中然后,它锁定资金和需要发送的数据并询问用户u1在时间t1内给出r。否则,传输将中止并退回给u0。在接收到传输请求offchaintransmission之后,在步骤3中,将其从v1中减去其手续费,并给下一个邻居u2发送传输请求offchaintransmission(u1,u2,v2,s,t2,d),在每个中间节点处执行相同的过程。最后,当区块链接收到传输请求offchaintransmission(u3,blockchain,v4,s,t4,d)时,它验证了offchaintransmission条件并将随机数r发送到之前的数据源u2。随后,在接收到r之后,每个中间数据源u将锁定的vi手续费和数据d发送给下一个邻居数据源,并沿路径向相反的方向发送r到先前邻居数据源。最后,发送数据的数据源u0接收r,将锁定的数据和手续费发送给用户u1完成传输,再通过执行offchainclosechannel操作来关闭通道。
[0084]
5.数据传输上链
[0085]
在多要素哈希锁和链下传输通道网络的基础上,利用多要素哈希时间锁定合约mehtlc(multi element hashed timelock contract)的智能合约接口实现链下数据上链的机制,数据通过在链下数据传输通道网络流动,最终上链,具体流程如下:
[0086]
如图5所示,图中u0、u1、u2、u3都为链下的不同的数据源,假设数据源u0想将指定位置的数据d传输到区块链上,希望沿路径p=u0→
u1→
u2→
blockchain传输数据d。在步骤1中,用户输入该位置的信息并通过多要素映射函数将其映射为该位置的经纬度,将经纬度通过匿名的洋葱网络发送到区块链上,区块链将经纬度和生成的随机数组合起来,生成了一个多要素标识r,将r的哈希值s通过安全私密的方式发给u0,其中s=h(r),h是哈希函数。从步骤2到步骤9是数据d的传输过程,在步骤2中,发送方u0与下一个右邻u1创建mehtlc(u0,u1,v1,s,t1,d),v是传输数据过程中的手续费(不包括发送方和接收方的费用),每经过一跳手续费会相应的增加,其中然后,它锁定资金和需要发送的数据并询问用户u1在时间t1内给出r。否则,传输将中止手续费和数据将退回给u0。在接收到mehtlc合约之后,在步骤3中,将其从v1中减去其手续费,并给下一个邻居u2创建mehtlc(u1,u2,v2,s,t2,d),在每个中间节点处执行相同的过程。最后,当区块链接收到mehtlc(u3,blockchain,v4,s,t4,d)时,它验证了mehtlc条件并将多要素标识r发送到之前的数据源u3。随后,在接收到r之后,每个中间数据源u将锁定的vi手续费和数据d发送给下一个邻居数据源,并沿路径向相反的方向发送r到先前邻居数据源。最后,发送数据的数据源u0接收r,将锁定的数据和手续费发送给用户u1完成传输,再通过执行offchainclosechannel。
[0087]
6.智能合约数据传输条件验证是否成功
[0088]
mehtlc包括多要素哈希锁和时间锁,需要验证传输网络中邻居传过来的多要素哈希锁原像r是否与已有的多要素哈希锁s相同,验证通过还需验证是否超时。
[0089]
7.智能合约数据传输条件验证是否超时
[0090]
mehtlc包括多要素哈希锁和时间锁,验证传输网络中邻居传过来的多要素哈希锁原像r是否与已有的多要素哈希锁s相同后,还需要验证时间锁,即能不能在规定时间内完成多要素哈希锁的验证,通过验证数据可以进入下一跳传输,否则将退回数据和手续费。
[0091]
8.关闭通道
[0092]
数据传输完成、通道开启时间超时或者传输过程中验证超时,将执行offchainclosechannel关闭通道,同时将余额更新并广播到链上。关通道具体流程如下:
[0093]
给定一个信道标识符此操作检索信道信息其中γ
ij
和γ
ji
是双方最后商定的的押金,而γ'
ij
和γ'
ji
是当前的押金。如果超时或者用户发起申请,则区块链b更新余额(β[ui]=β-γ
ij
和β[uj]=β
–
γ
ji
,或者β[ui]=β-γ'
ij
和β[uj]=β
–
γ'
ji
),然后从网络中消除了通道并分别返回1(0)以进行成功(失败)操作。
技术特征:
1.基于多要素哈希锁的链上链下数据传输方法,其特征在于,包括以下阶段:第一阶段:预处理阶段;第二阶段:提交和锁定阶段;第三阶段:释放阶段。2.根据权利要求1所述的基于多要素哈希锁的链上链下数据传输方法,其特征在于,所述第一阶段包括以下步骤:s11:多要素哈希锁选取和生成机制;s12:构建链下数据传输通道网络。3.根据权利要求1所述的基于多要素哈希锁的链上链下数据传输方法,其特征在于,所述s11包括以下子步骤:s111:选择要素锁;s112:形成要素标识;s113:生成多要素哈希锁。4.根据权利要求1所述的基于多要素哈希锁的链上链下数据传输方法,其特征在于,所述s12包括以下子步骤:s121:开通道;s122:数据传输;s123:关通道。5.根据权利要求1所述的基于多要素哈希锁的链上链下数据传输方法,其特征在于,所述第二阶段包括3个方面:第1方面发送者:发送者u0创建mehtlc多要素哈希时间锁合约,即mehtlc(u0,u1,v1,s,t1,d)到其下一邻居u1;第2方面中间用户:在提交和锁定阶段,每个中间用户{u
i
}
i∈[1,n]
从其先前的邻居u
i-1
接受mehtlc。每个中间用户u
i
验证mehtlc合约的正确性:a.检查锁定时间t
i-1
(t
i+1
>t
i
)的有效性;b.检查用户u
i-1
是否有足够的手续费γ
<i,i+1>
(γ
<i,i+1>
≥v
i+1
),其中v
i+1
是从v
i
中减去后的手续费再跟右邻居u
i+1
创建新的mehtlc合约;第3方面接受者:接受者u
n+1
从他的左邻居u
n
接收mehtlc(u
n
,u
n+1
,v
n+1
,s,t
n+1
,d),然后检查合约是否满足t
n+1
>t
now
+δ,如果满足,向左邻居发送要素标识的哈希s的原像r,如果不满足t
n+1
>t
now
+δ或者给出的原像r算出的哈希与要素标识的哈希s不匹配,那么传输将中止,将数据和手续费退回;其中δ为一个小的正值,u0为发送者,u
n+1
为接受者,{u
i
}
i∈[1,n]
为中间用户,fee(u
i
)为用户u
i
的手续费,γ
<i,j>
为用户u
i
和u
j
的投入通道押金。6.根据权利要求1所述的基于多要素哈希锁的链上链下数据传输方法,其特征在于,所述第3阶段包括2个方面:第1方面发送者:如果用户u1在时间t1内提供了一个哈希s的原像r,然后u0将锁定的v1手续费和数据d释放到其下一个邻居u1。
第2方面中间用户:每个用户u
i
在时间t
i
内提供了一个哈希s的原像r,那么就将锁定的手续费和数据d释放到其下一个邻居u
i-1
。其中u0为发送者,u
n+1
为接受者,{u
i
}
i∈[1,n]
为中间用户,fee(u
i
)为用户u
i
的手续费。
技术总结
本发明公开了基于多要素哈希锁的链上链下数据传输方法,包括以下阶段:第一阶段:预处理阶段;第二阶段:提交和锁定阶段;第三阶段:释放阶段;发明提出构建链下传输通道网络作为传输媒介,它由一对用户之间的一组传输通道构成,用于在没有直接建立传输通道的两方之间进行链下传输,并提出基于哈希锁、时间锁、位置锁、组织锁等多要素哈希锁定的链下数据上链机制,根据应用场景,设置并选取不同种类的锁,通过哈希锁定,保证数据的完整性、原子性和一致性,实现链下交易数据或链下资产的完整性验证,满足特定场景下的数据安全和处理性能要求。求。求。