CN112948499A - 信息获取方法和装置、电子设备和存储介质 - Google Patents
信息获取方法和装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112948499A CN112948499A CN202110349420.0A CN202110349420A CN112948499A CN 112948499 A CN112948499 A CN 112948499A CN 202110349420 A CN202110349420 A CN 202110349420A CN 112948499 A CN112948499 A CN 112948499A
- Authority
- CN
- China
- Prior art keywords
- target
- contract
- object information
- information
- target object
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000012545 processing Methods 0.000 claims abstract description 66
- 238000004891 communication Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 19
- 238000012795 verification Methods 0.000 description 11
- 230000002776 aggregation Effects 0.000 description 10
- 238000004220 aggregation Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 239000004744 fabric Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000010365 information processing Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000012216 screening Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000010516 chain-walking reaction Methods 0.000 description 2
- 238000013524 data verification Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006116 polymerization reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- 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
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供了一种信息获取方法和装置、电子设备和存储介质。该方法包括:通过目标区块链中的预言机合约接收目标区块链中的目标智能合约发送的目标请求信息,目标请求信息用于请求获取目标对象的对象信息;在从多个预言机节点中获取到至少目标数量个的目标节点返回的目标对象信息的情况下,通过所述预言机合约将至少目标数量个的目标对象信息进行合并处理,得到目标处理结果,目标对象信息为目标节点从目标区块链外收集到的信息,目标对象信息为目标对象的对象信息;响应目标请求信息,通过所述预言机合约将目标处理结果发送给目标智能合约,以更新目标智能合约的账本。通过本申请,解决了相关技术中的预言机方案存在无法适用超级账本框架的问题。
Description
技术领域
本申请涉及信息处理领域,尤其涉及一种信息获取方法和装置、电子设备和存储介质。
背景技术
预言机是一种单向的数字代理,可以查找和验证真实世界的数据,并以加密的方式将信息提交给智能合约。当区块链上的某个智能合约有数据交互需求时,预言机在接收到需求后,帮助智能合约在链外收集外界数据,验证后再将获取的数据反馈回链上的智能合约。
根据组织形式分类,预言机可以分为以下两种:中心化预言机,去中心化预言机。中心化预言机的代表是Provable(一种中心化的预言机应用服务)。去中心化预言机的代表是Chainlink(一种去中心化的预言机网络)和Dos Network(一种去中心化的预言机网络)。
对于中心化预言机,中心化预言机存在以下缺点:只能提供网站上的显示数据,而没有链下处理流程;容易受到单点攻击,单点失败导致整个网络失败;Gas(存在于以太坊虚拟机内部,作为计算工作量的计数)费用比较高;并且,必须信任中心化的节点。而对于去中心化预言机,去中心化预言机存在以下缺点:必须先支付Gas费用才能使用;聚合成本比较高,导致拓展性差。
由于在Fabric(超级账本框架)的支持里不能提供真实性证明,导致在Fabric里没有办法得到信任,因此,相关技术中的中心化预言机无法适用于Fabric。由于Fabric联盟链上还没有特别使用Gas费用,因此,相关技术中的去中心化预言机也无法适用于Fabric。
由此可见,相关技术中的预言机方案存在无法适用超级账本框架的问题。
发明内容
本申请提供了一种信息获取方法和装置、电子设备和存储介质,以至少解决相关技术中的预言机方案存在无法适用超级账本框架的问题。
根据本申请实施例的一个方面,提供了一种信息获取方法,包括:通过目标区块链中的预言机合约接收所述目标区块链中的目标智能合约发送的目标请求信息,其中,所述目标请求信息用于请求获取目标对象的对象信息;在从多个预言机节点中获取到至少目标数量个的目标节点返回的目标对象信息的情况下,通过所述预言机合约将至少目标数量个的所述目标对象信息进行合并处理,得到目标处理结果,其中,所述目标对象信息为所述目标节点从所述目标区块链外收集到的信息,所述目标对象信息为所述目标对象的对象信息;响应所述目标请求信息,通过所述预言机合约将所述目标处理结果发送给所述目标智能合约,以更新所述目标智能合约的账本。
根据本申请实施例的另一个方面,还提供了一种信息获取装置,包括:第一接收单元,用于通过目标区块链中的预言机合约接收所述目标区块链中的目标智能合约发送的目标请求信息,其中,所述目标请求信息用于请求获取目标对象的对象信息;处理单元,用于在从多个预言机节点中获取到至少目标数量个的目标节点返回的目标对象信息的情况下,通过所述预言机合约将至少目标数量个的所述目标对象信息进行合并处理,得到目标处理结果,其中,所述目标对象信息为所述目标节点从所述目标区块链外收集到的、所述目标对象的对象信息;第一发送单元,用于响应所述目标请求信息,通过所述预言机合约将所述目标处理结果发送给所述目标智能合约,以更新所述目标智能合约的账本。
根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。
根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。
在本申请实施例中,采用预言机合约从多个节点获取用户合约所请求的数据、并将请求的数据返回给用户合约的方式,通过目标区块链中的预言机合约接收目标区块链中的目标智能合约发送的目标请求信息,其中,目标请求信息用于请求获取目标对象的对象信息;在从多个预言机节点中获取到至少目标数量个的目标节点返回的目标对象信息的情况下,通过预言机合约将至少目标数量个的目标对象信息进行合并处理,得到目标处理结果,其中,目标对象信息为目标节点从目标区块链外收集到的信息,目标对象信息为目标对象的对象信息;响应目标请求信息,通过预言机合约将目标处理结果发送给目标智能合约,以更新目标智能合约的账本,由于不采用Gap来激励节点进行处理,可以利用超级账本的节点之间已经存在半信任的机制,通过多个预言机节点获取链外数据,并对预言机节点收集到的、至少一定数量的数据进行处理,可以保证处理结果的可信度,达到了预言机方案的适用性的技术效果,解决了相关技术中的预言机方案存在无法适用超级账本框架的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的一种可选的信息获取方法的硬件环境的示意图;
图2是根据本申请实施例的一种可选的信息获取方法的流程示意图;
图3是根据本申请实施例的一种可选的中心化预言机的示意图;
图4是根据本申请实施例的一种可选的去中心化预言机的示意图;
图5是根据本申请实施例的一种可选的区块链的网络架构图;
图6是根据本申请实施例的另一种可选的信息获取方法的流程示意图;
图7是根据本申请实施例的一种可选的预言机合约向预言机节点转发请求的示意图;
图8是根据本申请实施例的一种可选的数据加解密方法的示意图;
图9是根据本申请实施例的一种可选的数据聚合方法的示意图;
图10是根据本申请实施例的另一种可选的数据聚合方法的示意图;
图11是根据本申请实施例的一种可选的信息获取方法的系统流程图;
图12是根据本申请实施例的一种可选的预言机的时序图;
图13是根据本申请实施例的一种可选的信息获取方法的接口示意图;
图14是根据本申请实施例的又一种可选的信息获取方法的流程示意图;
图15是根据本申请实施例的一种可选的信息获取装置的结构框图;
图16是根据本申请实施例的一种可选的电子设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种信息获取方法。可选地,在本实施例中,上述信息获取方法可以应用于如图1所示的硬件环境中。如图1所示,终端设备上可以运行有客户端,该客户端可以通过网络与目标区块链上运行有目标智能合约(可以是指目标区块链上运行有目标智能合约的节点)进行连接,目标智能合约可以是用户合约(也称为用户智能合约)。目标智能合约可以通过网络或者其他方式与目标区块链上的预言机合约(可以是指目标区块链上运行有预言机合约的节点)进行连接,而预言机合约可以通过网络与多个预言机节点分别进行连接。
本申请实施例的信息获取方法可以由预言机合约来执行,也可以由预言机合约结合预言机节点共同执行。其中,预言机合约执行本申请实施例的信息获取方法也可以是该预言机合约所在的节点执行的。
以由预言机合约来执行本实施例中的信息获取方法为例,图2是根据本申请实施例的一种可选的信息获取方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:
步骤S202,通过目标区块链中的预言机合约接收目标区块链中的目标智能合约发送的目标请求信息,其中,目标请求信息用于请求获取目标对象的对象信息。
本实施例中的信息获取方法可以应用于区块链网络中,例如,目标区块链。目标区块链可以是基于超级账本框架的联盟链,也可以是基于超级账本的其他类型的区块链。本实施例中以目标区块链为基于Fabric的联盟链为例进行说明。
区块链是一个封闭的环境,链上是无法主动获取链外真实世界的数据。这是因为:首先,区块链无法主动发起Network call(网络调用),而链上智能合约是被动接收数据的;其次,智能合约只是在满足相应条件下才达到触发状态的程序;同时,智能合约最终的执行需要合约参与方的私钥签署,智能合约本身没有办法自动执行。当智能合约的触发条件取决于区块链外的信息时,这些信息需先写入区块链内记录。此时,需要通过预言机来提供这些区块链外的信息。
相关技术中提供的预言机方案主要包括中心化预言机(例如,Provable)和去中心预言机(例如,Chainlink和Dos Network)。下面分别Provable、Chainlink和Dos Network为例对相关技术中的预言机方案进行说明。
如图3所示,Provable是一个为以太坊提供中心化数据传输预言机服务的项目,其可以提供预言机的服务。在区块链环境下,Oraclize(以太坊预言机的一种实现)把获取的信息返回链上且保证数据与数据源相同,用户可以自行抓取数据,而Oraclize不干涉信息源的选取和信息源本身的准确度。
如图4所示,Chainlink是目前唯一的一个在主网上线的去中心化预言机网络。它的解决方案是:通过在链上的智能合约和链下的数据节点,通过奖惩机制(声誉合约,帮助评选出最匹配的预言机)和聚合模型(聚合多数据源的数据)的方式,进行数据的请求和馈送。Chainlink存在一些不足,比如,链式聚合成本较高,拓展性差,基于声誉系统容易集中化。
DOS Network是一个提供去中心化的预言机服务的网络。它可以连接智能合约和链外互联网世界,同时也为区块链提供无限的且可验证的计算力。Dos Network在链上监测用户数据请求,链下监控和接收数据请求,再通过链下随机选一组节点来提供数据。一旦收集来的数据通过组内51%节点共识被视为“正确答案”,最后链下再将获取的答案反馈给链上信息请求方。
在当前的分布式预言机中(例如,Chainlink和DOS Network)都是利用Gas来激励节点进行处理,利用保证金来对节点进行处罚。但是,这个机制并不适合于超级账本,这是因为超级账本的节点之间已经存在了半信任的机制,因此不适用于Gas的方案。
可选地,本实施例中的信息获取方法应用到的目标区块链为基于超级账本的区块链,目标区块链中的预言机不需要GAS,并且可以支持超级账本的主流语言,例如,Java、NodeJS和GO等。考虑到去中心化的预言机具有减少可攻击表面和避免单点故障的特点、以及中心化预言机具有信任中心节点的问题,本实施例中采用的是分布式预言机方案。
对于目标区块链,该目标区块链中可以包含预言机合约和目标智能合约,该预言机合约可以指代目标区块链中运行有预言机合约的节点,该目标智能合约可以指代目标区块链中运行有目标智能合约的节点。预言机合约(也称为预言机智能合约)可以提供预言机智能合约功能,可以包括但不限于以下至少之一:生成用于传输加密的密钥对,汇总节点的结果,并进行校验和计算。
在有数据获取需求时,客户端可以提交目标请求信息到目标智能合约,该目标请求信息用于请求获取目标对象的对象信息,例如,目标请求信息用于请求获取天气信息,这里,目标对象为天气。该目标智能合约可以是用户合约,用户合约所提供的用户合约功能可以包括但不限于以下至少之一:在用户合约中利用区块链的API(ApplicationProgramming Interface,应用程序接口),在用户合约中调用预言机合约来获取数据,更新账本。
目标智能合约可以将目标请求信息发送给预言机合约,例如,通过智能合约的直接调用方式将目标请求信息发送给预言机合约。预言机合约可以接收目标智能合约发送的上述目标请求信息。
步骤S204,在从多个预言机节点中获取到至少目标数量个的目标节点返回的目标对象信息的情况下,通过预言机合约将至少目标数量个的目标对象信息进行合并处理,得到目标处理结果,其中,目标对象信息为目标节点从目标区块链外收集到的信息,目标对象信息为目标对象的对象信息。
预言机合约可以通过网络与多个预言机节点相连,这里,预言机节点所提供的节点功能可以包括但不限于以下至少之一:调用外部服务的API进行获取数据,对于获取的数据进行加密与签名,保证数据安全和不被篡改。上述外部服务功能主要是指提供接口并返回查询数据。
在接收到目标请求信息之后,预言机合约可以从多个预言机节点处获取目标对象的对象信息。多个预言机节点中的至少部分节点(即,第一节点)可以从目标区块链外收集到目标对象的对象信息,即,目标对象信息。预言机节点收集目标对象的对象信息的方式可以是:预言机节点调用外部服务接口,查询目标对象的对象信息。收集到的目标对象信息可以被预言机节点返回给预言机合约。
预言机合约可以接收多个预言机节点中的至少部分节点返回的目标对象信息。如果接收到至少目标数量个的目标节点返回的目标对象信息(目标对象信息的数量至少为目标数量),预言机节点可以将至少目标数量个的目标对象信息进行合并处理(即,数据聚合),得到目标处理结果。
将至少目标数量个的目标对象信息进行合并处理的方式可以有多种。例如,如果目标对象信息为数值类型的信息,预言机合约可以确定至少目标数量个的目标对象信息的平均值。如果目标对象信息为非数值类型的信息,预言机合约可以确定至少目标数量个的目标对象信息中出现次数最多的目标对象信息。本实施例中对于合并至少目标数量个的目标对象信息的方式不作限定。
步骤S206,响应目标请求信息,通过预言机合约将目标处理结果发送给目标智能合约,以更新目标智能合约的账本。
预言机合约可以将目标处理结果作为上述目标请求信息的响应返回给目标智能合约。目标智能合约接收到目标处理结果之后,可以将目标处理结果进行存档,并更新目标智能合约上的账本。该账本可以是目标区块链的账本,对应地,目标智能合约还可以触发目标区块链上的关联节点更新其上的账本,本实施例中对此不作限定。
通过步骤S202至步骤S206,通过目标区块链中的预言机合约接收目标区块链中的目标智能合约发送的目标请求信息,其中,目标请求信息用于请求获取目标对象的对象信息;在从多个预言机节点中获取到至少目标数量个的目标节点返回的目标对象信息的情况下,通过预言机合约将至少目标数量个的目标对象信息进行合并处理,得到目标处理结果,其中,目标对象信息为目标节点从目标区块链外收集到的信息,目标对象信息为目标对象的对象信息;响应目标请求信息,通过预言机合约将目标处理结果发送给目标智能合约,以更新目标智能合约的账本,解决了相关技术中的预言机方案存在无法适用超级账本框架的问题,提高了预言机方案的适用性。
作为一种可选的实施例,在通过预言机合约将至少目标数量个的目标对象信息进行合并处理之前,上述方法还包括:
S11,通过预言机合约向多个预言机节点中的每个预言机节点分别转发目标请求信息;
S12,通过预言机合约接收到多个预言机节点中至少目标数量个的目标节点返回的目标对象信息,其中,目标数量为预先配置的、所需收到返回对象信息的节点的最低数量。
预言机合约可以将接收到的目标请求信息转发出去,例如,向多个预言机节点中的每个预言机节点分别转发目标请求信息,并约定好规则,例如,最低收到K个节点返回的对象信息,这里的K为目标数量,其值为正整数。可选地,也可以预先配置所需收到返回的对象信息的最低数量。
预言机合约可以接收到多个预言机节点中的第一节点所返回的目标对象信息。如果接收到至少目标数量个的目标节点返回的目标对象信息,预言机合约可以继续执行后续操作,例如,将至少目标数量个的目标对象信息进行合并处理。如果接收到少于目标数量个的目标节点返回的目标对象信息,则可以判定目标请求信息处理失败,向目标智能合约返回请求失败的指示信息。
可选地,预言机合约还可以设定接收预言机节点返回的对象信息的目标时间范围,即,仅在该目标时间范围内接收到的预言机节点返回的对象信息是有效的。对应地,如果在目标时间范围内接收到至少目标数量个的目标节点返回的目标对象信息,预言机合约可以继续执行后续操作,否则,判定目标请求信息处理失败。
通过本实施例,通过预先配置所需收到返回对象信息的节点的最低数量,可以提高处理结果的可信度,同时提高信息配置的灵活性。
下面结合可选示例对上述信息获取方法进行解释说明。本示例中的信息获取方法可以应用于如图5所示的网络架构。该网络架构可以包括:节点(即,预言机节点),用于提供数据加密、密钥管理、数据签名、服务管理等功能;用户合约(即,前述目标智能合约),用于提供服务调用、服务回调、业务逻辑、事件管理等功能;预言机合约,用于提供数据验证、密钥管理、数据计算、服务管理等功能;外部服务,用于提供数据查询接口并返回查询数据。
在图5中,①为外部服务入口,②是指业务数据上链,③是指数据分发,④是指查询数据上链,⑤是指合约调用,⑥是指背书。
本示例中的信息获取方法可以包括以下步骤:
步骤A1,用户合约通过智能合约的直接调用方式发送请求给预言机合约。
步骤A2,预言机合约通过异步的方式来把请求转发出去,并约定好规则,例如,最低收到K个节点返回的数据。
步骤A3,节点收到请求之后,调用外部的服务获取数据。
步骤A4,节点收到外部服务的返回值之后,对数据进行处理,然后提交数据给预言机合约。
步骤A5,预言机合约在规定的时间内收到至少K个节点返回的数据之后,预言机进行共识算法的计算,获取一个最终的结果,如果收到不足K个节点返回的数据,则这次请求失败。
步骤A6,预言机合约把最终状态和结果发给用户合约进行存档。
可选地,发送的上述请求可以是允许的任意类型的请求。以用户获取当前的天气为例,如图6所示,本示例中的信息获取方法可以包括以下步骤:
步骤S602,客户端提交请求到用户合约。
步骤S604,用户合约收到请求之后调用预言机合约进行天气信息的获取。
步骤S606,预言机合约将请求发给不同的预言机节点。
步骤S608,预言机节点收到请求之后,利用API call调用远程服务获取天气情况。
步骤S610,远程服务将数据返回给预言机节点。
步骤S612,预言机节点将收到的数据进行加密并签名,然后返回给预言机合约。
步骤S614,预言机合约将收到的所有数据进行合并计算,将数据返回给用户合约。
用户合约收到预言机合约的数据之后,将数据更新到区块链。
通过本实施例,通过网络去中心化,可以避免单节点故障问题,无需信任第三方信任机构;同时,本实施例中的网络架构具有高扩展性,可以提供多样化支持,例如,支持多种链,支持多种数据类型,支持多种访问方式等。
作为一种可选的实施例,通过预言机合约向多个预言机节点中的每个预言机节点分别转发目标请求信息包括:
S21,通过预言机合约将目标请求信息发送到目标事件池,以使监听目标事件池的每个预言机节点从目标事件池中获取到目标请求信息。
预言机合约向预言机节点分别转发目标请求信息的方式可以有多种,例如,直接向预言机节点转发目标请求信息,又例如,通过事件处理器将目标请求信息发送给预言机节点。
可选地,预言机合约可以发出信息到事件池,例如,发送目标信息到目标时间池中的事件日志(Event log)。预言机节点可以监听目标事件池中的内容,从而可以从目标事件池中获取到目标请求信息。
示例性地,如图7所示,本示例中提供的信息获取方法可以包括以下步骤:
步骤B1,预言机合约发出请求信息到Event log。
步骤B2,预言机节点监听事件池的内容,并向预言机合约反馈返回值,预言机合约记录反馈的返回值的总个数N。
预言机节点可以进行外部服务调用,得到与请求信息对应的数据,并反馈返回值到预言机合约。预言机合约可以记录接收到的返回值的总个数N。
步骤B3,如果收到的返回值的数量达到规定的数量K(K≤N),则进行数据处理,如果规定时间内收到的返回值的数量达不到K,则返回错误。
预言机根据收到的返回值的数据类型进行判断。如果是数值类型的数据,则可以求平均数,得到的平均数可以作为最后的计算值。如果是其他类型,则可以以占多数的返回值作为最终的数值。
通过本实施例,预言机合约将请求信息发到事件池,预言机节点通过监听事件池获取请求信息,预言机合约只需发送一次请求信息即可完成请求信息的转发,可以减少预言机合约的处理负担。
作为一种可选的实施例,通过预言机合约向多个预言机节点中的每个预言机节点分别转发目标请求信息包括:
S31,通过预言机合约向多个预言机节点中的每个预言机节点分别转发目标请求信息和第一密钥对的公钥,其中,第一密钥对为预言机合约的密钥对;
通过预言机合约接收到多个预言机节点中至少目标数量个的目标节点返回的目标对象信息包括:
S32,通过预言机合约接收到多个预言机节点中至少目标数量个的目标节点返回的目标数据信封,其中,目标数据信封包含使用第一密钥对的公钥对目标节点收集到的目标对象信息进行加密所得到的目标密文信息,使用第二密钥对的私钥对目标节点收集到的目标对象信息的摘要进行加密所得到的目标签名,第二密钥对为目标节点的密钥对。
可选地,在本实施例中,可以利用签名以及加密技术来保证服务网络结果的可靠性。预言机节点可以使用密钥技术对服务网络结果进行加密,利用签名技术对服务网络结果进行签名,而预言机合约接收到的是加密后的密文信息和签名。
预言机合约的密钥对为第一密钥对。该第一密钥对可以是预先生成的,也可以是在接收到目标请求信息之后生成的。第一密钥对中的公钥可以被预言机合约发送给预言机节点,以便预言机节点使用第一密钥对的公钥对收集到的对象信息进行加密。第一密钥对中的公钥可以是预先发送给预言机节点的,也可以是和目标请求信息一起发送给预言机节点的。
可选地,预言机合约可以在接收到目标请求信息之后,可以将目标请求信息和第一密钥对的公钥一起发送给多个预言机节点中的每个预言机节点。该第一密钥对可以是在接收到目标请求信息之后生成的。
在多个预言机节点中,至少目标数量个的目标节点向预言机合约返回目标对象信息。预言机合约所接收到的可以是目标数据信封,该目标数据信封可以包括目标节点使用第一密钥对的公钥对目标对象信息进行加密所得到的目标密文信息。此外,目标数据信封中还可以包含目标节点的签名,即,目标签名。该目标签名可以是目标节点使用自己的密钥对(第二密钥对)中的私钥对目标对象信息的摘要进行加密所得到的。
需要说明的是,不同的目标节点收集到的目标对象信息可以是相同的,也可以是不同的。不同的目标节点的第二密钥对一般是不同的。
还需要说明的是,除了目标节点以外,多个预言机节点中的其他节点也可能进行了目标对象的对象信息的收集,并将收集到的对象信息返回给预言机合约,只是由于解密失败、验证失败等原因导致未使用这些节点返回的对象信息执行后续的步骤,例如,对象信息的合并处理。
通过本实施例,利用签名以及加密技术对预言机节点采集到的对象信息进行处理,可以保证对象信息的可靠性。
作为一种可选的实施例,在通过预言机合约将至少目标数量个的目标对象信息进行合并处理之前,上述方法还包括:
S41,通过目标节点接收预言机合约发送的目标请求信息和第一密钥对的公钥;
S42,通过目标节点从目标区块链外收集目标对象的对象信息,得到目标对象信息;
S43,通过目标节点使用第一密钥对的公钥对目标对象信息进行加密,得到目标密文信息,以及,使用第二密钥对的私钥对目标对象信息的摘要进行加密,得到目标签名;
S44,通过目标节点将目标密文信息和目标签名发送给预言机合约。
对于一个目标节点,其可以接收到预言机合约发送的目标请求信息,还可以接收到预言机发送的第一密钥对的公钥,两者可以是同时发送的,也可以不是同时发送的。响应目标请求信息,目标节点可以从目标区块链外收集目标对象的对象信息,得到目标对象信息,并使用第一密钥对的公钥对目标对象信息进行加密,得到目标密文信息。
为了保证数据的传输安全,目标节点还可以使用自己的密钥对(即,第二密钥对)的私钥对其收集到的目标对象信息的摘要进行加密,得到目标签名,并将目标密文信息和目标签名一起发送给预言机合约。
目标节点的第二密钥对可以是预先生成的,也可以是在接收到预言机合约转发的目标请求信息之后生成的。第二密钥对的公钥可以发送给预言机合约,以便预言机合约使用该第二密钥对的公钥对接收到的签名等进行验证。将第二密钥对的公钥发送给预言机合约的时机可以有多种,例如,可以是预先发送给预言机合约的,也可以是由接收到的目标请求信息触发生成第二密钥对后发送给预言机合约的,还可以是与目标密文信息和目标签名一起发送给预言机合约的,本实施例中对此不作限定。
通过本实施例,利用签名以及加密技术对预言机节点采集到的对象信息进行处理,可以保证对象信息的可靠性。
作为一种可选的实施例,在通过预言机合约将至少目标数量个的目标对象信息进行合并处理之前,上述方法还包括:
S51,通过预言机合约使用第二密钥对中的公钥对目标签名进行解密,得到目标摘要;
S52,通过预言机合约使用第一密钥对中的私钥对目标密文信息进行解密,得到目标对象信息;
S53,在目标摘要与目标对象信息的摘要匹配的情况下,通过预言机合约确定对目标对象信息验证通过。
预言机节点可以把数据(例如,目标对象信息)从本节点上传到预言机合约。预言机合约收到数据之后,可以对数据进行判断验证,在数据验证通过之后,认定是预言机节点发送的数据之后,再对节点发送的数据(即,至少目标数量个的目标对象信息)进行合并处理。
对于预言机合约,在接收到目标数据信封之后,预言机合约对目标数据信封中的数据进行验证,以保证数据的有效性和完整性。预言机合约可以使用第二密钥对中的公钥对目标签名进行解密,得到目标摘要;使用第一密钥对中的私钥对目标密文信息进行解密,得到目标对象信息;以及,生成解压所得到目标对象信息的摘要。
如果目标摘要和目标对象信息的摘要匹配,例如,两者是相同或者一致的,预言机合约可以确定对目标对象信息验证通过。如果存在以下情况:使用某个预言机节点的密钥对中的公钥对其发送的数据信封中的签名进行解密所得到的摘要为第一摘要,使用预言机合约的密钥对中的私钥对该数据信封中的密文进行解密所得到的对象信息的摘要为第二摘要,第一摘要和第二摘要不匹配,则可以确定对解密所得到的对象信息验证不通过。
通过本实施例,通过实时获取数据结果,并通过密码学在链上验证数据的正确性,可以保证数据的有效性和完整性。
作为一种可选的实施例,在通过目标节点接收预言机合约发送的目标请求信息和第一密钥对的公钥之后,上述方法还包括:
S61,通过目标节点生成第二密钥对;
S62,通过目标节点将第二密钥对的公钥发送给预言机合约。
第二密钥对可以是在接收到预言机合约所发送的目标请求信息之后生成的。目标节点可以在接收到预言机合约所发送的目标请求信息之后生成第二密钥对,并将第二密钥对的公钥发送给预言机合约。
通过本实施例,通过接收到请求信息之后生成密钥对并将生成的密钥对中的公钥发送给预言机合约,可以提高密钥对生成的灵活性,同时保证数据传输的安全。
下面结合可选示例对上述加解密过程进行说明。数据的加解密过程的前提条件为:预言机合约生成一对密钥,公钥PKO,私钥SKO;节点生成一对密钥,公钥PKP,私钥SKP,将其中的PKP发送给预言机合约。
本示例中的信息获取方法可以包括以下步骤:
步骤C1,用户合约(即,前述目标智能合约)将外部服务接口信息发送给预言机合约。
步骤C2,预言机合约生成一对密钥(即,PKO和SKO)以及当前请求信息,并将密钥对中的公钥和请求信息一起发送给节点(即,前述预言机节点)。
步骤C3,节点接收到请求之后,生成一对密钥(即,PKP和SKP),将其中的PKP发送给预言机合约。
步骤C4,节点调用API Call从外部获取数据。
步骤C5,节点获取到数据之后,利用SKP进行数据签名之后利用PKO进行数据加密,并将密文发送给预言机合约。
结合图8,在从外部获取到数据以后,节点可以将获取的message(即,明文数据)通过散列算法计算得出明文摘要hash_message=Hash(SKP,message),并计算出明文摘要对应的签名:proof=Sign(SKP,message)。同时,节点可以针对明文数据进行加密result=Encrypt(PKO,message)。在得到proof和result之后,节点可以将proof与result组合在一起,即,data=Envelope(result,proof),并将data发送给预言机合约。
步骤C6,预言机合约利用自己的SKO和PKP对数据进行校验。
结合图8,预言机合约可以首先将接收的数据信封打开获取到result和proof的信息,然后利用SKO进行数据解密,得到:message=Decrypt(SKO,result),如果解开则继续,如果解不开则中止。预言机合约还可以验证proof的正确性,也就是,True/False=Verify(PKP,message,proof)。如果为TRUE,表示验证通过,如果False,标识验证不通过。验证通过后可以把当前的message值作为收到的有效值,验证不通过则中止。
步骤C7,预言机合约对于数据进行数据整合计算。
步骤C8,预言机合约将数据返回给用户合约。
通过本示例,数据结果实时获取,通过密码学可在链上验证数据的正确性,可以保证实时可验证结果;利用签名以及加密技术,保证服务网络结果的可靠性,从而提高数据的安全性和可信度。
可选地,通过预言机合约将至少目标数量个的目标对象信息进行合并处理可以包括:通过预言机合约按照目标对象信息的数据类型,将至少目标数量个的目标对象信息进行合并处理。对于不同的数据类型,例如,数值类型,非数值类型,所采用的合并处理方式可以是不同的。
作为一种可选的实施例,通过预言机合约将至少目标数量个的目标对象信息进行合并处理,得到目标处理结果包括:
S71,在目标对象信息的类型为数值类型的情况下,通过预言机合约获取至少目标数量个的目标对象信息的第一平均值;
S72,在至少目标数量个的目标对象信息中存在与第一平均值的误差值大于目标误差阈值的对象信息的情况下,通过预言机合约从至少目标数量个的目标对象信息中移除与第一平均值的误差值大于目标误差阈值的对象信息,得到当前剩余的目标对象信息;
S73,通过预言机合约循环执行以下步骤,直到当前剩余的目标对象信息不再发生变化:获取当前剩余的目标对象信息的平均值,得到第二平均值;移除当前剩余的目标对象信息中与第二平均值的误差值大于目标误差阈值的对象信息,以更新当前剩余的目标对象信息;
S74,通过预言机合约将当前剩余的目标对象信息的平均值,确定为目标处理结果。
如果目标对象信息的类型为数值类型,预言机合约可以获取至少目标数量个的目标对象信息的第一平均值。第一平均值可以直接作为目标处理结果,也可以做进一步的判断,例如,判断每个目标对象信息与该第一平均值的误差值是否在目标误差阈值范围内。
如果所有的目标对象信息该第一平均值的误差值均在目标误差阈值范围内,则可以将第一平均值确定为目标处理结果。如果有目标对象信息该第一平均值的误差值不在目标误差阈值范围内,可以将与该第一平均值的误差值不在目标误差阈值范围内的目标对象信息移除。
预言机合约可以循环执行以下步骤:计算剩余的目标对象信息的平均值,判断是否存在与本次的平均值的误差值不在目标误差阈值范围内的目标对象信息,移除与本次的平均值的误差值不在目标误差阈值范围内的目标对象信息,直到剩余的目标对象信息不再发生变化,也就是,每个目标对象信息与剩余的目标对象信息的平均值的误差值均在目标误差阈值内。目标处理结果可以是循环结束之后所剩余的目标对象信息的平均值。
例如,如图9所示,四个预言机节点分别向预言机合约发送数据(即,目标对象信息),分别为Data 1、Data 2、Data 3和Data 4。预言机合约可以对接收到的数据进行验证,Data 4验证不通过,其余数据验证均通过。
预言机合约可以按照公式(1)进行求平均值运算,并通过公式(2)计算每个数据(每个数据可以对应于一个目标对象信息)的误差值:
其中,dt为平均值,N为数据的总个数(本示例中N为3),data(n)表示第n个数据,E(n)为第n个数据的误差值。
如果存在E(n)的值超过30%,则认为该Data(n)的数据误差偏大,那么去除Data(n)之后再次按照上述步骤进行计算,直到计算出符合要求的数据为止。如果符合要求之后,可以将dt作为最终结果发送给用户合约。
通过本实施例,对于数值类型的数据通过计算平均值、筛选误差大的数据,从而得到数值相近的数据进行数据聚合,可以提高数据聚合的准确性。
作为一种可选的实施例,通过预言机合约将至少目标数量个的目标对象信息进行合并处理,得到目标处理结果包括:
S81,在目标对象信息的类型为非数值类型的情况下,通过预言机合约按照接收时间的先后顺序,为每个目标对象信息分别配置对应的权重值;
S82,通过预言机合约将相同的目标对象信息的权重值进行累加,得到与每个目标对象信息对应的权重和;
S83,通过预言机合约将与最大的权重和所对应的目标对象信息,确定为目标处理结果。
如果目标对象信息的类型为非数值类型,预言机合约可以选取重复次数最多的目标对象信息作为目标处理结果,也可以是对每个目标对象信息赋予权重,将权重和最大的目标对象信息作为目标处理结果。每个目标对象信息的权重可以是按照接收时间的先后顺序进行赋值的,也可以是按照每个预言机节点的权重值(例如,可以是优先权确定的)进行赋值的。
可选地,预言机合约可以按照接收时间的先后顺序,为每个目标对象信息分别配置对应的权重值,将相同的目标对象信息的权重值进行累加,得到与每个目标对象信息对应的权重和,并将与最大的权重和所对应的目标对象信息,确定为目标处理结果。
例如,如图10所示,四个预言机节点分别向预言机合约发送数据(即,目标对象信息),分别为Data 1、Data 2、Data 3和Data 4。预言机合约可以对接收到的数据进行验证,Data 4验证不通过,其余数据验证均通过。
预言机合约可以按照收到的数据的时间先后顺序进行权重加持(w),分别为1.01、1.02和1.03,根据用户收到的信息计算权重加持后的值,如公式(3)所示:
其中,k表示data(i)的个数。
在获得的最大值f(m)之后,将最大值f(m)所对应的数据作为最终的结果发给用户合约。
通过本实施例,通过对非数值类型的数据按照接收时间的先后顺序赋予对应的权重值,并选取权重值的累加和最大的数据作为数据聚合的结果,可以提高数据聚合的准确性。
下面结合可选示例对本申请实施例中的信息获取方法进行解释说明。在本示例中,目标智能合约为用户合约,预言机节点为节点或者区块链节点。
结合图11所示的流程图、图12所示的时序图以及图13所示的接口示意图,如图14所示,本可选示例中的信息获取方法的流程可以包括以下步骤:
步骤S1402,预言机合约接收用户合约发送的请求,生成密钥对,并将请求信息和生成的密钥对中的公钥发送给节点。
客户端可以提交请求到用户合约,提交请求涉及到数据上链。用户合约可以通过调用预言机合约的接口(该接口可以为区块链的API接口)向预言机合约发送请求信息,以请求查询链下数据。这里的请求接口可以是invokeRequest(),请求信息中所携带的参数可以如表1所示。
表1
预言机合约在收到用户合约的请求之后,可以生成预言机合约的密钥对,即,第一密钥对,并将请求信息和第一密钥对的公钥发送给节点(即,区块链节点),例如,通过调用预言机节点的API接口发送请求信息和第一密钥对的公钥。调用的API接口可以是事件接口setEvent(),请求信息和第一密钥对的公钥可以是通过一个请求信息发送的,该请求信息中所携带的参数可以如表2所示。
表2
预言机合约可以通过异步的方式把请求转发出去,也就是,在接收到一个节点的查询数据之后,再向下一个节点转发请求。预言机合约也可以通过同步的方式把请求转发出去,也就是,同时向各个节点转发请求,接收不同节点的查询数据之间不受影响。
步骤S1404,节点接收请求,生成密钥对,向预言机合约提交公钥,并从外部服务获取查询数据。
节点可以接收预言机合约发送的请求,生成该节点的密钥对,即,第二密钥对,并将第二密钥对的公钥发送给预言机合约。预言机合约可以接收节点发送的第二密钥对的公钥。该公钥可以是通过请求消息(对应于图13中所示的事件接收数据)由请求接受接口acceptRequest()接收的。该请求信息中所携带的参数可以如表3所示。
表3
对于一个节点,其可以向与其相连的外部服务转发请求,以从外部服务获取查询数据。外部服务在接收到节点转发的请求之后,可以进行数据查询,得到查询数据,并将查询数据返回给节点。
步骤S1406,节点将接收的查询数据提交给预言机合约,预言机合约进行数据校验与筛选,并将查询数据返回给用户合约。
节点可以对接收到的查询数据进行数据加密和数据签名,并将查询数据通过数据信封(包括密文信息和签名)的方式通过请求信息由数据请求接口invoke()提交给预言机合约。该请求信息中所携带的参数可以如表4所示。
表4
预言机合约可以接收各个节点返回的查询数据,确定数据是否收集完,例如,判断是否接收到预定数量(例如,前述K)的查询结果。如果数据收集完,预言机合约可以对接收到的查询数据进行数据校验与筛选,还可以对剩余的查询数据进行数据聚合(即,数据计算),得到聚合后的查询数据,并将聚合后的查询数据通过请求信息由回调接口oracleCallbackCurlResponse()返回给用户合约。回调接口是用户合约实现的,用于预言机合约将结果数据回写给用户合约。该请求信息中所携带的参数可以如表5所示。
表5
步骤S1408,用户合约接收预言机合约返回的查询数据,并使用查询数据更新账本。
用户合约可以接收预言机合约返回的查询数据,使用查询数据更新账本,也就是,将查询结果上链,并向客户端返回上链结果。
本示例中所提供的信息获取方法具有以下有益效果:
通过网络去中心化,可以避免单节点故障问题,无需信任第三方信任机构;
实时可验证结果:数据结果实时获取,通过密码学可以在链上验证数据的正确性;
高扩展性:可以提供多样化支持,支持多种链,支持多种数据类型,支持多种访问方式;
高性能:由多节点通过链下完成可靠数据获取和复杂计算,降低链上的计算压力;
数据安全可信:利用签名以及加密技术,保证服务网络结果的可靠性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述信息获取方法的信息获取装置。图15是根据本申请实施例的一种可选的信息获取装置的结构框图,如图15所示,该装置可以包括:
第一接收单元1502,用于通过目标区块链中的预言机合约接收目标区块链中的目标智能合约发送的目标请求信息,其中,目标请求信息用于请求获取目标对象的对象信息;
处理单元1504,与第一接收单元1502相连,用于在从多个预言机节点中获取到至少目标数量个的目标节点返回的目标对象信息的情况下,通过预言机合约将至少目标数量个的目标对象信息进行合并处理,得到目标处理结果,其中,目标对象信息为目标节点从目标区块链外收集到的信息,目标对象信息为目标对象的对象信息;
第一发送单元1506,与处理单元1504相连,用于响应目标请求信息,通过预言机合约将目标处理结果发送给目标智能合约,以更新目标智能合约的账本。
需要说明的是,该实施例中的第一接收单元1502可以用于执行上述步骤S202,该实施例中的处理单元1504可以用于执行上述步骤S204,该实施例中的第一发送单元1506可以用于执行上述步骤S206。
通过上述模块,通过目标区块链中的预言机合约接收目标区块链中的目标智能合约发送的目标请求信息,其中,目标请求信息用于请求获取目标对象的对象信息;在从多个预言机节点中获取到至少目标数量个的目标节点返回的目标对象信息的情况下,通过预言机合约将至少目标数量个的目标对象信息进行合并处理,得到目标处理结果,其中,目标对象信息为目标节点从目标区块链外收集到的信息,目标对象信息为目标对象的对象信息;响应目标请求信息,通过预言机合约将目标处理结果发送给目标智能合约,以更新目标智能合约的账本,解决了相关技术中的预言机方案存在无法适用超级账本框架的问题,提高了预言机方案的适用性。
作为一种可选的实施例,上述装置还包括:
第二发送单元,用于在通过预言机合约将至少目标数量个的目标对象信息进行合并处理之前,通过预言机合约向多个预言机节点中的每个预言机节点分别转发目标请求信息;
第二接收单元,用于通过预言机合约接收到多个预言机节点中至少目标数量个的目标节点返回的目标对象信息,其中,目标数量为预先配置的、所需收到返回对象信息的节点的最低数量。
作为一种可选的实施例,第二发送单元包括:
第一发送模块,用于通过预言机合约将目标请求信息发送到目标事件池,以使监听目标事件池的每个预言机节点从目标事件池中获取到目标请求信息。
作为一种可选的实施例,第二发送单元包括第二发送模块,第二接收单元包括接收模块,其中,
第二发送模块,用于通过预言机合约向多个预言机节点中的每个预言机节点分别转发目标请求信息和第一密钥对的公钥,其中,第一密钥对为预言机合约的密钥对;
接收模块,用于通过预言机合约接收到多个预言机节点中至少目标数量个的目标节点返回的目标数据信封,其中,目标数据信封包含使用第一密钥对的公钥对目标节点收集到的目标对象信息进行加密所得到的目标密文信息,使用第二密钥对的私钥对目标节点收集到的目标对象信息的摘要进行加密所得到的目标签名,第二密钥对为目标节点的密钥对。
作为一种可选的实施例,上述装置还包括:
第一解密单元,用于在通过预言机合约将至少目标数量个的目标对象信息进行合并处理之前,通过预言机合约使用第二密钥对中的公钥对目标签名进行解密,得到目标摘要;
第二解密单元,用于通过预言机合约使用第一密钥对中的私钥对目标密文信息进行解密,得到目标对象信息;
确定单元,用于在目标摘要与目标对象信息的摘要匹配的情况下,通过预言机合约确定对目标对象信息验证通过。
作为一种可选的实施例,上述装置还包括:
第三接收单元,用于在通过预言机合约将至少目标数量个的目标对象信息进行合并处理之前,通过目标节点接收预言机合约发送的目标请求信息和第一密钥对的公钥;
收集单元,用于通过目标节点从目标区块链外收集目标对象的对象信息,得到目标对象信息;
加密单元,用于通过目标节点使用第一密钥对的公钥对目标对象信息进行加密,得到目标密文信息,以及,使用第二密钥对的私钥对目标对象信息的摘要进行加密,得到目标签名;
第三发送单元,用于通过目标节点将目标密文信息和目标签名发送给预言机合约。
作为一种可选的实施例,上述装置还包括:
生成单元,用于在通过目标节点接收预言机合约发送的目标请求信息和第一密钥对的公钥之后,通过目标节点生成第二密钥对;
第四发送单元,用于通过目标节点将第二密钥对的公钥发送给预言机合约。
作为一种可选的实施例,处理单元包括:
获取模块,用于在目标对象信息的类型为数值类型的情况下,通过预言机合约获取至少目标数量个的目标对象信息的第一平均值;
移除模块,用于在至少目标数量个的目标对象信息中存在与第一平均值的误差值大于目标误差阈值的对象信息的情况下,通过预言机合约从至少目标数量个的目标对象信息中移除与第一平均值的误差值大于目标误差阈值的对象信息,得到当前剩余的目标对象信息;
执行模块,用于通过预言机合约循环执行以下步骤,直到当前剩余的目标对象信息不再发生变化:获取当前剩余的目标对象信息的平均值,得到第二平均值;移除当前剩余的目标对象信息中与第二平均值的误差值大于目标误差阈值的对象信息,以更新当前剩余的目标对象信息;
第一确定模块,用于通过预言机合约将当前剩余的目标对象信息的平均值,确定为目标处理结果。
作为一种可选的实施例,处理单元包括:
配置模块,用于在目标对象信息的类型为非数值类型的情况下,通过预言机合约按照接收时间的先后顺序,为每个目标对象信息分别配置对应的权重值;
累加模块,用于通过预言机合约将相同的目标对象信息的权重值进行累加,得到与每个目标对象信息对应的权重和;
第二确定模块,用于通过预言机合约将与最大的权重和所对应的目标对象信息,确定为目标处理结果。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的又一个方面,还提供了一种用于实施上述信息获取方法的电子设备,该电子设备可以是服务器、终端、或者其组合。
图16是根据本申请实施例的一种可选的电子设备的结构框图,如图16所示,包括处理器1602、通信接口1604、存储器1606和通信总线1608,其中,处理器1602、通信接口1604和存储器1606通过通信总线1608完成相互间的通信,其中,
存储器1606,用于存储计算机程序;
处理器1602,用于执行存储器1606上所存放的计算机程序时,实现如下步骤:
S1,通过目标区块链中的预言机合约接收目标区块链中的目标智能合约发送的目标请求信息,其中,目标请求信息用于请求获取目标对象的对象信息;
S2,在从多个预言机节点中获取到至少目标数量个的目标节点返回的目标对象信息的情况下,通过预言机合约将至少目标数量个的目标对象信息进行合并处理,得到目标处理结果,其中,目标对象信息为目标节点从目标区块链外收集到的信息,目标对象信息为目标对象的对象信息;
S3,响应目标请求信息,通过预言机合约将目标处理结果发送给目标智能合约,以更新目标智能合约的账本。
可选地,在本实施例中,上述的通信总线可以是PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线、或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图16中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于电子设备与其他设备之间的通信。
存储器可以包括RAM,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
作为一种示例,上述存储器1606中可以但不限于包括上述信息获取装置中的第一接收单元1502、处理单元1504以及第一发送单元1506。此外,还可以包括但不限于上述信息获取装置中的其他模块单元,本示例中不再赘述。
上述处理器可以是通用处理器,可以包含但不限于:CPU(Central ProcessingUnit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(DigitalSignal Processing,数字信号处理器)、ASIC(Application Specific IntegratedCircuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图16所示的结构仅为示意,实施上述信息获取方法的设备可以是终端设备,该终端设备可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图16其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图16中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图16所示的不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM、RAM、磁盘或光盘等。
根据本申请实施例的又一个方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行本申请实施例中上述任一项信息获取方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,通过目标区块链中的预言机合约接收目标区块链中的目标智能合约发送的目标请求信息,其中,目标请求信息用于请求获取目标对象的对象信息;
S2,在从多个预言机节点中获取到至少目标数量个的目标节点返回的目标对象信息的情况下,通过预言机合约将至少目标数量个的目标对象信息进行合并处理,得到目标处理结果,其中,目标对象信息为目标节点从目标区块链外收集到的信息,目标对象信息为目标对象的对象信息;
S3,响应目标请求信息,通过预言机合约将目标处理结果发送给目标智能合约,以更新目标智能合约的账本。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、ROM、RAM、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (12)
1.一种信息获取方法,其特征在于,包括:
通过目标区块链中的预言机合约接收所述目标区块链中的目标智能合约发送的目标请求信息,其中,所述目标请求信息用于请求获取目标对象的对象信息;
在从多个预言机节点中获取到至少目标数量个的目标节点返回的目标对象信息的情况下,通过所述预言机合约将至少目标数量个的所述目标对象信息进行合并处理,得到目标处理结果,其中,所述目标对象信息为所述目标节点从所述目标区块链外收集到的信息,所述目标对象信息为所述目标对象的对象信息;
响应所述目标请求信息,通过所述预言机合约将所述目标处理结果发送给所述目标智能合约,以更新所述目标智能合约的账本。
2.根据权利要求1所述的方法,其特征在于,在通过所述预言机合约将至少目标数量个的所述目标对象信息进行合并处理之前,所述方法还包括:
通过所述预言机合约向所述多个预言机节点中的每个预言机节点分别转发所述目标请求信息;
通过所述预言机合约接收到所述多个预言机节点中至少目标数量个的所述目标节点返回的所述目标对象信息,其中,所述目标数量为预先配置的、所需收到返回对象信息的节点的最低数量。
3.根据权利要求2所述的方法,其特征在于,通过所述预言机合约向所述多个预言机节点中的每个预言机节点分别转发所述目标请求信息包括:
通过所述预言机合约将所述目标请求信息发送到目标事件池,以使监听所述目标事件池的所述每个预言机节点从所述目标事件池中获取到所述目标请求信息。
4.根据权利要求2所述的方法,其特征在于,
通过所述预言机合约向所述多个预言机节点中的每个预言机节点分别转发所述目标请求信息包括:通过所述预言机合约向所述多个预言机节点中的每个预言机节点分别转发所述目标请求信息和第一密钥对的公钥,其中,所述第一密钥对为所述预言机合约的密钥对;
通过所述预言机合约接收到所述多个预言机节点中至少目标数量个的所述目标节点返回的所述目标对象信息包括:通过所述预言机合约接收到所述多个预言机节点中至少目标数量个的所述目标节点返回的目标数据信封,其中,所述目标数据信封包含使用所述第一密钥对的公钥对所述目标节点收集到的所述目标对象信息进行加密所得到的目标密文信息,使用第二密钥对的私钥对所述目标节点收集到的所述目标对象信息的摘要进行加密所得到的目标签名,所述第二密钥对为所述目标节点的密钥对。
5.根据权利要求4所述的方法,其特征在于,在通过所述预言机合约将至少目标数量个的所述目标对象信息进行合并处理之前,所述方法还包括:
通过所述预言机合约使用所述第二密钥对中的公钥对所述目标签名进行解密,得到目标摘要;
通过所述预言机合约使用所述第一密钥对中的私钥对所述目标密文信息进行解密,得到所述目标对象信息;
在所述目标摘要与所述目标对象信息的摘要匹配的情况下,通过所述预言机合约确定对所述目标对象信息验证通过。
6.根据权利要求4所述的方法,其特征在于,在通过所述预言机合约将至少目标数量个的所述目标对象信息进行合并处理之前,所述方法还包括:
通过所述目标节点接收所述预言机合约发送的所述目标请求信息和所述第一密钥对的公钥;
通过所述目标节点从所述目标区块链外收集所述目标对象的对象信息,得到所述目标对象信息;
通过所述目标节点使用所述第一密钥对的公钥对所述目标对象信息进行加密,得到所述目标密文信息,以及,使用所述第二密钥对的私钥对所述目标对象信息的摘要进行加密,得到所述目标签名;
通过所述目标节点将所述目标密文信息和所述目标签名发送给所述预言机合约。
7.根据权利要求6所述的方法,其特征在于,在通过所述目标节点接收所述预言机合约发送的所述目标请求信息和所述第一密钥对的公钥之后,所述方法还包括:
通过所述目标节点生成所述第二密钥对;
通过所述目标节点将所述第二密钥对的公钥发送给所述预言机合约。
8.根据权利要求1至7中任一项所述的方法,其特征在于,通过所述预言机合约将至少目标数量个的所述目标对象信息进行合并处理,得到所述目标处理结果包括:
在所述目标对象信息的类型为数值类型的情况下,通过所述预言机合约获取至少目标数量个的所述目标对象信息的第一平均值;
在至少目标数量个的所述目标对象信息中存在与所述第一平均值的误差值大于目标误差阈值的对象信息的情况下,通过所述预言机合约从至少目标数量个的所述目标对象信息中移除与所述第一平均值的误差值大于目标误差阈值的对象信息,得到当前剩余的所述目标对象信息;
通过所述预言机合约循环执行以下步骤,直到当前剩余的所述目标对象信息不再发生变化:获取当前剩余的所述目标对象信息的平均值,得到第二平均值;移除当前剩余的所述目标对象信息中与所述第二平均值的误差值大于所述目标误差阈值的对象信息,以更新当前剩余的所述目标对象信息;
通过所述预言机合约将当前剩余的所述目标对象信息的平均值,确定为所述目标处理结果。
9.根据权利要求1至7中任一项所述的方法,其特征在于,通过所述预言机合约将至少目标数量个的所述目标对象信息进行合并处理,得到所述目标处理结果包括:
在所述目标对象信息的类型为非数值类型的情况下,通过所述预言机合约按照接收时间的先后顺序,为每个所述目标对象信息分别配置对应的权重值;
通过所述预言机合约将相同的所述目标对象信息的权重值进行累加,得到与每个所述目标对象信息对应的权重和;
通过所述预言机合约将与最大的权重和所对应的所述目标对象信息,确定为所述目标处理结果。
10.一种信息获取装置,其特征在于,包括:
第一接收单元,用于通过目标区块链中的预言机合约接收所述目标区块链中的目标智能合约发送的目标请求信息,其中,所述目标请求信息用于请求获取目标对象的对象信息;
处理单元,用于在从多个预言机节点中获取到至少目标数量个的目标节点返回的目标对象信息的情况下,通过所述预言机合约将至少目标数量个的所述目标对象信息进行合并处理,得到目标处理结果,其中,所述目标对象信息为所述目标节点从所述目标区块链外收集到的信息,所述目标对象信息为所述目标对象的对象信息;
第一发送单元,用于响应所述目标请求信息,通过所述预言机合约将所述目标处理结果发送给所述目标智能合约,以更新所述目标智能合约的账本。
11.一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信,其特征在于,
所述存储器,用于存储计算机程序;
所述处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行权利要求1至9中任一项所述的方法步骤。
12.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至9中任一项中所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110349420.0A CN112948499A (zh) | 2021-03-31 | 2021-03-31 | 信息获取方法和装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110349420.0A CN112948499A (zh) | 2021-03-31 | 2021-03-31 | 信息获取方法和装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112948499A true CN112948499A (zh) | 2021-06-11 |
Family
ID=76231602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110349420.0A Pending CN112948499A (zh) | 2021-03-31 | 2021-03-31 | 信息获取方法和装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112948499A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116032494A (zh) * | 2023-03-24 | 2023-04-28 | 深圳开鸿数字产业发展有限公司 | 数据交互方法、区块链预言机、设备及介质 |
WO2024001507A1 (zh) * | 2022-06-30 | 2024-01-04 | 腾讯科技(深圳)有限公司 | 数据处理方法、系统、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108665953A (zh) * | 2018-05-08 | 2018-10-16 | 北京金山云网络技术有限公司 | 一种处方执行方法、装置、设备和存储介质 |
CN108848119A (zh) * | 2018-04-03 | 2018-11-20 | 阿里巴巴集团控股有限公司 | 跨区块链的交互方法及装置、系统、电子设备 |
CN109685674A (zh) * | 2018-12-21 | 2019-04-26 | 众安信息技术服务有限公司 | 基于区块链的订单通证化、赔付、查询的方法、装置及存储介质 |
CN111324672A (zh) * | 2020-03-25 | 2020-06-23 | 中国工商银行股份有限公司 | 区块链安全处理系统及方法 |
CN111401903A (zh) * | 2020-06-03 | 2020-07-10 | 腾讯科技(深圳)有限公司 | 区块链消息处理方法、装置、计算机以及可读存储介质 |
CN111930852A (zh) * | 2020-09-29 | 2020-11-13 | 北京百度网讯科技有限公司 | 基于区块链的数据处理方法、装置、设备以及存储介质 |
WO2020233637A1 (zh) * | 2019-05-20 | 2020-11-26 | 创新先进技术有限公司 | 结合代码标注与用户类型的收据存储方法和节点 |
CN112003942A (zh) * | 2020-08-25 | 2020-11-27 | 杭州时戳信息科技有限公司 | 链下数据请求响应方法、系统、节点设备与存储介质 |
-
2021
- 2021-03-31 CN CN202110349420.0A patent/CN112948499A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108848119A (zh) * | 2018-04-03 | 2018-11-20 | 阿里巴巴集团控股有限公司 | 跨区块链的交互方法及装置、系统、电子设备 |
CN108665953A (zh) * | 2018-05-08 | 2018-10-16 | 北京金山云网络技术有限公司 | 一种处方执行方法、装置、设备和存储介质 |
CN109685674A (zh) * | 2018-12-21 | 2019-04-26 | 众安信息技术服务有限公司 | 基于区块链的订单通证化、赔付、查询的方法、装置及存储介质 |
WO2020233637A1 (zh) * | 2019-05-20 | 2020-11-26 | 创新先进技术有限公司 | 结合代码标注与用户类型的收据存储方法和节点 |
CN111324672A (zh) * | 2020-03-25 | 2020-06-23 | 中国工商银行股份有限公司 | 区块链安全处理系统及方法 |
CN111401903A (zh) * | 2020-06-03 | 2020-07-10 | 腾讯科技(深圳)有限公司 | 区块链消息处理方法、装置、计算机以及可读存储介质 |
CN112003942A (zh) * | 2020-08-25 | 2020-11-27 | 杭州时戳信息科技有限公司 | 链下数据请求响应方法、系统、节点设备与存储介质 |
CN111930852A (zh) * | 2020-09-29 | 2020-11-13 | 北京百度网讯科技有限公司 | 基于区块链的数据处理方法、装置、设备以及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024001507A1 (zh) * | 2022-06-30 | 2024-01-04 | 腾讯科技(深圳)有限公司 | 数据处理方法、系统、装置、设备及存储介质 |
CN116032494A (zh) * | 2023-03-24 | 2023-04-28 | 深圳开鸿数字产业发展有限公司 | 数据交互方法、区块链预言机、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112446785B (zh) | 跨链交易方法、系统、装置、设备和存储介质 | |
US10824701B2 (en) | System and method for mapping decentralized identifiers to real-world entities | |
US10063548B1 (en) | System, method, and program product for processing secure transactions within a cloud computing system | |
CN111444550A (zh) | 基于区块链的业务数据的验证方法、装置及可读存储介质 | |
CN111108521A (zh) | 实现基于区块链的工作流 | |
CN112527912B (zh) | 基于区块链网络的数据处理方法、装置及计算机设备 | |
CN108615195B (zh) | 资源转移信息的传输方法和装置、存储介质、电子装置 | |
CN110597541B (zh) | 基于区块链的接口更新处理方法、装置、设备及存储介质 | |
CN111523890A (zh) | 基于区块链的数据处理方法、装置、存储介质及设备 | |
US12034867B2 (en) | Blockchain with random committee selection | |
US11757884B2 (en) | Method and system for controlling the release of a resource | |
CN111314172A (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN110502889B (zh) | 登录方法、装置、计算机可读存储介质和计算机设备 | |
CN112948499A (zh) | 信息获取方法和装置、电子设备和存储介质 | |
CN111144083A (zh) | 一种报表的生成方法、装置、设备及计算机可读存储介质 | |
CN111488372A (zh) | 一种数据处理方法、设备及存储介质 | |
US11343313B1 (en) | Fault tolerant periodic leader rotation for blockchain | |
US12069181B2 (en) | System and method for maintaining usage records in a shared computing environment | |
CN111292057A (zh) | 一种基于区块链的业务处理方法 | |
CN112581129A (zh) | 区块链交易数据治理方法及装置、计算机设备及存储介质 | |
CN111817859A (zh) | 基于零知识证明的数据共享方法、装置、设备及存储介质 | |
CN115701078B (zh) | 跨链交易处理方法、装置、电子设备以及存储介质 | |
CN113129002A (zh) | 一种数据处理方法以及设备 | |
CN112053159A (zh) | 交易数据验证方法、装置、风险控制服务器及业务服务器 | |
CN111553796A (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 |