CN109214818B - 一种跨链交易方法及装置 - Google Patents
一种跨链交易方法及装置 Download PDFInfo
- Publication number
- CN109214818B CN109214818B CN201710527939.7A CN201710527939A CN109214818B CN 109214818 B CN109214818 B CN 109214818B CN 201710527939 A CN201710527939 A CN 201710527939A CN 109214818 B CN109214818 B CN 109214818B
- Authority
- CN
- China
- Prior art keywords
- transaction
- validity
- association
- blockchain
- verification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000012795 verification Methods 0.000 claims abstract description 229
- 238000012545 processing Methods 0.000 claims description 51
- 238000003860 storage Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 abstract description 18
- 230000000977 initiatory effect Effects 0.000 abstract description 4
- 238000004891 communication Methods 0.000 description 36
- 238000013461 design Methods 0.000 description 29
- 230000006870 function Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 23
- 238000004590 computer program Methods 0.000 description 11
- 238000012546 transfer Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000010200 validation analysis Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 239000003999 initiator Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000007935 neutral effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Finance (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请公开了一种跨链交易方法及装置。该方法包括:第一节点将第一交易写入第一区块链时,需要对第一交易的本地有效性和其关联交易的第一关联有效性进行验证,从而保证第一交易准确地写入相应的区块链中,且第一节点将第一交易写入第一区块链后,需要在关联交易的第二关联有效性验证通过后,方可确定第一交易关联成功,有效避免在关联交易未准确写入的情况下第一交易直接执行成功而导致发起第一交易的用户资产受损的问题。本申请中具有关联交易的一个交易是否执行成功取决于其关联交易的验证结果,而并非完全依赖于对中间人的信任,从而具有较高的安全保障性,且相关联的两个交易可以并发执行,使得整个交易流程完成时间短。
Description
技术领域
本发明涉及区块链技术领域,特别涉及一种跨链交易方法及装置。
背景技术
区块链(Blockchain)系统中,数据均保存在区块中,新写入的数据组成新的区块,添加在当前区块链的末端。每个区块在保存数据的同时,还要保存前一个区块中所有记录的数据唯一对应的一个数(往往是所有记录的数据的哈希值),从而形成链。因此,区块链系统可以认为是由分布式网络上的互相不完全信任的计算机,通过共识规则,共同维护一套可追溯、不可篡改的链式数据的系统。
区块链间的跨链交易是指用户A使用其在区块链1中的资产,向在区块链2中的用户B支付若干区块链2中的资产。现有技术中的实现方案为:用户A需要找一个在两个区块链上都有资产的用户C,扮演中间人的角色,具体步骤为:(1)在区块链1中,用户A支付给用户C约定单位的资产;(2)用户C在区块链1中收到用户A支付的资产;(3)用户C在区块链2中向用户B支付约定单位的资产。
然而,由于上述方案完全依赖中间人,若中间人拒绝执行区块链2上的交易或者进行其它手段的欺诈行为,用户没有可以追回自己财产的技术手段,缺乏安全保障。
综上可知,目前亟需一种跨链交易方法,用于解决现有技术中的实现方案完全依赖中间人而导致安全保障性差的问题。
发明内容
本申请提供一种跨链交易方法,用于解决现有技术中的实现方案完全依赖中间人而导致安全保障性差的问题。
第一方面,本申请提供一种跨链交易方法,包括:
第一节点接收第一客户端设备发送的交易请求;所述第一节点维护第一区块链;所述交易请求中包括第一交易的交易数据、所述第一交易的关联交易的交易数据以及所述关联交易写入的第二区块链的标识;所述交易请求用于请求将所述第一交易的交易数据写入所述第一区块链;
所述第一节点根据所述第一交易的交易数据,对所述第一交易的本地有效性进行验证,以及根据所述第二区块链的标识,查询所述第二区块链,对所述关联交易的第一关联有效性进行验证;
所述第一节点在所述第一交易的本地有效性和所述关联交易的第一关联有效性均验证通过后,将所述第一交易写入所述第一区块链;
所述第一节点若确定所述第一区块链中出现新区块,则根据所述关联交易的交易数据,对所述关联交易的第二关联有效性进行验证,并根据所述第二关联有效性的验证结果,更新所述第一交易的状态。
如此,第一节点将第一交易写入第一区块链时,需要对第一交易的本地有效性和其关联交易的第一关联有效性进行验证,从而通过上述两方面的验证,保证第一交易准确地写入相应的区块链中,且,第一节点将第一交易写入第一区块链后,需要根据第二关联有效性的验证结果,更新所述第一交易的状态,例如,需要在关联交易的第二关联有效性验证通过后,方可确定第一交易关联成功,从而有效避免在关联交易未准确写入的情况下第一交易直接执行成功而导致发起第一交易的用户资产受损的问题。也就是说,本申请将跨链的两个(或两个以上)交易关联起来,相关联的两个交易中的任一个交易在写入时,需要对其关联交易的第一关联有效性进行验证,在写入后,需要对其关联交易的第二关联有效性进行验证,验证通过,则第一交易关联成功,由此可知,本申请中具有关联交易的一个交易是否执行成功取决于其关联交易的验证结果,而并非完全依赖于对中间人的信任,从而具有较高的安全保障性,且相关联的两个交易可以并发执行,使得整个交易流程完成时间短。
在一种可能的设计中,所述关联交易的交易数据包括所述关联交易允许写入的区块、关联关键字、交易对象和交易金额;
所述第一节点查询所述第二区块链,对所述关联交易的第一关联有效性进行验证,包括:
所述第一节点若确定所述第二区块链中包括所述允许写入的区块中的至少部分区块,则根据所述关联关键字,从所述第二区块链中包括的所述至少部分区块中获取具备所述关联关键字的交易的交易数据;
所述第一节点验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据一致,则确定所述关联交易的第一关联有效性的验证结果为验证通过。
如此,本申请给出了对关联交易的第一关联有效性进行验证并验证通过的一种具体方式,从第二区块链中获取具备关联关键字的交易的交易数据,并在该交易数据与关联交易的交易数据一致后,确定验证通过,由于该种方式将第二区块链中具备关联关键字的交易的交易数据与关联交易的交易数据进行比对,因此,其能够有效保证第二区块链中已写入关联交易的交易数据,从而能够很好地保证验证结果的准确性。
在一种可能的设计中,所述第一节点查询所述第二区块链,对所述关联交易的第一关联有效性进行验证,包括:
所述第一节点若确定所述第二区块链包括所述允许写入的区块中的部分区块,且根据所述关联关键字,未在所述第二区块链包括的所述部分区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第一关联有效性验证通过。
如此,本申请给出了对关联交易的第一关联有效性进行验证并验证通过的另一种具体方式,由于第一交易可能早于关联交易被写入相应的区块链中,因此,在第二区块链仅包括所述允许写入的区块中的部分区块时,若关联交易尚未写入,则可确定关联交易的第一关联有效性验证通过,从而保证整个交易过程的顺利进行。在一种可能的设计中,所述方法还包括:
所述第一节点若确定所述第一交易的本地有效性和所述关联交易的第一关联有效性中任一项没有验证通过,则放弃将所述第一交易写入所述第一区块链。
如此,若第一交易的本地有效性没有验证通过,则说明第一交易存在问题,若关联交易的第一关联有效性中没有验证通过,则说明写入第二区块链的关联交易存在问题或者关联交易的交易数据未按约定写入第二区块链,因此,在这两种情况下均放弃将第一交易写入第一区块链,从而能够及时避免后续交易可能出现的问题。
在一种可能的设计中,所述第二关联有效性的验证结果包括验证通过、验证不通过和待定;
所述第一节点根据所述第二关联有效性的验证结果,更新所述第一交易的状态,包括:
若所述第二关联有效性的验证结果为验证通过,则更新所述第一交易的状态为关联成功;
若所述第二关联有效性的验证结果为验证不通过,则更新所述第一交易的状态为关联失败;
若所述第二关联有效性的验证结果为待定,则更新所述第一交易的状态为待关联。
如此,通过对第二关联有效性进行验证,能够有效避免在关联交易未准确写入的情况下直接更新第一交易的状态而可能导致用户资产受损的问题。且将第二关联有效性的验证结果划分为验证通过、验证不通过和待定,从而能够针对不同的验证结果更新第一交易为不同的状态。
在一种可能的设计中,所述方法还包括:
若所述第二关联有效性的验证结果为验证通过,则所述第一节点根据所述第一交易的交易金额,更新所述第一交易中的付款方和收款方在所述第一区块链中的资产;
若所述第二关联有效性的验证结果为待定,则所述第一节点根据所述第一交易的交易金额,仅更新所述第一交易中的付款方在所述第一区块链中的资产。
在一种可能的设计中,所述关联交易的交易数据包括所述关联交易允许写入的区块、关联关键字、交易对象和交易金额;
所述第一节点对所述关联交易的第二关联有效性进行验证,所述第二关联有效性进行验证的验证结果为验证通过,包括:
所述第一节点若确定所述第二区块链中包括所述允许写入的区块中的至少部分区块,则根据所述关联关键字,从所述第二区块链中包括的所述至少部分区块中获取具备所述关联关键字的交易的交易数据;
所述第一节点验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据一致,则确定所述关联交易的第二关联有效性的验证结果为验证通过。
在一种可能的设计中,所述第一节点对所述关联交易的第二关联有效性进行验证,所述第二关联有效性进行验证的验证结果为验证不通过,包括:
所述第一节点若验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据不一致,则确定所述关联交易的第二关联有效性的验证结果为验证不通过;或者,
所述第一节点若确定所述第二区块链中包括所述允许写入的区块中的全部区块,且根据所述关联关键字,未在所述第二区块链包括的所述全部区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第二关联有效性的验证结果为验证不通过。
在一种可能的设计中,所述第一节点对所述关联交易的第二关联有效性进行验证,所述第二关联有效性进行验证的验证结果为待定,包括:
所述第一节点若确定所述第二区块链中包括所述允许写入的区块中的部分区块,且根据所述关联关键字,未在所述第二区块链包括的所述部分区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第二关联有效性的验证结果为待定。
第二方面,本申请提供一种跨链交易方法,所述方法包括:
第一客户端设备生成交易请求;所述交易请求中包括第一交易的交易数据、所述第一交易的关联交易的交易数据以及所述关联交易所在的第二区块链的标识;
所述第一客户端设备向第一节点发送所述交易请求;所述第一节点维护第一区块链;所述交易请求用于请求将所述第一交易的交易数据写入所述第一区块链。
如此,第一客户端设备发送给第一节点的交易请求中包括第一交易的关联交易的交易数据,从而将跨链的两个(或两个以上)交易关联起来,具有关联交易的一个交易是否执行成功取决于其关联交易的验证结果,而并非完全依赖于对中间人的信任,从而具有较高的安全保障性。
在一种可能的设计中,所述第一客户端设备生成交易请求,包括:
所述第一客户端设备接收用户输入的第一交易的信息和第二交易的信息;
所述第一客户端设备根据所述第一交易的信息生成所述第一交易的交易数据;
所述第一客户端设备接收第二客户端设备发送的所述关联交易的交易数据以及所述关联交易所在的第二区块链的标识;
所述第一客户端设备确定接收到的所述关联交易的交易数据以及所述关联交易所在的第二区块链的标识与所述第二交易的信息匹配后,生成所述交易请求。
如此,第一客户端设备在生成交易请求之前,需要验证接收到的所述关联交易的交易数据以及所述关联交易所在的第二区块链的标识与所述第二交易的信息是否匹配,从而确保生成的交易请求符合交易的预先约定。
第三方面,本申请提供一种服务器,所述服务器包括:收发模块、处理模块和存储模块;
所述存储模块,用于维护第一区块链;
所述接收模块,用于接收第一客户端设备发送的交易请求;所述交易请求中包括第一交易的交易数据、所述第一交易的关联交易的交易数据以及所述关联交易写入的第二区块链的标识;所述交易请求用于请求将所述第一交易的交易数据写入所述第一区块链;
所述处理模块,用于根据所述第一交易的交易数据,对所述第一交易的本地有效性进行验证,以及根据所述第二区块链的标识,查询所述第二区块链,对所述关联交易的第一关联有效性进行验证;在所述第一交易的本地有效性和所述关联交易的第一关联有效性均验证通过后,将所述第一交易写入所述第一区块链;
所述处理模块,还用于若确定所述第一区块链中出现新区块,则根据所述关联交易的交易数据,对所述关联交易的第二关联有效性进行验证,并根据所述第二关联有效性的验证结果,更新所述第一交易的状态。
在一种可能的设计中,所述关联交易的交易数据包括所述关联交易允许写入的区块、关联关键字、交易对象和交易金额;
所述处理模块具体用于:
若确定所述第二区块链中包括所述允许写入的区块中的至少部分区块,则根据所述关联关键字,从所述第二区块链中包括的所述至少部分区块中获取具备所述关联关键字的交易的交易数据;
验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据一致,则确定所述关联交易的第一关联有效性的验证结果为验证通过。
在一种可能的设计中,所述处理模块具体用于若确定所述第二区块链包括所述允许写入的区块中的部分区块,且根据所述关联关键字,未在所述第二区块链包括的所述部分区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第一关联有效性验证通过。
在一种可能的设计中,所述处理模块还用于:
若确定所述第一交易的本地有效性和所述关联交易的第一关联有效性中任一项没有验证通过,则放弃将所述第一交易写入所述第一区块链。
在一种可能的设计中,所述第二关联有效性的验证结果包括验证通过、验证不通过和待定;
所述处理模块具体用于:
若所述第二关联有效性的验证结果为验证通过,则更新所述第一交易的状态为关联成功;
若所述第二关联有效性的验证结果为验证不通过,则更新所述第一交易的状态为关联失败;
若所述第二关联有效性的验证结果为待定,则更新所述第一交易的状态为待关联。
在一种可能的设计中,所述处理模块还用于:
若所述第二关联有效性的验证结果为验证通过,则根据所述第一交易的交易金额,更新所述第一交易中的付款方和收款方在所述第一区块链中的资产;
若所述第二关联有效性的验证结果为待定,则根据所述第一交易的交易金额,仅更新所述第一交易中的付款方在所述第一区块链中的资产。
在一种可能的设计中,所述关联交易的交易数据包括所述关联交易允许写入的区块、关联关键字、交易对象和交易金额;
所述处理模块具体用于:
若确定所述第二区块链中包括所述允许写入的区块中的至少部分区块,则根据所述关联关键字,从所述第二区块链中包括的所述至少部分区块中获取具备所述关联关键字的交易的交易数据;
验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据一致,则确定所述关联交易的第二关联有效性的验证结果为验证通过。
在一种可能的设计中,所述处理模块具体用于:
若验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据不一致,则确定所述关联交易的第二关联有效性的验证结果为验证不通过;或者,
若确定所述第二区块链中包括所述允许写入的区块中的全部区块,且根据所述关联关键字,未在所述第二区块链包括的所述全部区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第二关联有效性的验证结果为验证不通过。
在一种可能的设计中,所述处理模块具体用于:
若确定所述第二区块链中包括所述允许写入的区块中的部分区块,且根据所述关联关键字,未在所述第二区块链包括的所述部分区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第二关联有效性的验证结果为待定。
第四方面,本申请提供一种客户端设备,所述客户端设备包括:收发模块、处理模块;
所述处理模块,用于生成交易请求;所述交易请求中包括第一交易的交易数据、所述第一交易的关联交易的交易数据以及所述关联交易所在的第二区块链的标识;
所述收发模块,用于向第一节点发送所述交易请求;所述第一节点维护第一区块链;所述交易请求用于请求将所述第一交易的交易数据写入所述第一区块链。
在一种可能的设计中,所述收发模块,还用于接收用户输入的第一交易的信息和第二交易的信息;以及,接收第二客户端设备发送的所述关联交易的交易数据以及所述关联交易所在的第二区块链的标识;
所述处理模块具体用于:根据所述第一交易的信息生成所述第一交易的交易数据;以及,确定接收到的所述关联交易的交易数据以及所述关联交易所在的第二区块链的标识与所述第二交易的信息匹配后,生成所述交易请求。
第五方面,本申请还提供一种服务器,该服务器具有实现上述第三方面方法示例中的功能;所述通信装置包括:通信模块、处理器;
所述通信模块,用于与其他设备进行通信交互;所述通信模块可以为RF电路、WiFi模块、通信接口、蓝牙模块等;
所述处理器,用于实现上述第三方面中处理模块的功能。
可选的,通信装置还可以包括:所述存储器,用于存放程序等。具体地,程序可以包括程序代码,该程序代码包括指令。存储器可能包含RAM,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。处理器执行存储器所存放的应用程序,实现上述功能。
一种可能的方式中,通信模块、处理器和存储器可以通过所述总线相互连接;总线可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。
第六方面,本申请还提供一种客户端设备,该客户端设备具有实现上述第四方面方法示例中的功能;所述通信装置包括:通信模块、处理器;
所述通信模块,用于与其他设备进行通信交互;所述通信模块可以为RF电路、WiFi模块、通信接口、蓝牙模块等;
所述处理器,用于实现上述第四方面中处理模块的功能。
可选的,通信装置还可以包括:所述存储器,用于存放程序等。具体地,程序可以包括程序代码,该程序代码包括指令。存储器可能包含RAM,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。处理器执行存储器所存放的应用程序,实现上述功能。
一种可能的方式中,通信模块、处理器和存储器可以通过所述总线相互连接;总线可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。
本申请还提供了一种计算机可读存储介质,所述存储介质存储有指令,当所述指令在计算机上运行时,使得计算机实现执行上述任意一种设计提供的跨链交易方法。
本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任意一种设计提供的跨链交易方法。
本申请还提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述任意一种设计提供的跨链交易方法。
附图说明
图1为本申请适用的一种系统架构示意图;
图2为本申请提供的一种跨链交易方法所对应的流程示意图;
图3为本申请中跨链交易的具体流程示意图;
图4为客户端设备a生成交易请求1的示意图;
图5对将交易1写入区块链1的具体流程示意图;
图6为交易状态的更新流程示意图;
图7为交易的各个状态示意图;
图8为本申请提供的一种服务器的结构示意图;
图9为本申请提供的一种客户端设备的结构示意图;
图10为本申请提供的另一种服务器的结构示意图;
图11为本申请提供的另一种客户端设备的结构示意图。
具体实施方式
下面结合说明书附图对本申请进行具体说明。
图1为本申请适用的一种系统架构示意图,该系统架构中可包括两个或两个以上区块链网络,如图1所示出的区块链1网络和区块链2网络,区块链网络是由多个节点组成的点对点(Peer To Peer,P2P)网络,P2P是一种运行在传输控制协议(Transmission ControlProtocol,TCP)协议之上的应用层协议,在区块链网络中的节点彼此对等,网络中不存在中心节点,每个节点都可以随机连接其它节点。
区块链网络中的节点具有的功能可包括:(1)路由功能,用于把其他节点传送过来的交易数据等信息再传送给更多的节点实现节点之间的通信;(2)交易功能,用于支持用户进行交易;(3)区块链,记录历史上的所有交易;(4)共识功能,通过验证和记录交易生成区块链中的新区块。实际应用中,路由功能是区块链网络中的每个节点必须具有的功能,而其它功能可根据需要来设置。
如图1所示,区块链1网络中包括节点101、节点102、节点103、节点104,这些节点共同维护区块链1;区块链2网络中包括节点201、节点202、节点203、节点204、节点205,这些节点共同维护区块链2。区块链是以区块为单位存储交易清单,区块链中的区块按照时间顺序生成,每个区块用于记录一段时间内产生的交易清单。区块链上所记录的所有交易清单即为账本(Ledger),例如,区块链1上记录的账本为Ledger1,区块链2上记录的账本为Ledger2,本申请中,在不引起歧义的情况下,账本和区块链是可以互相替代的同等概念。
区块链1网络中的任意节点可基于区块链1和区块链2之间的交流协议访问区块链2网络中的任意节点查询区块链2的数据,反之亦可。
需要说明的是,上述系统架构仅为一种逻辑上的示意;在物理上,区块链网络中的一个节点在一台物理机(服务器)上,或者,多个区块链网络中的多个节点在同一个服务器上,一个节点具体可以是指服务器中运行的一个进程或者一系列进程,例如,区块链1网络中的节点101和区块链2网络中的节点201可以为一个服务器上运行的两个进程。
本申请中所描述的节点可以是指节点所在的服务器。
进一步地,如图1所示,一个或一个以上的客户端设备可以通过接入网络而与节点进行通信。例如,若用户A在区块链1中有资产,则用户A可通过客户端设备301与区块链1网络中的任意节点进行通信,从而在区块链1中发起交易;若用户B在区块链2中有资产,则用户B可通过客户端设备302与区块链2网络中的任意节点进行通信,从而在区块链2中发起交易;若用户C在区块链1和区块链2中均有资产,则用户C可通过客户端设备303与区块链1网络中的任意节点进行通信,从而在区块链1中发起交易,以及通过客户端设备303与区块链1网络中的任意节点进行通信,从而在区块链2中发起交易。
基于图1所示出的架构,在进行区块链间的资产交易时,现有技术中有两种可能的实施方案。下面以区块链1中的用户A要给区块链2中的用户B支付100单位资产的场景为例,对两种实施方案进行介绍。
(1)方案一
该方案在每个区块链中引入了一个Escrow角色,类似一个中立的交易人,两个区块链链中分别先向Esrow发起交易,而在Escrow确定两笔交易都完成以后,再由Escrow分别把资产转移给各个区块链中的参与者。具体流程如下:
S1,用户A选择用户C作为中间人;
S2,在区块链1中,用户A把资产转给Escrow(称为交易a1),此时交易a1的状态是准备状态(Prepared);
S3,在区块链2中,用户C在看到区块链1中用户A转给Escrow的交易之后(Prepared),把资产转给区块链2中的Escrow(称为交易b1),此时交易b1的状态是准备状态(Prepared);
S4,区块链2中的用户B看到交易b1的状态是准备状态后签发一个收款签名;
S5,由一组证明人(Notary)来监视区块链2中用户B是否签发了收款签名,这组证明人本身可以通过共识形成对用户B是否在规定的过期时间内签发了收款签名输出一致、可信的结果;如果证明人发现用户B在区块链2中的收款签名,则通知区块链1和区块链2将Escrow中的资产转移给交易对象,即通知区块链1中的Escrow向中间人用户C发送资产,以及通知区块链2中的Escrow向用户B发送资产;否则,将Escrow中保管的资产退回给交易的发起者,即区块链1中Escrow发送给用户A,区块链2中Escrow发送给用户C。
上述方案可以扩展到通过N个区块链的资产交易(区块链1→…→区块链N),而证明人通过观察区块链N的支付目标是否收签发了收款签名,来通知所有区块链上的Escrow是否将代管的资产发给交易目标或是退还给交易的发起者。
(2)方案二
该方案要求不同区块链之间的消息传递的延时有上限,不同区块链之间的时间不同步有差异的上限(实际上是一种比较强的假设)。与方案一最大的不同之处在于,该方案不需要证明人。具体流程如下:
S1,用户A选择用户C作为中间人;
S2,在区块链1中,用户A把资产转给Escrow(称为交易a2),此时交易a2的状态是准备状态(Prepared);
S3,在区块链2中,用户C在看到区块链1中用户A转给Escrow的交易之后(Prepared),把资产转给区块链2中的Escrow(称为交易b2),此时交易b2的状态是准备状态(Prepared);
S3,在区块链2中,用户B看到Escrow得到了用户C转移进来的资产(Prepared),用户B签发一个收款签名,区块链2在看到用户B的收款签名后将Escrow中的资产交给用户B;
S4,用户C在看到用户B的收款签名后,会立刻将这个签名交给区块链1,区块链1在看到这个签名后会将Escrow中的资产交给用户C;
与方案一类似,上述方案也可以推广到跨N个区块链的资产支付,由最后一个区块链中的收款人签发收款签名,倒序向前面的区块链传递,每个区块链只有看到这个收款签名后才会将本区块链中Escrow中的资产转移给中间人。
综上,现有技术的方案一中,完成一次跨链交易,需要完成的交易的数目是2*(n+1),n是中间人的数目,其中第一阶段的所有交易必须串行执行,整个交易需要时间长;且,需要使用证明人,证明人必须是一个独立的第三方,为了维持区块链的去中心化特性,证明人本身需要是一个独立的区块链系统。现有技术的方案二中,完成一次跨链交易,需要完成的交易的数目是2*(n+1),n是中间人的数目,且两个阶段的所有交易只能串行执行,整个交易需要时间长,虽然方案二中不需要证明人,但是该方案中的所有中间人必须是自利的(rational)的,在拜占庭场景下会使诚实的交易参与方利益受损。
基于此,本申请提供一种跨链交易方法,第一节点将第一交易写入区块链1时,需要对第一交易的本地有效性和其关联交易的第一关联有效性进行验证,从而通过上述两方面的验证,保证第一交易准确地写入相应的区块链中;第一节点将第一交易写入第一区块链后,需要在关联交易的第二关联有效性验证通过后,方可确定第一交易关联成功,有效避免在关联交易未准确写入的情况下第一交易直接执行成功而导致发起第一交易的用户资产受损的问题。也就是说,本申请将跨链的两个(或两个以上)交易关联起来,相关联的两个交易中的任一个交易在写入时,需要对其关联交易的第一关联有效性进行验证,在写入后,需要对其关联交易的第二关联有效性进行验证,验证通过,则第一交易关联成功,由此可知,本申请中具有关联交易的一个交易是否执行成功取决于其关联交易的验证结果,而并非完全依赖于对中间人的信任,从而具有较高的安全保障性,相比于上述方案一和方案二,本申请无需引入Escrow角色,能够有效减少交易数目,且相关联的两个交易可以并发执行,使得整个交易流程完成时间短。
实施例一
基于图1所示的系统架构,图2为本申请提供的一种跨链交易方法所对应的流程示意图,如图2所示,该方法包括:
步骤201,第一客户端设备生成交易请求;所述交易请求中包括第一交易的交易数据、所述第一交易的关联交易的交易数据以及所述关联交易所在的第二区块链的标识;
步骤202,第一客户端设备向第一节点发送所述交易请求;所述第一节点维护第一区块链;所述交易请求用于请求将所述第一交易的交易数据写入所述第一区块链;
步骤203,第一节点接收第一客户端设备发送的交易请求;
步骤204,第一节点根据所述第一交易的交易数据,对所述第一交易的本地有效性进行验证,以及根据所述第二区块链的标识,查询所述第二区块链,对所述关联交易的第一关联有效性进行验证;
步骤205,第一节点在所述第一交易的本地有效性和所述关联交易的第一关联有效性均验证通过后,将所述第一交易写入所述第一区块链;
步骤206,第一节点若确定所述第一区块链中出现新区块,则根据所述关联交易的交易数据,对所述关联交易的第二关联有效性进行验证,并根据所述第二关联有效性的验证结果,更新所述第一交易的状态。
需要说明的是:(1)本申请中的上述步骤201至步骤206是以相关联的两个(或两个以上)交易中的其中一个交易(即第一交易)为例而描述的执行流程,第一交易的关联交易可参照第一交易的执行流程;(2)上述第一节点是指区块链1网络中具有共识功能的节点。
具体来说,关联交易的交易数据可以包括所述关联交易允许写入的区块、关联关键字、交易对象和交易金额。其中,关联交易允许写入的区块可以通过字段Expected_from_block_num和字段Expected_until_block_num来表示,后续具体描述。关联交易的交易对象包括关联交易中的付款方和收款方。
步骤201中,第一客户端设备生成交易请求,具体是指:第一客户端设备接收用户输入的第一交易的信息和第二交易的信息,其中,用户输入的交易信息可以包括交易的交易对象、交易金额、交易时间、交易所在的区块链的标识等,具体不做限定。第一客户端设备首先根据第一交易的信息生成所述第一交易的交易数据,例如第一交易允许写入的区块、关联关键字、交易对象和交易金额等,并在接收到第二客户端设备发送的关联交易的交易数据以及所述关联交易所在的第二区块链的标识后,若确定接收到的所述关联交易的交易数据以及所述关联交易所在的第二区块链的标识与所述第二交易的信息匹配,则生成交易请求。
步骤204中,第一节点对第一交易的本地有效性进行验证具体可包括对多种信息进行验证,例如验证第一交易的付款方在第一区块链中是否有足够的资产来支付,若是,则验证通过,否则验证不通过。本申请对本地有效性所验证的信息不做具体限定。
第一节点对第一交易的关联交易的第一关联有效性进行验证的验证结果包括验证通过和验证不通过。
具体来说,第一节点若确定所述第二区块链中包括所述允许写入的区块中的至少部分区块,则根据所述关联关键字,从所述第二区块链中包括的所述至少部分区块中获取具备所述关联关键字的交易的交易数据;第一节点验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据一致,则确定所述关联交易的第一关联有效性的验证结果为验证通过,若不一致,则确定所述关联交易的第一关联有效性的验证结果为验证不通过。
第一节点若确定所述第二区块链包括所述允许写入的区块中的部分区块,且根据所述关联关键字,未在所述第二区块链包括的所述部分区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第一关联有效性验证通过。
第一节点若确定所述第二区块链包括所述允许写入的区块中的全部区块,且根据所述关联关键字,未在所述第二区块链包括的所述全部区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第一关联有效性验证不通过。
上述所描述的关联交易的第一关联有效性的验证结果为验证通过或验证不通过的具体情形仅为本申请给出的示例性内容,本领域技术人员也可以在此基础上设置其它验证通过或验证不通过的情形,本申请对此不做限定。
需要说明的是,本申请对第一交易的本地有效性和关联交易的第一关联有效性的验证顺序不做具体限定,例如,第一节点可以先对第一交易的本地有效性验证进行验证,然后对第一交易的关联交易的第一关联有效性进行验证;或者,也可以先对第一交易的关联交易的第一关联有效性进行验证,然后对第一交易的本地有效性进行验证。
第一节点若确定所述第一交易的本地有效性和所述关联交易的第一关联有效性中任一项没有验证通过,则放弃将所述第一交易写入所述第一区块链。具体来说,若第一节点先对第一交易的本地有效性验证进行验证,验证不通过,则可以直接放弃将所述第一交易写入所述第一区块链,而无需再对第一交易的关联交易的第一关联有效性进行验证,从而节省处理资源。
步骤206中,本申请中,第一节点将第一交易写入第一区块链后,第一交易暂时性处于待关联状态。随后,第一节点可以根据第二关联有效性的验证结果来对第一交易的状态进行更新。
其中,第二关联有效性的验证结果包括验证通过、验证不通过和待定。
具体来说,验证通过的情形是指:
第一节点若确定所述第二区块链中包括所述允许写入的区块中的至少部分区块,则根据所述关联关键字,从所述第二区块链中包括的所述至少部分区块中获取具备所述关联关键字的交易的交易数据;所述第一节点验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据一致,则确定所述关联交易的第二关联有效性的验证结果为验证通过。
第一节点在第二关联有效性验证通过后,可将第一交易的状态由待关联更新为关联成功
验证不通过的情形是指:
第一节点若验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据不一致,则确定所述关联交易的第二关联有效性的验证结果为验证不通过;或者,
第一节点若确定所述第二区块链中包括所述允许写入的区块中的全部区块,且根据所述关联关键字,未在所述第二区块链包括的所述全部区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第二关联有效性的验证结果为验证不通过。
第一节点在第二关联有效性验证通过后,可将第一交易的状态由待关联更新为关联失败。
待定的情形是指:第一节点若确定所述第二区块链中包括所述允许写入的区块中的部分区块,且根据所述关联关键字,未在所述第二区块链包括的所述部分区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第二关联有效性的验证结果为待定。
第一节点在第二关联有效性验证的验证结果为待定后,可继续保持第一交易的状态为待关联,并等待第一区块链再次出现新区块时,对第一交易的状态进行更新。
上述所描述的关联交易的第二关联有效性的验证结果为验证通过、验证不通过或待定的具体情形仅为本申请给出的示例性内容,本领域技术人员也可以在此基础上设置其它验证通过、验证不通过或待定的情形,具体不做限定。可以理解的是,本领域技术人员也可以根据实际需要仅设置关联交易的第二关联有效性的验证结果为验证通过和验证不通过,本申请对此不做限定。
进一步地,本申请中,若第二关联有效性的验证结果为验证通过,则所述第一节点根据所述第一交易的交易金额,更新所述第一交易中的付款方和收款方在所述第一区块链中的资产。举个例子,用户A原有300个单位的资产,用户C原有200个单位的资产,第一交易为用户A支付给用户C100个单位的资产,则在第二关联有效性的验证通过后,第一节点将用户A的资产由原来的300个单位更新为200个单位,将用户C的资产由原来的200个单位更新为300个单位。
若所述第二关联有效性的验证结果为待定,则所述第一节点根据所述第一交易的交易金额,仅更新所述第一交易中的付款方在所述第一区块链中的资产。举个例子,用户A原有300个单位的资产,用户C原有200个单位的资产,第一交易为用户A支付给用户C100个单位的资产,由于第二关联有效性的验证结果为待定,则第一节点将用户A的资产由原来的300个单位更新为200个单位,而用户C的资产仍保持为原来的200个单位。
若所述第二关联有效性的验证结果为验证不通过,则所述第一节点在更新所述第一交易中的付款方和收款方在所述第一区块链中的资产时,无需考虑第一交易的影响。
上述内容对本申请进行了整体性描述,为更清楚地展示本申请跨链交易的整个过程,下面结合一个具体场景进行说明,该场景为用户A需要使用区块链1(即第一区块链)中的资产对区块链2(即第二区块链)中的用户B进行支付,用户A选择一个在区块链1和区块链2中都有资产的用户C作为中间人。其中,用户A通过客户端设备a与区块链1的节点进行通信,用户C通过客户端设备c与区块链1的节点进行通信。
图3为跨链交易的具体流程示意图。如图3所示,包括:
用户A和用户C通过交换信息确定两个相关联的交易(分别为交易1和交易2)的内容,其中,交易1为用户A发起的交易,交易2为用户C发起的交易。
步骤301a,用户A将确定出的两个相关联的交易的内容输入到客户端设备a;对于用户A来说,交易1为本交易,交易2为本交易的关联交易。客户端设备a根据用户A输入的两个相关联的交易的内容以及区块链1的格式要求生成初始交易请求1。
步骤301b,用户C将确定出的两个关联交易的内容输入到客户端设备c;对于用户C来说,交易2为本交易,交易1为本交易的关联交易。客户端设备c根据用户C输入的两个相关联的交易的内容以及区块链2的格式要求生成初始交易请求2。
步骤302,客户端设备a和客户端设备c分别将生成的初始交易请求发送给彼此,从而客户端设备a生成交易请求1,客户端设备c生成交易请求2。
步骤303a,客户端设备a向区块链1提交交易请求1,具体是指客户端设备a向区块链1中的某一节点(例如节点1)发送交易请求1,进而使得区块链1中各个节点均接收到交易请求1。
步骤303b,客户端设备c向区块链2提交交易请求2,具体是指客户端设备c向区块链2中的某一节点(例如节点2)发送交易请求2,进而使得区块链2中各个节点均接收到交易请求2。
步骤304a,区块链1的节点(具有共识功能)尝试将交易1的交易数据写入区块链1,对交易1进行本地有效性验证,对交易1的关联交易(交易2)进行第一关联有效性验证,并在均验证通过后,将交易1写入区块链1。
步骤304b,区块链2的节点(具有共识功能)尝试将交易2的交易数据写入区块链2,对交易2进行本地有效性验证,对交易2的关联交易(交易1)进行第一关联有效性验证,并在均验证通过后,将交易2写入区块链2。
步骤305a,若区块链1中出现新区块,则根据交易1的关联交易(交易2)的交易数据,对所述关联交易的第二关联有效性进行验证,并根据所述第二关联有效性的验证结果,更新所述交易1的状态。
步骤305b,若区块链2中出现新区块,则根据交易2的关联交易(交易1)的交易数据,对所述关联交易的第二关联有效性进行验证,并根据所述第二关联有效性的验证结果,更新所述交易2的状态。
需要说明的是,上述步骤编号仅为一种示例性说明,本申请对各个步骤的执行顺序不做具体限定,例如,上述步骤301a和步骤301b可以同时执行,也可以不同时执行。
根据上述内容可知,本申请中的跨链交易可包括以下几个阶段:(1)交易协商;(2)交易请求的生成,对应上述步骤301a、步骤301b和步骤302;(3)交易数据的写入,对应上述步骤304a,步骤304b;(4)交易状态的更新,对应上述步骤305a,步骤305b。
下面分别说明各个阶段。
(1)交易协商
用户A和用户C进行交易协商的实现方式有多种,例如通过通讯工具等。本申请对此不做限定。
(2)交易请求的生成
以客户端设备a生成交易请求1为例来说明步骤301a、步骤301b和步骤302中所涉及的交易请求的生成过程。参见图4,为交易请求的生成过程示意。
客户端设备a生成的初始交易请求1的字段如下:
下面对上述各个字段的含义进行解释。
Pay_from://交易1(本交易)的发起者(用户A)在区块链1中的地址;
Pay_to://交易1的支付目标(用户C)在区块链1中的地址;
Amount://交易1的支付金额;
valid_until_block_num:M//交易1只能在第M个区块之前写入,否则不写入;
valid_from_block_num:P//(可选)交易1会在区块链1的第P个区块后写入,P一般是交易发起时的区块链1的区块数目;
Corr_key://关联关键字,这是交易1被其它交易认作是关联交易的标识,给定的标识能够反映出交易1中的一些关键字段是否有变化;
Correlated_txs://列出交易1的关联交易的内容,关联交易可能是一个或者一个以上;
Tx1://在有一个以上关联交易存在时,本字段用于区分不同的关联交易,其中,Tx1可以是指第一个关联交易,Tx2可以是指第二个关联交易,以此类推;此处,由于交易1仅有一个关联交易(交易2),因此,Tx1即代表交易2;
corr_chain_name://交易2写入的区块链的标识,不为空说明交易1依赖某条区块链上的另一个交易;
Corr_key://交易2的关联关键字,这是其他关联交易将交易2认作是交易1的关联交易的依据;
expected_from_block_num:Q//(可选)区块链2的当前区块数目为Q,方便查询;
expected_until_block_num:N//交易2需要在区块链2的第N个区块之前写入;
expected_content_hash://交易2的交易内容的哈希值,防止欺诈;
需要说明的以下几点:第一,交易1的valid_until_block_num指交易1只能在区块链1的若干个区块之内被写入区块链1,一般是两个数字的和,M=m1+m2。其中,m1是区块链1目前的区块数目,m2指交易双方期望的交易1需要在区块链1的未来的m2个块之内写入。该字段的作用是防止交易的时间无限期变长,始终无法完成。如果交易1没有在要求的M块内写入,则M块后区块链1不会再写将交易1写入,区块链2上已经写入的交易2将不作为有效交易(假设已经交易2已经写入;如果区块链1在M块内没有交易1且交易2尚未写入区块链2,区块链2也不会考虑写入交易2)。
第二,交易的关联关键字,例如交易1的关联关键字,是其它交易辨识交易1的依据,关联关键字必须具备以下特点:如果content、valid_until_block_num、corr_chain_name有任何改动,能够体现出来;以及,必须保证在交易所处的区块链上是唯一的。现有技术中能够满足以上两点的实现方式有很多,其中一种实现的方式是:将content、valid_until_block_num、corr_chain_name以字符串加的形式连载一起,同时加上一个时间戳(可以是开始协商交易内容的时间,或其它,时间本身不重要,只要双方认可,时间是单调递增的,不同时间的时间戳可以保证corr_key唯一),把这些进行哈希,可以得到交易1的关联关键字。
客户端设备a生成的初始交易请求1中,有关交易1的字段(content、valid_until_block_num、valid_from_block_num、corr_chain_name和corr_key)是填写完整的,而有关交易2的字段(Correlated_txs.Tx1.Corr_key、expected_from_block_num、expected_until_block_num、expected_content_hash)处于待填状态;而客户端设备c生成的初始的交易请求2中,有关交易2的字段是填写完整的,而有关交易1的字段处于待填状态。
客户端设备a接收客户端设备c发送的已经填写完整的交易2的内容,填写所述初始交易请求1中有关交易2的字段,从而生成交易请求1;同样地,客户端设备c接收客户端设备a发送的已经填写完整的交易1的内容,填写所述初始交易请求2中有关交易1的内容,从而生成交易请求2。具体参见图4中的示意。
(3)交易数据的写入
下面对以将交易1写入区块链1为例对上述步骤304a、步骤304b中所涉及的交易的写入过程进行具体说明。
本申请中,区块链1的共识节点对交易请求1进行验证时,若发现其有correlated_txs字段且不为空,则确定交易1存在关联交易。共识节点对交易1的本地有效性进行验证,具体验证内容可参照现有技术,此处不再赘述,若交易1的本地有效性验证通过,则对关联交易(交易2)的第一关联有效性进行验证。
对交易2的第一关联有效性进行验证的具体过程包括:交易请求1中的Correlated_txs包含对交易1的关联交易的描述,由于交易1仅有一个关联交易,即交易2,因此,Correlated_txs中的第一条Tx1即为关于交易2的描述。
共识节点根据correlated_txs.Tx1.corr_chain_name查询区块链2的当前区块数目,若区块链2的当前区块数目大于等于N,此时,区块链2中包括交易2的全部允许写入的区块,则根据corr_key查询从第Q个区块到第N个区块之间的区块是否存在具备相同corr_key的交易,若不存在,则验证不通过,若存在,则获取具备相同corr_key的交易的交易数据(包括该允许写入的区块、关联关键字、交易对象和交易金额),并验证该交易数据与交易请求1中交易2的交易数据是否一致,若一致,则验证通过,否则验证不通过。
若区块链2当前区块数目(例如为N1)小于N,此时,区块链2中包括交易2的部分允许写入的区块,则根据corr_key查询从第Q个区块到第N1个区块之间的区块是否存在具备相同corr_key的交易,若不存在,则确定交易1是首先被写入的交易,可以写入,若存在,则获取具备相同corr_key的交易的交易数据,并验证该交易数据与交易请求1中交易2的交易数据是否一致,若一致,则验证通过,否则验证不通过。
其中,验证区块链2中具有相同corr_key的交易的交易数据与交易请求1中交易2的交易数据是否一致包括:对区块链2中具有相同corr_key的交易(为便于描述,将其称为交易2’)的各个字段进行检查。本申请中,能够获取交易2’本身就证实了交易2’的确是写在了交易2所要求的区块链上,同时也说明了交易2’的corr_key与交易2的corr_key相同,进一步还需要验证的字段包括:交易2’的content_hash与交易请求1中的correlated_txs.tx1.expected_content_hash是否一致;交易2’的valid_until_block_num与交易请求1中的correlated_txs.tx1.expected_until_block_num是否一致;交易2’的corr_key是否是按照约定的方式生成。这是为了防止后写入的交易故意欺骗自己所在的区块链,故要求交易2’本身携带的交易内容必须与交易请求1中的关联交易所要求的一样。
上述各个字段全部验证通过后,方可确定交易2的第一关联有效性验证通过,否则交易2的第一关联有效性验证失败,则交易1不能写入区块链1。
下面结合图5对将交易1写入区块链1的具体流程进行描述,如图5所示,包括:
步骤501,区块链1的节点验证交易1的本地有效性,验证的具体内容可包括多个方面,例如,交易1的发起者是否有足够的资产来发起所请求的交易、区块链1的当前区块数目是否已经大于M等。
步骤502,交易1的本地有效性是否验证通过,若验证通过,则执行步骤503,否则,执行步骤508;
步骤503,根据correlated_txs.Tx1.corr_chain_name查询区块链2的当前区块数目,若区块链2的当前区块数目大于等于N,若是,则执行步骤504,否则,执行步骤509;
步骤504,查询区块链2中第Q个区块至第N个区块之间的区块是否存在具备相同corr_key的交易,若是,则执行步骤505,否则,执行步骤508;
步骤505,从第Q个区块至第N个区块之间的区块获取具备相同corr_key的交易的交易数据并验证;
步骤506,该交易数据与交易请求1中交易2的交易数据是否一致,若一致,则执行步骤507,否则,执行步骤508;
步骤507,将交易1的交易数据写入区块链1;
步骤508,放弃将交易1写入区块链1;
步骤509,若区块链的当前区块数目为N1,则查询区块链2中第Q个区块至第N1个区块之间的区块是否存在具备相同corr_key的交易,若是,则执行步骤505,否则,执行步骤507。
需要说明的是,上述描述是以交易1具有一个关联交易为例,若交易1具有多个关联交易,则需要按照上述方式依次对多个关联交易进行第一关联有效性,并在多个关联交易均验证通过后,方可将交易1的交易数据写入区块链1。
本申请中,通过上述方式将交易1的交易数据写入区块链1,以及将交易2的交易数据写入区块链2之后,交易1和交易2均处于“写入待关联”状态。以区块链1为例,若区块链1中出现新区块,则可获取区块链1中“写入待关联”的各个交易(包括交易1),并对各个交易中的任一交易的关联交易的第二关联有效性进行验证,若验证通过,则该交易的状态更新为“写入关联成功”,若验证不通过,则该交易的状态可能继续保持“写入待关联”,等待下一次的更新,或者,也可能更新为“写入关联失败”。
(4)交易状态的更新
下面以区块链1为例对上述步骤305a、步骤305b中所涉及的交易状态的更新进行具体说明。图6为交易状态的更新流程示意图,如图6所示,包括:
步骤601,区块链1出现新区块;
步骤602,获取区块链1中所有“写入待关联”的交易,从这些交易中选取其中的一个(例如交易1),选中的交易1的关联交易为交易2,对交易2的第二关联有效性进行验证;
步骤603,检查区块链2的当前区块数目是否大于等于Q+N,若是,则执行步骤604,否则,执行步骤610;
步骤604,根据交易2的corr_key查询区块链2中从第Q个区块到第Q+N个区块之间的区块是否存在具备相同corr_key的交易,若是,则执行步骤605,否则,执行步骤606;
步骤605,从区块链2中获取具备相同corr_key的交易的交易数据,并验证该交易数据与交易请求1中交易2的交易数据的一致性;
步骤606,该交易数据与交易请求1中交易2的交易数据是否一致,若一致,则验证通过,执行步骤608,否则验证不通过,执行步骤607;
步骤607,由于交易2的第二关联有效性验证不通过,因此,确定交易1的状态为“写入关联失败”;
步骤608,由于交易2的第二关联有效性验证通过,因此,确定交易1的状态为“写入关联成功”;
步骤609,选取下一个“写入待关联”的交易进行更新;
步骤610,区块链2的当前区块数目小于Q+N,例如,当前区块数目为Q+N1,则根据交易2的corr_key查询区块链2中从第Q个区块到第Q+N1个区块之间的区块是否存在具备相同corr_key的交易,若是,则执行步骤606,否则,执行步骤611;
步骤611,判断交易1继续处于“写入待关联”,并执行步骤609。
图7为交易的各个状态示意图,如图7所示,以上述交易1为例,交易1尚未写入区块链1时,为待写入状态,若写入时交易1不满足写入条件,例如交易1的本地有效性验证不通过,或者交易1的关联交易(交易2)的第一关联有效性验证不通过,则区块链1放弃写入交易1;若写入时,交易1满足写入条件,则交易1成功写入区块链1中,此时状态为写入待关联;后续若区块链1出现新区块,则对交易1的状态进行更新,具体更新过程为:验证交易1的关联交易的第二关联有效性,若验证通过,则交易1的状态更新为写入关联成功,若交易1的关联交易不符合条件(未按要求写入,或者,写入的关联交易不符合要求),则交易的状态更新为写入关联失败。
本申请中,交易1和交易2全部写入后,由于区块链1和区块链2上的共识节点都可以查证到交易1和交易2的存在,所以区块链1和区块链2的所有共识节点会都认为交易1和交易2是“写入&关联成功”的状态,在计算各个交易对象(用户A、用户B、用户C)的资产时都会考虑交易1和交易2对他们资产的影响。
需要说明的是,本申请中,两个区块链中的用户需要直接进行资产交换的场景下,无需中间人(可以认为是用户A直接选择用户B作为“中间人”)。
综上可知,一方面,本申请中的跨链交易方法不需要第三方代管,不需要证明人,且完成一次跨链交易的交易数量为N+1,N为中间人的个数,相比于现有技术中的方案一和方案二,从而大大减少了交易数量,缩短了跨链交易的时间。
另一方面,本申请中的各个交易对象(例如用户A、用户C)在约定好交易内容后,可独立发起交易,彼此之间没有依赖关系;且,各个区块链中的交易均可以独立写入,最后一个完成的时刻,所有的相关联的交易生效(各个相关联的交易的状态均为关联成功),从而完成跨链支付。
实施例二
下面结合一个具体实施例对本申请进行说明。
该实施例的场景为:区块链1中的用户A希望向在区块链2中的用户B支付区块链2中的货币。其中,区块链1中的货币类型是Coin1,区块链2中的货币类型是Coin2。用户A找到在区块链1和区块链2中都有资产的用户C作为中间人,交易开始前,各角色的资产情况如表1所示。
表1:交易前,用户A、用户B、用户C的资产情况
用户 | 区块链1 | 区块链2 |
用户A | 300Coin1 | NA(无) |
用户B | NA | 10Coin2 |
用户C | 500Coin1 | 300Coin2 |
区块链1和区块链2的基本信息如表2所示。
表2:区块链1和区块链2的基本信息
内部货币 | 当前块数 | 平均生成块时间 | |
区块链1 | Coin1 | #105 | 3min |
区块链2 | Coin2 | #221 | 5min |
具体流程如下:
(1)交易协商
区块链1中用户A答应区块链2中用户B在区块链2中向B支付100个Coin2,用户A与用户C(中间人)协商:用户A需要给用户C 200个Coin1(称为交易1),并由用户C在区块链2中给用户B 100个Coin2(称为交易2),此时,交易1和交易2为相互关联的两笔交易;双方希望两笔交易最晚在45分钟内出现在各自账本中,否则交易作废。
交易1:区块链1中用户A给用户C 200个Coin1,其中,用户A在区块链1中的地址是1BQThbm9JN6jQ1pfTXMzWDZgyJmEziBb6b,用户C在区块链1中的地址是14w8DF8EaS9mhnTt1hBJYfSqZpW8ncV3Fx。
交易2:区块链2中用户C给用户B 100个Coin2,其中,用户C在区块链2中的地址是13jJkXG5gzKSuiXcreEQoMK8qdFTABweHt,用户B在区块链2的地址是1CR1gETYb53GY8hJ86sK9S1ciVVT2vDvQi。
本申请中,用户在区块链中的地址可由用户的公钥来确定。
根据表2的内容可知,区块链1的目前区块为#105,区块的平均生成时间为3分钟,由此可知,用户A发起的交易1需要在#106-#121之间写入;区块链2的目前区块为#221,区块的平均生成时间为5分钟,用户C发起的交易2需要在#222-#231块之间写入。
(2)交易请求的生成
根据交易金额和交易对象,客户端设备a和客户端设备c分别生成初始交易请求1、初始交易请求2,其中,初始交易请求中包括填写完整的内容,为叙述方便,此处成为交易信息Part-1。以客户端设备a为例,需要按照区块链1对交易格式的要求确定如下字段:
需要说明的是:客户端设备a生成的初始交易请求1中还没有交易1的标识(identification,ID)(在提交到区块链1后才有交易ID),为叙述方便,称为交易1。
“待填”的部分需要等到客户端设备c把客户端设备c负责的交易内容发来才能填写完整。
Corr_key通过对以下内容进行SHA256得到(引号以内的,不包括引号):
“
Content:
Pay_from:1BQThbm9JN6jQ1pfTXMzWDZgyJmEziBb6b
Pay_to:1CR1gETYb53GY8hJ86sK9S1ciVVT2vDvQi
Amount:200Coin1
Valid_from_block_num:106
Valid_until_block_num:121
Time:201612011520
Correlated_txs:
Tx1:
Corr_chain_name:区块链2
”
同样地,客户端设备c也需要按照区块链2对交易格式的要求生成初始交易请求2,初始交易请求2中包括与交易1关联的交易2(此处为叙述方便称其为交易2)的交易信息Part-1。初始交易请求2的内容如下:
同样地,客户端设备c生成的初始交易请求2中还没有交易2的ID(在提交到区块链2后才有交易ID),为叙述方便,称为交易2。
“待填”的部分需要等到客户端设备a把客户端设备a负责的交易内容发来才能填写完整。
Corr_key通过对以下内容进行SHA256得到:
客户端设备a将生成的交易1的交易信息Part-1发送给客户端设备c,客户端设备c接收并校验,从而填写完整待填部分的内容,生成交易请求2;客户端设备c将生成的交易2的交易信息Part-1发送给客户端设备a,客户端设备a接收并检验,从而填写完整待填部分的内容,生成交易请求1。
具体地,以客户端设备a生成交易请求1为例,在接收到客户端设备c发来的交易2的交易信息Part-1后,校验以下内容:
交易2的Content是否与约定一致:付款人、收款人以及交易金额;
交易2的valid_until_block_num是否和约定的一致(#222);
交易2的valid_from_block_num是否和约定的一致(#231);
交易2的Corr_chain_name适合和约定的一致(区块链1);
交易2的Corr_key是否是按照约定生成的。
如果以上校验都通过,客户端设备a可以根据客户端设备c发来的交易2的交易信息的Part-1来完善初始交易请求1,生成交易请求1,如下:
其中,Expected_content_hash是对交易2的Content的Hash:
SHA256(
Content:
Pay_from:13jJkXG5gzKSuiXcreEQoMK8qdFTABweHt
Pay_to:14w8DF8EaS9mhnTt1hBJYfSqZpW8ncV3Fx
Amount:100Coin2
)=1fcdf28899745ba0c4b695631b02ca9fadaa414e1c05ad5284e48ca9be32cf37
同样地,客户端设备c也在收到客户端设备a发来的交易1的交易信息Part-1后完善初始交易请求2,生成交易请求2,如下:
其中,Expected_content_hash是对Tx1的Content的Hash:
SHA256(
Content:
Pay_from:1BQThbm9JN6jQ1pfTXMzWDZgyJmEziBb6b
Pay_to:14w8DF8EaS9mhnTt1hBJYfSqZpW8ncV3Fx
Amount:200Coin1
)=9153b898d5196329f3264c013622a9b401ac7ff3b2c931f73d2c68343ad81d93
(3)交易数据的写入
客户端设备a使用用户A的私钥对交易请求1进行签名,并向区块链1提交交易请求1;客户端设备c使用用户C的私钥对交易请求2进行签名,并向区块链2提交交易请求2。
区块链1和区块链2中的节点(具有共识功能的节点)在接收到交易请求1和交易请求2之后,会尝试将交易1的交易数据和交易2的交易数据写入各自的账本。这里,我们以交易1的交易数据在区块链1的#110块写入,而交易2的交易数据在区块链2的#229块写入为例来进行说明。假设区块链1使用基于PoW的共识机制,区块链2使用基于PBFT的共识机制。
在区块链1出现#109块时,矿工M在构建#110块的内容时,计划将交易1纳入到自己的预备区块中,但需要首先检查Tx1的有效性,步骤如下:
交易1的本地有效性验证:在区块链1中,矿工M首先要检查交易1的付款方(即用户A)是否有足够支付的资产。根据上述描述,用户A在区块链1中有300Coin1,足够交易1中要求花费的金额。另外,交易1要求在#106-#121之间写入,目前构建的是#110块,符合要求。因此,交易1的本地有效性验证通过。
交易1的关联交易的第一关联有效性验证:首先,矿工M根据交易请求1中的内容得知交易1所关联的交易2在区块链2上,并需要在#222-#231块之间写入。矿工M查询区块链2的进展情况,此时区块链2进行到#225块,仍在交易2的允许写入时间窗之内。实际上,即使区块链2超过了,#231块,也需要查找交易1是否存在,如果不存在,直接判定验证失败。根据与区块链2的交流协议,矿工M查询区块链2在#222块到目前的块之间是否有任何交易其Corr_key为7fa379a83ef343c2c7379bd907c947d9cd5136d677b7714cde67b63d539ee176。查询结果是没有,则按照约定,视交易1为关联交易中首先写入的交易。
经过上述验证后,矿工M成功找到了自己准备的#110的PoW,发布到区块链1网络中,并且被区块链1网络中的其它校验节点接受(其它节点在接受M提出的#110时,除了验证PoW的有效性,还需要验证#110中所有的交易,包括交易1的有效性。验证的方式与矿工M验证的方式相同)。此时,交易1正式随着#110块写入区块链1。
需要说明的是,从交易1随着#110块写入区块链1开始,直到区块链2进行到#231块之前,交易1都是“写入&待关联”状态,即区块链1中所有的共识节点在计算用户A的资产时,都会将交易1中用户A支付的200Coin1考虑进来,用户A在此期间的余额为300-200=100Coin1(假设用户A此间没有其它收入)。同时,区块链2中的验证节点,由于没有在现有区块(#228块以及该块以前)中看到任何交易,依然认为用户C拥有500Coin2。
接下来,交易2写入区块链2。当区块链2形成#228块后,整个系统开始计划产生#229块。区块链2使用PBFT共识规则。PBFT是基于投票的共识制度,简单说,首先由其中一个投票者提议一个区块的内容,其它投票者通过多阶段投票决定该区块的有效性。参与区块链2的PBFT共识投票的节点共有4个,分别为甲、乙、丙、丁。此时,丙负责提议#229块,丙把包括交易2在内的一些交易纳入到丙准备的候选区块#229中。在正式纳入之前,丙需要验证交易2的有效性,与上述验证交易1的有效性类似,包括本地有效验证和关联交易的第一关联有效性验证两个部分,具体如下。
交易2的本地有效性验证:在区块链2中,丙首先要检查交易2中的付款方(用户C)是否有足够支付的资产。根据上述描述,用户C在区块链2中有300Coin2,足够交易2中要求支付的金额。另外,交易2要求在#222#231之间写入,目前构建的是#229块,符合要求。因此,交易2的本地有效性验证通过。
交易2的关联交易的第一关联有效性验证:首先,丙根据交易请求2中的信息得知交易2所关联的交易1在区块链1上,并需要在#106-#121块之间写入。丙查询区块链1的进展情况,此时区块链2进行到#120块,仍在交易1的允许写入时间窗之内。实际上,即使区块链1超过了#121块,也需要查找交易1是否存在,如果不存在,直接判定验证失败。根据与区块链1的交流协议,查询区块链1在#222块到目前的块之间是否有任何交易其Corr_key为f9b5d505070d1500b35d932452dd1775838edc7e1017d34d09491b65e5ed74df。查询结果是存在,且在#110块上。则丙获得#110块的全部内容,取得交易1的交易数据。比较交易1写入账本的交易数据是否与交易请求2中对交易1的要求一致,具体地:
交易1中的Content的hash是否交易2中要求的交易1的content的Hash一致:付款人、收款人以及数额;
交易1的Corr_key的产生方式是否与约定的一致(同时校验content、valid_until_block、valid_from_block、Corr_chain_name);
交易1的valid_until_block_num是否和约定的一致(#106);
交易1的valid_from_block_num是否和约定的一致(#121);
交易1的Corr_chain_name适合和约定的一致(区块链2);
交易2的Corr_key的产生方式是否与约定的一致(同时校验content、valid_until_block、valid_from_block、Corr_chain_name);
交易2的Content_hash是否与交易1的expected_content_hash一致。
以上验证全部通过后,丙认为交易2是合法的交易,可以放入候选区块#229中。丙向区块链2网络中提交了#229,经过甲乙丙丁四方的三阶段投票(PBFT为现有技术,不再解释),4个共识节点共同接受包含了交易2的#229块作为区块链2的最新区块。于是,交易2随着#229正式写入区块链2。
至此,两笔关联交易全部写入。
(4)交易状态的更新
下面总结交易1和交易2的状态,以及用户A、用户B、用户C的资产情况。
由于区块链1和区块链2上的共识节点都可以查证到交易1和交易2的存在,所以区块链1和区块链2的所有共识节点会都认为交易1和交易2是“写入&关联成功”的状态,在计算用户A、B、C的资产时都会考虑交易1和交易2对他们资产的影响。具体地:
用户A:
区块链1:在交易1中支出了200Coin1,余额为300-200=100Coin1
区块链2:无资产(NA)
用户C:
区块链1:在交易1中收入了200Coin1,余额为500+200=700Coin1
区块链2:在交易2中支出了100Coin1,余额为300–100=200Coin2
用户B:
区块链1:无资产(NA)
区块链2:在交易2中收入了100Coin1,余额为20+100=120Coin2
本实施例结束。
需要说明的是:
(1)如果交易1在#109块成功写入区块链1,而交易2始终没有成功写入区块链2,则区块链1中的共识节点在区块链2中直到#232块产生后都没有发现交易2写入,则将在区块链1中统计用户A和用户C的资产时不考虑交易1,即:
区块链1#109块以后~区块链2#232块以前:
区块链1
用户A:交易1的支出需要考虑,余额300-200=100Coin1
用户C:交易1的收入不考虑,余额依旧是500Coin1
区块链2中没有交易2,用户C和用户B的资产不会受到交易2的影响。
区块链2#232块以后:
区块链1
用户A:交易1的指出不考虑,余额依旧是300Coin1
用户C:交易1的收入不考虑,余额依旧是500Coin1
区块链2中没有交易2,用户C和用户B的资产不会收到交易2影响。
(2)如果用户C在区块链2中没有按照与用户A的约定提交交易2,例如将支付的金额改为50Coin2,则区块链2的校验节点验证交易2时,会发现交易2的Content_hash与在区块链1中的保存的交易1中保存的Expected_content_hash不一致,因此会判定交易2非法,放弃写入区块链2,从而有效防止了用户C的欺骗行为(拜占庭行为)对交易造成破坏。反之,如果用户A试图以与约定不同的方式在区块链1中提交交易1,首先写入的区块链1中的验证者不会发现交易1的欺骗行为,但此时由于交易2尚未写入,交易1处于“写入&待关联”状态。在区块链2的验证者在试图写入交易2时,会发现区块链1已经写入的交易1与交易2中要求的不同,拒绝交易2写入。交易2不会进入区块链2,对区块链2不会造成影响。而区块链1中的验证者在等到区块链2到达#232块以后,得知交易2没有在交易1要求的写入时间内写入账本,交易1事实上处于“写入&关联失败”的状态,即在考虑用户A和用户C的资产是都不会考虑交易1,则交易1的写入并未对区块链1中各用户的资产状态产生影响,唯一的副作用是交易1永久的占据了#109中一个交易的位置。
针对上述方法流程,本申请还提供一种服务器和客户端设备,该装置的具体实现可参照上述方法。
本申请提供一种服务器,该服务器用于实现图2和图3所示方法实施例中的相应流程或者步骤。参阅图8所示,服务器800可以包括:收发模块801、处理模块802和存储模块803;
所述存储模块803,用于维护第一区块链;
所述收发模块801,用于接收第一客户端设备发送的交易请求;所述交易请求中包括第一交易的交易数据、所述第一交易的关联交易的交易数据以及所述关联交易写入的第二区块链的标识;所述交易请求用于请求将所述第一交易的交易数据写入所述第一区块链;
所述处理模块802,用于根据所述第一交易的交易数据,对所述第一交易的本地有效性进行验证,以及根据所述第二区块链的标识,查询所述第二区块链,对所述关联交易的第一关联有效性进行验证;在所述第一交易的本地有效性和所述关联交易的第一关联有效性均验证通过后,将所述第一交易写入所述第一区块链;
所述处理模块802,还用于若确定所述第一区块链中出现新区块,则根据所述关联交易的交易数据,对所述关联交易的第二关联有效性进行验证,并根据所述第二关联有效性的验证结果,更新所述第一交易的状态。
在一种可能的设计中,所述关联交易的交易数据包括所述关联交易允许写入的区块、关联关键字、交易对象和交易金额;
所述处理模块802具体用于:
若确定所述第二区块链中包括所述允许写入的区块中的至少部分区块,则根据所述关联关键字,从所述第二区块链中包括的所述至少部分区块中获取具备所述关联关键字的交易的交易数据;
验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据一致,则确定所述关联交易的第一关联有效性的验证结果为验证通过。
在一种可能的设计中,所述处理模块802具体用于:
若确定所述第二区块链包括所述允许写入的区块中的部分区块,且根据所述关联关键字,未在所述第二区块链包括的所述部分区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第一关联有效性验证通过。
在一种可能的设计中,所述处理模块802还用于:
若确定所述第一交易的本地有效性和所述关联交易的第一关联有效性中任一项没有验证通过,则放弃将所述第一交易写入所述第一区块链。
在一种可能的设计中,所述第二关联有效性的验证结果包括验证通过、验证不通过和待定;
所述处理模块802具体用于:
若所述第二关联有效性的验证结果为验证通过,则更新所述第一交易的状态为关联成功;
若所述第二关联有效性的验证结果为验证不通过,则更新所述第一交易的状态为关联失败;
若所述第二关联有效性的验证结果为待定,则更新所述第一交易的状态为待关联。
在一种可能的设计中,所述处理模块802还用于:
若所述第二关联有效性的验证结果为验证通过,则根据所述第一交易的交易金额,更新所述第一交易中的付款方和收款方在所述第一区块链中的资产;
若所述第二关联有效性的验证结果为待定,则根据所述第一交易的交易金额,仅更新所述第一交易中的付款方在所述第一区块链中的资产。
在一种可能的设计中,所述关联交易的交易数据包括所述关联交易允许写入的区块、关联关键字、交易对象和交易金额;
所述处理模块802具体用于:
若确定所述第二区块链中包括所述允许写入的区块中的至少部分区块,则根据所述关联关键字,从所述第二区块链中包括的所述至少部分区块中获取具备所述关联关键字的交易的交易数据;
验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据一致,则确定所述关联交易的第二关联有效性的验证结果为验证通过。
在一种可能的设计中,所述处理模块802具体用于:
若验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据不一致,则确定所述关联交易的第二关联有效性的验证结果为验证不通过;或者,
若确定所述第二区块链中包括所述允许写入的区块中的全部区块,且根据所述关联关键字,未在所述第二区块链包括的所述全部区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第二关联有效性的验证结果为验证不通过。
在一种可能的设计中,所述处理模块802具体用于:
若确定所述第二区块链中包括所述允许写入的区块中的部分区块,且根据所述关联关键字,未在所述第二区块链包括的所述部分区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第二关联有效性的验证结果为待定。
本申请提供一种客户端设备,该客户端设备用于实现图2和图3所示方法实施例中的相应流程或者步骤。参阅图9所示,客户端设备900可以包括:收发模块901、处理模块902;具体来说:
所述处理模块902,用于生成交易请求;所述交易请求中包括第一交易的交易数据、所述第一交易的关联交易的交易数据以及所述关联交易所在的第二区块链的标识;
所述收发模块901,用于向第一节点发送所述交易请求;所述第一节点维护第一区块链;所述交易请求用于请求将所述第一交易的交易数据写入所述第一区块链。
在一种可能的设计中,所述收发模块901,还用于接收用户输入的第一交易的信息和第二交易的信息;以及,接收第二客户端设备发送的所述关联交易的交易数据以及所述关联交易所在的第二区块链的标识;
所述处理模块902具体用于:根据所述第一交易的信息生成所述第一交易的交易数据;以及,确定接收到的所述关联交易的交易数据以及所述关联交易所在的第二区块链的标识与所述第二交易的信息匹配后,生成所述交易请求。
需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供一种服务器,用于实现图2和图3所示方法实施例中的相应流程或者步骤。该服务器具有实现上述图8所示的服务器800的功能;如图10所示,通信装置1000包括:通信模块1001、处理器1002;
所述通信模块1001,用于与其他设备进行通信交互;所述通信模块1001可以为RF电路、WiFi模块、通信接口、蓝牙模块等;
所述处理器1002,用于实现上述图8中处理模块的功能。
可选的,通信装置还可以包括:所述存储器1004,用于存放程序等。具体地,程序可以包括程序代码,该程序代码包括指令。存储器1004可能包含RAM,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。处理器1002执行存储器1004所存放的应用程序,实现上述功能。
一种可能的方式中,通信模块1001、处理器1002和存储器1004可以通过所述总线1003相互连接;总线1003可以是外设部件互连标准(peripheral componentinterconnect,PCI)总线或扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。所述总线1003可以分为地址总线、数据总线、控制总线等。
本申请还提供一种客户端设备,用于实现图2和图3所示方法实施例中的相应流程或者步骤。该客户端设备具有实现上述图9所示的客户端设备900的功能;如图11所示,客户端设备1100包括:通信模块1101、处理器1102;
所述通信模块1101,用于与其他设备进行通信交互;所述通信模块1101可以为RF电路、WiFi模块、通信接口、蓝牙模块等;
所述处理器1102,用于实现上述图9中处理模块的功能。
可选的,通信装置还可以包括:所述存储器1104,用于存放程序等。具体地,程序可以包括程序代码,该程序代码包括指令。存储器1104可能包含RAM,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。处理器1102执行存储器1104所存放的应用程序,实现上述功能。
一种可能的方式中,通信模块1101、处理器1102和存储器1104可以通过所述总线1103相互连接;总线1103可以是外设部件互连标准(peripheral componentinterconnect,PCI)总线或扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。所述总线1103可以分为地址总线、数据总线、控制总线等。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (21)
1.一种跨链交易方法,其特征在于,所述方法包括:
第一节点接收第一客户端设备发送的交易请求;所述第一节点维护第一区块链;所述交易请求中包括第一交易的交易数据、所述第一交易的关联交易的交易数据以及所述关联交易写入的第二区块链的标识;所述交易请求用于请求将所述第一交易的交易数据写入所述第一区块链;
所述第一节点根据所述第一交易的交易数据,对所述第一交易的本地有效性进行验证,以及根据所述第二区块链的标识,查询所述第二区块链,对所述关联交易的第一关联有效性进行验证;
所述第一节点在所述第一交易的本地有效性和所述关联交易的第一关联有效性均验证通过后,将所述第一交易写入所述第一区块链;
所述第一节点若确定所述第一区块链中出现新区块,则根据所述关联交易的交易数据,对所述关联交易的第二关联有效性进行验证,并根据所述第二关联有效性的验证结果,更新所述第一交易的状态。
2.根据权利要求1所述的方法,其特征在于,所述关联交易的交易数据包括所述关联交易允许写入的区块、关联关键字、交易对象和交易金额;
所述第一节点查询所述第二区块链,对所述关联交易的第一关联有效性进行验证,包括:
所述第一节点若确定所述第二区块链中包括所述允许写入的区块中的至少部分区块,则根据所述关联关键字,从所述第二区块链中包括的所述至少部分区块中获取具备所述关联关键字的交易的交易数据;
所述第一节点验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据一致,则确定所述关联交易的第一关联有效性的验证结果为验证通过。
3.根据权利要求2所述的方法,其特征在于,所述第一节点查询所述第二区块链,对所述关联交易的第一关联有效性进行验证,包括:
所述第一节点若确定所述第二区块链包括所述允许写入的区块中的部分区块,且根据所述关联关键字,未在所述第二区块链包括的所述部分区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第一关联有效性验证通过。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
所述第一节点若确定所述第一交易的本地有效性和所述关联交易的第一关联有效性中任一项没有验证通过,则放弃将所述第一交易写入所述第一区块链。
5.根据权利要求1所述的方法,其特征在于,所述第二关联有效性的验证结果包括验证通过、验证不通过和待定;
所述第一节点根据所述第二关联有效性的验证结果,更新所述第一交易的状态,包括:
若所述第二关联有效性的验证结果为验证通过,则更新所述第一交易的状态为关联成功;
若所述第二关联有效性的验证结果为验证不通过,则更新所述第一交易的状态为关联失败;
若所述第二关联有效性的验证结果为待定,则更新所述第一交易的状态为待关联。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述第二关联有效性的验证结果为验证通过,则所述第一节点根据所述第一交易的交易金额,更新所述第一交易中的付款方和收款方在所述第一区块链中的资产;
若所述第二关联有效性的验证结果为待定,则所述第一节点根据所述第一交易的交易金额,仅更新所述第一交易中的付款方在所述第一区块链中的资产。
7.根据权利要求5所述的方法,其特征在于,所述关联交易的交易数据包括所述关联交易允许写入的区块、关联关键字、交易对象和交易金额;
所述第一节点对所述关联交易的第二关联有效性进行验证,所述第二关联有效性进行验证的验证结果为验证通过,包括:
所述第一节点若确定所述第二区块链中包括所述允许写入的区块中的至少部分区块,则根据所述关联关键字,从所述第二区块链中包括的所述至少部分区块中获取具备所述关联关键字的交易的交易数据;
所述第一节点验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据一致,则确定所述关联交易的第二关联有效性的验证结果为验证通过。
8.根据权利要求7所述的方法,其特征在于,所述第一节点对所述关联交易的第二关联有效性进行验证,所述第二关联有效性进行验证的验证结果为验证不通过,包括:
所述第一节点若验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据不一致,则确定所述关联交易的第二关联有效性的验证结果为验证不通过;或者,
所述第一节点若确定所述第二区块链中包括所述允许写入的区块中的全部区块,且根据所述关联关键字,未在所述第二区块链包括的所述全部区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第二关联有效性的验证结果为验证不通过。
9.根据权利要求7所述的方法,其特征在于,所述第一节点对所述关联交易的第二关联有效性进行验证,所述第二关联有效性进行验证的验证结果为待定,包括:
所述第一节点若确定所述第二区块链中包括所述允许写入的区块中的部分区块,且根据所述关联关键字,未在所述第二区块链包括的所述部分区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第二关联有效性的验证结果为待定。
10.一种跨链交易方法,其特征在于,所述方法包括:
第一客户端设备接收用户输入的第一交易的信息和第二交易的信息;
所述第一客户端设备根据所述第一交易的信息生成所述第一交易的交易数据;
所述第一客户端设备接收第二客户端设备发送的所述第一交易的关联交易的交易数据以及所述关联交易所在的第二区块链的标识;
所述第一客户端设备确定接收到的所述关联交易的交易数据以及所述关联交易所在的第二区块链的标识与所述第二交易的信息匹配后,生成交易请求;所述交易请求中包括所述第一交易的交易数据、所述关联交易的交易数据以及所述关联交易所在的第二区块链的标识;
所述第一客户端设备向第一节点发送所述交易请求;所述第一节点维护第一区块链;所述交易请求用于请求将所述第一交易的交易数据写入所述第一区块链。
11.一种服务器,其特征在于,所述服务器包括:收发模块、处理模块和存储模块;
所述存储模块,用于维护第一区块链;
所述收发 模块,用于接收第一客户端设备发送的交易请求;所述交易请求中包括第一交易的交易数据、所述第一交易的关联交易的交易数据以及所述关联交易写入的第二区块链的标识;所述交易请求用于请求将所述第一交易的交易数据写入所述第一区块链;
所述处理模块,用于根据所述第一交易的交易数据,对所述第一交易的本地有效性进行验证,以及根据所述第二区块链的标识,查询所述第二区块链,对所述关联交易的第一关联有效性进行验证;在所述第一交易的本地有效性和所述关联交易的第一关联有效性均验证通过后,将所述第一交易写入所述第一区块链;
所述处理模块,还用于若确定所述第一区块链中出现新区块,则根据所述关联交易的交易数据,对所述关联交易的第二关联有效性进行验证,并根据所述第二关联有效性的验证结果,更新所述第一交易的状态。
12.根据权利要求11所述的服务器,其特征在于,所述关联交易的交易数据包括所述关联交易允许写入的区块、关联关键字、交易对象和交易金额;
所述处理模块具体用于:
若确定所述第二区块链中包括所述允许写入的区块中的至少部分区块,则根据所述关联关键字,从所述第二区块链中包括的所述至少部分区块中获取具备所述关联关键字的交易的交易数据;
验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据一致,则确定所述关联交易的第一关联有效性的验证结果为验证通过。
13.根据权利要求12所述的服务器,其特征在于,所述处理模块具体用于若确定所述第二区块链包括所述允许写入的区块中的部分区块,且根据所述关联关键字,未在所述第二区块链包括的所述部分区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第一关联有效性验证通过。
14.根据权利要求11至13中任一项所述的服务器,其特征在于,所述处理模块还用于:
若确定所述第一交易的本地有效性和所述关联交易的第一关联有效性中任一项没有验证通过,则放弃将所述第一交易写入所述第一区块链。
15.根据权利要求11所述的服务器,其特征在于,所述第二关联有效性的验证结果包括验证通过、验证不通过和待定;
所述处理模块具体用于:
若所述第二关联有效性的验证结果为验证通过,则更新所述第一交易的状态为关联成功;
若所述第二关联有效性的验证结果为验证不通过,则更新所述第一交易的状态为关联失败;
若所述第二关联有效性的验证结果为待定,则更新所述第一交易的状态为待关联。
16.根据权利要求15所述的服务器,其特征在于,所述处理模块还用于:
若所述第二关联有效性的验证结果为验证通过,则根据所述第一交易的交易金额,更新所述第一交易中的付款方和收款方在所述第一区块链中的资产;
若所述第二关联有效性的验证结果为待定,则根据所述第一交易的交易金额,仅更新所述第一交易中的付款方在所述第一区块链中的资产。
17.根据权利要求15所述的服务器,其特征在于,所述关联交易的交易数据包括所述关联交易允许写入的区块、关联关键字、交易对象和交易金额;
所述处理模块具体用于:
若确定所述第二区块链中包括所述允许写入的区块中的至少部分区块,则根据所述关联关键字,从所述第二区块链中包括的所述至少部分区块中获取具备所述关联关键字的交易的交易数据;
验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据一致,则确定所述关联交易的第二关联有效性的验证结果为验证通过。
18.根据权利要求17所述的服务器,其特征在于,所述处理模块具体用于:
若验证具备所述关联关键字的交易的交易数据与所述交易请求中所述关联交易的交易数据不一致,则确定所述关联交易的第二关联有效性的验证结果为验证不通过;或者,
若确定所述第二区块链中包括所述允许写入的区块中的全部区块,且根据所述关联关键字,未在所述第二区块链包括的所述全部区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第二关联有效性的验证结果为验证不通过。
19.根据权利要求17所述的服务器,其特征在于,所述处理模块具体用于:
若确定所述第二区块链中包括所述允许写入的区块中的部分区块,且根据所述关联关键字,未在所述第二区块链包括的所述部分区块中查询到具备所述关联关键字的交易,则确定所述关联交易的第二关联有效性的验证结果为待定。
20.一种客户端设备,其特征在于,所述客户端设备包括:收发模块、处理模块;
所述收发模块,用于接收用户输入的第一交易的信息和第二交易的信息;以及,接收第二客户端设备发送的所述第一交易的关联交易的交易数据以及所述关联交易所在的第二区块链的标识;
所述处理模块,用于根据所述第一交易的信息生成所述第一交易的交易数据;以及,确定接收到的所述关联交易的交易数据以及所述关联交易所在的第二区块链的标识与所述第二交易的信息匹配后,生成交易请求;所述交易请求中包括所述第一交易的交易数据、所述关联交易的交易数据以及所述关联交易所在的第二区块链的标识;
所述收发模块,还用于向第一节点发送所述交易请求;所述第一节点维护第一区块链;所述交易请求用于请求将所述第一交易的交易数据写入所述第一区块链。
21.一种计算机可读存储介质,其特征在于,所述存储介质存储有指令,当所述指令在计算机上运行时,使得计算机实现执行权利要求1-10中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710527939.7A CN109214818B (zh) | 2017-06-30 | 2017-06-30 | 一种跨链交易方法及装置 |
PCT/CN2018/085753 WO2019001141A1 (zh) | 2017-06-30 | 2018-05-05 | 一种跨链交易方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710527939.7A CN109214818B (zh) | 2017-06-30 | 2017-06-30 | 一种跨链交易方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109214818A CN109214818A (zh) | 2019-01-15 |
CN109214818B true CN109214818B (zh) | 2021-06-15 |
Family
ID=64740990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710527939.7A Active CN109214818B (zh) | 2017-06-30 | 2017-06-30 | 一种跨链交易方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109214818B (zh) |
WO (1) | WO2019001141A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008716B (zh) * | 2019-02-01 | 2020-12-11 | 创新先进技术有限公司 | 区块链交易方法及装置、电子设备、存储介质 |
CN109919691B (zh) * | 2019-02-27 | 2021-06-08 | 腾讯科技(深圳)有限公司 | 一种数据处理的系统、方法以及装置 |
CN109993531B (zh) * | 2019-04-01 | 2023-07-28 | 辽宁大学 | 一种支持跨区块链交易的数据验证方法 |
KR102191803B1 (ko) * | 2019-05-31 | 2020-12-16 | 주식회사 엠티에스컴퍼니 | 블록체인에 의한 행위정보 증명 방법 |
CN110428332A (zh) * | 2019-07-29 | 2019-11-08 | 杭州复杂美科技有限公司 | 一种平行链跨链交易方法、设备和存储介质 |
CN110532801A (zh) * | 2019-08-29 | 2019-12-03 | 深圳市网心科技有限公司 | 基于多区块链间的通信方法、装置、客户端及存储介质 |
CN111008206A (zh) * | 2019-11-21 | 2020-04-14 | 深圳壹账通智能科技有限公司 | 跨链交易的状态数据的存储方法、装置及存储介质 |
CN111008840B (zh) * | 2020-03-05 | 2020-07-31 | 支付宝(杭州)信息技术有限公司 | 一种业务处理系统、业务处理的方法、装置及设备 |
CN116582272A (zh) * | 2020-04-21 | 2023-08-11 | 杭州趣链科技有限公司 | 一种对Fabric复杂背书策略在跨链中验证的方法 |
CN111582845A (zh) * | 2020-04-30 | 2020-08-25 | 北京金山云网络技术有限公司 | 区块链的跨链交易方法、装置以及电子设备 |
SG10202006466YA (en) | 2020-07-03 | 2021-05-28 | Alipay Labs Singapore Pte Ltd | Managing transactions in multiple blockchain networks |
SG10202006447VA (en) | 2020-07-03 | 2021-04-29 | Alipay Labs Singapore Pte Ltd | Managing transactions in multiple blockchain networks |
SG10202006451QA (en) | 2020-07-03 | 2021-02-25 | Alipay Labs Singapore Pte Ltd | Managing transactions in multiple blockchain networks |
US12020241B1 (en) | 2020-08-06 | 2024-06-25 | Citibank, N.A. | Systems and methods for multi-entity blockchain-based event break prevention |
US11645650B1 (en) * | 2020-08-06 | 2023-05-09 | Citibank, N.A. | Systems and methods for blockchain-based transaction break prevention |
CN112102082A (zh) * | 2020-08-24 | 2020-12-18 | 深圳区块大陆科技有限公司 | 一种判定区块链交易执行结果的方法 |
CN112085504B (zh) * | 2020-11-16 | 2021-02-09 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN112235110B (zh) * | 2020-12-14 | 2021-03-23 | 支付宝(杭州)信息技术有限公司 | 区块链的跨链业务处理方法、装置及电子设备 |
CN113436017B (zh) * | 2021-07-07 | 2022-06-21 | 支付宝(杭州)信息技术有限公司 | 交易处理方法、装置及设备 |
CN113610539A (zh) * | 2021-08-24 | 2021-11-05 | 上海点融信息科技有限责任公司 | 一种信息通知方法、装置、系统、设备和存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9654418B2 (en) * | 2013-11-05 | 2017-05-16 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system of supporting operator commands in link aggregation group |
US10963881B2 (en) * | 2015-05-21 | 2021-03-30 | Mastercard International Incorporated | Method and system for fraud control of blockchain-based transactions |
CN105719185B (zh) * | 2016-01-22 | 2019-02-15 | 杭州复杂美科技有限公司 | 区块链的数据对比及共识方法 |
CN106780032A (zh) * | 2016-12-16 | 2017-05-31 | 杭州云象网络技术有限公司 | 一种多链场景下的区块链链间资产转移方法 |
CN106899698B (zh) * | 2017-04-11 | 2020-12-18 | 张铮文 | 一种区块链之间的跨链互操作方法 |
-
2017
- 2017-06-30 CN CN201710527939.7A patent/CN109214818B/zh active Active
-
2018
- 2018-05-05 WO PCT/CN2018/085753 patent/WO2019001141A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2019001141A1 (zh) | 2019-01-03 |
CN109214818A (zh) | 2019-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109214818B (zh) | 一种跨链交易方法及装置 | |
JP7204231B2 (ja) | 信頼度が低い、または信頼度が皆無の当事者間での価値転送を円滑化する装置、システム、または方法 | |
US20230119636A1 (en) | Blockchain methods, nodes, systems and products | |
CN111034114B (zh) | 具有记录安全性的区块链架构 | |
CN108959621B (zh) | 一种区块链网络的实现方法、装置、设备及存储介质 | |
US20190172026A1 (en) | Cross blockchain secure transactions | |
CN110771127B (zh) | 用于区块链网络中一致分布式内存池的方法和系统 | |
WO2020059865A1 (ja) | 決済システム、決済方法、利用者装置、決済プログラム | |
JP2022520656A (ja) | ブロックチェーンネットワークを介した移転を実施するためのコンピュータで実施されるシステムおよび方法 | |
WO2018158936A1 (ja) | ブロックチェーン管理装置、ブロックチェーン管理方法及びプログラム | |
JP7319961B2 (ja) | 一対の結合ブロックチェーンを構成するバイナリブロックチェーンに関連するコンピュータ実装システム及び方法 | |
KR101837167B1 (ko) | Utxo 기반 프로토콜에서 머클 트리 구조를 사용하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버 | |
CN109155731A (zh) | 密码交易的管理 | |
CN112907244B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
WO2023045532A1 (zh) | 基于区块链的交易处理 | |
JP2022075522A (ja) | コンピュータが実行する方法、情報処理装置及び記憶媒体 | |
CN115619395A (zh) | 基于区块链的数据处理方法及相关设备 | |
KR20210109767A (ko) | 블록 체인 모니터링 기반 자산 탈취 방지 서비스 제공 방법 및 그 장치 | |
TW202004626A (zh) | 分散式金流稽核方法、裝置及系統 | |
KR102070252B1 (ko) | 블록체인 기반 결제 서비스 서버 및 이의 동작 방법 | |
JP7543288B2 (ja) | ブロックチェーンネットワークを介した移転を実施するためのコンピュータで実施されるシステムおよび方法 | |
KR20200095201A (ko) | 정부 지원금 관리 시스템 및 그 방법 | |
CN111915313B (zh) | 用于区块链的数字资产转移控制方法、装置及通信系统 | |
CN118608146A (zh) | 一种数据处理的方法、装置、设备、存储介质及程序产品 | |
CN114881703A (zh) | 一种基于区块链的积分发行流通方法、系统及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |