CN111324425B - 一种数据访问方法、装置、设备及存储介质 - Google Patents
一种数据访问方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111324425B CN111324425B CN202010128858.1A CN202010128858A CN111324425B CN 111324425 B CN111324425 B CN 111324425B CN 202010128858 A CN202010128858 A CN 202010128858A CN 111324425 B CN111324425 B CN 111324425B
- Authority
- CN
- China
- Prior art keywords
- data
- block chain
- access
- accessed
- transaction request
- 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
Images
Classifications
-
- 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/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- 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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据访问方法、装置、设备及存储介质,涉及区块链技术领域。具体实现方式为:在本地预执行源区块链中发起的源事务请求的过程中,若存在目标区块链所属数据对象的访问需求,则访问目标区块链中的待访问数据对象的最新数据,并根据访问结果确定源事务请求的预执行结果;监听目标区块链中最新数据所在区块是否为被禁止回滚的区块;若是,则将预执行结果封装到源事务请求中,向源区块链网络发起上链操作;否则,持续监听,直至最新数据所在区块变更为被禁止回滚的区块。本申请实施例通过实现了不同区块链中数据的共享,保证了源事务请求的预执行结果的有效性和准确性。
Description
技术领域
本申请涉及计算机技术,尤其涉及区块链技术领域,具体涉及一种数据访问方法、装置、设备及存储介质。
背景技术
区块链本质上是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。
然而,由于不同区块链彼此独立运行,数据高度异构化,链与链之间协作难度大,导致区块链之间互通性缺失,存在信息孤岛的问题,极大地限制了区块链的应用空间。
有鉴于此,通过跨链技术实现不同区块链之间的数据共享成为亟待解决的问题。
发明内容
本申请实施例提供了一种数据访问方法、装置、设备及存储介质,以实现不同区块链之间的数据共享。
第一方面,本申请实施例提供了一种数据访问方法,由区块链节点执行,所述区块链节点中部署有至少两个区块链,包括:
在本地预执行源区块链中发起的源事务请求的过程中,如果确定存在目标区块链所属数据对象的访问需求,则访问所述目标区块链中的待访问数据对象的最新数据,并根据访问结果确定所述源事务请求的预执行结果;
监听所述目标区块链中所述最新数据所在区块是否为被禁止回滚的区块;
若是,则将所述预执行结果封装到所述源事务请求中,向所述源区块链网络发起上链操作;否则,持续监听,直至所述最新数据所在区块变更为被禁止回滚的区块。
本申请实施例由区块链节点在本地预执行源区块链发起的源事务请求的过程中,若存在目标区块链所属数据对象的访问需求,则访问目标区块链中的待访问数据对象的最新数据,并根据访问结果确定预执行结果;监听目标区块链中最新数据所在区块是否为被禁止回滚的区块;若是,则将预执行结果封装到源事务请求中,向源区块链网络发起上链操作;否则持续监听,直至最新数据所在区块变更为被禁止回滚的区块。上述技术方案通过在源事务请求的执行过程中,在具备目标区块链所属数据对象的访问需求时,访问目标区块链中待访问数据对象的最新数据,从而基于访问结果进行源事务请求预执行,为不同区块链之间数据的共享奠定了基础。同时,通过在最新数据所在区块为被禁止回滚的区块时,进行预执行结果的上链存储,从而保证了访问结果的有效性和准确性,进而保证了源事务请求的预执行结果的有效性和准确性。
可选的,在持续监听的过程中,还包括:
如果监听到所述待访问数据对象的最新数据被目标区块链更新,则将所述待访问数据对象更新后的最新数据作为访问结果,重新预执行所述源事务请求。
上述申请中的一个可选实施方式,通过在监听到待访问数据对象的最新数据被目标区块链更新时,根据更新后的最新数据重新进行源事务请求的预执行,从而避免了未能获取到最新数据,导致的源事务请求预执行结果不准确情况的发生,为预执行结果的准确性提供了保障。
可选的,在持续监听的过程中,还包括:
如果监听到所述待访问数据对象的最新数据被目标区块链回滚,则将所述待访问数据对象回滚后的最新数据作为访问结果,重新预执行所述源事务请求。
上述申请中的一个可选实施方式,在持续监听的过程中,若监听到最新数据被目标区块链回滚,则根据回滚后的最新数据重新进行源事务请求的预执行,从而避免了由于最新数据所在区块未被禁止回滚时,所在区块被回滚,导致获取的最新数据不准确的情况的发生,为后续基于获取到的最新数据进行源事务请求预执行时得到的预执行结果的准确度提供了保障。
可选的,所述方法还包括:
如果获知访问失败,则确定所述源事务请求的执行失败。
上述申请中的一个可选实施方式,在持续监听的过程中,若对目标区块链中的待访问数据对象的最新数据访问失败,则确定源事务请求执行失败,避免源事务请求的无效执行带来的计算资源的浪费。
可选的,访问所述目标区块链中的待访问数据对象的最新数据包括:
在所述区块链节点本地归属于目标区块链的数据库中进行待访问数据对象的最新数据的读操作;或
向目标区块链网络发起对待访问数据对象进行访问的目标事务请求,以请求目标区块链网络执行所述目标事务请求,对待访问数据对象的最新数据执行访问操作,所述访问操作包括读操作或写操作。
上述申请中的一个可选实施方式,通过将对待访问数据对象的最新数据的访问过程,细化为在区块链节点本地进行待访问数据对象的读操作,或者通过发起目标事务请求对待访问数据对象进行链上读操作或写操作,丰富了访问操作的访问方式和操作内容。
可选的,监听所述目标区块链中所述最新数据所在区块是否为被禁止回滚的区块,包括:
监听所述目标区块链中所述最新数据所在区块是否为检查点区块;其中,所述检查点区块以前的区块被禁止回滚。
上述申请中的一个可选实施方式,通过引入检查点区块,对区块中所存储数据的有效性加以区分,从而保证上链后的源事务请求的预执行结果所依照的访问结果不会因为最新数据所在区块被回滚执行,影响访问结果的有效性和稳定性,进而为源事务请求预执行结果的有效性和稳定性奠定了基础。
可选的,所述方法还包括:
将所述目标区块链中,位于最新区块之前设定区块数量的区块,作为检查点区块;或者,
根据所述目标区块链中的共识机制,确定所述目标区块链中的检查点区块。
上述申请中的一个可选实施方式,根据最新区块和设定区块数量对进行检查点区块确定,或者根据共识机制进行检查点区块的确定,完善了检查点区块的确定机制。
可选的,所述方法还包括:
根据所述源事务请求中待访问数据对象的数据标识,确定所述待访问数据对象属于不同区块链,则确定存在目标区块链所属数据对象的访问需求;
其中,所述数据标识至少包括数据级和链级的名称,所述数据标识还包括合约级和网络级的名称。
上述申请中的一个可选实施方式,通过根据待访问数据对象的数据标识进行目标智能合约所属数据对象的访问需求的确定,完善了访问需求的确定机制。同时,通过数据级名称、链级名称以及进一步地合约级和网络级名称,对数据对象进行命名,为基于数据标识进行数据对象所属目标区块链的确定奠定了基础。
可选的,所述源区块链与所述目标区块链属于相同或不同的超级链网络。
上述申请中的一个可选实施方式,通过对源区块链与目标区块链一致性进行限定,将本申请所涉及的数据访问方法应用至相同超级链网络中的跨链访问的应用场景,以及不同超级链网络中的跨网络访问的应用场景,丰富了本申请所涉及的数据访问方法的适用范围。
可选的,若所述源区块链与所述目标区块链属于不同的超级链网络,则访问所述目标区块链中待访问数据对象的最新数据,包括:
所述源区块链中的当前出块节点,向目标区块链所在超级链网络中的可信节点发起对待访问数据对象的最新数据进行访问的目标事务请求。
上述申请中的一个可选实施方式,将跨网络跨链访问情况下,通过源区块链中当前出块节点的可信节点,在目标区块链所在超级链网络发起对待访问数据对象进行访问的目标事务请求,从而保障了数据访问结果的可信度。
在访问所述目标区块链中的待访问数据对象的最新数据之前,所述方法还包括:
基于目标区块链部署的权限控制模型,对所述访问需求进行权限验证。
上述申请中的一个可选实施方式,通过目标区块链部署的权限控制模型,对访问需求进行权限验证,从而实现对目标区块链中数据对象的访问权限控制。
第二方面,本申请实施例还提供了一种数据访问装置,配置于区块链节点,所述区块链节点中部署有至少两个区块链,包括:
事务请求预执行模块,用于在本地预执行源区块链中发起的源事务请求的过程中,若存在目标区块链所属数据对象的访问需求,则访问所述目标区块链中的待访问数据对象的最新数据,并根据访问结果确定所述源事务请求的预执行结果;
区块链监听模块,用于监听所述目标区块链中所述最新数据所在区块是否为被禁止回滚的区块;
监听响应模块,用于若是,则将所述预执行结果封装到所述源事务请求中,向所述源区块链网络发起上链操作;否则,持续监听,直至所述最新数据所在区块变更为被禁止回滚的区块。
第三方面,本申请实施例还提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面实施例所提供的一种数据访问方法。
第四方面,本申请实施例还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行第一方面实施例所提供的一种数据访问方法。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是本申请实施例一中的一种数据访问方法的流程图;
图2是本申请实施例二中的一种数据访问方法的流程图;
图3是本申请实施例三中的一种数据访问方法的流程图;
图4是本申请实施例四中的一种数据访问装置的结构图;
图5是用来实现本申请实施例的数据访问方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
实施例一
图1是本申请实施例一中的一种数据访问方法的流程图。本申请实施例适用于对超级区块链网络中不同区块链所属的数据对象的跨链访问情况。在区块链系统中,可以部署实现不同功能的智能合约,每个智能合约包括程序的组合,在运行程序的过程中完成设定的功能处理。在智能合约运行中会涉及到产生一些数据以及读取一些数据,例如用户数据、业务数据等,这些可称为数据对象。每个智能合约可基于设定的数据存储模型来管理所属数据对象的存储和读写访问,形成数据对象集。一般而言,不同智能合约之间的数据对象集不交叠,无法相互访问。当不同智能合约位于不同区块链中,则存在交叉访问的障碍。本申请实施例针对这一问题,提出了一种跨区块链进行数据对象访问的方法。该方法由数据访问装置执行,该装置通过软件和/或硬件实现,并具体配置于承载有区块链节点的电子设备中。该区块链节点部署有至少两条区块链,即部署于运行区块链的系统程序和数据,例如通信机制、共识机制等程序和数据。
如图1所示的一种数据访问方法,包括:
S101、在本地预执行源区块链中发起的源事务请求的过程中,若存在目标区块链所属数据对象的访问需求,则访问所述目标区块链中的待访问数据对象的最新数据,并根据访问结果确定所述源事务请求的预执行结果。
在用户具备业务功能需求时,在源区块链中发起用于执行业务功能的源事务请求;相应的,区块链节点由于部署有源区块链的数据,所以接收并执行该源事务请求。
在本地预执行源事务请求的过程中,若存在借助目标区块链中所存储的数据对象的数据值进行辅助处理的情况,此时,需要针对目标区块链发起访问操作,以获取访问结果。在对目标区块链中的待访问数据对象进行访问操作时,由于不同区块中针对同一待访问数据对象,可能由于数据被更新等原因,存在数据值不同的情况,因此访问不同区块中的待访问数据对象,能够得到不同的访问结果。
为了保证访问结果中待访问数据对象的数据值的正确性,本申请在针对目标区块链发起访问操作时,针对目标区块链中的待访问数据对象的最新数据发起访问操作,以访问目标区块链中的待访问数据对象的最新数据。
示例性地,访问所述目标区块链中的待访问数据对象的最新数据,可以是根据源事务请求中对待访问数据对象提供的访问地址,作为最新数据的地址,并根据该最新数据的地址,发起访问操作,以根据该最新数据的地址,执行对该最新数据的访问操作;或者可选的,针对目标区块链中的待访问数据对象,发起访问操作,以通过对目标区块链中的最新区块向前依次遍历数据,以实现对待访问数据对象的最新数据的访问。
在本申请实施例的一种可选实施方式中,针对所述目标区块链中的待访问数据对象的最新数据发起访问操作,可以是在所述区块链节点本地归属于目标区块链的数据库中进行待访问数据对象的最新数据的读操作,以读取目标区块链中的待访问数据对象的最新数据的数据值作为访问结果反馈至源事务请求的源区块链,以供完成对源事务请求预执行时使用。
由于不同区块链中存储的数据存在交叉访问障碍,因此在源区块链中执行源事务请求时,无法从目标区块链中的数据对象直接执行访问操作。此时,可选的,需要借助桥接函数(XuperBridge),从目标区块链中进行待访问数据对象的读操作。示例性地,调用桥接函数,如果桥接函数确定调用类型为本地读取,则在区块链节点本地归属于目标区块链的数据库中,发起对待访问数据对象的读操作。
其中,桥接函数部署于区块链系统中,供区块链网络中的智能合约进行调用。
示例性地,源区块链网络中的智能合约可以基于区块链网络中的桥接模块,创建桥接实例,并通过运行该桥接实例,实现桥接函数的调用。
示例性地,若待访问数据对象为基于目标智能合约生成,则在区块链节点本地归属于目标区块链的数据库中,发起对待访问数据对象的读操作,可以是通过调用桥接函数,调用待访问数据对象所属的目标智能合约,从而实现对待访问数据对象的读操作。
可以理解的是,由于区块链节点的本地数据库中的数据发生变动后,目标区块链网络中其他节点所存储的数据并不会知晓该变动,因此也不会基于该变动进行相应数据对象存储内容的更新,将会出现目标区块链网络中不同区块链节点所存储的区块数据不同的情况,违背了区块链存储数据公开透明可追溯的原则。因此,当对待访问数据对象进行本地访问时,仅能够进行数据对象的读操作,无法进行对数据对象的写操作。
为了保证数据访问过程在目标区块链的可追溯性,还可以通过链上访问的方式发起对待访问数据对象的访问操作。其中,访问操作包括读操作或写操作。
在本申请实施例的一种可选实施方式中,针对所述目标区块链中的待访问数据对象的最新数据发起访问操作,可以是向目标区块链网络发起对待访问数据对象的最新数据进行访问的目标事务请求,以请求目标区块链网络执行所述目标事务请求,对待访问数据对象的最新数据执行访问操作,所述访问操作包括读操作或写操作。
需要说明的是,在进行数据访问操作时,执行源事务请求和执行目标事务请求的区块链节点可以是相同或不同的区块链节点。
为了便于及时获知数据访问结果,同时提高数据访问效率,在相同超级链网络执行数据的跨链访问时,也即源区块链和目标区块链不同,且属于相同的超级链网络时,可以由同时部署有源区块链和目标区块链的节点作为当前出块节点。
示例性地,若待访问数据对象为基于目标智能合约生成,则向目标区块链网络发起对待访问数据对象的最新数据进行访问的目标事务请求,以请求目标区块链网络执行所述目标事务请求,对待访问数据对象的最新数据执行访问操作,可以是:调用桥接函数,如果桥接函数确定调用类型为非本地读取,则基于目标智能合约发起对待访问数据对象的最新数据进行访问的目标事务请求,以请求目标区块链网络执行目标事务请求,对待访问数据对象执行访问操作。
当访问操作包括读操作时,可以读取待访问数据对象的最新数据,并将所读取的数据对象的最新数据,通过桥接函数反馈至源事务请求所属的源区块链,以供完成源事务请求的预执行时使用;当访问操作包括写操作时,目标事务请求中会包含有写操作的待访问数据对象的源数据值和目标数据对象的目标数据值;通过调用目标智能合约将待访问数据对象的源数据值更新为目标数据值。其中,源数据值可以是默认数据值或当前存储的数据值。其中,默认数据值为未存储数据时所存储的内容,例如可以是空值。当然,还可以在目标事务请求中仅包含写操作的目标数值,源数据值可以通过查找确定。
在一实施例中,确定调用类型可以通过数据访问方式和操作方式确定,当数据访问方式为本地访问,操作方式为读操作,则确定调用类型为本地读取;否则,确定调用类型为非本地读取。
示例性地,访问方式可以通过以下方式进行实现:由用户指定访问方式、随机确定访问方式、根据源事务请求的执行时间选择访问方式、或者根据区块链中的共识机制确定访问方式。
在一实施例中,当从目标区块链中获取到访问结果时,根据该访问结果继续执行源事务请求,得到预执行结果;当源区块链在设定时间段内没有接收到访问结果,或者获知访问失败,则拒绝源事务请求的预执行过程,并确定源事务请求执行失败;或者,重新预执行源事务请求,并重新发起访问操作。其中,设定时间段的时间长度可以在部署区块链的部署数据时进行确定。
S102、监听所述目标区块链中所述最新数据所在区块是否为被禁止回滚的区块。若是,则执行S103;否则,返回执行S102。
示例性地,当监听到目标区块链中最新数据所在区块为被禁止回滚的区块,表明所获取的待访问数据对象的最新数据不会被回滚执行,因此该数据值不会发生变动,此时所得到的访问结果准确,相应的,根据访问结果完成源事务请求的预执行所得到的预执行结果也准确,可触发后续将预执行结果封装到源事务请求中,向源区块链网络发起上链操作,进而将源事务请求和预执行结果上链存储。当监听到目标区块链中最新数据所在区块为非被禁止回滚的区块时,表明所获取的待访问数据对象的最新数据可能会存在被回滚执行或被更新的情况,因此数据值可能会发生变动,此时所得到的访问结果稳定性较差,因此需要等待并持续监听。
其中,被禁止回滚到区块可以是目标区块链中的连续或不连续的区块。可以理解的是,为了便于对目标区块链中各区块的数据进行管理,典型的,将被禁止回滚的区块设置为连续区块。
示例性地,可以通过对区块进行标记的方式,对区块的回滚禁止状态加以区分。可选的,将被禁止回滚的区块和未被禁止回滚的区块分区标记,例如仅标记被禁止回滚的区块。
在本申请实施例的一种可选实施方式中,还可以引入检查点(checkpoint)区块机制,用于对目标区块链中的已存储区块进行标记,使得被标记区块以前的区块被禁止回滚。其中,被标记的区块即为检查点区块。
相应的,监听目标区块链中最新数据所在区块是否为被禁止回滚的区块,可以是:监听目标区块链中最新数据所在区块是否为检查点区块;若是,则触发执行将预执行结果封装到所述源事务请求中,向所述源区块链网络发起上链操作;否则,持续监听,直至最新数据所在区块变更为检查点区块。
S103、将所述预执行结果封装到所述源事务请求中,向所述源区块链网络发起上链操作。
本申请实施例由区块链节点在本地预执行源区块链发起的源事务请求的过程中,若存在目标区块链所属数据对象的访问需求,则访问目标区块链中的待访问数据对象的最新数据,并根据访问结果确定预执行结果;监听目标区块链中最新数据所在区块是否为被禁止回滚的区块;若是,则将预执行结果封装到源事务请求中,向源区块链网络发起上链操作;否则持续监听,直至最新数据所在区块变更为被禁止回滚的区块。上述技术方案通过在源事务请求的执行过程中,在具备目标区块链所属数据对象的访问需求时,访问目标区块链中待访问数据对象的最新数据,从而基于访问结果进行源事务请求预执行,为不同区块链之间数据的共享奠定了基础。同时,通过在最新数据所在区块为被禁止回滚的区块时,进行预执行结果的上链存储,从而保证了访问结果的有效性和准确性,进而保证了源事务请求的预执行结果的有效性和准确性。
实施例二
图2是本申请实施例二中的一种数据访问方法的流程图,本申请实施例在上述各实施例的技术方案的基础上,进行了优化改进。
进一步地,在进行数据访问过程中,追加“根据所述源事务请求中待访问数据对象的数据标识,确定所述待访问数据对象属于不同区块链,则确定存在目标区块链所属数据对象的访问需求;其中,所述数据标识至少包括数据级和链级的名称,所述数据标识还包括合约级和网络级的名称”,以完善访问需求的确定机制。
如图2所示的一种数据访问方法,包括:
S201、在本地预执行源区块链中发起的所述源事务请求的过程中,根据所述源事务请求中待访问数据对象的数据标识,确定所述待访问数据对象属于不同区块链,则确定存在目标区块链所属数据对象的访问需求。
其中,所述数据标识至少包括数据级和链级的名称,所述数据标识还包括合约级和网络级的名称。
示例性地,在区块链系统运行过程中,进行数据对象存储时,通过网络级名称、链级名称、合约级名称和数据级名称,生成待存储数据对象的数据标识,对待存储数据对象进行命名区分。相应的,在对区块链中的数据进行访问时,可以根据数据标识,确定待访问数据对象所属的目标区块链,或进一步确定区块链所属的超级链网络。
举例说明,超级链网络xuper中存在一条区块链root链,在root链中存储有变量user对应的变量值。那么,可以通过xuper.root.user对该变量user进行命名,作为该变量在区块链系统中的唯一数据标识。相应的,在访问该数据对象时,通过数据标识“xuper.root.user”确定该待访问数据对象所属的区块链root和/或区块网络xuper。
需要说明的是,为了保证区块链系统中数据对象的唯一性,防止发生数据冲突,在区块链系统中,同一区块链中,智能合约的名称唯一;同一区块链网络中,区块链的名称唯一;同一区块链系统中,超级链网络名称唯一。在实际应用过程中,超级链网络可以由不同的主体进行维护,因此,在区块链系统中可以设置统一的网络名称注册机制,以保证超级链网络命名的唯一性。示例性地,可以通过预先设置网络名称注册联盟,通过联盟成员线下协商的方式确定超级链网络的网络名称,并进行名称分配分配。
在本申请实施例的一种可选实施方式中,在区块链系统中部署有实现不同功能的智能合约,每个智能合约可基于设定的数据存储模型来管理所属数据对象的存储和读写访问,因此,在对数据对象在进行存储时,还可以在数据标识中添加合约级名称。
举例说明,超级链网络xuper中存在一条区块链root链,在root链中部署有智能合约account,该智能合约account对应的数据库中存储有变量user对应的变量值。那么,可以通过xuper.root.account.user对该变量user进行命名,作为该变量在区块链系统中的唯一数据标识。相应的,在访问该数据对象时,通过数据标识“xuper.root.account.user”确定该待访问数据对象所属的区块链root和/或超级链网络xuper,进一步还可以确定待访问数据对象所属的智能合约account。
相应的,为了保证区块链系统中数据对象的唯一性,防止发生数据冲突,在区块链系统中,同一区块链中,智能合约的名称唯一;同一区块链网络中,区块链的名称唯一;同一区块链系统中,超级链网络名称唯一。
可选的,当待访问数据对象所属的目标区块链与发起源事务请求的源区块链属于相同的超级链网络时,确定存储目标区块链所属数据对象的跨链访问需求;当待访问数据对象所属的目标区块链与发起源事务请求的源区块链属于不同的超级链网络时,确定存储目标区块链所属数据对象的跨网络访问需求。
为了保证数据访问结果的准确性和可信度,在源区块链与目标区块链属于不同的超级链网络,也即存在跨网络访问需求时,访问所述目标区块链中待访问数据对象的最新数据,可以是:所述源区块链中的当前出块节点,向目标区块链所在超级链网络中的可信节点发起对待访问数据对象的最新数据进行访问的目标事务请求。相应的,目标区块链中的当前出块节点,接收并执行该事务请求,从而对目标区块链中待访问数据对象的最新数据发起访问操作,并反馈访问结果至源区块链的当前出块节点。
示例性地,当区块链系统中存在至少两个超级链网络时,为了实现不同超级链网络中的数据共享,一个超级链网络中的至少一个区块链节点,在另一超级链网络中会设置至少一个可信节点。
可选的,可信节点可以根据节点的通信能力、数据算力和持币数量等中的至少一种进行确定,还可以由区块链管理方或节点持有方自行设定。
在一实施例中,各节点可以在本地维护有可信节点列表,在需要进行跨网络访问时,可以查询可信节点列表进行可信节点的选取。
可以理解的是,为了保证在区块链系统中跨网络访问的正常进行,还可以根据可信节点的运行情况,实时或定时对可信节点列表中的可信节点进行增加、删除和改写等更新操作。
S202、如果确定存在目标区块链所属数据对象的访问需求,则访问所述目标区块链中的待访问数据对象的最新数据,并根据访问结果确定所述源事务请求的预执行结果。
S203、监听所述目标区块链中所述最新数据所在区块是否为被禁止回滚的区块。若是则执行S204;否则,返回执行S203。
S204、将所述预执行结果封装到所述源事务请求中,向所述源区块链网络发起上链操作。
本申请实施例通过将访问需求确定操作,细化为根据源事务请求中待访问数据对象的数据标识,确定目标区块链与源区块链为不同区块链时,确定存在存访问需求。由于数据标识中包括数据级和链级的名称,因此可以对待访问数据对象所属的目标区块链进行定位;同时通过目标区块链与源区块链进行比对,确定是否具备数据的跨链访问需求,并在具备跨链访问需求的情况下,触发执行数据的跨链访问操作,丰富了数据访问的应用场景。进一步地,在数据标识中添加网络级名称,进而确定目标区块链和源区块链所属的超级链网络是否相同,从而确定是否存跨网络访问需求,并在具备时执行数据的跨网络访问操作,进一步丰富了数据访问的应用场景。进一步地,还可以在数据标识中添加合约级的名称,从而确定待访问数据对象所属的智能合约,为基于智能合约的访问奠定基础。
实施例三
图3是本申请实施例三中一种数据访问方法的流程图。本申请实施例在上述各实施例的技术方案的基础上,进行了优化改进。
进一步地,将“监听所述目标区块链中所述最新数据所在区块是否为被禁止回滚的区块”,细化为“监听所述目标区块链中所述最新数据所在区块是否为检查点区块;其中,所述检查点区块以前的区块被禁止回滚”,以完善区块监听机制。
进一步地,在持续监听的过程中,追加“如果监听到所述待访问数据对象的最新数据被目标区块链更新,则将所述待访问数据对象更新后的最新数据作为访问结果,重新预执行所述源事务请求”,以完善最新数据被更新时的数据访问机制。
进一步地,在持续监听的过程中,追加“如果监听到所述待访问数据对象的最新数据被目标区块链回滚,则将所述待访问数据对象回滚后的最新数据作为访问结果,重新预执行所述源事务请求”,以完善最新数据被回滚时的数据访问机制。
进一步地,在执行数据访问操作过程中,追加“确定所述源事务请求的执行失败”,以完善数据访问失败时的数据访问机制。
如图3所示的一种数据访问方法,包括:
S301、在本地预执行源区块链中发起的所述源事务请求的过程中,若存在目标区块链所属数据对象的访问需求,则访问所述目标区块链中的待访问数据对象的最新数据。
S302、判断待访问数据对象的最新数据是否访问成功;若是,则执行S303A;否则执行S303B。
示例性地,源区块链在设定时间段内没有接收到访问结果,则确定访问失败;或者在对目标区块链中的待访问数据对象的最新数据进行访问操作时,源事务请求的发起者不具备该目标区块链中待访问数据对象的访问权限,则确定访问失败。
在本申请实施例的一种可选实施方式中,在访问目标区块链中的待访问数据对象的最新数据之前,基于目标区块链部署的权限控制模型,对访问需求进行权限验证;若验证成功,则发起访问操作,以进行待访问数据对象的最新数据的访问,得到访问结果,以供后续完成源事务请求的预执行使用;若验证失败,则确定访问失败,进而终止源事务请求的执行,确定源事务请求执行失败。
示例性地,基于目标区块链部署的权限控制模型,对访问需求进行权限验证,可以是:根据在目标区块链中部署待访问数据对象所属的目标智能合约时所设置的权限控制表,对源事务请求的发起者的数据访问权限进行验证。
其中,权限控制表用于控制用户账户对目标智能合约的调用权限。在权限控制表中记录有目标智能合约的调用权限控制策略:阈值策略、背书策略和固定账户策略中的至少一种。通过调用权限控制策略对调用目标智能合约的用户账户进行鉴权,当鉴权通过时,调用目标智能合约执行访问操作。
其中,阈值策略,用于根据源事务请求中所包含的授权账户的权重之和,与设定调用阈值之间的关系,确定调用鉴权通过结果;背书策略,用于根据源事务请求中所包含的授权账户的数量或比例,确定调用鉴权通过结果;账户策略,用于根据源事务请求的发起用户与预设授权账户或预设禁权账户之间的关系,确定鉴权通过结果。其中,授权账户为具备目标智能合约调用权限的用户账户。其中,禁权账户为不具备目标智能合约调用权限的用户账户。其中,不同授权账户在部署目标智能合约时,预先设定有相应的调用权重值。其中,授权账户、禁权账户以及各授权账户的调用权重值还可以在目标智能合约部署之后,由目标智能合约的合约管理账户根据需要进行调整。
可选的,通过调用权限控制策略对调用目标智能合约的用户账户进行鉴权,可以是:确定源事务请求中所包含的授权账户的权重之和;若该和值大于设定调用阈值,则鉴权通过。或者可选的,确定源事务请求中所包含的授权账户的数量;若该数量大于设定数量阈值,则鉴权通过。或者可选的,确定源事务请求中所包含的授权账户的比例,若该比例大于设定比例阈值,则鉴权通过。或者可选的,确定源事务请求的发起用户是否为预设授权账户或预设授权账户的关联账户;若是,则鉴权通过。或者可选的,确定源事务请求的发起用户是否为预设禁权账户或预设禁权账户的关联账户;若否,则鉴权通过。其中,账户的关联账户可以理解为账户的父账户或子账户。
S303A、根据访问结果确定所述源事务请求的预执行结果;继续执行S304。
S303B、确定所述源事务请求的执行失败。
S304、监听所述目标区块链中所述最新数据所在区块是否为检查点区块;若是,则执行S305A;否则执行S305B。
其中,所述检查点区块以前的区块被禁止回滚。
需要说明的是,在区块链中进行数据存储时,由于出块节点自身通信能力出现波动,存在区块被回滚的情况,此时若待访问数据对象的存储区块被回滚,那么在此之前的访问结果中的数值,也可能由于该回滚操作,被重新更新而发生更改。
为了保证访问结果中待访问数据对象的数据值的有效性和正确性,本申请会在目标区块链运行过程中,引入检查点区块机制,用于对目标区块链中的已存储区块进行标记,使得被标记区块以前的区块被禁止回滚。其中,被标记的区块即为检查点区块。
相应的,当确定存在目标区块链所属数据对象的访问需求时,在访问目标区块链中的待访问数据对象的最新数据之后,为了避免由于所访问的最新数据被回滚执行导致数据值发生变动,影响访问结果的准确性,进而影响预执行结果的准确性,还需要再得到预执行结果,在对源事务请求和预执行结果上链存储之前,对目标区块链中最新数据所在区块是否为检查点区块加以监听,从而实现对所获取的访问结果的准确性的把控。
可选的,检查点区块的确定过程,可以采用以下方式加以实现:将目标区块链中,位于最新区块之前设定区块数量的区块,作为检查点区块。其中,设定区块数量可以在创建目标区块链时,在部署数据中约定设定区块数量的具体数值;还可以由区块链的管理节点或维护节点指定设定区块数量的具体数值。示例性地,设定区块数量可以是5个。相应的,在确定检查点区块中,根据最新区块与设定区块数量之间的差值,确定当前时刻的检查点区块位置。
例如,目标区块链的最新区块为第[1000]个区块,设定区块数量为5个,相应的,将第[0995]个区块作为检查点区块。
或者可选的,检查点区块的确定过程,可以采用以下方式加以实现:根据目标区块链中的共识机制,确定目标区块链中的检查点区块。
示例性地,检查点区块的确定时机可以随机确定或按照一定策略指定。可以理解的是,为了便于目标区块链的正常运行和管理,通常会根据设定频率对目标区块链中的检查点区块进行更新。其中,设定频率可以是设定时间频率,例如每天;还可以是区块链的出块频率,例如每新生成一个区块。
可选的,对检查点区块和非检查点区块,可以通过建立哈希表的方式进行区分。例如,目标区块链所部署的网络中的各区块链节点,能够针对每条区块链,预先维护一个统一的区块标志表,用于记录各区块标识是否为检查点区块,或者仅记录当前属于检查点区块的区块标识。相应的,通过查询该区块标志表,能够获知该目标区块链中的检查点区块是哪个区块。
在本申请实施例的一个可选实施方式中,在监听目标区块链中最新数据所在区块是否为检查点区块,可以是在确定待访问数据对象所属的目标区块链之后,由本机节点从本地存储的目标区块链的区块标志表中,查询确定该目标区块链当前的检查点区块,或者,查询当前时刻最新数据所在区块是否为检查点区块。
S305A、将所述预执行结果封装到所述源事务请求中,向所述源区块链网络发起上链操作。
示例性地,当监听到目标区块链中最新数据所在区块为检查点区块时,表明所获取的待访问数据对象的最新数据不会被回滚执行,因此该数据值不会发生变动,此时所得到的访问结果准确,相应的根据访问结果完成源事务请求的预执行所得到的预执行结果也准确,可触发后续将预执行结果封装到源事务请求中,向源区块链网络发起上链操作,进而将源事务请求和预执行结果上链存储。
S305B、监听所述待访问数据对象的最新数据是否被目标区块链回滚;若是,则执行S306A;否则执行S306B。
示例性地,当监听到目标区块链中最新数据所在区块为非检查点区块时,表明所获取的待访问数据对象的最新数据可能会存在被回滚执行或被更新的情况,因此数据值可能会发生变动,此时所得到的访问结果稳定性较差,因此需要等待并持续监听。
需要说明的是,当持续监听时,可能会存在最新数据所在区块被目标区块链回滚,以及最新数据被更新的情况,都将会导致最新数据的数据值发生变化,因此,需要在最新数据为转化为检查点区块之前,还需要对最新数据的回滚情况和更新情况进行监听。
S306A、将所述待访问数据对象回滚后的最新数据作为访问结果;继续执行S303A。
可以理解的是,由于监听到待访问数据对象的最新数据被回滚执行,则表明之前访问结果中的待访问数据对象的数据值可能会发生了变化,那么,相应的,根据该访问结果所得到的源事务请求的预执行结果准确性有待商榷。为了提高预执行结果的准确度,需要将待访问数据对象更新后的最新数据作为访问结果。
S306B、监听待访问数据对象的最新数据是否被目标区块链更新;若是,则执行S307;否则返回执行S304。
可以理解的是,S305B和S306B分别为对最新数据的回滚情况和更新情况的监听操作,两者可以先后执行,或同时执行,本申请实施例对两者具体的执行顺序不作任何限定,仅需保证在最新数据所在区块变更为检查点区块之前,在最新数据被更新或被回滚时,进行访问结果的重新确定;在最新数据没有被更新,并且没有被回滚的情况下,等待最新数据所在区块变更为检查点区块,从而触发执行后续源事务请求的上链操作。
S307、将所述待访问数据对象更新后的最新数据作为访问结果;继续执行S303A。
可以理解的是,由于监听到待访问数据对象的最新数据被目标区块链更新,则表明之前访问结果中的待访问数据对象的数据值已经不是最新数据,那么,相应的,根据该访问结果所得到的源事务请求的预执行结果并不准确。为了提高预执行结果的准确度,需要将待访问数据对象更新后的最新数据作为访问结果。
本申请实施例通过将通过在持续监听的过程中,追加对待访问数据对象的最新数据的更新监听,从而在待访问数据对象的最新数据被更新时,同步更新访问结果,保证了访问结果的准确性,为预执行结果的准确性奠定了基础。进一步地,在持续监听过程中,追加对待访问数据对象的最新数据的回滚监听,从而在待访问数据对象的最新数据被回滚时,同步更新访问结果,保证了访问结果的准确性,为预执行结果的准确性奠定了基础。进一步地,在数据访问过程中,追加数据访问失败的情况,并在数据访问失败时,确定源事务请求的执行失败,减少源事务请求的不必要执行,带来的计算资源的浪费。
在本申请实施例中,若目标事务请求上链成功,例如对目标区块链中的数据对象进行了更新,而此后源事务请求的预执行结果,因某种原因未上链或回滚,则可以并不影响对目标区块链的操作。
实施例四
图4是本申请实施例四中的一种数据访问装置的结构图,本申请实施例适用于对超级区块链网络中不同区块链所属的数据对象的跨链访问情况。该装置通过软件和/或硬件实现,并具体配置于承载有区块链节点的电子设备中。该区块链节点区块链节点部署有至少两条区块链。
如图4所示的一种数据访问装置400,包括:事务请求预执行模块401、区块链监听模块402和监听响应模块403。其中,
事务请求预执行模块401,用于在本地预执行源区块链中发起的源事务请求的过程中,若存在目标区块链所属数据对象的访问需求,则访问所述目标区块链中的待访问数据对象的最新数据,并根据访问结果确定所述源事务请求的预执行结果;
区块链监听模块402,用于监听所述目标区块链中所述最新数据所在区块是否为被禁止回滚的区块;
监听响应模块403,用于若是,则将所述预执行结果封装到所述源事务请求中,向所述源区块链网络发起上链操作;否则,通过区块链监听模块402持续监听,直至所述最新数据所在区块变更为被禁止回滚的区块。
本申请实施例通过事务请求预执行模块在本地预执行源区块链中发起的源事务请求的过程中,若存在目标区块链所属数据对象的访问需求,则访问目标区块链中的待访问数据对象的最新数据,并根据访问结果确定预执行结果;通过区块链监听模块监听目标区块链中最新数据所在区块是否为被禁止回滚的区块;通过监听响应模块若是,则将预执行结果封装到源事务请求中,向源区块链网络发起上链操作;否则,持续监听,直至最新数据所在区块变更为被禁止回滚的区块。上述技术方案通过在源事务请求的执行过程中,在具备目标区块链所属数据对象的访问需求时,访问目标区块链中待访问数据对象的最新数据,从而基于访问结果进行源事务请求预执行,为不同区块链之间数据的共享奠定了基础。同时,通过在最新数据所在区块为被禁止回滚的区块时,进行预执行结果的上链存储,从而保证了访问结果的有效性和准确性,进而保证了源事务请求的预执行结果的有效性和准确性。
进一步地,区块链监听模块402,在持续监听的过程中,还用于:
如果监听到所述待访问数据对象的最新数据被目标区块链更新,则通过事务请求预执行模块401将所述待访问数据对象更新后的最新数据作为访问结果,重新预执行所述源事务请求。
进一步地,区块链监听模块402,在持续监听的过程中,还用于:
如果监听到所述待访问数据对象的最新数据被目标区块链回滚,则通过事务请求预执行模块401将所述待访问数据对象回滚后的最新数据作为访问结果,重新预执行所述源事务请求。
进一步地,该装置还包括,访问操作重新发起模块,具体用于:
如果获知访问失败,则确定所述源事务请求的执行失败。
进一步地,事务请求预执行模块401,在执行访问所述目标区块链中的待访问数据对象的最新数据时,具体用于:
在所述区块链节点本地归属于目标区块链的数据库中进行待访问数据对象的最新数据的读操作;或
向目标区块链网络发起对待访问数据对象的最新数据进行访问的目标事务请求,以请求目标区块链网络执行所述目标事务请求,对待访问数据对象的最新数据执行访问操作,所述访问操作包括读操作或写操作。
进一步地,区块链监听模块402,具体用于:
监听所述目标区块链中所述最新数据所在区块是否为检查点区块;其中,所述检查点区块以前的区块被禁止回滚。
进一步地,该装置还包括,检查点区块确定模块,用于:
确将所述目标区块链中,位于最新区块之前设定区块数量的区块,作为检查点区块;或者,
根据所述目标区块链中的共识机制,确定所述目标区块链中的检查点区块。
进一步地,该装置还包括,访问需求确定模块,具体用于:
根据所述源事务请求中待访问数据对象的数据标识,确定所述待访问数据对象属于不同区块链,则确定存在目标区块链所属数据对象的访问需求;
其中,所述数据标识至少包括数据级和链级的名称,所述数据标识还包括合约级和网络级的名称。
进一步地,所述源区块链与所述目标区块链属于相同或不同的超级链网络。
进一步地,若所述源区块链与所述目标区块链属于不同的超级链网络,则事务请求预执行模块401,在执行访问所述目标区块链中待访问数据对象的最新数据时,具体用于:
所述源区块链中的当前出块节点,向目标区块链所在超级链网络中的可信节点发起对待访问数据对象的最新数据进行访问的目标事务请求。
进一步地,该装置还包括,权限验证模块,用于:
在访问所述目标区块链中的待访问数据对象的最新数据之前,基于目标区块链部署的权限控制模型,对所述访问需求进行权限验证。
上述数据访问装置可执行本申请任意实施例所提供的数据访问方法,具备执行数据访问方法相应的功能模块和有益效果。
实施例五
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图5所示,是实现本申请实施例的数据访问方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图5所示,该电子设备包括:一个或多个处理器501、存储器502,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图5中以一个处理器501为例。
存储器502即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的数据访问方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的数据访问方法。
存储器502作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的数据访问方法对应的程序指令/模块(例如,附图4所示的事务请求预执行模块401、区块链监听模块402和监听响应模块403)。处理器501通过运行存储在存储器502中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据访问方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储实现数据访问方法的电子设备的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至实现数据访问方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实现数据访问方法的电子设备还可以包括:输入装置503和输出装置504。处理器501、存储器502、输入装置503和输出装置504可以通过总线或者其他方式连接,图5中以通过总线连接为例。
输入装置503可接收输入的数字或字符信息,以及产生与实现数据访问方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置504可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、互联网和区块链网络。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
本申请实施例由区块链节点在本地预执行源区块链发起的源事务请求的过程中,若存在目标区块链所属数据对象的访问需求,则访问目标区块链中的待访问数据对象的最新数据,并根据访问结果确定预执行结果;监听目标区块链中最新数据所在区块是否为被禁止回滚的区块;若是,则将预执行结果封装到源事务请求中,向源区块链网络发起上链操作;否则持续监听,直至最新数据所在区块变更为被禁止回滚的区块。上述技术方案通过在源事务请求的执行过程中,在具备目标区块链所属数据对象的访问需求时,访问目标区块链中待访问数据对象的最新数据,从而基于访问结果进行源事务请求预执行,为不同区块链之间数据的共享奠定了基础。同时,通过在最新数据所在区块为被禁止回滚的区块时,进行预执行结果的上链存储,从而保证了访问结果的有效性和准确性,进而保证了源事务请求的预执行结果的有效性和准确性。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (14)
1.一种数据访问方法,其特征在于,由区块链节点执行,所述区块链节点中部署有至少两个区块链,包括:
在本地预执行源区块链中发起的源事务请求的过程中,若存在目标区块链所属数据对象的访问需求,则访问所述目标区块链中的待访问数据对象的最新数据,并根据访问结果确定所述源事务请求的预执行结果;
监听所述目标区块链中所述最新数据所在区块是否为被禁止回滚的区块;
若是,则将所述预执行结果封装到所述源事务请求中,向所述源区块链网络发起上链操作;否则,持续监听,直至所述最新数据所在区块变更为被禁止回滚的区块。
2.根据权利要求1所述的方法,其特征在于,在持续监听的过程中,还包括:
如果监听到所述待访问数据对象的最新数据被目标区块链更新,则将所述待访问数据对象更新后的最新数据作为访问结果,重新预执行所述源事务请求。
3.根据权利要求1所述的方法,其特征在于,在持续监听的过程中,还包括:
如果监听到所述待访问数据对象的最新数据被目标区块链回滚,则将所述待访问数据对象回滚后的最新数据作为访问结果,重新预执行所述源事务请求。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果获知访问失败,则确定所述源事务请求的执行失败。
5.根据权利要求1-4任一所述的方法,其特征在于,访问所述目标区块链中的待访问数据对象的最新数据,包括:
在所述区块链节点本地归属于目标区块链的数据库中进行待访问数据对象的最新数据的读操作;或
向目标区块链网络发起对待访问数据对象的最新数据进行访问的目标事务请求,以请求目标区块链网络执行所述目标事务请求,对待访问数据对象的最新数据执行访问操作,所述访问操作包括读操作或写操作。
6.根据权利要求1所述的方法,其特征在于,监听所述目标区块链中所述最新数据所在区块是否为被禁止回滚的区块,包括:
监听所述目标区块链中所述最新数据所在区块是否为检查点区块;其中,所述检查点区块以前的区块被禁止回滚。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
将所述目标区块链中,位于最新区块之前设定区块数量的区块,作为检查点区块;或者,
根据所述目标区块链中的共识机制,确定所述目标区块链中的检查点区块。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述源事务请求中待访问数据对象的数据标识,确定所述待访问数据对象属于不同区块链,则确定存在目标区块链所属数据对象的访问需求;
其中,所述数据标识至少包括数据级和链级的名称,所述数据标识还包括合约级和网络级的名称。
9.根据权利要求8所述的方法,其特征在于,所述源区块链与所述目标区块链属于相同或不同的超级链网络。
10.根据权利要求9所述的方法,其特征在于,若所述源区块链与所述目标区块链属于不同的超级链网络,则访问所述目标区块链中待访问数据对象的最新数据,包括:
所述源区块链中的当前出块节点,向目标区块链所在超级链网络中的可信节点发起对待访问数据对象的最新数据进行访问的目标事务请求。
11.根据权利要求1所述的方法,其特征在于,在访问所述目标区块链中的待访问数据对象的最新数据之前,所述方法还包括:
基于目标区块链部署的权限控制模型,对所述访问需求进行权限验证。
12.一种数据访问装置,其特征在于,配置于区块链节点,所述区块链节点中部署有至少两个区块链,包括:
事务请求预执行模块,用于在本地预执行源区块链中发起的源事务请求的过程中,若存在目标区块链所属数据对象的访问需求,则访问所述目标区块链中的待访问数据对象的最新数据,并根据访问结果确定所述源事务请求的预执行结果;
区块链监听模块,用于监听所述目标区块链中所述最新数据所在区块是否为被禁止回滚的区块;
监听响应模块,用于若是,则将所述预执行结果封装到所述源事务请求中,向所述源区块链网络发起上链操作;否则,持续监听,直至所述最新数据所在区块变更为被禁止回滚的区块。
13.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-11中任一项所述的一种数据访问方法。
14.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-11中任一项所述的一种数据访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010128858.1A CN111324425B (zh) | 2020-02-28 | 2020-02-28 | 一种数据访问方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010128858.1A CN111324425B (zh) | 2020-02-28 | 2020-02-28 | 一种数据访问方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324425A CN111324425A (zh) | 2020-06-23 |
CN111324425B true CN111324425B (zh) | 2023-03-31 |
Family
ID=71171306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010128858.1A Active CN111324425B (zh) | 2020-02-28 | 2020-02-28 | 一种数据访问方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111324425B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112118292A (zh) * | 2020-08-13 | 2020-12-22 | 北京新盛云佳科技有限公司 | 用于跨链通信的方法、装置、网络节点和存储介质 |
CN113254467B (zh) * | 2021-07-02 | 2022-05-10 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行交易的方法和区块链节点 |
CN117828647B (zh) * | 2024-03-04 | 2024-05-10 | 腾讯科技(深圳)有限公司 | 区块链事务上链方法、相关装置和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108288159A (zh) * | 2018-03-07 | 2018-07-17 | 物数(上海)信息科技有限公司 | 基于多区块链的跨链交易方法、系统、设备及存储介质 |
CN108615153A (zh) * | 2018-04-28 | 2018-10-02 | 百度在线网络技术(北京)有限公司 | 区块链数据的处理方法、装置、系统、设备和存储介质 |
CN108900585A (zh) * | 2018-06-15 | 2018-11-27 | 浙江华信区块链科技服务有限公司 | 跨链事务一致性实现方法 |
CN110213357A (zh) * | 2019-05-22 | 2019-09-06 | 深圳壹账通智能科技有限公司 | 业务数据回退方法、装置、计算机设备和存储介质 |
CN110266655A (zh) * | 2019-05-30 | 2019-09-20 | 中国工商银行股份有限公司 | 一种基于区块链的跨链互联方法、设备以及系统 |
CN110473100A (zh) * | 2019-08-15 | 2019-11-19 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的交易处理方法及装置 |
-
2020
- 2020-02-28 CN CN202010128858.1A patent/CN111324425B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108288159A (zh) * | 2018-03-07 | 2018-07-17 | 物数(上海)信息科技有限公司 | 基于多区块链的跨链交易方法、系统、设备及存储介质 |
CN108615153A (zh) * | 2018-04-28 | 2018-10-02 | 百度在线网络技术(北京)有限公司 | 区块链数据的处理方法、装置、系统、设备和存储介质 |
CN108900585A (zh) * | 2018-06-15 | 2018-11-27 | 浙江华信区块链科技服务有限公司 | 跨链事务一致性实现方法 |
CN110213357A (zh) * | 2019-05-22 | 2019-09-06 | 深圳壹账通智能科技有限公司 | 业务数据回退方法、装置、计算机设备和存储介质 |
CN110266655A (zh) * | 2019-05-30 | 2019-09-20 | 中国工商银行股份有限公司 | 一种基于区块链的跨链互联方法、设备以及系统 |
CN110473100A (zh) * | 2019-08-15 | 2019-11-19 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的交易处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111324425A (zh) | 2020-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3622687B1 (en) | Enclave pool management | |
US11218325B2 (en) | Asset management method and apparatus, and electronic device | |
US11079966B2 (en) | Enhanced soft fence of devices | |
US20210049602A1 (en) | Transaction method and system based on centralized settlement and blockchain deposit certificates | |
CN111324425B (zh) | 一种数据访问方法、装置、设备及存储介质 | |
CN111741026B (zh) | 一种跨链事务请求处理方法、装置、设备以及存储介质 | |
EP3622661B1 (en) | Cryptlet identity | |
CN111213340B (zh) | 选择用于密码功能的证明委托并使其安全 | |
US11176246B2 (en) | Enclave pool shared key | |
CN111400112B (zh) | 分布式集群的存储系统的写入方法、装置及可读存储介质 | |
TW202040459A (zh) | 資料處理方法、裝置、區塊鏈客戶端和區塊鏈節點 | |
CN111339114B (zh) | 一种数据访问方法、装置、设备及存储介质 | |
EP3295293B1 (en) | Thread safe lock-free concurrent write operations for use with multi-threaded in-line logging | |
WO2023231336A1 (zh) | 执行交易的方法和区块链节点 | |
CN111352706A (zh) | 一种数据访问方法、装置、设备及存储介质 | |
CN111565204A (zh) | 区块链运行方法、装置、设备及存储介质 | |
US20210026675A1 (en) | Guest-driven virtual machine snapshots | |
US10884845B2 (en) | Increasing processing capacity of processor cores during initial program load processing | |
CN111339202B (zh) | 一种数据访问方法、装置、设备及存储介质 | |
US20160072923A1 (en) | Client system communication with a member of a cluster of server systems | |
US11349926B1 (en) | Protected smart contracts for managing internet of things devices | |
JP7305898B2 (ja) | 操作応答方法、操作応答装置、電子機器及び記憶媒体 | |
CN113886078B (zh) | 基于动态阈值机制实现配额统一管理的方法、装置、电子设备及计算机可读存储介质 | |
CN114357080A (zh) | 账户数据的读写方法及装置 | |
CN114297171A (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 |