一种区块链的链下交易方法及装置与流程

    专利2022-07-08  125


    本发明涉及金融科技(fintecw)领域,尤其涉及一种区块链的链下交易方法及装置。



    背景技术:

    随着计算机技术的发展,越来越多的技术(例如:区块链、云计算或大数据)应用在金融领域,传统金融业正在逐步向金融科技转变,大数据技术也不例外,但由于金融、支付行业的安全性、实时性要求,也对大数据技术提出的更高的要求。

    区块链中的所有节点执行相同的计算、存储相同的数据,这样一种冗余的架构,在保障了安全性和非中心化的同时,也导致区块链处理交易的速度非常慢,且费用昂贵。

    现有技术中,通过链下扩容的方式降低交易的费用,其中,链下扩容的方式包括构建交易双方的状态通道,但状态通道的方案中,每笔交易都需要交易双方进行签名,因此导致不具备多重签名能力的交易方无法与其他节点通过状态通道进行交易,且签名数据大又复杂,影响状态通道性能,降低了链下交易的效率。



    技术实现要素:

    本发明实施例提供一种区块链的链下交易方法及装置,用于减少链下交易的签名,减少了状态通道的数据交互量,提高了状态通道的数据交互效率。

    第一方面,本发明实施例提供一种区块链的链下交易方法及装置,包括:

    第一交易方通过状态通道接收第二交易方发送的第二链下交易;所述第二链下交易中包括所述第二链下交易之前的各交易构成的第一默克尔山脉的根;所述状态通道是所述第一交易方和所述第二交易方构建的链下通道;

    所述第一交易方从第一链下交易中获取所述第一链下交易在所述第一默克尔山脉中的第一默克尔证明;所述第一链下交易为所述第一交易方验证通过的且发生于所述第二链下交易之前的前一链下交易;

    所述第一交易方根据所述第一默克尔证明和所述第一链下交易生成第一验证根;

    所述第一交易方通过确定所述第一默克尔山脉的根与所述第一验证根是否一致来验证所述第二链下交易。

    上述技术方案中,第一交易方根据第二链下交易之前的前一链下交易,即第一链下交易,验证第二链下交易,不再需要对其签名,减少了签名的数据量,具体的,根据第一默克尔山脉中的第一默克尔证明和第一链下交易生成第一验证根,根据第一验证根验证第二链下交易中第一默克尔山脉的根,保证了区块链的链下交易不可篡改,实现了以单一签名的方式,使交易双方确认链下交易,并完成链下交易的交互,降低了任一交易方签名的复杂度,由于每笔链下交易只需要发起交易的交易方的签名,不再使用多重签名,提升了易用性,降低了状态通道的数据交互量,提高了状态通道的数据交互量效率。

    可选的,所述方法还包括:

    所述第一交易方根据所述第一交易方已验证通过的各交易,构建第二默克尔山脉;

    所述第一交易方构建第三链下交易;所述第三链下交易中包括所述第二默克尔山脉的根、所述第三链下交易在第三默克尔山脉中的第三默克尔证明;所述第三默克尔山脉是通过所述第三链下交易和所述第一交易方已验证通过的各交易构建的;

    所述第一交易方通过所述状态通道将所述第三链下交易发送至所述第二交易方。

    上述技术方案中,第一交易方是根据已验证的链下交易发起的第三链下交易,因此,第二交易方可以根据第三链下交易之前的链下交易对第三链下交易进行验证,在验证通过后,不需签名再返回至第一交易方,存储至本地即可,降低了状态通道的数据交互量,提高了状态通道的数据交互量效率。

    可选的,所述第一交易方通过确定所述第一默克尔山脉的根与所述第一验证根是否一致来验证所述第二链下交易,包括:

    所述第一交易方若验证所述第二链下交易满足以下条件,则所述第二链下交易验证通过:

    所述第一交易方验证所述第一默克尔山脉的根与所述第一验证根一致;

    所述第一交易方验证所述第一链下交易的交易序号与所述第二链下交易的交易序号是连续的;

    所述第一交易方验证所述第二链下交易的数字签名为所述第二交易方的数字签名;

    所述第一交易方验证所述第二链下交易的交易结果为非负数。

    上述技术方案中,第一交易方还会根据交易序号、交易结果和数字签名对第二链下交易进行验证,增加了链下交易的安全性。

    可选的,所述第一交易方通过所述状态通道将所述第三链下交易发送至所述第二交易方之后,还包括:

    所述第一交易方构造第一链上交易,所述第一链上交易中包含链下的第一交易的内容,所述第一交易为所述第一交易方发起的最后一笔链下交易或所述第一交易为所述第一交易方针对所述第二交易方发起的最后一笔链下交易的链下确认交易;

    所述第一交易方将所述第一链上交易发送至所述状态通道的智能合约,所述智能合约用于验证所述第一链上交易和第二链上交易;所述第二链上交易是由所述第二交易方构造的交易,所述第二链上交易中包含链下的第二交易的内容;所述第二交易是所述第二交易方发起的最后一笔链下交易或所述第二交易为所述第二交易方针对所述第一交易方发起的最后一笔链下交易的链下确认交易。

    可选的,所述智能合约用于验证所述第一链上交易和第二链上交易,包括:

    确定所述最后一笔链下交易的默克尔证明和所述最后一笔链下交易构成的第二验证根与所述最后一笔链下交易的链下确认交易中的默克尔山脉的根相匹配。

    可选的,所述智能合约用于验证:

    所述第一链上交易中第一交易和所述第二链上交易中第二交易的交易序号是连续的;

    所述第一交易和所述第二交易的数字资产均为非负数,所述第一交易的交易结果与所述第二交易的交易结果一致;

    所述第一交易的交易结果之和或所述第二交易的交易结果之和与押金值之和相等;

    所述第一交易和所述第二交易分别为第一交易方和第二交易方发起的。

    可选的,所述第一交易方通过状态通道接收第二交易方发送的第二链下交易之前,还包括:

    针对任一交易方,所述交易方部署所述状态通道的智能合约;

    至少一个交易方向所述智能合约中转入押金值。

    上述技术方案中,在确定出第一链上交易和第二链上交易之后,由智能合约验证第一链上交易中包含的第一交易的内容和第二链上交易中包含的第而交易的内容的合法性,并且可以根据交易序号小的链下交易验证另一个链下交易,以保证链下交易的交易结果正确,增加了链下交易的安全性。

    第二方面,本发明实施例提供一种区块链的链下交易方法,包括:

    区块链节点根据状态通道的智能合约,接收第一交易方发送的第一链上交易和第二交易方发送的第二链上交易;

    若所述第一链上交易中包含的第一交易为所述第一交易方发起最后一笔链下交易,所述第二链上交易中包含的第二交易为所述第二交易方针对所述第一交易方发起的最后一笔链下交易的链下确认交易,则根据所述第一链上交易验证所述第二链上交易;

    若所述第二链上交易中包含的第二链下交易是所述第二交易方发起最后一笔链下交易,所述第一链上交易中包含的第一链下交易为所述第一交易方针对所述第二交易方发起的最后一笔链下交易的链下确认交易,则根据所述第二链上交易验证所述第一链上交易。

    可选的,若所述第一链上交易和所述第二链上交易满足以下条件,则验证通过:

    所述区块链节点确定所述第一链上交易中的第一交易和所述第二链上交易中的第二交易的交易序号是连续的;

    所述区块链节点确定所述第一交易和所述第二交易的数字资产均为非负数,所述第一交易的交易结果与所述第二交易的交易结果一致;

    所述区块链节点确定所述第一交易的交易结果之和或所述第二交易的交易结果之和与押金值之和相等;

    所述区块链节点确定所述第一交易和所述第二交易分别为第一交易方和第二交易方发起的;

    所述区块链节点确定所述最后一笔链下交易的默克尔证明和所述最后一笔链下交易构成的第二验证根与所述最后一笔链下交易的链下确认交易中的默克尔山脉的根一致。

    可选的,在所述第一链上交易和所述第二链上交易验证通过之后,还包括:

    根据所述第一链上交易中第一交易的交易结果或所述第二链上交易中第二交易的交易结果将押金值分配至所述第一交易方和所述第二交易方;

    关闭所述状态通道。

    上述技术方案中,根据智能合约预设的规则对第一链上交易和第二链上交易进行验证,在验证后执行交易结果,保证了链下交易安全性。

    第三方面,本发明实施例提供一种区块链的链下交易装置,包括:

    接收模块,用于接收第二交易方发送的第二链下交易;所述第二链下交易中包括所述第二链下交易之前的各交易构成的第一默克尔山脉的根;所述状态通道是所述第一交易方和所述第二交易方构建的链下通道;

    处理模块,用于从第一链下交易中获取所述第一链下交易在所述第一默克尔山脉中的第一默克尔证明;所述第一链下交易为所述第一交易方验证通过的且发生于所述第二链下交易之前的前一链下交易;

    根据所述第一默克尔证明和所述第一链下交易生成第一验证根;

    通过确定所述第一默克尔山脉的根与所述第一验证根是否一致来验证所述第二链下交易。

    可选的,所述处理模块还用于:

    根据所述第一交易方已验证通过的各交易,构建第二默克尔山脉;

    构建第三链下交易;所述第三链下交易中包括所述第二默克尔山脉的根、所述第三链下交易在第三默克尔山脉中的第三默克尔证明;所述第三默克尔山脉是通过所述第三链下交易和所述第一交易方已验证通过的各交易构建的;

    通过所述状态通道将所述第三链下交易发送至所述第二交易方。

    可选的,所述处理模块具体用于:

    验证所述第一默克尔山脉的根与所述第一验证根一致;

    验证所述第一链下交易的交易序号与所述第二链下交易的交易序号是连续的;

    验证所述第二链下交易的数字签名为所述第二交易方的数字签名;

    所述第一交易方验证所述第二链下交易的交易结果为非负数。

    可选的,所述处理模块还用于:

    通过所述状态通道将所述第三链下交易发送至所述第二交易方之后,构造第一链上交易,所述第一链上交易中包含链下的第一交易的内容,所述第一交易为所述第一交易方发起的最后一笔链下交易或所述第一交易为所述第一交易方针对所述第二交易方发起的最后一笔链下交易的链下确认交易;

    将所述第一链上交易发送至所述状态通道的智能合约,所述智能合约用于验证所述第一链上交易和第二链上交易;所述第二链上交易是由所述第二交易方构造的交易,所述第二链上交易中包含链下的第二交易的内容;所述第二交易是所述第二交易方发起的最后一笔链下交易或所述第二交易为所述第二交易方针对所述第一交易方发起的最后一笔链下交易的链下确认交易。

    可选的,所述处理模块还用于:

    部署所述状态通道的智能合约;

    向所述智能合约中转入押金值。

    第四方面,本发明实施例提供一种区块链的链下交易装置,包括:

    接收单元,用于根据状态通道的智能合约,接收第一交易方发送的第一链上交易和第二交易方发送的第二链上交易;

    处理单元,用于若所述第一链上交易中包含的第一交易为所述第一交易方发起最后一笔链下交易,所述第二链上交易中包含的第二交易为所述第二交易方针对所述第一交易方发起的最后一笔链下交易的链下确认交易,则根据所述第一链上交易验证所述第二链上交易;

    若所述第二链上交易中包含的第二链下交易是所述第二交易方发起最后一笔链下交易,所述第一链上交易中包含的第一链下交易为所述第一交易方针对所述第二交易方发起的最后一笔链下交易的链下确认交易,则根据所述第二链上交易验证所述第一链上交易。

    可选的,所述处理单元具体用于:

    确定所述第一链上交易中的第一交易和所述第二链上交易中的第二交易的交易序号是连续的;

    确定所述第一交易和所述第二交易的数字资产均为非负数,所述第一交易的交易结果与所述第二交易的交易结果一致;

    确定所述第一交易的交易结果之和或所述第二交易的交易结果之和与押金值之和相等;

    确定所述第一交易和所述第二交易分别为第一交易方和第二交易方发起的;

    确定所述最后一笔链下交易的默克尔证明和所述最后一笔链下交易构成的第二验证根与所述最后一笔链下交易的链下确认交易中的默克尔山脉的根一致。

    可选的,所述处理单元还用于:

    根据所述第一链上交易中第一交易的交易结果或所述第二链上交易中第二交易的交易结果将押金值分配至所述第一交易方和所述第二交易方;

    关闭所述状态通道。

    第五方面,本发明实施例还提供一种计算设备,包括:

    存储器,用于存储程序指令;

    处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块链的链下交易方法。

    第六方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述区块链的链下交易方法。

    附图说明

    为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

    图1为本发明实施例提供的一种基于支付通道的交易示意图;

    图2为本发明实施例提供的一种系统架构示意图;

    图3为本发明实施例提供的一种区块链的链下交易方法的流程示意图;

    图4为本发明实施例提供的一种默克尔山脉的示意图;

    图5为本发明实施例提供的一种链下交易的结构示意图;

    图6为本发明实施例提供的一种区块链的链下交易方法的流程示意图;

    图7为本发明实施例提供的一种智能合约验证的示意图;

    图8为本发明实施例提供的一种智能合约的示意图;

    图9为本发明实施例提供的一种区块链的链下交易装置的结构示意图;

    图10为本发明实施例提供的一种区块链的链下交易装置的结构示意图。

    具体实施方式

    为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

    现有技术中,为了降低交易的费用,一般通过区块链下扩容的方式使用户之间进行链下交易,再将最后确认的链下交易上链。其中,链下扩容的方式包括状态通道,状态通道又包括支付通道,支付通道协议具体如下:两名参与者各自通过链上交易在链上锁定押金值,例如,价值10美元的数字货币(如比特币、以太币等)。在双方锁定押金值后,参与者双方即可互相发送交易,交易包括交易序号、金额、签名等,只要双方的押金值均还为非负数即可。在任一参与者中想要关闭支付通道时,可以执行“退出”操作,然后将支付通道关闭前的最后一笔链下交易提交至区块链上,再根据最后一笔链下交易的交易结果将押金值发送至双方。区块链可以通过核实签名和最后一笔链下交易的交易结果验证有效性,防止交易双方使用无效状态来退出支付通道。

    图1示例性的示出了一种基于支付通道的交易示意图,如图1所示,用户a部署一个智能合约(合约w)用于与用户b建立支付通道,其中,合约w具有接收多重签名交易的能力(这种智能合约被称作多重签名智能合约),并能给用户a和用户b双方支付相应的金额,用户a在建立合约w时,向合约w转入押金值25c,其中,c表示押金值的单位,如wei(比特币最小单位)。在此之后,合约w上链至区块高度为100的区块中,用户b发起加入合约w的交易,在交易上链至区块高度为101的区块中后,向合约w转入押金值25c,至此,合约w建立完成,合约w包括总押金值(50c)、用户a的押金值(25c)和用户b的押金值(25c)。

    在合约w建立完成后,用户a和用户b实现区块链下交易,例如,如图1所示,用户a发起交易序号为0的第一笔链下交易,第一笔链下交易包括更新后的交易结果(用户a的押金值(20c)和用户b的押金值(30c),相当于用户a向用户b转账5c)以及用户a和用户b的数字签名,在第一笔链下交易完成后,用户a发起交易序号为1的第二笔链下交易,第二笔链下交易包括更新后的交易结果(用户a的押金值(15c)和用户b的押金值(35c),相当于用户a向用户b转账5c)以及用户a和用户b的数字签名,在第二笔链下交易完成后,用户b发起交易序号为2的第三笔链下交易,第三笔链下交易包括更新后的交易结果(用户a的押金值(40c)和用户b的押金值(10c),相当于用户b向用户a转账25c)以及用户a和用户b的数字签名,以此类推,在交易序号为50的链下交易时,用户a和用户b确定出该交易为关闭支付通道前的最后一笔链下交易,然后根据最后一笔链下交易,确定出区块链上的交易,并发送至合约w,合约w根据区块链上的交易结果将智能合约中的押金值分配至用户a和用户b,如用户a的押金值为(5c),用户b的押金值为(45c)。

    然而,现有技术中的建立智能合约的方法前提在于,任一交易方具备多重签名的能力,但是目前,并非所有的交易方均具备执行多重签名的能力,也就是说,不具备多重签名的能力的交易方无法建立支付通道,无法实现区块链下交易,即无法降低交易费用,且多重签名的数据量大,会导致支付通道的性能降低,影响区块链下交易的效率,因此,现需要一种通过单一签名实现区块链下交易的方法,使任一交易方均可建立支付通道,实现区块链下交易,降低交易费用,且降低了签名的数据量,提高了支付通道的性能,增加了区块链下交易的效率。

    因此,现需要一种区块链的链下交易方法,用于实现以单一签名的方式,使交易双方确认区块链的链下交易,并完成区块链的链下交易,降低了交易方签名的复杂度,由于每笔链下交易只需要发起交易的交易方的签名,不再使用多重签名,提升了易用性,降低了状态通道的数据交互量,提高了状态通道的数据交互量效率,且保证了区块链的链下交易不可篡改。

    图1示例性的示出了本发明实施例所适用的一种系统架构,该系统架构包括第一节点210和第二节点220。

    其中,第一节点210用于发起交易至区块链上,构建状态通道的智能合约,并在第二节点220加入至智能合约后,与第二节点220之间建立状态通道。

    第一节点210通过状态通道接收第二节点220发送的第二链下交易,并根据第二链下交易之前的链下交易验证第二链下交易,在验证通过后,存储至本地,以保证数据的有效性。在第一节点210和第二节点220共同确认关闭状态通道时,将状态通道关闭前的最后一笔链下交易和针对最后一笔链下交易发起的链下确认交易提交至区块链上,再由智能合约验证上链的最后一笔链下交易和针对最后一笔链下交易发起的链下确认交易,在验证通过后,根据最后一笔链下交易的交易结果或链下确认交易的交易结果将押金值发送至第一节点210和第二节点220。

    第二节点220,用于发起加入第一节点210建立的状态通道的智能合约的交易,在交易上链后,加入至智能合约后,与第一节点210之间建立状态通道。在与第一节点210之间建立状态通道之后,与第一节点210交互链下交易。

    其中,第一节点210和第二节点220可以是服务器、客户端等。

    需要说明的是,上述图2所示的结构仅是一种示例,本发明实施例对此不做限定。

    基于上述描述,图3示例性的示出了本发明实施例提供的一种区块链的链下交易方法的流程,该流程可由区块链的链下交易的装置执行。

    如图3所示,该流程具体包括:

    步骤310,第一交易方通过状态通道接收第二交易方发送的第二链下交易。

    本发明实施例中,第二链下交易中包括第二链下交易之前的各交易构成的第一默克尔山脉的根,状态通道是第一交易方和第二交易方构建的链下通道。其中,状态通道是第一交易方或第二交易方根据在区块链上建立的智能合约得到的。

    在本发明实施例中,每当第一交易方或第二交易方验证通过一笔链下交易后,默克尔山脉就会发生变化,图4示例性的示出了一种默克尔山脉的示意图,如图4所示,当添加交易2时,交易2中默克尔山脉的根字段存放的是基于交易0至交易1的默克尔山脉的根,即图示中r1。当添加交易3时,交易3中默克尔山脉的根字段存放r2的值,其中,r2是通过将r1与交易2一起做哈希运算,相当于基于交易0至交易2的默克尔山脉的根,即r2。当添加交易4时,交易4中默克尔山脉的根字段存放r3的值,其中,r3是根据交易3与交易2和r1得到的,具体的,交易3与交易2做哈希运算后,得到一个新的叶子节点,新的叶子节点与r1在默克尔山脉中的同一层,因此,新的叶子节点与r1一起做哈希运算得到r3。

    示例性的,第一交易方通过状态通道接受的第二交易方发送的第二链下交易是交易序号为2的交易2,则第一默克尔山脉包括交易序号为0的交易0和交易序号为1的交易1,即为图4中a图所示,第一默克尔山脉的根为交易0和交易1的哈希值,即为图4中的r1。

    示例性的,图5示例性的示出了一种链下交易的结构示意图,如图5所示,链下交易包括交易序号、链下交易之前的各交易构成的默克尔山脉的根、链下交易的前一笔链下交易在链下交易之前的各交易构成的默克尔山脉中的默克尔证明、交易结果和数字签名。其中,数字签名可以是根据交易序号、默克尔山脉根、交易结果以及交易方的私钥得到的。其中,默克尔证明用于证明默克尔山脉中的叶子节点没有变化,没有发生篡改,例如,交易2的默克尔证明为r1,因为在基于交易0至交易2的默克尔山脉中,交易2的哈希值与r1进行哈希计算,即可得到r2,因此,交易2的默克尔山证明为r1。交易3的默克尔证明为交易2的哈希值与r1,因为在基于交易0至交易3的默克尔山脉中,交易3的哈希值与交易2的哈希计算后得到新的叶子节点,新的叶子节点与r1共同哈希计算可得到r3,因此,交易3的默克尔证明为交易2的哈希值与r1。

    步骤320,所述第一交易方从第一链下交易中获取所述第一链下交易在所述第一默克尔山脉中的第一默克尔证明。

    本发明实施例中,第一链下交易为第一交易方验证通过的且发生于第二链下交易之前的前一链下交易。

    示例性的,根据上述步骤310的技术方案进行举例,第二链下交易相当于交易2,则第一链下交易相当于交易1,因为第一默克尔山脉包括交易0和交易1,因此交易1在第一默克尔山脉中的第一默克尔证明为交易0的哈希值。

    步骤330,所述第一交易方根据所述第一默克尔证明和所述第一链下交易生成第一验证根。

    根据上述步骤310和步骤320的技术方案,本发明实施例中,第一默克尔证明为交易0的哈希值,再结合第一链下交易(相当于交易1)的哈希值,在进行哈希运算得到第一验证根。

    步骤340,所述第一交易方通过确定所述第一默克尔山脉的根与所述第一验证根是否一致来验证所述第二链下交易。

    根据上述步骤310、步骤320和步骤330的技术方案,本发明实施例中,第一交易方验证根据交易0和交易1哈希运算得到的第一验证根与第一默克尔山脉的根(相当于图4中的r1)是否一致,若一致,则验证通过。

    进一步地,第一交易方验证第二链下交易还包括:第一链下交易的交易序号与第二链下交易的交易序号为连续的,第二链下交易的数字签名是第二交易方的数字签名。

    在以上条件均验证通过之后,确定第二链下交易验证通过。

    示例性的,第一交易方根据第一交易方已验证通过的各交易,构建第二默克尔山脉,然后构建第三链下交易,其中,第三链下交易中包括第二默克尔山脉的根、第三链下交易在第三默克尔山脉中的第三默克尔证明,第三默克尔山脉包括第三链下交易和第一交易方已验证通过的各交易,然后通过状态通道将第三链下交易发送至第二交易方,以使第二交易方验证第三链下交易。

    为了更好的解释上述技术方案,下面将结合上述图3至图5在具体实例中进行阐述。

    实例1

    图6示例性的示出了一种区块链的链下交易方法的流程示意图,如图6所示,由用户a发起了交易0,并发送至用户b,用户b将交易0存储至本地,在发起交易0之后,用户a发起交易1,并发送至用户b,用户b根据交易0以及交易0中的默克尔证明,其中交易0中的默克尔证明为空,则用户b根据交易0的哈希值验证交易1中的默克尔山脉的根,交易1中的默克尔山脉的根是根据交易1之前的各交易构成的,即交易1中的默克尔山脉的根为交易0的哈希值,若交易1中的默克尔山脉的根与交易0的哈希值一致,则验证通过,在用户b验证交易1通过后,发起交易2,并发送至用户a,用户a根据交易1中的默克尔证明和交易1确定出验证根,当交易1验证通过后,默克尔山脉包括交易0和交易1,如图4中a图,因此,交易1中的默克尔证明和为交易0的哈希值,其中,交易2中的默克尔山脉的根为交易0和交易1的哈希值,即为图4中的r1,然后用户a根据得到的验证根验证交易2中的默克尔山脉的根,在验证通过后将交易2存储至本地,以此类推,用户a与用户b实现以单一签名的方式使交易双方确认区块链的链下交易,并完成区块链的链下交易,不再使用多重签名,提升了易用性,降低了状态通道的数据交互量,提高了状态通道的数据交互量效率,且保证了区块链的链下交易不可篡改。

    需要说明的是,上述验证过程中,每一次验证仍然包括验证链下交易之间的交易序号、交易结果和数字签名的验证方法,在此不做赘述,除此之外,验证方法还包括用户a是否认同用户b发起的交易结果,相对的,用户b是否认同用户a发起的交易结果,根据不同的链下交易场景,所对应验证方法可以适应性的增加、减少或修改,在此不做限定。

    示例性的,第一交易方通过状态通道将第三链下交易发送至第二交易方之后,构造第一链上交易,其中,第一链上交易中包含链下的第一交易的内容,第一交易为第一交易方发起的最后一笔链下交易或第一交易为第一交易方针对第二交易方发起的最后一笔链下交易的链下确认交易,再将第一链上交易发送至状态通道的智能合约,智能合约用于验证第一链上交易和第二链上交易,其中,第二链上交易是由第二交易方构造的交易,第二链上交易中包含链下的第二交易的内容,第二交易是第二交易方发起的最后一笔链下交易或第二交易为第二交易方针对第一交易方发起的最后一笔链下交易的链下确认交易。

    本发明实施例中,在将第一链上交易和第二链上交易发送至状态通道的智能合约之后,智能合约验证所述第一链上交易和第二链上交易,需要说明的是,第一链上交易和第二链上交易可以均是第一交易方发送至智能合约的也可是均是第二交易方发送至智能合约的,在此不做限定。

    进一步地,确定最后一笔链下交易的默克尔证明和最后一笔链下交易构成的第二验证根与最后一笔链下交易的链下确认交易中的默克尔山脉的根相匹配。

    本方明实施例中,第一链上交易和第二链上交易是通过最后一笔链下交易得到的,因此通过最后一笔链下交易验证最后一笔链下交易的链下确认交易,以防止最后一笔链下交易被篡改,增加了链上交易的安全性。具体验证方法包括上述步骤310至步骤340,在此不做赘述。

    进一步地,智能合约用于验证:

    第一链上交易中第一交易和第二链上交易中第二交易的交易序号是连续的。

    第一交易和第二交易的数字资产均为非负数,第一交易的交易结果与第二链上交易的交易结果一致。

    第一交易的交易结果之和或第二交易的交易结果之和与押金值之和相等。

    若第一交易和第二交易不满足上述任一条件,则验证不通过,确定第一链上交易和第二链上交易不合法,取消处理。

    示例性的,在第一交易方与第二交易方互相发起链下交易之前,针对任一交易方,部署状态通道的智能合约,且至少一个交易方向智能合约中转入押金值。

    为了更好的解释上述技术方案,下面将结合实例1再具体的实例中进行阐述。

    实例2

    图7示例性的示出了一种智能合约验证的示意图,如图7所示,在用户a部署建立状态通道的智能合约(合约h),并向合约h中转入押金值20c,在用户a所部署的合约h上链以后,用户b通过发送交易向合约h中转入30个c,图8示例性的示出了一种智能合约的示意图,如图8所示,调用方法1向合约h充值数字货币。该方法的参数为空,以识别交易第二方b充值的数字货币的数量,需要说明的是,任一交易方在合约h时可以不放入数字货币的数量,即充值0c,如用户a部署合约h,并向合约h中充值押金值0c,或用户b通过发送交易向合约h中充值0c,同时调用方法1充值0c。

    用户b在发起交易2之后,发出“关闭状态通道指令”,在用户a确认“关闭状态通道指令”之后,将交易2确定为最后一笔链下交易,则用户a发起针对交易2的链下确认交易,交易3,然后将交易2和交易3作为链上交易发送至区块链的智能合约中,在交易2和交易3上链之后,得到第一链上交易和第二链上交易,其中,第一链上交易包括第一交易(即交易3)的内容,第二链上交易包括第二交易(即交易2)的内容,智能合约根据图8所示的方法2的规则,验证交易2和交易3,如根据方法2中的规则1,验证交易2和交易3的交易序号是否为连续的,验证交易2和交易3的交易结果是否一致,验证交易2或交易3的交易结果之和与智能合约中的押金值之和是否相等。规则2,验证交易2中的默克尔证明与交易2的哈希值与交易3中的默克尔山脉的根是否一致。规则3,验证通过后,根据交易2或交易3的交易结果将智能合约中的押金值分配至用户a(30c)和用户b(20c)。

    本发明实施例中,根据链下交易之前的前一链下交易,验证链下交易,不再需要对其签名,减少了签名的数据量,具体的,根据前一链下交易中的默克尔证明和前一链下交易生成验证根,根据验证根验证链下交易中的默克尔山脉的根,保证了区块链的链下交易不可篡改,实现了以单一签名的方式,使交易双方确认链下交易,并完成链下交易的交互,降低了任一交易方签名的复杂度,由于每笔链下交易只需要发起交易的交易方的签名,不再使用多重签名,提升了易用性,降低了状态通道的数据交互量,提高了状态通道的数据交互量效率。

    需要说明的是,上述技术方案中的第一交易方或第二交易方是根据区块链节点将链下交易上传至区块链上的,具体的,区块链节点则根据状态通道的智能合约,接收第一交易方发送的第一链上交易和第二交易方发送的第二链上交易,若第一链上交易中包含的第一交易为第一交易方发起最后一笔链下交易,第二链上交易中包含的第二交易为第二交易方针对第一交易方发起的最后一笔链下交易的链下确认交易,则根据第一链上交易验证第二链上交易。若第二链上交易中包含的第二链下交易是第二交易方发起最后一笔链下交易,第一链上交易中包含的第一链下交易为第一交易方针对第二交易方发起的最后一笔链下交易的链下确认交易,则根据第二链上交易验证第一链上交易。

    进一步地,若第一链上交易和第二链上交易满足以下条件,则验证通过:

    区块链节点确定第一链上交易中的第一交易和第二链上交易中的第二交易的交易序号是连续的。

    区块链节点确定第一交易和第二交易的数字资产均为非负数,第一交易的交易结果与第二交易的交易结果一致。

    区块链节点确定第一交易的交易结果之和或第二交易的交易结果之和与押金值之和相等。

    区块链节点确定第一交易和第二交易分别为第一交易方和第二交易方发起的。

    区块链节点确定最后一笔链下交易的默克尔证明和最后一笔链下交易构成的第二验证根与最后一笔链下交易的链下确认交易中的默克尔山脉的根一致。

    需要说明的是,在第一链上交易和第二链上交易验证通过之后,根据第一链上交易中第一交易的交易结果或第二链上交易中第二交易的交易结果将押金值分配至第一交易方和第二交易方,并关闭状态通道。

    基于相同的技术构思,图9示例性的示出了本发明实施例提供的一种区块链的链下交易装置的结构示意图,该装置可以执行区块链的链下交易方法的流程。

    如图9所示,该装置具体包括:

    接收模块910,用于接收第二交易方发送的第二链下交易;所述第二链下交易中包括所述第二链下交易之前的各交易构成的第一默克尔山脉的根;所述状态通道是所述第一交易方和所述第二交易方构建的链下通道;

    处理模块920,用于从第一链下交易中获取所述第一链下交易在所述第一默克尔山脉中的第一默克尔证明;所述第一链下交易为所述第一交易方验证通过的且发生于所述第二链下交易之前的前一链下交易;

    根据所述第一默克尔证明和所述第一链下交易生成第一验证根;

    通过确定所述第一默克尔山脉的根与所述第一验证根是否一致来验证所述第二链下交易。

    可选的,所述处理模块920还用于:

    根据所述第一交易方已验证通过的各交易,构建第二默克尔山脉;

    构建第三链下交易;所述第三链下交易中包括所述第二默克尔山脉的根、所述第三链下交易在第三默克尔山脉中的第三默克尔证明;所述第三默克尔山脉是通过所述第三链下交易和所述第一交易方已验证通过的各交易构建的;

    通过所述状态通道将所述第三链下交易发送至所述第二交易方。

    可选的,所述处理模块920具体用于:

    验证所述第一默克尔山脉的根与所述第一验证根一致;

    验证所述第一链下交易的交易序号与所述第二链下交易的交易序号是连续的;

    验证所述第二链下交易的数字签名为所述第二交易方的数字签名;

    验证所述第二链下交易的交易结果为非负数。

    可选的,所述处理模块920还用于:

    通过所述状态通道将所述第三链下交易发送至所述第二交易方之后,构造第一链上交易,所述第一链上交易中包含链下的第一交易的内容,所述第一交易为所述第一交易方发起的最后一笔链下交易或所述第一交易为所述第一交易方针对所述第二交易方发起的最后一笔链下交易的链下确认交易;

    将所述第一链上交易发送至所述状态通道的智能合约,所述智能合约用于验证所述第一链上交易和第二链上交易;所述第二链上交易是由所述第二交易方构造的交易,所述第二链上交易中包含链下的第二交易的内容;所述第二交易是所述第二交易方发起的最后一笔链下交易或所述第二交易为所述第二交易方针对所述第一交易方发起的最后一笔链下交易的链下确认交易。

    可选的,所述处理模块920还用于:

    部署所述状态通道的智能合约;

    向所述智能合约中转入押金值。

    基于相同的技术构思,图10示例性的示出了本发明实施例提供的一种区块链的链下交易装置的结构示意图,该装置可以执行区块链的链下交易方法的流程。

    如图10所示,该装置具体包括:

    接收单元1010,用于根据状态通道的智能合约,接收第一交易方发送的第一链上交易和第二交易方发送的第二链上交易;

    处理单元1020,用于若所述第一链上交易中包含的第一交易为所述第一交易方发起最后一笔链下交易,所述第二链上交易中包含的第二交易为所述第二交易方针对所述第一交易方发起的最后一笔链下交易的链下确认交易,则根据所述第一链上交易验证所述第二链上交易;

    若所述第二链上交易中包含的第二链下交易是所述第二交易方发起最后一笔链下交易,所述第一链上交易中包含的第一链下交易为所述第一交易方针对所述第二交易方发起的最后一笔链下交易的链下确认交易,则根据所述第二链上交易验证所述第一链上交易。

    可选的,所述处理单元1020具体用于:

    确定所述第一链上交易中的第一交易和所述第二链上交易中的第二交易的交易序号是连续的;

    确定所述第一交易和所述第二交易的数字资产均为非负数,所述第一交易的交易结果与所述第二交易的交易结果一致;

    确定所述第一交易的交易结果之和或所述第二交易的交易结果之和与押金值之和相等;

    确定所述第一交易和所述第二交易分别为第一交易方和第二交易方发起的;

    确定所述最后一笔链下交易的默克尔证明和所述最后一笔链下交易构成的第二验证根与所述最后一笔链下交易的链下确认交易中的默克尔山脉的根一致。

    可选的,所述处理单元1020还用于:

    在所述第一链上交易和所述第二链上交易验证通过之后,根据所述第一链上交易中第一交易的交易结果或所述第二链上交易中第二交易的交易结果将押金值分配至所述第一交易方和所述第二交易方;

    关闭所述状态通道。

    基于相同的技术构思,本发明实施例还提供一种计算设备,包括:

    存储器,用于存储程序指令;

    处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块链的链下交易方法。

    基于相同的技术构思,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述区块链的链下交易方法。

    本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-hom、光学存储器等)上实施的计算机程序产品的形式。

    本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

    这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

    这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

    显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。


    技术特征:

    1.一种区块链的链下交易方法,其特征在于,包括:

    第一交易方通过状态通道接收第二交易方发送的第二链下交易;所述第二链下交易中包括所述第二链下交易之前的各交易构成的第一默克尔山脉的根;所述状态通道是所述第一交易方和所述第二交易方构建的链下通道;

    所述第一交易方从第一链下交易中获取所述第一链下交易在所述第一默克尔山脉中的第一默克尔证明;所述第一链下交易为所述第一交易方验证通过的且发生于所述第二链下交易之前的前一链下交易;

    所述第一交易方根据所述第一默克尔证明和所述第一链下交易生成第一验证根;

    所述第一交易方通过确定所述第一默克尔山脉的根与所述第一验证根是否一致来验证所述第二链下交易。

    2.如权利要求1所述的方法,其特征在于,所述方法还包括:

    所述第一交易方根据所述第一交易方已验证通过的各交易,构建第二默克尔山脉;

    所述第一交易方构建第三链下交易;所述第三链下交易中包括所述第二默克尔山脉的根、所述第三链下交易在第三默克尔山脉中的第三默克尔证明;所述第三默克尔山脉是通过所述第三链下交易和所述第一交易方已验证通过的各交易构建的;

    所述第一交易方通过所述状态通道将所述第三链下交易发送至所述第二交易方。

    3.如权利要求1所述的方法,其特征在于,所述第一交易方通过确定所述第一默克尔山脉的根与所述第一验证根是否一致来验证所述第二链下交易,包括:

    所述第一交易方若验证所述第二链下交易满足以下条件,则所述第二链下交易验证通过:

    所述第一交易方验证所述第一默克尔山脉的根与所述第一验证根一致;

    所述第一交易方验证所述第一链下交易的交易序号与所述第二链下交易的交易序号是连续的;

    所述第一交易方验证所述第二链下交易的数字签名为所述第二交易方的数字签名;

    所述第一交易方验证所述第二链下交易的交易结果为非负数。

    4.如权利要求1至3任一项所述的方法,其特征在于,所述第一交易方通过所述状态通道将所述第三链下交易发送至所述第二交易方之后,还包括:

    所述第一交易方构造第一链上交易,所述第一链上交易中包含链下的第一交易的内容,所述第一交易为所述第一交易方发起的最后一笔链下交易或所述第一交易为所述第一交易方针对所述第二交易方发起的最后一笔链下交易的链下确认交易;

    所述第一交易方将所述第一链上交易发送至所述状态通道的智能合约,所述智能合约用于验证所述第一链上交易和第二链上交易;所述第二链上交易是由所述第二交易方构造的交易,所述第二链上交易中包含链下的第二交易的内容;所述第二交易是所述第二交易方发起的最后一笔链下交易或所述第二交易为所述第二交易方针对所述第一交易方发起的最后一笔链下交易的链下确认交易。

    5.如权利要求4所述的方法,其特征在于,所述智能合约用于验证所述第一链上交易和第二链上交易,包括:

    确定所述最后一笔链下交易的默克尔证明和所述最后一笔链下交易构成的第二验证根与所述最后一笔链下交易的链下确认交易中的默克尔山脉的根相匹配。

    6.如权利要求5所述的方法,其特征在于,还包括:

    所述智能合约用于验证:

    所述第一链上交易中第一交易和所述第二链上交易中第二交易的交易序号是连续的;

    所述第一交易和所述第二交易的数字资产均为非负数,所述第一交易的交易结果与所述第二交易的交易结果一致;

    所述第一交易的交易结果之和或所述第二交易的交易结果之和与押金值之和相等;

    所述第一交易和所述第二交易分别为第一交易方和第二交易方发起的。

    7.如权利要求1至3任一项所述的方法,其特征在于,所述第一交易方通过状态通道接收第二交易方发送的第二链下交易之前,还包括:

    针对任一交易方,所述交易方部署所述状态通道的智能合约;

    至少一个交易方向所述智能合约中转入押金值。

    8.一种区块链的链下交易方法,其特征在于,包括:

    区块链节点根据状态通道的智能合约,接收第一交易方发送的第一链上交易和第二交易方发送的第二链上交易;

    若所述第一链上交易中包含的第一交易为所述第一交易方发起最后一笔链下交易,所述第二链上交易中包含的第二交易为所述第二交易方针对所述第一交易方发起的最后一笔链下交易的链下确认交易,则根据所述第一链上交易验证所述第二链上交易;

    若所述第二链上交易中包含的第二链下交易是所述第二交易方发起最后一笔链下交易,所述第一链上交易中包含的第一链下交易为所述第一交易方针对所述第二交易方发起的最后一笔链下交易的链下确认交易,则根据所述第二链上交易验证所述第一链上交易。

    9.如权利要求8所述的方法,其特征在于,所述方法还包括:

    若所述第一链上交易和所述第二链上交易满足以下条件,则验证通过:

    所述区块链节点确定所述第一链上交易中的第一交易和所述第二链上交易中的第二交易的交易序号是连续的;

    所述区块链节点确定所述第一交易和所述第二交易的数字资产均为非负数,所述第一交易的交易结果与所述第二交易的交易结果一致;

    所述区块链节点确定所述第一交易的交易结果之和或所述第二交易的交易结果之和与押金值之和相等;

    所述区块链节点确定所述第一交易和所述第二交易分别为第一交易方和第二交易方发起的;

    所述区块链节点确定所述最后一笔链下交易的默克尔证明和所述最后一笔链下交易构成的第二验证根与所述最后一笔链下交易的链下确认交易中的默克尔山脉的根一致。

    10.如权利要求9所述的方法,其特征在于,在所述第一链上交易和所述第二链上交易验证通过之后,还包括:

    根据所述第一链上交易中第一交易的交易结果或所述第二链上交易中第二交易的交易结果将押金值分配至所述第一交易方和所述第二交易方;

    关闭所述状态通道。

    11.一种区块链的链下交易装置,其特征在于,包括:

    接收模块,用于接收第二交易方发送的第二链下交易;所述第二链下交易中包括所述第二链下交易之前的各交易构成的第一默克尔山脉的根;所述状态通道是所述第一交易方和所述第二交易方构建的链下通道;

    处理模块,用于从第一链下交易中获取所述第一链下交易在所述第一默克尔山脉中的第一默克尔证明;所述第一链下交易为所述第一交易方验证通过的且发生于所述第二链下交易之前的前一链下交易;

    根据所述第一默克尔证明和所述第一链下交易生成第一验证根;

    通过确定所述第一默克尔山脉的根与所述第一验证根是否一致来验证所述第二链下交易。

    12.一种区块链的链下交易装置,其特征在于,包括:

    接收单元,用于根据状态通道的智能合约,接收第一交易方发送的第一链下交易和第二交易方发送的第二链下交易;

    处理单元,用于若所述第一链上交易中包含的第一交易为所述第一交易方发起最后一笔链下交易,所述第二链上交易中包含的第二交易为所述第二交易方针对所述第一交易方发起的最后一笔链下交易的链下确认交易,则根据所述第一链上交易验证所述第二链上交易;

    若所述第二链上交易中包含的第二链下交易是所述第二交易方发起最后一笔链下交易,所述第一链上交易中包含的第一链下交易为所述第一交易方针对所述第二交易方发起的最后一笔链下交易的链下确认交易,则根据所述第二链上交易验证所述第一链上交易。

    13.一种计算设备,其特征在于,包括:

    存储器,用于存储程序指令;

    处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至7或权利要求8至10任一项所述的方法。

    14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1至7或权利要求8至10任一项所述的方法。

    技术总结
    一种区块链的链下交易方法及装置,包括:第一交易方通过状态通道接收第二交易方发送的第二链下交易,其中,第二链下交易中包括第二链下交易之前的各交易构成的第一默克尔山脉的根,然后从第一链下交易中获取第一链下交易在第一默克尔山脉中的第一默克尔证明,其中,第一链下交易为第一交易方验证通过的且发生于第二链下交易之前的前一链下交易,再根据第一默克尔证明和第一链下交易生成第一验证根,最后通过确定第一默克尔山脉的根与第一验证根是否一致来验证第二链下交易。相当于根据第二链下交易的前一链下交易的默克尔证明验证第二链下交易,在验证后不再对其签名,减少了链下交易的签名,减少了数据交互量,提高了状态通道的数据交互效率。

    技术研发人员:吴昊;李辉忠;张开翔;范瑞彬
    受保护的技术使用者:深圳前海微众银行股份有限公司
    技术研发日:2020.12.11
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-17494.html

    最新回复(0)