CN115082069B - 一种基于智能合约调度的跨链数据获取方法和装置 - Google Patents
一种基于智能合约调度的跨链数据获取方法和装置 Download PDFInfo
- Publication number
- CN115082069B CN115082069B CN202210978796.2A CN202210978796A CN115082069B CN 115082069 B CN115082069 B CN 115082069B CN 202210978796 A CN202210978796 A CN 202210978796A CN 115082069 B CN115082069 B CN 115082069B
- Authority
- CN
- China
- Prior art keywords
- cross
- intelligent contract
- contract
- data acquisition
- chain data
- 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 65
- 238000012795 verification Methods 0.000 claims abstract description 28
- 239000003999 initiator Substances 0.000 claims abstract description 16
- 238000012544 monitoring process Methods 0.000 claims abstract description 15
- 239000003795 chemical substances by application Substances 0.000 claims abstract description 13
- 238000013507 mapping Methods 0.000 claims abstract description 11
- 230000015654 memory Effects 0.000 claims description 14
- 230000006870 function Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 7
- 230000001960 triggered effect Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 13
- 238000012545 processing Methods 0.000 abstract description 4
- 238000005516 engineering process Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000033228 biological regulation Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000014759 maintenance of location Effects 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/382—Payment protocols; Details thereof insuring higher security of transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Theoretical Computer Science (AREA)
- Finance (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Databases & Information Systems (AREA)
- Strategic Management (AREA)
- Development Economics (AREA)
- Technology Law (AREA)
- Marketing (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Economics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本文提供一种基于智能合约调度的跨链数据获取方法和装置,其中方法包括:监听跨链数据获取事件;验证跨链数据获取事件是由与之相关的第一区块链上的第一智能合约调用代理合约发起的,和跨链数据获取事件要获取的是与之相关的第二区块链上第二智能合约处的跨链数据,代理合约为预先部署在第一区块链上的第二智能合约的映射;当验证通过时,基于代理合约将跨链数据从第二智能合约处反馈给第一智能合约。本文提供的方法,通过对跨链数据获取事件的发起方和所需跨链数据的提供方进行验证,实现了数据获取过程中相关智能合约的顺序调用执行,保证了智能合约调用的原子性,从而实现跨链的数据获取。
Description
技术领域
本文涉及区块链技术领域,尤其是一种基于智能合约调度的跨链数据获取方法和装置。
背景技术
跨链技术本质上是一种将A链上的资产安全可信地转移到B链并在B链上产生预期效果的一种技术。跨链技术可以被理解为一种协议,解决两个或多个不同链上的资产以及功能状态不能互相传递、转移、交换的问题。因此,跨链技术能够增加区块链的可拓展性,能够从根本上解决不同公链/侧链之间交易困难产生的“数据孤岛”问题。
目前区块链跨链技术主要有:公证人机制、哈希锁定、侧链&中继链、分布式私钥控制等。但上述跨链技术主要是面向交易的,对于跨链的智能合约之间的调度难以实现,比如A链上的合约a需要调用B链上的合约b的问题。且智能合约是一个复杂的流程调用,不能通过简单的跨链交易来实现数据调度,涉及如下问题:
(1)智能合约的调用次序问题:即合约的nonce问题,例如A链上用户1和用户2,以临近的时间依次调用了合约a,需要保证用户1的合约a调度完成B链上的合约b后,才能执行用户2的调用,即必须按照顺序才能确保状态的正确。
(2)智能合约的数据回调证明:数据回调也一样,需要针对调用方,按照调用次序返回数据的证明。
有鉴于此,本文旨在提供一种智能合约调度的跨链数据获取方法和装置,用以实现两条链之间与智能合约相关的数据获取问题。
发明内容
针对现有技术的上述问题,本文的目的在于,提供一种智能合约调度的跨链数据获取方法和装置,以解决现有技术中难以解决基于智能合约调度的数据获取问题。
为了解决上述技术问题,本文的具体技术方案如下:
第一方面,本文提供一种基于智能合约调度的跨链数据获取方法,包括:
监听跨链数据获取事件;
验证所述跨链数据获取事件是由与之相关的第一区块链上的第一智能合约调用代理合约发起的,和所述跨链数据获取事件要获取的是与之相关的第二区块链上第二智能合约处的跨链数据,所述代理合约为预先部署在第一区块链上的所述第二智能合约的映射;
当验证通过时,基于代理合约将要获取的跨链数据从第二区块链的第二智能合约处反馈给第一区块链上的第一智能合约。
具体地,验证所述跨链数据获取事件是由与之相关的第一区块链上的第一智能合约调用代理合约发起的,包括:
将所述跨链数据的请求方的身份信息作为第一私密输入,将第一智能合约处记载的第一智能合约调用对第二智能合约的第一调用次数、所述跨链数据的查询条件、所述第一智能合约以及所述第一区块链作为第一公共输入,在所述第一区块链上构建第一零知识证明;
将所述第一零知识证明的第一公共输入、由所述第一公共输入与所述第一私密输入得到的第一输出发送至所述第二智能合约,使所述第二智能合约根据所述第一公共输入和所述第一输出对所述跨链数据获取事件的发起方进行验证。
进一步地,当所述第二智能合约对所述跨链数据获取事件的发起方进行的验证通过后,所述方法还包括:
获取第二智能合约处记载的第二智能合约被第一智能合约调用的第二调用次数;
验证所述第一调用次数与所述第二调用次数是否相等;
若所述第一调用次数与所述第二调用次数相等,则获取第二智能合约处的跨链数据并使得第二调用次数递增。
具体地,验证所述跨链数据获取事件要获取的是与之相关的第二区块链上第二智能合约的跨链数据,进一步包括:
将所述跨链数据的提供方的身份信息作为第二私密输入,将第二智能合约处记载的第二智能合约被第一智能合约的第二调用次数、所述跨链数据、所述第二智能合约和所述第二区块链作为第二公共输入,在所述第二区块链上构建第二零知识证明;
将所述第二零知识证明发送至代理合约,以使所述代理合约根据所述第二零知识证明的第二公共输入、由所述第二公共输入与所述第二私密输入得到的输出对所述跨链数据获取事件所要获取的跨链数据的提供方进行验证。
进一步地,获取代理合约处记载的第二智能合约被第一智能合约调用的第三调用次数;
验证所述第三调用次数是否与所述第二调用次数相等;
若所述第三调用次数与所述第二调用次数相等,则将所述跨链数据传送至代理合约处,并使得第三调用次数递增。
进一步地,当验证通过时,基于代理合约将数据从第二区块链的第二智能合约处反馈给第一区块链上的第一智能合约,进一步包括:
基于代理合约的数据获取函数,将所述跨链数据经所述代理合约反馈给第一智能合约;
使得第一调用次数递增。
具体地,当第一零知识证明未验证通过和/或第一调用次数与第二调用次数不相等时,或第二零知识证明未验证通过和/或第三调用次数与第二调用次数不相等时,所述方法还包括:
监听第一智能合约重新发起的对第二智能合约的跨链数据获取事件。
通过如下步骤监听跨链数据获取事件:
监听第一智能合约对代理合约中的数据获取函数的调用;
基于所述数据获取函数,判断代理合约中要获取的所述跨链数据是否为空;
若是,则触发回滚和跨链数据获取事件。
第二方面,本文还提供一种智能合约调度的跨链数据获取装置,包括:
监听模块,用于监听跨链数据获取事件;
验证模块,用于验证所述跨链数据获取事件是由与之相关的第一区块链上的第一智能合约调用代理合约发起的,和所述跨链数据获取事件要获取的是与之相关的第二区块链上第二智能合约处的跨链数据,所述代理合约为预先部署在第一区块链上的所述第二智能合约的映射;
获取模块,用于基于代理合约将要获取的跨链数据从第二区块链的第二智能合约处反馈给第一区块链上的第一智能合约。
第三方面,本文还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述技术方案提供的方法。
第四方面,本文还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述技术方案提供的方法。
采用上述技术方案,本文提供的一种智能合约调度的跨链数据获取方法和装置,通过对跨链数据获取事件的发起方和所需跨链数据的提供方进行验证,实现了数据获取过程中相关智能合约的顺序调用执行,保证了智能合约调用的原子性,从而实现跨链的数据获取。
为让本文的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本文实施例提供的一种基于智能合约调度的跨链数据获取方法的步骤示意图;
图2示出了本文实施例对跨链数据获取事件的发起方进行验证的步骤示意图;
图3示出了本文实施例获取跨链数据的第一步骤示意图;
图4示出了本文实施例对跨链数据获取事件所要获取的跨链数据的提供方进行验证的步骤示意图;
图5示出了本文实施例获取跨链数据的第二步骤示意图;
图6示出了本文实施例监听跨链数据获取事件的步骤示意图;
图7示出了本文实施例提供的一种基于智能合约调度的跨链数据获取装置的结构示意图;
图8示出了本文实施例提供的一种计算机设备的结构示意图。
附图符号说明:
71、监听模块;
72、验证模块;
73、获取模块;
802、计算机设备;
804、处理器;
806、存储器;
808、驱动机构;
810、输入/输出模块;
812、输入设备;
814、输出设备;
816、呈现设备;
818、图形用户接口;
820、网络接口;
822、通信链路;
824、通信总线。
具体实施方式
下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。
需要说明的是,本文的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本文的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在区块链面临的诸多问题中,网络孤立性阻碍了不同区块链之间的协同操作,极大程度限制了区块链之间进行数据共享。区块链跨链技术主要有:公证人机制、哈希锁定、侧链&中继链、分布式私钥控制等。但现有的跨链技术均存在着一些缺陷,例如,公证人机制是对链A和链B同时引入一个共同信任的第三方作为中介,由这个共同信任的中介进行跨链消息的验证和转发,而这与区块链本身的去中心化理念相矛盾。哈希锁定的典型实现是哈希时间锁定合约HTLC(Hashed TimeLock Contract)。哈希时间锁定巧妙地采用了哈希锁(Hashlock)和时间锁(Timelock),使资产的接收方在锁定期内确定收款并产生一种收款证明给打款人,否则资产会归还给打款人,这种跨链技术需要链A和链B能够理解对方的合约内部数据,在异构链的跨链交互场景下有一定难度。除此之外,上述现有的区块链跨链技术都是面向交易的跨链可信证明,或基于SPV的路径证明等。跨链交易与跨链的数据获取存在以下不同:跨链交易时所涉及的资产是公开的,而数据是不公开的,即除涉及到的跨链双方外,其他人无法获知进行传输的数据具体是什么;一笔跨链交易是可通过一些手段证明其是否交易成功,而由于数据是无法获知的,因此跨链数据传输无法证明数据是否成功传输。因此,现有的跨链技术难以解决基于跨链的智能合约调度的数据获取问题。
为了解决上述问题,本文实施例提供一种基于智能合约调度的跨链数据获取方法。图1是本文实施例提供的一种基于智能合约调度的跨链数据获取方法的步骤示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或装置产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。本说明书实施例提供的基于智能合约调度的跨链数据获取方法适用于网关,具体地如图1所示,所述方法可以包括:
S110:监听跨链数据获取事件。
S120:验证所述跨链数据获取事件是由与之相关的第一区块链上的第一智能合约调用代理合约发起的,和所述跨链数据获取事件要获取的是与之相关的第二区块链上第二智能合约处的跨链数据,所述代理合约为预先部署在第一区块链上的所述第二智能合约的映射。
需要说明的是,本说明书实施例中,对于每个跨链数据获取事件,分别有与之相关的第一区块链和第二区块链,其分别是跨链数据获取事件的发起方和目标方。本说明书实施例中,步骤S120意为对每个跨链数据获取事件所涉及的两条区块链进行验证;而不是说所有的跨链数据获取事件均发生在同一个第一区块链和同一个第二区块链之间。
由于第一区块链和第二区块链是两条互不干涉的区块链,因此,当第一区块链上的第一智能合约需要调用第二区块链上的第二智能合约时,需要在第一区块链上部署第二智能合约的映射(即本说明书实施例中部署在第一区块链上的代理合约),以便第一区块链上的第一智能合约能够了解第二智能合约的内部数据;同理,当第二智能合约需要调用第一区块链上的第一智能合约时,需要在第二区块链上部署第一智能合约的映射。
S130:当验证通过时,基于代理合约将要获取的跨链数据从第二区块链的第二智能合约处反馈给第一区块链上的第一智能合约。
本说明书实施例提供的基于智能合约调度的跨链数据获取方法,通过对跨链数据获取事件涉及的两条区块链,即事件的发起方和跨链数据的提供方进行验证,实现了数据获取过程中相关智能合约的顺序调用执行,保证了智能合约调用的原子性,从而实现跨链的数据获取。
如图2所示,本说明书实施例中,步骤S120中的,验证所述跨链数据获取事件是由与之相关的第一区块链上的第一智能合约调用代理合约发起的,可以包括:
S210:将所述跨链数据的请求方的身份信息作为第一私密输入,将第一智能合约处记载的第一智能合约对第二智能合约的第一调用次数、所述跨链数据的查询条件、所述第一智能合约以及所述第一区块链作为第一公共输入,在所述第一区块链上构建第一零知识证明。
即网关在第一区块链上构建第一零知识证明。本说明书实施例中,通过构建零知识证明对跨链数据获取事件发起方的存在性进行验证,在一些其他可行的实施例中,也可以通过其他证明手段实现。
示例性的,若用户user1通过第一区块链上的第一智能合约向第二区块链上的第二智能合约发起跨链数据获取请求,所要获取的跨链数据是编号为01的用户的年龄信息。则本说明书实施例中,所述第一私密输入可以是请求方用户的身份信息,即用户user1的身份信息。第一公共输入中所述跨链数据的查询条件即为“编号为01的用户的年龄”即查询该年龄信息所需的索引条件或查询条件;在用户发起跨链数据获取事件前后还可以记录有该事件所在区块的快照信息,以用于表明该获取事件确实发生在第一区块链上。
需要说明的是,由于快照信息是在对应的跨链数据获取事件发生前后、根据所涉及区块的状态生成的,因此,即便同一个第一智能合约向同一个第二智能合约发起有多个跨链数据获取事件,且每次获取事件所要获取的跨链数据的查询条件也相同,但网关对每个跨链数据获取事件所构建的第一零知识证明都是不相同的。因此,本说明书实施例中,第一私密输入和第一公共输入能够表征该跨链数据获取事件的发起方。
需要说明的是,本说明书实施例中,请求方的身份信息、用户的年龄信息等均为过去经用户授权同意的信息。且本说明书实施例描述的技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
S220:将所述第一零知识证明的第一公共输入、由所述第一公共输入与所述第一私密输入得到的第一输出发送至所述第二智能合约,使所述第二智能合约根据所述第一公共输入和所述第一输出对所述跨链数据获取事件的发起方进行验证。
本说明书实施例中,所述第一输出可以是所述第一智能合约根据第一私密输入、第一公共输入以及预先约定好的算法进行计算得到。当网关将第一输出和第一公共输入发送给第二智能合约时,第二智能合约则可根据预先约定好的算法反向求解所述第一输出得到第一实际输入,再将第一实际输入与网关发送来的第一公共输入进行对比校验,若两者一致,则第一零知识证明验证通过。
若网关出现异常,或存在恶意攻击者使得跨链数据获取事件的第一公共输入被篡改,例如,要获取的跨链数据从“编号为01的用户的年龄信息”,被篡改为“编号为02的用户的年龄信息”或“编号为01的用户的账户余额”,则第二智能合约在对第一实际输入与第一公共输入进行对比校验时,将判断到这两者不一致,从而第一零知识证明验证不通过。与之相类似地,当第一输出被篡改时,根据第一输出反向求解得到的第一实际输入也将与第一公共输入不一致,同样也会导致第一零知识证明验证不通过。
当第二智能合约根据第一零知识证明对获取事件的发起方验证通过后,即第二智能合约对该跨链数据获取事件的发起方的确认过程完成,此时网关可从第二智能合约处获取跨链数据。具体地,如图3所示,可以包括如下步骤:
S310:获取第二智能合约处记载的第二智能合约被第一智能合约调用的第二调用次数。
S320:验证所述第一调用次数与所述第二调用次数是否相等。
此处用于对比的第一调用次数,即为构建第一零知识证明时第一公共输入中的第一调用次数,因此无需重复获取过程。
S330:若所述第一调用次数与所述第二调用次数相等,则获取第二智能合约处的跨链数据并使得第二调用次数递增。
由于第一智能合约处可能向第二智能合约发起有多起跨链数据获取事件,本说明书实施例通过分别记载在第一智能合约处的第一调用次数和在第二智能合约处的第二调用次数对这多起跨链数据获取事件进行区分,使得跨链数据与对应的获取事件相对应,避免数据获取错乱。
即当第一调用次数与第二调用次数相等时,网关将从第二智能合约处获取到所述跨链数据。需要说明的是,此时所述跨链数据为网关所持有,还未反馈给第一智能合约。由于第一智能合约处可能发起有多起跨链数据获取事件时,不同的跨链数据获取事件所要获取的跨链数据可以是同一个数据提供方也可能是不同的数据提供方,因此,若此时便将跨链数据反馈给第一智能合约,则第一智能合约存在无法确认该跨链数据是由谁提供的,从而存在无法将各跨链数据与跨链数据获取事件相对应的问题。
因此,优选地,本说明书实施例中,如图4所示,还可以通过如下方法实现步骤S120中的,验证所述跨链数据获取事件要获取的是与之相关的第二区块链上第二智能合约的跨链数据:
S410:将所述跨链数据的提供方的身份信息作为第二私密输入,将第二智能合约处记载的第二智能合约被第一智能合约调用的第二调用次数、所述跨链数据、所述第二智能合约和所述第二区块链作为第二公共输入,在所述第二区块链上构建第二零知识证明。
即网关在第二区块链上构建第二零知识证明,以对跨链数据获取事件所要获取的跨链数据的提供方的存在性进行验证。当然了,在一些其他可行的实施例中,也可以通过其他证明手段实现。
示例性的,本说明书实施例中,用户的年龄信息可以是第二区块链上的用户user2存储并提供的,且用户user2根据查询条件查询到编号为01的用户其年龄为24;则第二私密输入可以是用户user2的身份信息,第二公共输入中的所述跨链数据为24。在第二智能合约查询到所需的跨链数据前后还可以记录有该查询响应所涉及区块的快照信息,以用于表明该获取事件对应的跨链数据确实发生第二区块链上,与第一零知识证明相类似的,本说明书实施例中,网关构建的每个第二零知识证明均是不同的。因此,第二私密输入和第二公开输入能够表征该跨链数据获取事件的响应方。
S420:将所述第二零知识证明的第二公共输入、由所述第二公共输入与所述第二私密输入得到的第二输出发送至代理合约,以使所述代理合约根据所述第二公共输入和所述第二输出对所述跨链数据获取事件所要获取的跨链数据的提供方进行验证。
与第一零知识证明相类似的,第二输出可以是第二智能合约根据第二私密输入、第二公共输入以及预先约定好的算法经计算得到。在网关将第二输出和第二公共输入发送给代理合约时,代理合约可根据预先约定好的算法反向求解第二输出并得到第二实际输入;再将第二实际输入与第二公共输入进行对比验证,当两者相一致时,第二零知识证明验证通过。此时,代理合约可确认所述跨链数据是由哪个提供方提供的。
当网关出现异常,或存在恶意攻击者使得第二公共输入或第二输出被篡改时,代理合约将验证得到第二公共输入与求解第二输出得到的第二实际输入不一致,此时,第二零知识证明将验证不通过。
由于第二零知识证明的第二公共输入中包括所述跨链数据,因此,本说明书实施例提供的基于智能合约调度的跨链数据获取方法与无法对跨链交互数据的实际内容进行验证的现有技术相比,能够对跨链数据进行验证。
如图5所示,当所述代理合约对所述跨链数据获取事件所要获的取跨链数据的提供方的验证通过后,所述方法还包括:
S510:获取代理合约处记载的第二智能合约被第一智能合约调用的第三调用次数。
由于代理合约是第二智能合约在第一区块链上的映射,且第一区块链上的第一智能合约必须通过调用代理合约才能向第二区块链上第二智能合约发起跨链数据获取事件并获取相应的跨链数据。因此,可在代理合约上记载代理合约被第一智能合约调用的次数,也即是第二区块链上第二智能合约被第一智能合约调用的次数。
S520:验证所述第三调用次数是否与所述第二调用次数相等。
此处的第二调用次数即为构建第二零知识证明时所获取的第二调用次数,因此无需重复获取操作。
S530:若所述第三调用次数与所述第二调用次数相等,则将所述跨链数据传送至代理合约处,并使得第三调用次数递增。
即网关将其持有的跨链数据传送至代理合约处。
在此基础上,步骤S130:当验证通过时,基于代理合约将数据从第二区块链的第二智能合约处反馈给第一区块链上的第一智能合约,可以进一步包括:
基于代理合约的数据获取函数,将所示跨链数据经所述代理合约反馈给第一智能合约;
使得第一调用次数递增。
当第一零知识证明验证通过、且第一调用次数与第二调用次数相等时,网关获取到跨链数据;当第二零知识证明验证通过、且第三调用次数与第二调用次数相等时,网关将跨链数据传送给代理合约;此时第一智能合约调用代理合约中的数据获取函数时,将获取到该跨链数据。
即当一笔跨链数据获取请求的发起方和跨链数据的提供方均通过验证后,第二智能合约处记载的第二调用次数、第一智能合约处记载的第一调用次数,以及代理合约处记载的第三调用次数分别递增。本说明书实施例提供的基于智能合约调度的跨链数据获取方法,通过给跨链数据获取所涉及的智能合约调用分别设定调用次数,确保智能合约事务的原子性,从而实现两条链之间的智能合约相关调度。
在一些优选的实施例中,构建第一零知识证明时,第一私密输入还可以包括数据请求方的公钥,即用户user1的公钥;从而,当第二智能合约对第一零知识证明验证通过后,可根据反向求解第一输出得到该公钥,并利用该公钥对所述跨链数据进行加密。进一步地,构建第二零知识证明时,将经该公钥加密后的跨链数据作为第二公共输入。当代理合约对第二零知识验证通过后,网关将跨链数据经代理合约反馈给第一智能合约时,第一智能合约处的用户user1在根据其私钥解密,得到跨链数据。而若跨链数据被其他恶意攻击者窃取时,由于攻击者未持有用户user1的私钥,因此也无法获取到该跨链数据。从而,保证了跨链数据获取的安全性。
当第一零知识证明未验证通过和/或第一调用次数与第二调用次数不相等时,或第二零知识证明未验证通过和/或第三调用次数与第二调用次数不相等时,所述方法还包括:
监听第一智能合约重新发起的对第二智能合约的跨链数据获取事件。
当第一零知识证明未验证通过和/或第一调用次数与第二调用次数不相等时,网关无法获取第二智能合约处的跨链数据;当第二零知识证明未验证通过和/或第三调用次数与第二调用次数不相等时,网关无法将跨链数据传送至代理合约。因此,当出现上述情况时,第一智能合约均无法成功获取所述跨链数据。
而当第一智能合约未能在预设的响应时间期限内获取到跨链数据时,将重新发起对跨链数据的获取事件,从而网关可监听到第一智能合约重新发起的对第二智能合约的跨链数据获取事件,并重复上述验证过程,直至第一零知识证明验证通过且第一调用次数与第二调用次数相等、第二零知识证明验证通过且第三调用次数与第二调用次数相等时,获取到所述跨链数据。
通过本说明书实施例提供的基于智能合约调度的跨链数据获取方法,当第一区块链上有两个用户(假设为用户甲和用户乙)在临近时间内发起第一区块链上第一智能合约对第二区块链上第二智能合约的跨链数据获取事件时,由于故障、异常等原因可能会导致第一智能合约处记载的用户甲对应的第一调用次数和用户乙对应的第一调用次数相同的情况。网关在监听到获取事件后,分别构建第一零知识证明时,由于需用户的身份信息作为第一私密输入,因此,所构建得到的用户甲对应的第一零知识证明将与用户乙对应的第一零知识证明不同。第二智能合约对跨链数据获取事件的发起方进行验证时,将使得有且仅有一个跨链数据获取事件的第一零知识证明可以被验证成功,从而只有一个用户能成功获取到跨链数据。另一个第一零知识证明未被验证通过的用户,只能重新发起跨链数据获取请求。因此,保证了跨链数据获取的顺序性和原子性。
进一步地,如图6所示,本说明书实施例中,步骤S110:监听跨链数据获取事件可以是通过如下步骤实现的:
S610:监听第一智能合约对代理合约中的数据获取函数的调用。
S620:基于所述数据获取函数,判断代理合约中要获取的跨链数据是否为空。
由于第一区块链与第二区块链是两条互不干涉的区块链,即便在第一区块链上部署有作为第二智能合约的映射的代理合约,也无法直接从第二区块链的第二智能合约出获取到所述跨链数据。因此,对于每个第一调用次数所对应的跨链数据获取事件,代理合约处均未持有其所需的跨链数据。
S630:若是,则触发回滚和跨链数据获取事件。
即每个第一调用次数所对应的跨链数据获取事件,均会触发回滚,使得第一智能合约处记载的第一调用次数、代理合约处记载的第三调用次数均回滚至跨链数据获取事件未发生时的状态。并使得网关监听到该回滚,并进行第一零知识证明构建等后续步骤。
如图7所示,本说明书实施例还提供一种基于智能合约调度的跨链数据获取装置,包括:
监听模块71,用于监听跨链数据获取事件;
验证模块72,用于验证所述跨链数据获取事件是由与之相关的第一区块链上的第一智能合约调用代理合约发起的,和所述跨链数据获取事件所请求的是与之相关的第二区块链上第二智能合约的数据,所述代理合约为预先部署在第一区块链上的所述第二智能合约的映射;
获取模块73,用于当验证通过时,基于代理合约将要获取的跨链数据从第二区块链的第二智能合约处反馈给第一区块链上的第一智能合约。
通过本说明书实施例提供的装置所取得的有益效果和上述方法所取得的有益效果相一致,此处不再赘述。
如图8所示,为本文实施例提供的一种计算机设备,本说明书中的基于智能合约调度的跨链数据获取装置可以为本实施例中的计算机设备,执行本文的上述方法。所述计算机设备802可以包括一个或多个处理器804,诸如一个或多个中央处理单元(CPU),每个处理单元可以实现一个或多个硬件线程。计算机设备802还可以包括任何存储器806,其用于存储诸如代码、设置、数据等之类的任何种类的信息。非限制性的,比如,存储器806可以包括以下任一项或多种组合:任何类型的RAM,任何类型的ROM,闪存设备,硬盘,光盘等。更一般地,任何存储器都可以使用任何技术来存储信息。进一步地,任何存储器可以提供信息的易失性或非易失性保留。进一步地,任何存储器可以表示计算机设备802的固定或可移除部件。在一种情况下,当处理器804执行被存储在任何存储器或存储器的组合中的相关联的指令时,计算机设备802可以执行相关联指令的任一操作。计算机设备802还包括用于与任何存储器交互的一个或多个驱动机构808,诸如硬盘驱动机构、光盘驱动机构等。
计算机设备802还可以包括输入/输出模块810(I/O),其用于接收各种输入(经由输入设备812)和用于提供各种输出(经由输出设备814)。一个具体输出机构可以包括呈现设备816和相关联的图形用户接口(GUI)818。在其他实施例中,还可以不包括输入/输出模块810(I/O)、输入设备812以及输出设备814,仅作为网络中的一台计算机设备。计算机设备802还可以包括一个或多个网络接口820,其用于经由一个或多个通信链路822与其他设备交换数据。一个或多个通信总线824将上文所描述的部件耦合在一起。
通信链路822可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信链路822可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
对应于图1至图6中所示的方法,本文实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法的步骤。
本文实施例还提供一种计算机可读指令,其中当处理器执行所述指令时,其中的程序使得处理器执行如图1至图6中所示的方法。
本文实施例还提供一种计算机程序产品,包括至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如图1至图6中所示的方法。
应理解,在本文的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本文实施例的实施过程构成任何限定。
还应理解,在本文实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本文的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本文所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本文实施例方案的目的。
另外,在本文各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本文的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本文各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本文中应用了具体实施例对本文的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本文的方法及其核心思想;同时,对于本领域的一般技术人员,依据本文的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本文的限制。
Claims (9)
1.一种基于智能合约调度的跨链数据获取方法,其特征在于,包括:
监听跨链数据获取事件;
验证所述跨链数据获取事件是由与之相关的第一区块链上的第一智能合约调用代理合约发起的,和所述跨链数据获取事件要获取的是与之相关的第二区块链上第二智能合约处的跨链数据,所述代理合约为预先部署在第一区块链上的所述第二智能合约的映射;
当验证通过时,基于代理合约将要获取的跨链数据从第二区块链的第二智能合约处反馈给第一区块链上的第一智能合约;
其中,验证所述跨链数据获取事件是由与之相关的第一区块链上的第一智能合约调用代理合约发起的,包括:
将所述跨链数据的请求方的身份信息作为第一私密输入,将第一智能合约处记载的第一智能合约对第二智能合约的第一调用次数、所述跨链数据的查询条件、所述第一智能合约以及所述第一区块链作为第一公共输入,在所述第一区块链上构建第一零知识证明;
将所述第一零知识证明的第一公共输入、由所述第一公共输入与所述第一私密输入得到的第一输出发送至所述第二智能合约,使所述第二智能合约根据所述第一公共输入和所述第一输出对所述跨链数据获取事件的发起方进行验证。
2.根据权利要求1所述的方法,其特征在于,当所述第二智能合约对所述跨链数据获取事件的发起方进行的验证通过后,所述方法还包括:
获取第二智能合约处记载的第二智能合约被第一智能合约调用的第二调用次数;
验证所述第一调用次数与所述第二调用次数是否相等;
若所述第一调用次数与所述第二调用次数相等,则获取第二智能合约处的跨链数据并使得第二调用次数递增。
3.根据权利要求2所述的方法,其特征在于,验证所述跨链数据获取事件要获取的是与之相关的第二区块链上第二智能合约的跨链数据,进一步包括:
将所述跨链数据的提供方的身份信息作为第二私密输入,将第二智能合约处记载的第二智能合约被第一智能合约调用的第二调用次数、所述跨链数据、所述第二智能合约和所述第二区块链作为第二公共输入,在所述第二区块链上构建第二零知识证明;
将所述第二零知识证明发送至代理合约,以使所述代理合约根据所述第二零知识证明的第二公共输入、由所述第二公共输入与所述第二私密输入得到的输出对所述跨链数据获取事件所要获取的跨链数据的提供方进行验证。
4.根据权利要求3所述的方法,其特征在于,当所述代理合约对所述跨链数据获取事件所要获的取跨链数据提供方的验证通过后,所述方法还包括:
获取代理合约处记载的第二智能合约被第一智能合约调用的第三调用次数;
验证所述第三调用次数是否与所述第二调用次数相等;
若所述第三调用次数与所述第二调用次数相等,则将所述跨链数据传送至代理合约处,并使得第三调用次数递增。
5.根据权利要求4所述的方法,其特征在于,当验证通过时,基于代理合约将数据从第二区块链的第二智能合约处反馈给第一区块链上的第一智能合约,进一步包括:
基于代理合约的数据获取函数,将所述跨链数据经所述代理合约反馈给第一智能合约;
使得第一调用次数递增。
6.根据权利要求3所述的方法,其特征在于,当第一零知识证明未验证通过和/或第一调用次数与第二调用次数不相等时,或第二零知识证明未验证通过和/或第三调用次数与第二调用次数不相等时,所述方法还包括:
监听第一智能合约重新发起的对第二智能合约的跨链数据获取事件。
7.根据权利要求1所述的方法,其特征在于,通过如下步骤监听跨链数据获取事件:
监听第一智能合约对代理合约中的数据获取函数的调用;
基于所述数据获取函数,判断代理合约中要获取的所述跨链数据是否为空;
若是,则触发回滚和跨链数据获取事件。
8.一种基于智能合约调度的跨链数据获取装置,其特征在于,包括:
监听模块,用于监听跨链数据获取事件;
验证模块,用于验证所述跨链数据获取事件是由与之相关的第一区块链上的第一智能合约调用代理合约发起的,和所述跨链数据获取事件要获取的是与之相关的第二区块链上第二智能合约处的跨链数据,所述代理合约为预先部署在第一区块链上的所述第二智能合约的映射;其中,验证所述跨链数据获取事件是由与之相关的第一区块链上的第一智能合约调用代理合约发起的,包括:
将所述跨链数据的请求方的身份信息作为第一私密输入,将第一智能合约处记载的第一智能合约对第二智能合约的第一调用次数、所述跨链数据的查询条件、所述第一智能合约以及所述第一区块链作为第一公共输入,在所述第一区块链上构建第一零知识证明;
将所述第一零知识证明的第一公共输入、由所述第一公共输入与所述第一私密输入得到的第一输出发送至所述第二智能合约,使所述第二智能合约根据所述第一公共输入和所述第一输出对所述跨链数据获取事件的发起方进行验证;
获取模块,用于基于代理合约将要获取的跨链数据从第二区块链的第二智能合约处反馈给第一区块链上的第一智能合约。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210978796.2A CN115082069B (zh) | 2022-08-16 | 2022-08-16 | 一种基于智能合约调度的跨链数据获取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210978796.2A CN115082069B (zh) | 2022-08-16 | 2022-08-16 | 一种基于智能合约调度的跨链数据获取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115082069A CN115082069A (zh) | 2022-09-20 |
CN115082069B true CN115082069B (zh) | 2022-11-04 |
Family
ID=83245107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210978796.2A Active CN115082069B (zh) | 2022-08-16 | 2022-08-16 | 一种基于智能合约调度的跨链数据获取方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115082069B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442652B (zh) * | 2019-08-15 | 2021-09-21 | 腾讯科技(深圳)有限公司 | 一种基于区块链的跨链数据处理方法及装置 |
CN112215601B (zh) * | 2020-05-29 | 2022-09-30 | 支付宝(杭州)信息技术有限公司 | 基于区块链的业务处理方法、业务处理方法、装置及设备 |
CN112994892B (zh) * | 2020-12-17 | 2023-06-09 | 中国工商银行股份有限公司 | 跨链交互方法、装置、系统和电子设备 |
CN113220717B (zh) * | 2021-05-11 | 2023-04-07 | 支付宝(杭州)信息技术有限公司 | 基于区块链的数据核验方法及装置、电子设备 |
-
2022
- 2022-08-16 CN CN202210978796.2A patent/CN115082069B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115082069A (zh) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109756582B (zh) | 区块链网络中的信息记录方法、装置、节点及存储介质 | |
EP3647955B1 (en) | Consensus-forming method in network, and node for configuring network | |
US7996713B2 (en) | Server-to-server integrity checking | |
CN103595718B (zh) | 一种pos终端激活方法、系统、服务平台及pos终端 | |
CN112994892B (zh) | 跨链交互方法、装置、系统和电子设备 | |
KR102285805B1 (ko) | 보안 상호작용에서 서비스 거부 공격을 검출하기 위한 방법 및 디바이스 | |
CN111444273B (zh) | 一种基于区块链的数据授权方法以及装置 | |
CN110138744A (zh) | 更换通信号码的方法、装置、系统、计算机设备及存储介质 | |
CN112800129B (zh) | 区块状态更新方法、装置、系统和电子设备 | |
CN109688163A (zh) | 基于联盟链的数据处理方法、装置、设备及存储介质 | |
CN112699136B (zh) | 一种跨链存证方法及相关装置 | |
CN115082069B (zh) | 一种基于智能合约调度的跨链数据获取方法和装置 | |
CN112948499A (zh) | 信息获取方法和装置、电子设备和存储介质 | |
CN111294210B (zh) | 一种医疗信息的管理方法及相关设备 | |
CN115022012B (zh) | 一种数据传输方法、装置、系统、设备及存储介质 | |
CN116957560A (zh) | 预言机用于预付费交易资金监管的方法 | |
CN114022150B (zh) | 资源转移方法、装置、电子设备及存储介质 | |
CN113326540B (zh) | 微服务的调用权限控制方法、装置、服务器、系统及介质 | |
CN113014545B (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
EP3794453B1 (en) | Extensible, secure and efficient monitoring & diagnostic pipeline for hybrid cloud architecture | |
CN110166452B (zh) | 一种基于JavaCard共享接口的访问控制方法及系统 | |
CN113438242A (zh) | 服务鉴权方法、装置与存储介质 | |
CN111988202A (zh) | 节点切换方法、装置及存储介质 | |
CN110995791B (zh) | 交互式医疗信息管理方法及系统 | |
CN112714437B (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 | ||
CP03 | Change of name, title or address |
Address after: 200233 Room 201, Building 14, No. 655 Fengzhou Road, Jiading District, Shanghai JT6344 Patentee after: Shanghai Xiecheng New Technology Development Co.,Ltd. Patentee after: PEOPLE'S COURT INFORMATION TECHNOLOGY SERVICE CENTER Address before: No. 27, dongjiaomin lane, Dongcheng District, Beijing 100745 Patentee before: PEOPLE'S COURT INFORMATION TECHNOLOGY SERVICE CENTER Patentee before: Shanghai Xiecheng New Technology Development Co.,Ltd. |
|
CP03 | Change of name, title or address |