区块链交易方法及装置、电子设备
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种区块链交易方法及装置、电子设备。
背景技术
区块链可以通过在各个区块链节点之间达成共识,从而在各个区块链节点之间共同维护统一的区块链账本,以永久记载区块链网络中发生的交易信息。区块链账本是完全公开的,以便于随时查看和验证已发生交易的历史数据。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种区块链交易方法,应用于起始交易方设备,所述方法包括:
确定由起始交易方、中继交易方和目标交易方构成的交易路径,所述交易路径中涉及需捆绑实施的多笔区块链交易;
生成第一交易数据,所述第一交易数据包括公共交易数据和第一独立交易数据;所述公共交易数据与所述多笔区块链交易相关,所述第一独立交易数据与所述起始交易方在所述多笔区块链交易中参与的区块链交易相关;
获取第二交易数据,所述第二交易数据包括第二独立交易数据;所述第二独立交易数据由所述中继交易方在对所述公共交易数据验证通过的情况下,针对自身在所述多笔区块链交易中参与的区块链交易生成;
向区块链提交与所述多笔区块链交易相关的整合交易,所述整合交易中包含所述第一交易数据和所述第二交易数据。
根据本说明书一个或多个实施例的第二方面,提出了一种区块链交易装置,应用于起始交易方设备,所述装置包括:
确定单元,确定由起始交易方、中继交易方和目标交易方构成的交易路径,所述交易路径中涉及需捆绑实施的多笔区块链交易;
数据生成单元,生成第一交易数据,所述第一交易数据包括公共交易数据和第一独立交易数据;所述公共交易数据与所述多笔区块链交易相关,所述第一独立交易数据与所述起始交易方在所述多笔区块链交易中参与的区块链交易相关;
第一获取单元,获取第二交易数据,所述第二交易数据包括第二独立交易数据;所述第二独立交易数据由所述中继交易方在对所述公共交易数据验证通过的情况下,针对自身在所述多笔区块链交易中参与的区块链交易生成;
提交单元,向区块链提交与所述多笔区块链交易相关的整合交易,所述整合交易中包含所述第一交易数据和所述第二交易数据。
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如上述实施例中任一所述的区块链交易方法。
附图说明
图1是一示例性实施例提供的一种区块链交易方法的流程图。
图2是一示例性实施例提供的一种在区块链网络中实施汇款交易的示意图。
图3是一示例性实施例提供的一种在区块链网络中实施汇款交易的流程图。
图4是一示例性实施例提供的一种设备的结构示意图。
图5是一示例性实施例提供的一种区块链交易装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
图1是一示例性实施例提供的一种区块链交易方法的流程图。如图1所示,该方法应用于起始交易方设备,可以包括以下步骤:
步骤102,确定由起始交易方、中继交易方和目标交易方构成的交易路径,所述交易路径中涉及需捆绑实施的多笔区块链交易。
在一实施例中,根据起始交易方和目标交易方,可以基于路径最短、费用最低等条件,确定出起始交易方与目标交易方之间的交易路径,该交易路径包括起始交易方、目标交易方以及中继交易方,从而通过中继交易方的中继作用,最终实现起始交易方与目标交易方之间的交易目的。其中,中继交易方的数量可以为一个或多个;当仅存在一个中继交易方时,交易路径涉及起始交易方与中继交易方、中继交易方与目标交易方的两笔区块链交易;当存在多个交易方时,交易路径涉及起始交易方与首个中继交易方、各个相邻中继交易方之间、最后一个中继交易方与目标交易方的多笔区块链交易。总之,交易路径上的相邻交易方之间均会产生一笔区块链交易,这些区块链交易存在捆绑实施的需求。例如,在跨境汇款的场景中,起始交易方为汇出方、目标交易方为汇入方,可以通过在汇出方与汇入方之间确定出交易路径,从而经由该交易路径将汇出方的交易资金转账至汇入方,并且确保转账过程中涉及的多笔区块链交易能够同步实施(不一定同时实施,但实施结果应当相同,即全部成功或全部失败),避免部分交易实施、部分交易未实施而造成资产损失或复杂的资产回退操作。
在一实施例中,需捆绑实施的多笔区块链交易并不一定存在统一的目的(比如由起始交易方向目标交易方进行转账汇款等),但是可能出于各种原因而需要同步实施,本说明书并不对该原因进行限制。
在一实施例中,起始交易方、中继交易方、目标交易方之间的区块链交易涉及对一定交易额的资产凭证进行交易,例如该资产凭证可以对应于区块链内的代币(token)、数字资产等智能资产,资产凭证还可以对应于区块链外的现金、证券、优惠券、房产等链外资产,本说明书并不对此进行限制。
在一实施例中,中继交易方可以收取一定的交易费用,该交易费用可以从区块链交易的交易额中扣除。因此,对于上述需捆绑实施的多笔区块链交易而言,各笔区块链交易的交易额可以存在差异,而差额即为中继交易方所收取的交易费用。交易费用可以按照固定数额或者预设比例进行收取,本说明书并不对此进行限制。
步骤104,生成第一交易数据,所述第一交易数据包括公共交易数据和第一独立交易数据;所述公共交易数据与所述多笔区块链交易相关,所述第一独立交易数据与所述起始交易方在所述多笔区块链交易中参与的区块链交易相关。
步骤106,获取第二交易数据,所述第二交易数据包括第二独立交易数据;所述第二独立交易数据由所述中继交易方在对所述公共交易数据验证通过的情况下,针对自身在所述多笔区块链交易中参与的区块链交易生成。
在一实施例中,每一中继交易方分别对公共交易数据进行验证,并在确认验证通过后生成相应的第二交易数据。因此,当仅存在一个中继交易方时,起始交易方可以收到来自该中继交易方的一份第二交易数据;当存在多个中继交易方时,起始交易方可以分别收到来自各个中继交易方的多份第二交易数据,且这些第二交易数据与中继交易方之间一一对应。
在一实施例中,起始交易方可以将所述第一交易数据或所述公共交易数据通过链外通道发送至所述中继交易方,使得所述中继交易方可以快速获取并验证所述公共交易数据;以及,起始交易方可以接收所述中继交易方通过所述链外通道返回的所述第二交易数据。
在一实施例中,所述第二交易数据还包括:第二签名,所述第二签名由所述中继交易方通过持有的私钥进行签名得到,所述第二签名与所述公共交易数据和所述第二独立交易数据相关。通过由中继交易方对公共交易数据进行验证,并生成与公共交易数据和第二独立交易数据相关的第二签名,可以确保该公共交易数据和第二独立交易数据不会被交易路径中的任何交易方所篡改,保障了区块链交易的可靠实施。
在一实施例中,在起始交易方向目标交易方的转账汇款场景下,所述公共交易数据可以包括:所述多笔区块链交易中的各笔区块链交易的交易额;如果中继交易方需要收取中继费用,那么该公共交易数据所包含的交易额应当为已经扣除中继费用之后的数额。例如,当交易路径为起始交易方-中继交易方-目标交易方时,涉及到起始交易方与中继交易方之间的第一区块链交易、中继交易方与目标交易方之间的第二区块链交易;如果起始交易方希望汇款1000元、中继交易方的中继费用为1%,那么公共交易数据可以包括第一区块链交易的交易额为1000元、第二区块链交易的交易额为1000×(1-1%)=990元。
在一实施例中,如果采用账户余额模型进行交易,那么公共交易数据包含的交易额可以表示各笔区块链交易的输出。如果采用UTXO(Unspent Transaction Output,未花费的交易输出)模型进行交易,那么公共交易数据包含的交易额可以表示各笔区块链交易的部分输出,而其他输出还可以包括找零输出,比如第一独立交易数据可以包含起始交易方在所参与的区块链交易中对应的第一找零输出资产、第二独立交易数据可以包含中继交易方在所参与的区块链交易中对应的第二找零输出资产等。
在一实施例中,当采用UTXO模型进行交易时,所述第一独立交易数据可以包括:所述起始交易方在所参与的区块链交易中对应的第一输入资产;所述第二独立交易数据可以包括:所述中继交易方在所参与的区块链交易中对应的第二输入资产,以用于表征各笔区块链交易的输入。
在一实施例中,当整合交易采用隐私交易模式(不论采用账户余额模型或UTXO模型进行交易)时,由于交易额、交易的输入、交易的输出等需要采用密文形式进行隐私保护,因而所述第一独立交易数据可以包含第一区间证明、第二独立交易数据可以包含第二区间证明,以便于区块链中的区块链节点对各笔区块链交易进行验证,比如在基于账户余额交易模型时可以确保交易的交易额不小于0、在基于UTXO交易模型时可以确保输出不小于0等。举例而言,譬如本说明书中可以采用相关技术中的Bulletproofs方案、Borromean环签名方案等实现,本说明书并不对此进行限制。
在一实施例中,当采用UTXO交易模型时,所述第一独立交易数据还包括:所述起始交易方所参与的区块链交易的输入输出相等的证明,其中输入为起始交易方所提供作为输入的若干资产,而输出包括针对该起始交易方相邻的中继交易方的输出资产(资产额为交易额)、针对该起始交易方的找零资产。类似地,所述第二独立交易数据还包括:所述中继交易方所参与的区块链交易的输入输出相等的证明。
在一实施例中,当采用账户余额交易模型时,所述第一独立交易数据还包括:所述起始交易方所持有的账户余额不小于所参与的区块链交易的交易额的证明,以确保起始交易方所持有的账户余额足够实施相关的区块链交易。类似地,所述第二独立交易数据还包括:所述中继交易方所持有的账户余额不小于所参与的区块链交易的交易额的证明。
步骤108,向区块链提交与所述多笔区块链交易相关的整合交易,所述整合交易中包含所述第一交易数据和所述第二交易数据。
在一实施例中,通过向区块链提交上述的整合交易,可使多笔区块链交易在区块链上同步实施,确保多笔区块链交易能够全部交易成功或全部交易失败,而避免部分交易成功、部分交易失败的情况发生,防止部分交易成功而造成相关交易方产生资产损失或者需要触发复杂的退还流程。
在一实施例中,起始交易方可以通过所述起始交易方持有的私钥生成第一签名,所述第一签名与所述公共交易数据和所述第一独立交易数据相关,或者所述第一签名与所述整合交易相关,然后将所述第一签名与所述整合交易相关联地提交至区块链中,可以避免其他交易方对相关交易数据进行篡改。
在一实施例中,当所述整合交易采用隐私交易模式时,起始交易方可以获取第三交易数据,所述第三交易数据包括第三签名;所述第三签名由所述目标交易方在对所述公共交易数据验证通过的情况下,通过持有的私钥对所述公共交易数据进行签名得到,可以避免交易路径中的任何交易方对公共交易数据进行篡改。
在一实施例中,当采用非私密交易模式时,各个交易方进行签名的私钥可以与其身份相关,比如初始交易方采用的私钥对应于该初始交易方的地址、中继交易方采用的私钥对应于该中继交易方的地址、目标交易方采用的私钥对应于该目标交易方的地址等。
在一实施例中,当采用私密交易模式时,如果需要对各个交易方的身份进行隐私保护,那么各个交易方进行签名的私钥可以为区块链针对每一笔交易分别生成的临时私钥(当然,还生成了相应的临时公钥)。
在一实施例中,当采用私密交易模式时,初始交易方可以采用同态加密算法对各笔区块链交易的交易额进行加密,并在将包含密文交易额的公共交易数据发送至各个中继交易方、目标交易方时,还将验证该密文交易额所需的验证信息进行一并发送,以由各个中继交易方、目标交易方利用验证信息对公共交易数据包含的密文交易额进行验证,从而确定该密文交易额是否对应于上述的交易额。譬如,当采用Pedersen承诺机制对某一区块链交易的交易额t进行加密时,该Pedersen承诺机制可以对随机数r和交易额t进行计算并生成交易承诺T,而公共交易数据中仅记载该交易承诺T、不记载交易额t,因而起始交易方可以通过将交易额t和随机数r发送至相关交易方,以由该交易方对公共交易数据包含的交易承诺T进行验证(比如确定该交易承诺T是否对应于交易额t)。
为了便于理解,下面以区块链网络中的汇款交易为例,对本说明书的技术方案进行详细说明。图2是一示例性实施例提供的一种在区块链网络中实施汇款交易的示意图。如图2所示,假定由用户A向用户B进行区块链汇款;其中,本说明书中的“用户”、“银行”可以表现为所登录的账号,而该账号实际可以归属于个人或组织,本说明书并不对此进行限制。
假定用户A使用的汇出方设备为用户设备1,譬如该用户设备1上登录有对应于用户A的账号;类似地,用户B使用的接收方设备为用户设备4。其中,用户设备1与用户设备4之间可以通过建立链下通道1实现相应的链下通讯。
用户设备1上可以运行有区块链的客户端程序,使得该用户设备1在区块链网络中存在对应的区块链节点,比如图2所示的节点1。类似地,用户设备4上可以运行有区块链的客户端程序,使得该用户设备4在区块链网络中存在对应的区块链节点,比如图2所示的节点4。区块链网络中还存在其他区块链节点,比如图2所示的节点n等,此处不再一一列举。通过上述的节点1、节点4等,使得用户A与用户B之间的汇款交易可以经由区块链网络实施,相关交易信息可以被记录至各个区块链节点分别维护的区块链账本中,可以避免发生篡改,并有助于后续查验。
针对图2所示的汇款交易场景,图3是一示例性实施例提供的一种在区块链网络中实施汇款交易的流程图;如图3所示,汇出方、中继方1、中继方2、接收方之间的交互过程可以包括以下步骤:
步骤301,汇出方确定汇款路径。
在一实施例中,汇出方是指汇款交易中对款项等资源进行汇出的角色,相应地接收方是指汇款交易中对款项等资源进行接收的角色。例如在图2所示的实施例中,用户设备1可以被配置为汇出方,而用户设备4可以被配置为接收方。
在一实施例中,针对由用户A向用户B的汇款需求,汇出方可以确定出与接收方之间的汇款路径,以满足该汇款需求。例如在图2所示的实施例中,汇出方确定出的汇款路径可以为:用户A→银行1→银行2→用户B,即用户A汇款至银行1、银行1汇款至银行2、银行2汇款至用户B,使得用户A汇出的款项等资源最终被汇入用户B处,从而满足了用户A向用户B实施的汇款需求。
在一实施例中,汇出方可以通过多种方式确定出汇款路径,本说明书并不对此进行限制。举例而言,汇出方可以通过节点1调用区块链中用于确定汇款路径的智能合约,以确定出相应的汇款路径。
在一实施例中,汇出方与接收方之间可能存在多条汇款路径,可以基于一定的选择条件从中选取所希望采用的汇款路径。例如,该选择条件可以包括以下至少之一:汇款费用最低、路径最短(汇款路径中包含的中继方数量最少)、中继方的可靠度最高等,本说明书并不对此进行限制。譬如在图2所示的实施例中,银行1、银行2处于被选中的汇款路径中,银行1对应的用户设备2被配置为中继方1、银行2对应的用户设备3被配置为中继方2;其中,用户设备2上可以运行有区块链的客户端程序,使得该用户设备2在区块链网络中存在对应的区块链节点,比如图2所示的节点2,以及用户设备3上可以运行有区块链的客户端程序,使得该用户设备3在区块链网络中存在对应的区块链节点,比如图2所示的节点3。
步骤302,汇出方生成公共数据X、独立数据Y1。
在一实施例中,针对确定出的汇款路径,可以确定出汇款操作涉及到下述多个区块链交易:汇出方与中继方1之间的区块链交易1、中继方1与中继方2之间的区块链交易2、中继方2与接收方之间的区块链交易3;在本实施例中,需要确保该区块链交易1、区块链交易2、区块链交易3能够捆绑实施,使得区块链交易1~3要么同时上链完成交易,要么同时交易失败。
在一实施例中,公共数据X与上述的区块链交易1~3均相关,而中继方1、中继方2作为分别参与区块链交易1~3的交易方,需要对该公共数据X予以验证。在一些情况下,作为参与区块链交易3的交易方,接收方也需要对的公共数据X予以验证。
在一实施例中,独立数据Y1与汇出方参与的区块链交易1相关,并且仅与该汇出方自身相关,因而并不需要由中继方1、中继方2、接收方等其他交易方予以验证。
在一实施例中,公共数据X可以包含下述内容:区块链交易1的交易额t1、区块链交易2的交易额t2、区块链交易3的交易额t3,其中t1-t2为中继方1收取的汇款费用、t2-t3为中继方2收取的汇款费用。
需要指出的是:当采用非隐私模式进行交易时,公共数据X包含的上述交易额t1、交易额t2和交易额t3为明文数据;当采用隐私模式进行交易时,公共数据X包含的上述交易额t1、交易额t2和交易额t3为密文数据,比如t1为通过同态加密算法对区块链交易1的交易额进行计算得到的交易额密文、例如该交易额密文可以为采用诸如Pedersen承诺机制而生成的交易承诺T1,类似地,t2可以为通过Pedersen承诺机制对区块链交易2的交易额进行计算得到的交易承诺T2、t3可以为通过Pedersen承诺机制对区块链交易3的交易额进行计算得到的交易承诺T3。
其中,当采用诸如Pedersen承诺机制来生成上述的交易承诺T1~T3时,由于计算过程中涉及到与各个交易承诺一一对应的随机数r1~r3,譬如交易承诺T1=Comm(r1,t1)=gr1ht1(g、h为算法中已知的参数)、交易承诺T2=Comm(r2,t2)=gr2ht2、交易承诺T3=Comm(r3,t3)=gr3ht3,因而还应当获取交易承诺T1对应的随机数r1、交易承诺T2对应的随机数r2、交易承诺T3对应的随机数r3,使得随机数r1~r3与公共数据X一并通过链下通道1~3被分别发送至其他交易方,以由其他交易方基于随机数r1~r3对交易承诺T1~T3对应的交易额进行验证。当然,如果采用的同态加密算法并不需要额外的随机数等数据,那么并不需要获取和发送随机数,本说明书并不对此进行限制。
在一实施例中,独立数据Y1在不同情形下所包含的内容可能存在一定差异。例如,当采用账户余额模型进行交易时,独立数据Y1可以包含汇出方对应的区块链账户地址D1,以使得后续从该区块链账户地址D1的账户余额中扣除上述的交易额t1。再例如,当采用UTXO模型进行交易时,独立数据Y1可以包含区块链交易1的输入,该输入具体为汇出方所持有的一项或多项资产;其中,由于每项资产所表征的资产额并非固定额度,因而该输入所表征的资产额往往大于区块链交易1的交易额t1,因而独立数据Y1还可以包含区块链交易1的找零输出Z1,该找零输出Z1的额度为输入所表征的资产额与交易额t1之间的差额、该找零输出Z1的输出对象为汇出方。
需要指出的是:当采用非隐私模式进行交易时,独立数据Y1包含的区块链账户地址或者找零输出Z1等均为明文数据;当采用隐私模式进行交易时,独立数据Y1包含的区块链账户地址或者找零输出Z1等均为密文数据,以找零输出Z1为例,例如该找零输出Z1可以为通过Pedersen承诺机制对区块链交易1的找零额z1进行计算得到的找零额承诺Z1。其中,如果采用诸如Pedersen承诺机制来生成找零额承诺Z1,那么计算过程中涉及到与找零额承诺Z1对应的随机数rz1,但独立数据Y1中并不需要包含该rz1。
在一实施例中,当采用隐私模式时,汇出方可以采用相关技术中的区间证明(Range Proof)技术,譬如Bulletproofs方案或Borromean环签名方案等,根据交易额t1、随机数r1等生成与区块链交易1相关的区间证明PR1,该区间证明PR1可使区块链网络中的区块链节点在密文状态下验证区块链交易1的交易额t1是否满足t1≥0。
进一步地,除了区间证明PR之外,在隐私模式下还可以生成其他证明。例如,当采用账户余额模型进行交易时,还可以生成用于验证汇出方持有的区块链账户余额s1不小于交易额t1的余额充足证明,比如可以根据区块链账户余额s1对应的余额承诺S1、交易额t1、交易承诺T1、随机数r1等生成该余额充足证明,并通过诸如知识签名、零知识证明等技术实现相关验证。再例如,当采用UTXO模型进行交易时,还可以生成用于验证输入(汇出方输入的n项资产所表征的资产额之和)与输出(找零额z1和交易额t1之和)的金额相等的平衡证明,比如可以根据上述n项资产中的每一资产所表征的资产额ki(表示第i项资产对应的资产额)对应的资产承诺Ki、交易额t1、交易承诺T1、随机数r1、找零额z1、找零额承诺Z1等生成该平衡证明,并通过诸如知识签名、零知识证明等技术实现相关验证。
在一实施例中,独立数据Y1可以被包含于公共数据X中,或者独立数据Y1可以独立于公共数据X,本说明书并不对此进行限制。
在一实施例中,当独立数据Y1独立于公共数据X时,汇出方并不一定在步骤302中生成该独立数据Y1;实际上,汇出方可以在步骤308之前的任意时刻生成该独立数据Y1,本说明书并不对此进行限制。
步骤303a,汇出方通过链下通道1将公共数据X发送至中继方1。
在一实施例中,当采用非隐私模式时,汇出方仅需要将公共数据X发送至中继方1,以由中继方1对该公共数据X所包含的交易额t1等进行验证。
在一实施例中,当采用隐私模式时,除了公共数据X之外,汇出方还需要将交易额t1和随机数r1发送至中继方1,以由中继方1根据交易额t1、随机数r1对该公共数据X所包含的交易承诺T1进行验证。
步骤304a,中继方1验证公共数据X。
在一实施例中,中继方1可以通过对公共数据X所包含的任意内容进行验证,以确定其是否允许相关的区块链交易实施。
在一实施例中,中继方1可以仅针对公共数据X中与自身参与的区块链交易1、区块链交易2相关的内容进行验证。例如,中继方1可以对区块链交易1的交易额t1、区块链交易2的交易额t2进行验证,以确保通过区块链交易1获得足额的资产、而通过区块链交易1转出的资产已经扣除了汇款费用。
在一实施例中,当公共数据X包含的内容为加密数据时,比如包含区块链交易1对应的交易承诺T1、区块链交易2对应的交易承诺T2,中继方1可以通过Pedersen承诺机制对该交易承诺T1、交易承诺T2等进行验证,以确定其是否由交易额t1、交易额t2等进行加密得到。譬如,验证过程中可能需要使用上述提及的随机数r1-r2;其中,当交易承诺T1=Comm(r1,t1)时,表明交易承诺T1确实由交易额t1加密得到,当交易承诺T2=Comm(r2,t2)时,表明交易承诺T2确实由交易额t2加密得到。
步骤305a,中继方1生成独立数据Y2。
在一实施例中,独立数据Y2与中继方1参与的区块链交易2相关,并且仅与该中继方1自身相关,因而并不需要由中继方1、中继方2、接收方等其他交易方予以验证。
在一实施例中,当采用账户余额模型进行交易时,独立数据Y2可以包含中继方1对应的区块链账户地址D2,以使得后续从该区块链账户地址D2的账户余额中扣除上述的交易额t2。
在一实施例中,当采用UTXO模型进行交易时,独立数据Y2可以包含区块链交易2的输入和找零输出Z2,其中该输入具体为中继方1所持有的一项或多项资产。
其中,当采用非隐私模式进行交易时,独立数据Y2包含的区块链账户地址或者找零输出Z2等均为明文数据;当采用隐私模式进行交易时,独立数据Y2包含的区块链账户地址或者找零输出Z2等均为密文数据,以找零输出Z2为例,该找零输出Z2可以为通过同态加密算法对区块链交易2的找零额z2进行计算得到的找零额承诺Z2。其中,如果采用诸如Pedersen承诺机制来生成找零额承诺Z2,那么计算过程中涉及到与找零额承诺Z2对应的随机数rz2,但独立数据Y2中并不需要包含该rz2。
在一实施例中,当采用隐私模式时,中继方1可以采用相关技术中的区间证明技术,生成与区块链交易2相关的区间证明PR2、余额充足证明(基于账户余额交易模型)或金额平衡证明(基于UTXO交易模型)等,可使区块链网络中的区块链节点在密文状态下验证区块链交易2是否满足相关要求。
实际上,独立数据Y2的相关描述与汇出方生成的独立数据Y1相类似,可以参考上文中关于独立数据Y1的相关描述,此处不再赘述。
步骤306a,中继方1对(X,Y2)进行签名,生成签名SIG2。
步骤307a,中继方1将(Y2,SIG2)通过链下通道1返回至汇出方。
在一实施例中,中继方1可以利用持有的私钥对(X,Y2)进行签名,生成签名SIG2,一方面表明对公共数据X的认可,另一方面可以在后期通过对签名SIG2的验证,避免最终提交的整合交易中所包含的公共数据X或独立数据Y2被篡改。
在一实施例中,当采用非隐私模式时,中继方1采用对应于自己身份的私钥实施签名。当采用隐私模式时,譬如相关技术中由Zcash采用的隐私保护技术,可以针对每一笔区块链交易分别生成一组临时公私钥(Zcash中称为joinSplitPubkey和joinSplitPrikey),那么中继方1可以采用区块链交易1对应的临时私钥实施签名。
在一实施例中,除了直接对(X,Y2)进行签名之外,中继方1还可以对X和Y2的哈希值进行签名,本说明书并不对此进行限制。
步骤303b,汇出方通过链下通道2将公共数据X发送至中继方2。
在一实施例中,当采用非隐私模式时,汇出方仅需要将公共数据X发送至中继方2,以由中继方2对该公共数据X所包含的交易额t2等进行验证。
在一实施例中,当采用隐私模式时,除了公共数据X之外,汇出方还需要将交易额t2和随机数r2发送至中继方2,以由中继方2根据交易额t2、随机数r2对该公共数据X所包含的交易承诺T2进行验证。
在一实施例中,链下通道2除了采用图2中的形式,即直接在用户设备1与用户设备3之间建立,还可以采用其他形式,本说明书并不对此进行限制。例如,还可以在用户设备1与用户设备2、用户设备2与用户设备3之间分别建立链下通道,从而使得链下通道2通过的形式实现。
步骤304b,中继方2验证公共数据X。
步骤305b,中继方2生成独立数据Y3。
步骤306b,中继方2对(X,Y3)进行签名,生成签名SIG3。
步骤307b,中继方2将(Y3,SIG3)通过链下通道2返回至汇出方。
在一实施例中,步骤303b~307b可以参考上述的步骤303a~307a,此处不再赘述。
步骤303c,汇出方通过链下通道3将公共数据X发送至接收方。
在一实施例中,当采用非隐私模式时,汇出方仅需要将公共数据X发送至接收方,以由接收方对该公共数据X所包含的交易额t3等进行验证。
在一实施例中,当采用隐私模式时,除了公共数据X之外,汇出方还需要将交易额t3和随机数r3发送至接收方,以由接收方根据交易额t3、随机数r3对该公共数据X所包含的交易承诺T3进行验证。
在一实施例中,链下通道3除了采用图2中的形式,即直接在用户设备1与用户设备4之间建立,还可以采用其他形式,本说明书并不对此进行限制。例如,还可以在用户设备1与用户设备2、用户设备2与用户设备3、用户设备3与用户设备4之间分别建立链下通道,从而使得链下通道3通过 的形式实现。再例如,还可以在用户设备1与用户设备2、用户设备2与用户设备4之间分别建立链下通道,从而使得链下通道3通过的形式实现。
步骤304c,接收方验证公共数据X。
步骤305c,接收方对X进行签名,生成签名SIG4。
步骤306c,接收方将SIG4通过链下通道3返回至汇出方。
在一实施例中,当采用非隐私模式时,可以省去步骤303c~306c,直接转入步骤308。而当采用隐私模式时,可以通过步骤303c~306c使得接收方对公共数据进行验证,比如根据汇出方提供的随机数r3和交易额t3来验证公共数据X包含的交易承诺T3,以确定该交易承诺T3是否由交易额t3进行加密而得到。
在一实施例中,步骤303c~306c可以参考上述的步骤303a~307a,此处不再赘述。
步骤308,汇出方根据公共数据X、独立数据Y1~Y3和签名SIG2~SIG4,组装形成对应于区块链交易1~3的整合交易。
在一实施例中,当采用非隐私模式时,由于并不实施步骤303c~306c,因而整合交易中可以不包含签名SIG4。
步骤309,汇出方对整合交易进行签名,生成签名SIG1。
在一实施例中,汇出方也可以对整合交易的哈希值进行签名,本说明书并不对此进行限制。
步骤310,汇出方将整合交易与签名SIG1相关联地提交至区块链。
在一实施例中,通过将整合交易提交至区块链,使得区块链中的各个区块链节点可以分别针对该整合交易进行验证,以在验证通过时执行汇款操作、在验证未通过时拒绝汇款。由于区块链交易1~区块链交易3的所有交易数据均被组装至整合交易中,使得该整合交易上链执行时,相当于区块链交易1~区块链交易3同时上链执行,而不会出现部分区块链交易成功、部分区块链交易失败的情况。
在一实施例中,区块链节点对整合交易的验证可以包括:利用相关技术中的防双花或防重放机制,验证该汇款交易是否已经执行过;检查整合交易包含的签名;当采用隐私模式时,检查整合交易包含的区间证明;以及,其他可能采用的验证手段,本说明书并不对此进行限制。
在一实施例中,汇出方可以不针对整合交易进行签名,而是与中继方1~2相类似地,针对(X,Y1)进行签名生成SIG1,并将该SIG1在步骤308中组装至整合交易中,那么可以省去步骤309,并且步骤310可以直接将整合交易提交至区块链。
图4是一示例性实施例提供的一种设备的示意结构图。请参考图4,在硬件层面,该设备包括处理器402、内部总线404、网络接口406、内存408以及非易失性存储器410,当然还可能包括其他业务所需要的硬件。处理器402从非易失性存储器410中读取对应的计算机程序到内存408中然后运行,在逻辑层面上形成区块链交易装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图5,在软件实施方式中,该区块链交易装置应用于起始交易方设备,所述装置可以包括:
确定单元501,确定由起始交易方、中继交易方和目标交易方构成的交易路径,所述交易路径中涉及需捆绑实施的多笔区块链交易;
数据生成单元502,生成第一交易数据,所述第一交易数据包括公共交易数据和第一独立交易数据;所述公共交易数据与所述多笔区块链交易相关,所述第一独立交易数据与所述起始交易方在所述多笔区块链交易中参与的区块链交易相关;
第一获取单元503,获取第二交易数据,所述第二交易数据包括第二独立交易数据;所述第二独立交易数据由所述中继交易方在对所述公共交易数据验证通过的情况下,针对自身在所述多笔区块链交易中参与的区块链交易生成;
提交单元504,向区块链提交与所述多笔区块链交易相关的整合交易,所述整合交易中包含所述第一交易数据和所述第二交易数据。
可选的,还包括:
第一发送单元505,将所述第一交易数据或所述公共交易数据通过链外通道发送至所述中继交易方,以由所述中继交易方对所述公共交易数据进行验证;
第一接收单元506,接收所述中继交易方通过所述链外通道返回的所述第二交易数据。
可选的,还包括:
签名生成单元507,通过所述起始交易方持有的私钥生成第一签名,所述第一签名与所述公共交易数据和所述第一独立交易数据相关,或者所述第一签名与所述整合交易相关;
所述提交单元504将所述第一签名与所述整合交易相关联地提交至区块链中。
可选的,所述第二交易数据还包括:第二签名,所述第二签名由所述中继交易方通过持有的私钥进行签名得到,所述第二签名与所述公共交易数据和所述第二独立交易数据相关。
可选的,
所述公共交易数据包括:所述多笔区块链交易中的各笔区块链交易的交易额;
所述第一独立交易数据包括:所述起始交易方在所参与的区块链交易中对应的第一输入资产;
所述第二独立交易数据包括:所述中继交易方在所参与的区块链交易中对应的第二输入资产。
可选的,
所述第一独立交易数据还包括:所述起始交易方在所参与的区块链交易中对应的第一找零输出资产;
所述第二独立交易数据还包括:所述中继交易方在所参与的区块链交易中对应的第二找零输出资产。
可选的,所述整合交易采用隐私交易模式;所述第一独立交易数据还包括:第一区间证明;所述第二独立交易数据还包括:第二区间证明;
其中,当采用UTXO交易模型时,所述第一独立交易数据还包括:所述起始交易方所参与的区块链交易的输入输出相等的证明;所述第二独立交易数据还包括:所述中继交易方所参与的区块链交易的输入输出相等的证明;
当采用账户余额交易模型时,所述第一独立交易数据还包括:所述起始交易方所持有的账户余额不小于所参与的区块链交易的交易额的证明;所述第二独立交易数据还包括:所述中继交易方所持有的账户余额不小于所参与的区块链交易的交易额的证明。
可选的,还包括:
第二获取单元508,当所述整合交易采用隐私交易模式时,获取第三交易数据,所述第三交易数据包括第三签名;所述第三签名由所述目标交易方在对所述公共交易数据验证通过的情况下,通过持有的私钥对所述公共交易数据进行签名得到。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。