一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

区块链的外部数据访问方法、装置、系统、设备和介质与流程

2022-02-22 01:55:08 来源:中国专利 TAG:


1.本技术涉及区块链技术领域,尤其涉及一种区块链的外部数据访问方法、装置、系统、设备和介质。


背景技术:

2.区块链是一种利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
3.区块链可以包括公有链和私有链,公有链中的智能合约可以通过预言机(oracle)访问外部数据,而私有链尤其是联盟链中,例如超级账本(hyperledger)fabric,运行机制与公有链存在不同,通过多节点背书的机制,最后由排序节点生成区块。hyperledger fabric中的智能合约可以直接调用外部数据,但是存在重复调用导致外部数据服务器压力大、外部数据可能由于网络原因错误导致共识失败的缺陷。


技术实现要素:

4.为了解决上述技术问题,提出了本技术。本技术的实施例提供了一种区块链的外部数据访问方法、装置、系统、设备和介质,可以优化联盟链中外部数据的访问方案,减少外部数据服务器的压力,并且提高外部数据访问的准确性。
5.根据本技术的第一方面,提供了一种区块链的外部数据访问方法,应用于联盟链的背书节点,所述背书节点中设置有用户合约和预言机合约,预言机服务器对应至少一个所述背书节点,所述方法包括:
6.获取用户客户端的外部数据访问请求,所述外部数据访问请求中携带有交易信息;
7.在所述预言机合约中不存在目标外部数据的情况下,通过所述用户合约调用所述预言机合约,将所述外部数据访问请求发送至预言机服务器,其中,所述目标外部数据为所述外部数据访问请求所请求的数据;
8.接收所述预言机服务器返回的所述交易信息对应的所述目标外部数据;
9.将所述目标外部数据返回给所述用户客户端。
10.根据本技术的第二方面,提供了一种区块链的外部数据访问方法,应用于联盟链中的预言机服务器中,所述预言机服务器对应至少一个背书节点,所述背书节点中设置有用户合约和预言机合约,所述方法包括:
11.接收背书节点在所述预言机合约中不存在目标外部数据的情况下,通过所述用户合约调用所述预言机合约发送的外部数据访问请求,其中,所述目标外部数据为所述外部数据访问请求所请求的数据,所述外部数据访问请求中携带有交易信息;
12.基于所述交易信息获取对应的目标外部数据;
13.将所述目标外部数据返回给所述背书节点,以使所述背书节点将所述目标外部数
据返回给用户客户端。
14.根据本技术的第三方面,提供了一种区块链的外部数据访问装置,设置于联盟链的背书节点中,所述背书节点中设置有用户合约和预言机合约,预言机服务器对应至少一个所述背书节点,所述装置包括:
15.请求获取模块,用于获取用户客户端的外部数据访问请求,所述外部数据访问请求中携带有交易信息;
16.请求发送模块,用于在所述预言机合约中不存在目标外部数据的情况下,通过所述用户合约调用所述预言机合约,将所述外部数据访问请求发送至预言机服务器,其中,所述目标外部数据为所述外部数据访问请求所请求的数据;
17.数据接收模块,用于接收所述预言机服务器返回的所述交易信息对应的所述目标外部数据;
18.数据返回模块,用于将所述目标外部数据返回给所述用户客户端。
19.根据本技术的第四方面,提供了一种区块链的外部数据访问装置,设置于联盟链中的预言机服务器中,所述预言机服务器对应至少一个背书节点,所述背书节点中设置有用户合约和预言机合约,所述装置包括:
20.请求接收模块,用于接收背书节点在所述预言机合约中不存在目标外部数据的情况下,通过所述用户合约调用所述预言机合约发送的外部数据访问请求,其中,所述目标外部数据为所述外部数据访问请求所请求的数据,所述外部数据访问请求中携带有交易信息;
21.数据获取模块,用于基于所述交易信息获取对应的所述目标外部数据;
22.数据发送模块,用于将所述目标外部数据返回给所述背书节点,以使所述背书节点将所述目标外部数据返回给用户客户端。
23.根据本技术的第五方面,提供了一种区块链的外部数据访问系统,设置于联盟链中,包括至少一个背书节点和预言机服务器;其中,所述背书节点中设置有用户合约和预言机合约,所述预言机服务器对应至少一个所述背书节点,所述背书节点用于:获取用户客户端的外部数据访问请求,所述外部数据访问请求中携带有交易信息;在所述预言机合约中不存在目标外部数据的情况下,通过所述用户合约调用所述预言机合约,将所述外部数据访问请求发送至预言机服务器,其中,所述目标外部数据为所述外部数据访问请求所请求的数据;接收所述预言机服务器返回的所述交易信息对应的所述目标外部数据;将所述目标外部数据返回给所述用户客户端。
24.根据本技术的第六方面,提供了一种电子设备,所述电子设备包括:
25.处理器;
26.用于存储所述处理器可执行指令的存储器;
27.所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述区块链的外部数据访问方法。
28.根据本技术的第七方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述区块链的外部数据访问方法。
29.本技术实施例提供的区块链的外部数据访问方案,联盟链的背书节点中获取用户客户端的外部数据访问请求,外部数据访问请求中携带有交易信息,在预言机合约中不存
在目标外部数据的情况下,通过用户合约调用预言机合约,将外部数据访问请求发送至预言机服务器,其中,目标外部数据为外部数据访问请求所请求的数据,接收预言机服务器返回的交易信息对应的目标外部数据,将目标外部数据返回给用户客户端。采用上述技术方案,通过在联盟链中增加预言机服务器以及在背书节点中增加预言机合约,实现了在联盟链中通过预言机访问外部数据,可以优化联盟链中外部数据的访问方案,避免了多个背书节点重复调用外部数据服务器,减少了外部数据服务器的压力,并且由于多个背书节点对应一个预言机服务器,提高了外部数据访问的准确性。
附图说明
30.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
31.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
32.图1是本技术实施例提供的一种区块链的外部数据访问系统的结构示意图。
33.图2是本技术实施例提供的另一种区块链的外部数据访问系统的结构示意图。
34.图3是本技术实施例提供的一种区块链的外部数据访问方法的流程示意图。
35.图4是本技术实施例提供的另一种区块链的外部数据访问方法的流程示意图。
36.图5是本技术实施例提供的再一种区块链的外部数据访问方法的流程示意图;
37.图6是本技术实施例提供的一种区块链的外部数据访问装置的结构示意图。
38.图7是本技术实施例提供的另一种区块链的外部数据访问装置的结构示意图。
39.图8是本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
40.下面,将参考附图详细地描述根据本技术的示例实施例。显然,所描述的实施例仅仅是本技术的一部分实施例,而不是本技术的全部实施例,应理解,本技术不受这里描述的示例实施例的限制。
41.图1是本技术实施例提供的一种区块链的外部数据访问系统的结构示意图。如图1所示,该区块链的外部数据访问系统设置于联盟链中,包括至少一个背书节点11和预言机服务器12;其中,背书节点11中设置有用户合约和预言机合约,预言机服务器12对应至少一个背书节点11,背书节点11用于:获取用户客户端13的外部数据访问请求,外部数据访问请求中携带有交易信息;在预言机合约中不存在目标外部数据的情况下,通过用户合约调用预言机合约,将外部数据访问请求发送至预言机服务器12,其中,目标外部数据为外部数据访问请求所请求的数据;接收预言机服务器12返回的交易信息对应的目标外部数据;将目标外部数据返回给用户客户端13。
42.其中,联盟链是区块链中的一种私有链,本技术实施例中的联盟链以hyperledger fabric为例进行说明。hyperledger fabric是linux基金会所主导的超级账本的项目之一,hyperledger fabric旨在作为开发模块化体系结构的区块链应用程序的基础,以便诸如共识和会员服务等组件可以即插即用,它使用容器技术来托管构成系统应用逻辑的智能合约
(也称为链代码)。hyperledger fabric是一种为企业构建的通用区块链结构。可以理解的是,本技术仅是以hyperledger fabric为例进行说明,本技术并不限于此。
43.预言机是一种可信任的实体,可以签署关于外部世界状态的信息,因为签名确认可以很明确地实现,预言机允许确定的智能合约对不确定的外部世界作出反应,因此,预言机是智能合约与外部进行数据交互的唯一途径。预言机目前较多的是应用在区块链地公有链中,用来帮助区块链访问外部数据,由于公有链的智能合约是封闭的环境,直接访问外部数据,会造成智能合约执行结果不一致,导致共识失败。
44.hyperledger fabric中的智能合约可以直接调用外部数据,但是存在以下缺陷:其背书节点中的用户合约需要自行处理网络输入/输出以及数据解析等工作,使得普通用户开发智能合约的门槛变高;多个背书节点执行用户合约时,重复调用外部数据服务器,对于外部数据服务器造成压力;多个背书节点执行用户合约时,分别获取外部数据,可能会由于网络防火墙、域名系统协议(domain name system,dns)等网络原因,得到错误或不一致的结果,导致共识失败;外部调用数据没有保存,使得无法还原合约执行环境,无法审计。为了解决hyperledger fabric访问外部数据时存在的问题,本技术实施例中可以在hyperledger fabric中引入预言机,通过预言机访问外部数据。
45.如图1所示,本技术实施例提供的区块链的外部数据访问系统中可以在背书节点11中引入预言机合约,预言机合约与用户合约部署在同一传输通道,提供外部数据访问服务;并且引入预言机服务器12,多个背书节点11对应于同一预言机服务器12,可以响应多个背书节点11中的预言机合约的请求,返回外部数据。
46.背书节点11可以获取用户客户端13发送的外部数据访问请求,在预言机合约中不存在目标外部数据的情况下,通过用户合约调用预言机合约,将外部数据访问请求发送至预言机服务器12,其中,目标外部数据为外部数据访问请求所请求的数据,接收预言机服务器12返回的交易信息对应的目标外部数据,将目标外部数据返回给用户客户端13。外部数据访问请求中携带有交易信息,交易信息可以包括交易标识和交易所对应统一资源定位符(uniform resource locator,url),交易标识可以采用txid表示。
47.由于hyperledger fabric中每一个交易具有唯一的txid,本技术实施例中基于txid url的交易信息访问外部数据,能够避免相同交易多背书节点对相同url资源的重复请求,同一交易在背书时通常是在同一微小时间段内,外部数据资源可认为数据不变,但是在不同交易请求相同资源时,需要重新请求。
48.如图1所示,预言机服务器12中还设置有预言机缓存,预言机服务器12用于接收各背书节点11发送的外部数据访问请求,并基于外部数据访问请求中携带的交易信息从预言机缓存获取对应的目标外部数据返回给各背书节点11;或者,预言机服务器12用于在接收各背书节点11发送的目标外部数据访问请求后,向外部数据服务器14发送外部数据访问请求,并接收外部数据服务器14返回的外部数据访问请求中携带的交易信息对应的目标外部数据,之后返回目标外部数据给各背书节点11并存储目标外部数据在预言机缓存中。预言机缓存可以提供交易信息为索引的缓存功能,可以避免对外部数据的重复查询,提高效率。外部数据服务器14可以为hyperledger fabric提供无状态数据。
49.预言机服务器12中的预言机服务模块接收到各背书节点11发送的外部数据访问请求之后,可以根据交易信息在预言机缓存中进行查询,如果预言机缓存中存在对应的目
标外部数据,则直接将该目标外部数据返回给各背书节点11;如果预言机缓存中不存在对应的目标外部数据,则向外部数据服务器14发送外部数据访问请求,接收外部数据服务器14返回的目标外部数据之后,可以将目标外部数据返回给各背书节点11,并存储该目标外部数据在预言机缓存中。示例性的,目标外部数据可以“map《txid url,result》”的形式存储在预言机缓存中。
50.本技术实施例中,背书节点11具体用于将用户合约的用户执行结果以及预言机合约的预言机执行结果返回给用户客户端13,用户执行结果和预言机执行结果中均包括目标外部数据。背书节点11中预言机合约可以采用putstate的方式获取到目标外部数据,用户合约和预言机合约接收到目标外部数据之后,通过模拟执行可以生成对账本结果变更的读写集合rwset《key,val》和rwset《txid url,result》,即得到用户执行结果和预言机执行结果,将用户执行结果和预言机执行结果返回给用户客户端13,即交易提供者。
51.这样设置的好处在于,区块提交时,预言机合约与用户合约的数据一起记账,更加方便,并且使得交易数据可审计,每笔交易的调用数据都写入区块链,区块链中的历史交易在何时何地都可以重放审计,进一步提高了安全性。
52.如图1所示,本技术实施例中的区块链的外部数据访问系统还可以包括排序节点15,排序节点15用于对用户执行结果和预言机执行结果进行认证之后生成交易区块,并广播交易区块。其中,交易区块是广播给图1中的提交节点16和背书节点11,提交节点16和背书节点11均为hyperledger fabric中的对等体(peers)节点,是提交交易并维护分类账状态的实体。排序节点15对用户执行结果和预言机执行结果进行背书检查之后,可以排序并创建交易区块,并将交易区块广播给提交节点16和背书节点11,提交节点16和背书节点11对交易区块验证之后分别写入本地账本中。背书节点11中包括账本,图1中用户合约和预言机合约分别与账本之间通过虚线连接,表示排序节点15对当用户执行结果和预言机执行结果排序且验证通过之后才将交易区块存储至账本中,交易区块中存储有上述用户执行结果和预言机执行结果。
53.图2是本技术实施例提供的另一种区块链的外部数据访问系统的结构示意图。图2在图1的基础上,通过另一种形式展示了区块链的外部数据访问系统的局部部署示意图,在hyperledger fabric中原有组件的基础上,背书节点11中增加了预言机合约,与外部数据服务器14之间增加了预言机服务器12,通过预言机合约和预言机服务器12实现外部数据的访问。可选的,背书节点11、预言机服务器12和外部数据服务器14之间可以基于安全传输层协议(transport layer security,tls)进行数据的传输,以提高安全性。
54.通过引入预言机合约和预言机服务器的方式,当用户客户端请求访问外部数据时,外界数据服务器对于每一个交易只做一次外部调用,减少外部数据服务器压力,hyperledger fabric各背书节点访问同一个预言机服务器,得到外部数据一致,使得区块链更易达成共识。
55.本技术实施例提供的区块链的外部数据访问系统,设置于联盟链中,包括至少一个背书节点和预言机服务器;其中,背书节点中设置有用户合约和预言机合约,预言机服务器对应至少一个背书节点,背书节点用于:获取用户客户端的外部数据访问请求,外部数据访问请求中携带有交易信息;在预言机合约中不存在目标外部数据的情况下,通过用户合约调用预言机合约,将外部数据访问请求发送至预言机服务器,其中,目标外部数据为外部
数据访问请求所请求的数据;接收预言机服务器返回的交易信息对应的目标外部数据;将目标外部数据返回给用户客户端。采用上述技术方案,通过在联盟链中增加预言机服务器以及在背书节点中增加预言机合约,实现了在联盟链中通过预言机访问外部数据,可以优化联盟链中外部数据的访问方案,避免了多个背书节点重复调用外部数据服务器,减少了外部数据服务器的压力,并且由于多个背书节点对应一个预言机服务器,提高了外部数据访问的准确性。
56.图3是本技术实施例提供的一种区块链的外部数据访问方法的流程示意图,本实施例可适用于联盟链中实现外部数据访问的情况。该方法可以由区块链的外部数据访问装置执行,该装置可以采用软件和/或硬件的方式实现,该装置可配置于电子设备中。如图3所示,该方法应用在联盟链的背书节点中,包括如下步骤:
57.步骤101、获取用户客户端的外部数据访问请求,外部数据访问请求中携带有交易信息。
58.本技术实施例中,联盟链可以为hyperledger fabric。交易信息可以包括交易标识和交易所对应统一资源定位符。
59.具体的,当联盟链中的用户客户端启动交易之后,可以发送外部数据访问请求至背书节点中,请求交易所需的外部数据。背书节点的用户合约响应用户客户端的调用,获取该外部数据访问请求。
60.步骤102、在预言机合约中不存在目标外部数据的情况下,通过用户合约调用预言机合约,将外部数据访问请求发送至预言机服务器,其中,目标外部数据为外部数据访问请求所请求的数据。
61.背书节点中设置有用户合约和预言机合约,预言机服务器对应至少一个背书节点。
62.背书节点的用户合约获取到外部数据访问请求之后,可以调用预设的预言机合约,以在预言机合约中不存在目标外部数据的情况下,将该外部数据访问请求发送至预言机服务器。如果预言机合约查询到对应的目标外部数据,则直接将目标外部数据返回给用户客户端。
63.步骤103、接收预言机服务器返回的交易信息对应的目标外部数据。
64.具体的,背书节点可以接收预言机服务器基于交易信息从内部设置的预言机缓存中或者外部数据服务器中得到的目标外部数据。
65.本技术实施例中,接收预言机服务器基于交易信息从内部设置的预言机缓存中或者外部数据服务器中得到的目标外部数据,可以包括:如果预言机服务器基于交易信息在预言机缓存中查询确定存在对应的目标外部数据,则接收预言机服务器返回的预言机缓存中的目标外部数据;否则,接收预言服务器基于交易信息从外部服务器中得到的目标外部数据。
66.预言机服务器中的预言机服务模块接收到各背书节点发送的外部数据访问请求之后,可以根据交易信息在预言机缓存中进行查询,如果预言机缓存中存在对应的目标外部数据,则直接将该目标外部数据返回给各背书节点;如果预言机缓存中不存在对应的目标外部数据,则向外部数据服务器发送外部数据访问请求,接收外部数据服务器返回的目标外部数据之后,可以将目标外部数据返回给各背书节点,并存储该目标外部数据在预言
机缓存中。
67.对于相同交易多个背书节点对相同资源的请求,预言机服务器仅仅会向外部数据服务器请求一次,之后之间从预言机缓存中获取并返回,大大减少了外部数据服务器的压力。
68.步骤104、将目标外部数据返回给用户客户端。
69.背书节点得到预言机服务器返回的外部数据之后,可以将目标外部数据返回给用户客户端。
70.对于用户客户端,在外部数据访问的过程中,无需处理任何调用的流程即可获取到关系的数据结果,更加便捷。
71.本技术实施例提供的区块链的外部数据访问方案,联盟链的背书节点中获取用户客户端的外部数据访问请求,外部数据访问请求中携带有交易信息,在预言机合约中不存在目标外部数据的情况下,通过用户合约调用预言机合约,将外部数据访问请求发送至预言机服务器,其中,目标外部数据为外部数据访问请求所请求的数据,接收预言机服务器返回的交易信息对应的目标外部数据,将目标外部数据返回给用户客户端。采用上述技术方案,通过在联盟链中增加预言机服务器以及在背书节点中增加预言机合约,实现了在联盟链中通过预言机访问外部数据,可以优化联盟链中外部数据的访问方案,避免了多个背书节点重复调用外部数据服务器,减少了外部数据服务器的压力,并且由于多个背书节点对应一个预言机服务器,提高了外部数据访问的准确性。
72.此外,在一些实施例中,将目标外部数据返回给用户客户端,可以包括:将用户合约的用户执行结果以及预言机合约的预言机执行结果返回给用户客户端,用户执行结果和预言机执行结果中均包括目标外部数据。
73.背书节点中用户合约和预言机合约接收到目标外部数据之后,通过模拟执行可以生成对账本结果变更的读写集合,即得到用户执行结果和预言机执行结果,将用户执行结果和预言机执行结果返回给用户客户端。
74.在一些实施例中,将用户合约的用户执行结果以及预言机合约的预言机执行结果返回给用户之后,还可以包括:获取排序节点对用户执行结果和预言机执行结果进行认证之后生成的交易区块,并将交易区块存储在账本中。
75.排序节点对用户执行结果和预言机执行结果进行背书检查之后,可以创建交易区块,并将交易区块广播给背书节点和提交节点,提交节点和背书节点对交易区块验证之后分别写入本地账本中。
76.这样设置的好处在于,区块提交时,预言机合约与用户合约的数据一起记账,更加方便,并且使得交易数据可审计,每笔交易的调用数据都写入区块链,区块链中的历史交易在何时何地都可以重放审计。
77.图4是本技术实施例提供的另一种区块链的外部数据访问方法的流程示意图,该方法可以由区块链的外部数据访问装置执行,该装置可以采用软件和/或硬件的方式实现,该装置可配置于电子设备中。如图4所示,该方法应用于联盟链中的预言机服务器中,包括如下步骤:
78.步骤201、接收背书节点在预言机合约中不存在目标外部数据的情况下,通过用户合约调用预言机合约发送的外部数据访问请求,其中,目标外部数据为外部数据访问请求
所请求的数据,外部数据访问请求中携带有交易信息。
79.其中,预言机服务器对应至少一个背书节点,背书节点中设置有用户合约和预言机合约。交易信息可以包括交易标识和交易所对应统一资源定位符。
80.具体的,当联盟链中的用户客户端启动交易之后,可以发送外部数据访问请求至背书节点中,请求交易所需的目标外部数据。背书节点的用户合约响应用户客户端的调用,获取该外部数据访问请求,之后可以调用预设的预言机合约,以在预言机合约中不存在目标外部数据的情况下,将该外部数据访问请求发送至预言机服务器。
81.步骤202、基于交易信息获取对应的目标外部数据。
82.本技术实施例中,预言机服务器中设置有预言机缓存,基于交易信息获取对应的目标外部数据,可以包括:基于交易信息从预言机缓存中或者外部数据服务器中获取目标外部数据。进一步的,基于交易信息从预言机缓存中或者外部数据服务器中获取目标外部数据,可以包括:如果基于交易信息在预言机缓存中查询确定存在对应的目标外部数据,则从预言机缓存中获取目标外部数据;否则,向外部数据服务器发送外部数据访问请求,并接收外部数据服务器返回的交易信息对应的目标外部数据。可选的,接收外部数据服务器返回的交易信息对应的目标外部数据之后,还可以包括:将目标外部数据存储在预言机缓存中。
83.预言机服务器接收到各背书节点发送的外部数据访问请求之后,可以根据交易信息在预言机缓存中进行查询,如果预言机缓存中存在对应的目标外部数据,则直接将该目标外部数据返回给各背书节点;如果预言机缓存中不存在对应的目标外部数据,则向外部数据服务器发送外部数据访问请求,接收外部数据服务器返回的目标外部数据之后,可以将目标外部数据返回给各背书节点,并存储该目标外部数据在预言机缓存中。
84.对于相同交易多个背书节点对相同资源的请求,预言机服务器仅仅会向外部数据服务器请求一次,之后之间从预言机缓存中获取并返回,大大减少了外部数据服务器的压力。
85.步骤203、将目标外部数据返回给背书节点,以使背书节点将目标外部数据返回给用户客户端。
86.预言机服务器获取到交易信息对应的目标外部数据之后,可以将目标外部数据返回给背书节点,背书节点得到目标外部数据之后,可以将目标外部数据返回给用户客户端。
87.本技术实施例提供的区块链的外部数据访问方案,联盟链的预言机服务器接收背书节点在预言机合约中不存在目标外部数据的情况下,通过用户合约调用预言机合约发送的外部数据访问请求,其中,目标外部数据为外部数据访问请求所请求的数据,外部数据访问请求中携带有交易信息,基于交易信息获取对应的目标外部数据,将外部数据返回给背书节点,以使背书节点将目标外部数据返回给用户客户端。采用上述技术方案,通过在联盟链中增加预言机服务器以及在背书节点中增加预言机合约,实现了在联盟链中通过预言机访问外部数据,可以优化联盟链中外部数据的访问方案,避免了多个背书节点重复调用外部数据服务器,减少了外部数据服务器的压力,并且由于多个背书节点对应一个预言机服务器,提高了外部数据访问的准确性。
88.图5是本技术实施例提供的再一种区块链的外部数据访问方法的流程示意图。本实施例在上述实施例的基础上,进一步对联盟链的背书节点访问外部数据的过程进行了具
体说明。如图5所示,背书节点中设置有用户合约和预言机合约,该方法可以包括:
89.步骤301、背书节点通过用户合约调用预言机合约。
90.当背书节点中的用户合约获取到用户客户端发送的外部数据访问请求或审计请求之后,可以调用预言机合约。
91.步骤302、背书节点通过预言机合约查询账本。
92.预言机合约可以根据请求中的交易信息查询背书节点中的账本,进而执行步骤303。
93.步骤303、背书节点通过预言机合约判断是否存在对应的数据,如果存在,则执行步骤313;否则,执行步骤304。
94.如果背书节点通过预言机合约在账本中查询到对应的目标外部数据,则执行步骤313;如果账本中不存在对应的目标外部数据,则执行步骤304。
95.步骤304、背书节点通过预言机合约发送请求至预言机服务器。
96.之后,执行步骤305和步骤311。
97.步骤305、预言机服务器查询预言机缓存。
98.预言机服务器可以根据请求中的交易信息查询预言机缓存,进而执行步骤306。
99.步骤306、预言机服务器判断是否存在交易信息对应的目标外部数据,若是,则将目标外部数据返回至预言机合约,执行步骤311;否则,执行步骤307。
100.步骤307、预言机服务器调用外部接口获取目标外部数据。
101.预言机服务器发送请求至外部数据服务器,以获取交易数据对应的目标外部数据。
102.步骤308、外部数据服务器返回包括目标外部数据的响应。
103.步骤309、预言机服务器等待响应,如果超时,则执行步骤311;否则,执行步骤310。
104.预言机服务器等待外部数据服务器的响应,如果在第一预设时间内接收到外部数据服务器响应的目标外部数据,则执行步骤310;否则,确定响应超时,执行步骤311。第一预设时间可以根据实际情况进行设定。
105.步骤310、预言机服务器将响应的目标外部数据存入预言机缓存。
106.预言机服务器将目标外部数据存储进预言机缓存中,以备相同交易的其他背书节点请求该目标外部数据时返回。并且,将目标外部数据返回给预言机合约,之后执行步骤311。
107.步骤311、背书节点通过预言机合约等待响应。
108.背书节点通过预言机合约等待预言机服务器的响应,如果在第二预设时间内接收到预言机服务器的响应,该响应可以为预言机服务器返回的目标外部数据或者响应超时信息,则执行步骤312;如果在第二预设时间内未接收到预言机服务器返回的响应,则响应超时,执行步骤313。第二预设时间可以根据实际情况进行设定。
109.步骤312、背书节点基于目标外部数据存储账本。
110.用户合约和预言机合约基于目标外部数据进行模拟执行,分别得到用户执行结果和预言机执行结果,当排序结果对该用户执行结果和预言机执行结果背书验证通过之后,可以排序并创建交易区块,广播交易区块给背书节点,以使背书节点将该交易区块存储至账本中。
111.步骤313、背书节点通过用户合约调用结束。
112.用户合约得到交易信息对应的目标外部数据或者得到响应超时信息,则调用结束。当用户合约得到目标外部数据之后,可以将该目标外部数据返回至用户客户端。而当用户合约得到响应超时信息之后,说明调用失败,即目标外部数据访问失败。
113.本技术实施例提供的区块链的外部数据访问方法,使用方便,用户无需处理调用过程,只关心想要的数据结果;多个背书节点执行用户合约时,不需要重复调用外部数据服务器,而是通过同一预言机服务器中预言机缓存的方式,相同交易相同资源只调用一次,减少了数据服务器的压力;预言机服务器共用,多个节点背书时数据一致,即使网络传输异常,也会返回一致的调用失败响应,不影响共识;预言机合约保存了交易调用数据,数据可审计,并且每笔交易的调用数据都写入区块链,区块链中的历史交易可以重放审计。
114.本技术实施例还提供一种区块链的外部数据访问系统,设置于联盟链中,包括至少一个背书节点和预言机服务器;其中,背书节点中设置有用户合约和预言机合约,预言机服务器对应至少一个背书节点,背书节点用于:获取用户客户端的外部数据访问请求,外部数据访问请求中携带有交易信息;在预言机合约中不存在目标外部数据的情况下,通过用户合约调用预言机合约,将外部数据访问请求发送至预言机服务器,其中,目标外部数据为外部数据访问请求所请求的数据;接收预言机服务器返回的交易信息对应的目标外部数据;将目标外部数据返回给用户客户端。
115.在一实施方式中,预言机服务器中设置有预言机缓存;预言机服务器用于接收各背书节点发送的外部数据访问请求,并基于外部数据访问请求中携带的交易信息从预言机缓存获取对应的目标外部数据返回给各背书节点;或者,预言机服务器用于在接收各背书节点发送的外部数据访问请求后,向外部数据服务器发送外部数据访问请求,并接收外部数据服务器返回的外部数据访问请求中携带的交易信息对应的目标外部数据,之后返回目标外部数据给各背书节点并存储目标外部数据在预言机缓存中。
116.在一实施方式中,背书节点具体用于将用户合约的用户执行结果以及预言机合约的预言机执行结果返回给用户客户端,用户执行结果和预言机执行结果中均包括目标外部数据。
117.在一实施方式中,系统还包括排序节点,排序节点用于对用户执行结果和预言机执行结果进行认证之后生成交易区块,并广播交易区块。
118.图6是本技术实施例提供的一种区块链的外部数据访问装置的结构示意图,该装置可由软件和/或硬件实现,一般可集成在电子设备中。如图6所示,该装置设置于联盟链的背书节点中,背书节点中设置有用户合约和预言机合约,预言机服务器对应至少一个背书节点,所述装置包括:
119.请求获取模块401,用于获取用户客户端的外部数据访问请求,所述外部数据访问请求中携带有交易信息;
120.请求发送模块402,用于在所述预言机合约中不存在目标外部数据的情况下,通过所述用户合约调用所述预言机合约,将所述外部数据访问请求发送至预言机服务器,其中,所述目标外部数据为所述外部数据访问请求所请求的数据;
121.数据接收模块403,用于接收所述预言机服务器返回的所述交易信息对应的所述目标外部数据;
122.数据返回模块404,用于将所述目标外部数据返回给所述用户客户端。
123.可选的,所述交易信息包括交易标识和交易所对应统一资源定位符。
124.可选的,所述数据接收模块403具体用于:
125.接收所述预言机服务器基于所述交易信息从内部设置的预言机缓存中或者外部数据服务器中得到的目标外部数据。
126.可选的,所述数据接收模块403具体用于:
127.如果所述预言机服务器基于所述交易信息在预言机缓存中查询确定存在对应的目标外部数据,则接收所述预言机服务器返回的所述预言机缓存中的目标外部数据;否则,接收所述预言服务器基于所述交易信息从所述外部服务器中得到的目标外部数据。
128.可选的,所述数据返回模块404具体用于:
129.将所述用户合约的用户执行结果以及所述预言机合约的预言机执行结果返回给所述用户客户端,所述用户执行结果和所述预言机执行结果中均包括所述目标外部数据。
130.可选的,所述装置还包括认证模块,具体用于:
131.将所述用户合约的用户执行结果以及所述预言机合约的预言机执行结果返回给所述用户之后,获取排序节点对所述用户执行结果和所述预言机执行结果进行认证之后生成的交易区块,并将所述交易区块存储在账本中。
132.本技术实施例提供的区块链的外部数据访问装置,设置于联盟链的背书节点中,获取用户客户端的外部数据访问请求,外部数据访问请求中携带有交易信息,在预言机合约中不存在目标外部数据的情况下,通过用户合约调用预言机合约,将外部数据访问请求发送至预言机服务器,其中,目标外部数据为外部数据访问请求所请求的数据,接收预言机服务器返回的交易信息对应的目标外部数据,将目标外部数据返回给用户客户端。采用上述技术方案,通过在联盟链中增加预言机服务器以及在背书节点中增加预言机合约,实现了在联盟链中通过预言机访问外部数据,可以优化联盟链中外部数据的访问方案,避免了多个背书节点重复调用外部数据服务器,减少了外部数据服务器的压力,并且由于多个背书节点对应一个预言机服务器,提高了外部数据访问的准确性。
133.图7是本技术实施例提供的另一种区块链的外部数据访问装置的结构示意图,该装置可由软件和/或硬件实现,一般可集成在电子设备中。如图7所示,该装置设置于联盟链中的预言机服务器中,所述预言机服务器对应至少一个背书节点,所述背书节点中设置有用户合约和预言机合约,所述装置包括:
134.请求接收模块501,用于接收背书节点在所述预言机合约中不存在目标外部数据的情况下,通过所述用户合约调用所述预言机合约发送的外部数据访问请求,其中,所述目标外部数据为所述外部数据访问请求所请求的数据,所述外部数据访问请求中携带有交易信息;
135.数据获取模块502,用于基于所述交易信息获取对应的所述目标外部数据;
136.数据发送模块503,用于将所述目标外部数据返回给所述背书节点,以使所述背书节点将所述目标外部数据返回给用户客户端。
137.可选的,所述预言机服务器中设置有预言机缓存,所述数据获取模块502具体用于:
138.基于所述交易信息从所述预言机缓存中或者外部数据服务器中获取目标外部数
据。
139.可选的,所述数据获取模块502具体用于:
140.如果基于所述交易信息在所述预言机缓存中查询确定存在对应的目标外部数据,则从所述预言机缓存中获取所述目标外部数据;否则,向所述外部数据服务器发送所述外部数据访问请求,并接收所述外部数据服务器返回的所述交易信息对应的所述目标外部数据。
141.可选的,所述装置还包括数据存储模块,具体用于:
142.接收所述外部数据服务器返回的所述交易信息对应的所述目标外部数据之后,将所述目标外部数据存储在所述预言机缓存中。
143.本技术实施例提供的区块链的外部数据装置,设置于联盟链的预言机服务器,接收背书节点在所述预言机合约中不存在目标外部数据的情况下,通过所述用户合约调用所述预言机合约发送的外部数据访问请求,其中,所述目标外部数据为所述外部数据访问请求所请求的数据,外部数据访问请求中携带有交易信息,基于交易信息获取对应的目标外部数据,将外部数据返回给背书节点,以使背书节点将目标外部数据返回给用户客户端。采用上述技术方案,通过在联盟链中增加预言机服务器以及在背书节点中增加预言机合约,实现了在联盟链中通过预言机访问外部数据,可以优化联盟链中外部数据的访问方案,避免了多个背书节点重复调用外部数据服务器,减少了外部数据服务器的压力,并且由于多个背书节点对应一个预言机服务器,提高了外部数据访问的准确性。
144.图8是本技术实施例提供的一种电子设备的结构示意图。如图8所示,电子设备600包括一个或多个处理器601和存储器602。
145.处理器601可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备600中的其他组件以执行期望的功能。
146.存储器602可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器601可以运行所述程序指令,以实现上文所述的本技术的各个实施例的区块链的外部数据访问方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
147.在一个示例中,电子设备600还可以包括:输入装置603和输出装置604,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
148.此外,该输入装置603还可以包括例如键盘、鼠标等等。
149.该输出装置604可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置604可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
150.当然,为了简化,图8中仅示出了该电子设备600中与本技术有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备600还可以包括任何其他适当的组件。
151.除了上述方法和设备以外,本技术的实施例还可以是计算机程序产品,其包括计
算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本技术实施例所提供的区块链的外部数据访问方法。
152.所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本技术实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c 等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
153.此外,本技术的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本技术实施例所提供的区块链的外部数据访问方法。
154.所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
155.以上结合具体实施例描述了本技术的基本原理,但是,需要指出的是,在本技术中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本技术的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本技术为必须采用上述具体的细节来实现。
156.本技术中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
157.还需要指出的是,在本技术的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本技术的等效方案。
158.提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本技术。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本技术的范围。因此,本技术不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
159.为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本技术的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献