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

账户数据的读写方法及装置与流程

2022-04-09 12:04:01 来源:中国专利 TAG:


1.本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种账户数据的读写方法及装置。


背景技术:

2.区块链技术构建在点对点网络之上。区块链网络中的节点利用链式数据结构来验证与存储数据,并采用分布式节点共识算法来生成和更新数据。在一些区块链网络中,部分节点所对应的节点成员有时存在参与多个区块链网络的需求,即某一节点设备中可能同时部署有多个分别属于不同区块链网络的区块链节点。在该场景下,节点设备需要对其所参与不同区块链网络中的区块链账户的账户数据进行管理。


技术实现要素:

3.有鉴于此,本说明书一个或多个实施例提供一种账户数据的读写方法及装置。
4.为实现上述目地,本说明书一个或多个实施例提供技术方案如下:
5.根据本说明书一个或多个实施例的第一方面,提出了一种账户数据的读写方法,应用于第一区块链网络中的第一区块链节点,第一区块链节点所处的节点设备中还部署有其他区块链网络的区块链节点,且所述节点设备维护有对应于多个区块链节点的公共数据库,所述公共数据库用于记录多个区块链网络之间的公共账户的账户数据,所述方法包括:
6.获取针对目标账户的读写请求;
7.在所述目标账户的账户数据记录于所述公共数据库的情况下,从所述公共数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作。
8.根据本说明书一个或多个实施例的第二方面,提出了一种账户数据的读写方法,应用于节点设备,所述节点设备中部署有分别归属于不同区块链网络的多个区块链节点,且所述节点设备维护有对应于多个区块链节点的公共数据库,所述公共数据库用于记录多个区块链网络之间的公共账户的账户数据,所述方法包括:
9.获取针对目标账户的读写请求;
10.在所述目标账户的账户数据记录于所述公共数据库的情况下,从所述公共数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作。
11.根据本说明书一个或多个实施例的第三方面,提出了一种账户数据的读写装置,应用于第一区块链网络中的第一区块链节点,第一区块链节点所处的节点设备中还部署有其他区块链网络的区块链节点,且所述节点设备维护有对应于多个区块链节点的公共数据库,所述公共数据库用于记录多个区块链网络之间的公共账户的账户数据,所述装置包括:
12.请求获取模块,用于获取针对目标账户的读写请求;
13.第一读写模块,用于在所述目标账户的账户数据记录于所述公共数据库的情况下,从所述公共数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作。
14.根据本说明书一个或多个实施例的第四方面,提出了一种账户数据的读写装置,
应用于节点设备,所述节点设备中部署有分别归属于不同区块链网络的多个区块链节点,且所述节点设备维护有对应于多个区块链节点的公共数据库,所述公共数据库用于记录多个区块链网络之间的公共账户的账户数据,所述装置包括:
15.请求获取模块,用于获取针对目标账户的读写请求;
16.第一读写模块,用于在所述目标账户的账户数据记录于所述公共数据库的情况下,从所述公共数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作。
17.根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:
18.处理器;
19.用于存储处理器可执行指令的存储器;
20.其中,所述处理器通过运行所述可执行指令以实现如第一方面或第二方面中所述的方法。
21.根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面或第二方面中所述方法的步骤。
22.综上所述,通过本说明书的技术方案,在节点设备中部署有分别属于不同区块链网络的多个区块链节点的情况下,节点设备还维护有多个区块链节点对应的公共数据库,该公共数据库用于记录多个区块链网络之间的公共账户的账户数据。基于账户数据的该记录方式,对于获取到的针对目标账户的读写请求,第一区块链节点或者节点设备可以在目标账户的账户数据被记录于该公共数据库的情况下,从该公共数据库中查找目标账户并对其账户数据执行读写操作。
23.通过上述方式,节点设备可以将不同区块链网络之间的公共账户的账户数据保存在公共数据库中,并响应于针对公共账户的读写请求,对公共数据库记录的该账户的账户数据进行读写操作。可见,多个区块链网络可以共同维护公共账户,实现了对公共账户的共享式管理方案,使得多个独立的区块链网络能够拥有可以共享的公共账户,一定程度上简化了多区块链网络场景下的账户体系,有助于减少节点设备维护账户的工作量。并且,因为公共账户的共享特性,第一区块链网络对目标账户的账户数据执行的读写操作,其操作结果也可以被其他区块链网络所使用(如读取),从而实现了不同区块链节点对同一账户的统一操作,有助于提升公共账户的管理和利用效率。
附图说明
24.图1是一示例性实施例提供的一种创建智能合约的示意图。
25.图2是一示例性实施例提供的一种调用智能合约的示意图。
26.图3是一示例性实施例提供的一种创建和调用智能合约的示意图。
27.图4是一示例性实施例提供的一种多层次树形结构的结构示意图。
28.图5是一示例性实施例提供的一种节点设备内的数据库部署情况示意图。
29.图6是一示例性实施例提供的一种账户数据的读写方法的流程图。
30.图7是一示例性实施例提供的另一种账户数据的读写方法的流程图。
31.图8是一示例性实施例提供的一种设备的结构示意图。
32.图9是一示例性实施例提供的一种账户数据的读写装置的框图。
33.图10是一示例性实施例提供另的一种账户数据的读写装置的框图。
具体实施方式
34.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
35.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
36.区块链一般被划分为三种类型:公有链(public blockchain),私有链(private blockchain)和联盟链(consortium blockchain)。此外,还有多种类型的结合,比如私有链 联盟链、联盟链 公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
37.不论是公有链、私有链还是联盟链,都可能提供智能合约的功能。区块链上的智能合约是在区块链系统上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。
38.以以太坊为例,支持用户在以太坊网络中创建并调用一些复杂的逻辑,这是以太坊区别于比特币区块链技术的最大挑战。以太坊作为一个可编程区块链的核心是以太坊虚拟机(evm),每个以太坊节点都可以运行evm。evm是一个图灵完备的虚拟机,这意味着可以通过它实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在evm上运行的。实际上,虚拟机直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”)。部署在区块链上的智能合约可以是字节码的形式。
39.例如图1所示,bob将一个包含创建智能合约信息的交易发送到以太坊网络后,节点1的evm可以执行这个交易并生成对应的合约实例。图1中的“0x6f8ae93
…”
代表了这个合约的地址,交易的data字段保存的可以是字节码,交易的to字段为空。节点间通过共识机制达成一致后,这个合约成功创建,并且可以在后续过程中被调用。合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址,合约代码将保存在该合约账户中。智能合约的行为由合约代码控制。换句话说,智能合约使得区块链上产生包含合约代码和账户存储(storage)的虚拟账户。
40.如图2所示,仍以以太坊为例,bob将一个用于调用智能合约的交易发送到以太坊
网络后,某一节点的evm可以执行这个交易并生成对应的合约实例。图2中交易的from字段是交易发起方(即bob)的账户的地址,to字段中的“0x6f8ae93
…”
代表了被调用的智能合约的地址,value字段在以太坊中是以太币的值,交易的data字段保存的调用智能合约的方法和参数。调用智能合约后,balance的值可能改变。后续,某个客户端可以通过某一区块链节点(例如图2中的节点6)查看balance的当前值。智能合约以规定的方式在区块链网络中每个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当交易完成后,区块链上就保存了无法篡改、不会丢失的交易凭证。
41.创建智能合约和调用智能合约的示意图如图3所示。以太坊中要创建一个智能合约,需要经过编写智能合约、编译成字节码、部署到区块链等过程。以太坊中调用智能合约,是发起一笔指向智能合约地址的交易,智能合约代码分布式地运行在以太坊网络中每个节点的虚拟机中。
42.需要说明的是,除了可以由用户创建智能合约,也可以在创世块中由系统设置智能合约。这类合约一般称为创世合约。一般地,创世合约中可以设置一些区块链网络的数据结构、参数、属性和方法。此外,具有系统管理员权限的账户可以创建系统级的合约,或者修改系统级的合约(简称为系统合约)。另外除了以太坊中的evm外,不同的区块链网络还可能采用各种的虚拟机,这里并不限定。
43.区块链网络中的节点在执行调用智能合约的交易后,会生成相应的收据(receipt),以用于记录与执行该智能合约相关的信息。这样,可以通过查询交易的收据来获得合约执行结果的相关信息。合约执行结果可以表现为收据中的事件(event)。消息机制可以通过收据中的事件实现消息传递,以触发区块链节点或部署该区块链节点的节点设备执行相应的处理。
44.事件的结构譬如可以为:
45.event:
46.[topic][data]
[0047]
[topic][data]
[0048]
......
[0049]
在上述示例中,事件的数量可以为一个或多个;其中,每个事件分别包括主题(topic)和数据(data)等字段。区块链节点或部署该区块链节点的节点设备可以通过监听事件的topic,从而在监听到预定义的topic的情况下,执行预设处理,或者从相应事件的data字段读取相关内容,以及可以基于读取的内容执行预设处理。
[0050]
上述的事件机制中,相当于在监听方(比如存在监听需求的用户)处存在具有监听功能的客户端,譬如该客户端上运行了用于实现监听功能的sdk等,由该客户端对区块链节点产生的事件进行监听,而区块链节点只需要正常生成收据即可。除了上述的事件机制之外,还可以通过其他方式实现交易信息的透出。例如,可以通过在区块链节点运行的区块链平台代码中嵌入监听代码,使得该监听代码可以监听区块链交易的交易内容、智能合约的合约状态、合约产生的收据等其中的一种或多种数据,并将监听到的数据发送至预定义的监听方。由于监听代码部署于区块链平台代码中,而非监听方的客户端处,因而相比于事件机制而言,这种基于监听代码的实现方式相对更加的主动。其中,上述的监听代码可以由区块链平台的开发人员在开发过程中加入区块链平台代码,也可以由监听方基于自身的需求
而嵌入,本说明书并不对此进行限制。
[0051]
区块链技术区别于传统技术的去中心化特点之一,就是在各个节点上进行记账,或者称为分布式记账,而不是传统的集中式记账。区块链系统要成为一个难以攻破的、公开的、不可篡改数据记录的去中心化诚实可信系统,需要在尽可能短的时间内做到分布式数据记录的安全、明确及不可逆。不同类型的区块链网络中,为了在各个记录账本的节点中保持账本的一致,通常采用共识算法来保证,即前述提到的共识机制。例如,区块链节点之间可以实现区块粒度的共识机制,比如在节点(例如某个独特的节点)产生一个区块后,如果产生的这个区块得到其他节点的认可,其他节点记录相同的区块。再例如,区块链节点之间可以实现交易粒度的共识机制,比如在节点(例如某个独特的节点)获取一笔区块链交易后,如果这笔区块链交易得到其他节点的认可,认可该区块链交易的各个节点可以分别将该区块链交易添加至自身维护的最新区块中,并且最终能够确保各个节点产生相同的最新区块。共识机制是区块链节点就区块信息(或称区块数据)达成全网一致共识的机制,可以保证最新区块被准确添加至区块链。当前主流的共识机制包括:工作量证明(proof of work,pow)、股权证明(proof of stake,pos)、委任权益证明(delegated proof of stake,dpos)、实用拜占庭容错(practical byzantine fault tolerance,pbft)算法,honeybadgerbft算法等。
[0052]
由于区块链网络的去中心化特性,使得区块链网络中的所有区块链节点均会维护相同的区块数据,无法满足部分节点的特殊需求。以联盟链为例,所有联盟成员(即联盟内的节点成员)可以组成一区块链网络,所有联盟成员在该区块链网络中分别存在对应的区块链节点,并可以通过对应的区块链节点获得该区块链网络上发生的所有交易和相关数据。但在一些情况下,可能存在部分联盟成员还参与组成其他区块链网络,从而这部分成员在上述区块链网络中对应的区块链节点所在的节点设备中还会部署其他区块链节点。
[0053]
例如,可能存在部分联盟成员希望完成一些具有保密需求的交易,这些联盟成员既希望这些交易能够在区块链上存证或借助于区块链技术的其他优势,又能够避免其他联盟成员查看到这些交易和相关数据。虽然这些联盟成员可以额外创建一新的区块链网络,其建立方式与上述包含所有联盟成员的区块链网络类似,但是从头开始建立一条新的区块链网络需要消耗大量的资源,且无论是该区块链网络的建立过程或是建成后的配置过程都非常耗时。联盟成员之间的需求往往是临时的或者具有一定的时效性,使得新建的区块链网络很快就会由于需求消失而失去存在的意义,从而进一步增加了上述区块链网络的建链成本。而联盟成员之间的需求经常会变化,而每一需求所对应的联盟成员也往往不同,因而每当联盟成员发生变化时就可能需要创建一新的区块链网络,从而造成资源和时间的大量浪费。
[0054]
为此,可以将已创建的区块链网络作为区块链主网,并在该区块链主网的基础上创建区块链子网。那么,在诸如上述的联盟链场景下,联盟成员可以在已经参与区块链主网的情况下,基于自身需求而在区块链主网的基础上创建所需的区块链子网。由于区块链子网是在区块链主网的基础上所建立,使得区块链子网的创建过程相比于完全独立地创建一条区块链网络,所消耗的资源和所需的耗时等都极大地降低,灵活性极高。
[0055]
下面简要介绍基于区块链主网快捷创建区块链子网的过程:区块链主网中的各主网节点分别获取创建区块链子网的交易以透出配置信息,当所述配置信息包含第一主网节
点对应节点成员的身份信息时,部署第一主网节点的节点设备基于所述包含所述配置信息的创世块并启动属于所述区块链子网的第一子网节点。
[0056]
创建区块链子网的交易可由区块链主网的管理员发起,即仅允许管理员在区块链主网的基础上创建区块链子网,而避免将区块链子网的创建权限开放给普通用户,以防止由此导致的安全性问题。在一些情况下,也可以允许区块链主网的普通用户发起上述创建区块链子网的交易,以满足普通用户的组网需求,使得普通用户能够在管理员不便于发起交易的情况下依然能够快捷地创建区块链子网。
[0057]
以图4所示为例,区块链主网为mainnet0,该mainnet0包含的区块链节点为nodea、nodeb、nodec、noded和nodee等。假定nodea、nodeb、nodec和noded希望创建一区块链子网:如果nodea为管理员且仅允许管理员发起创建区块链子网的交易,那么可由nodea向mainnet0发起上述创建区块链子网的交易;或者,nodeb~nodee可以向nodea进行请求,使得nodea向mainnet0发起上述创建区块链子网的交易。如果nodea为管理员但允许普通用户发起创建区块链子网的交易,那么nodea~nodee均可以向mainnet0发起上述创建区块链子网的交易。当然,不论是管理员或者普通用户,发起创建区块链子网的交易的区块链节点并不一定参与所创建的区块链子网,比如虽然最终由nodea、nodeb、nodec和noded创建区块链子网,但可由nodee向mainnet0发起上述创建区块链子网的交易,而并不一定由nodea~noded发起该交易。
[0058]
在区块链主网的基础上创建区块链子网时,容易理解的是,会使得该区块链子网与区块链主网之间存在逻辑上的层次关系。比如在图4所示的mainnet0上创建区块链子网subnet1时,可以认为mainnet0处于第一层、subnet1处于第二层,即mainnet0为subnet1的父网,subnet1为mainnet0的子网。并且在区块链子网的基础上也可以进一步创建下一级区块链子网,例如可以在图4中subnet1的基础上进一步创建另一区块链子网subnet1.1,此时可以认为subnet处于第三层,subnet1为subnet1.1对应的父网,subnet1.1为subnet1的子网,而subnet1.1则为mainnet0的孙子网。同样地,subnet1.1仍然可以在其基础上新的创建区块链子网,使得各区块链网络之间构成这种多层次树形结构。
[0059]
在本说明书中,任一区块链网络可以由其对应的父网所管理,也即由创建该任一区块链网络的区块链网络所管理。例如在如图4这种以区块链主网为根结点(根结点的层级最低)、各个区块链子网分别为其他结点的多层次树形结构中,任一结点代表的区块链子网由其父结点对应的区块链网络所管理,而作为特例,区块链主网为底层区块链网络时,区块链主网由区块链主网自身进行管理。本说明书中的区块链主网可以为底层区块链网络,底层区块链网络是指并非在其他区块链网络的基础上创建的区块链子网,因此除该区块链主网以外不存在其他区块链网络能够对区块链主网进行管理,比如图4中的mainnet0可以认为属于底层区块链网络类型的区块链主网,mainnet0管理mainnet0自身。当然,区块链主网也可以为其他区块链网络的子网,本说明书对此不作任何限制。上述多层次树形结构通过父结点管理对应子结点的方式,实现了逐层管理,降低了区块链主网的管理压力,同时避免向下层网络暴露上层网络的子网信息,从而实现各级网络的隐秘管理。
[0060]
在本说明书中,节点设备可以通过在进程中创建一个运行区块链平台代码的实例,实现对区块链节点的部署。例如,节点设备可以首先在进程中创建第一实例,以形成区块链主网中的区块链节点;而当该节点设备对应的节点成员希望参与创建区块链子网时,
可以在上述进程中创建第二实例,该第二实例区别于上述的第一实例,并由该第二实例形成区块链子网中的区块链节点。当第一实例与第二实例位于同一进程时,由于不涉及跨进程交互,可以降低对第一子网节点的部署难度、提高部署效率。当然,第二实例也可能与第一实例分别处于节点设备上的不同进程中,本说明书并不对此进行限制。
[0061]
事实上,本说明书实施例涉及的任一节点设备上部署的各区块链节点均为运行在所述任一节点设备上的不同的区块链实例,任一节点设备上部署的各区块链节点生成的区块以及创建的目标账户的账户数据分别存入所述任一节点设备上的不同独立数据库中,且任一节点设备部署的各区块链节点分别使用的各个独立数据库之间相互隔离。例如,节点设备可以在第一进程中创建第一实例,以形成区块链主网中的第一区块链节点;而当该节点设备对应的节点成员希望参与创建区块链子网时,可以启动区别于第一进程的第二进程,并在该第二进程中创建第二实例,该第二实例区别于上述的第一实例,进而由该第二实例形成区块链子网中的第二区块链节点。
[0062]
通过上述方式,可以在区块链主网上创建出由区块链主网所管理的区块链子网。以图4为例,对于包含nodea~nodee的mainnet0,可以在mainnet0的基础上可以创建出subnet1,该subnet1包含nodea1~noded1,且subnet1中的任一子网节点与其在mainnet0中对应的主网节点被部署于同一节点设备,例如,nodea与nodea1被部署于节点设备a、nodeb与nodeb1被部署于节点设备b、nodec与nodec1被部署于节点设备c、noded与noded1被部署于节点设备d。类似地,还可以在mainnet0上创建出subnet2或更多的区块链子网,其中subnet2包含nodea2、nodeb2、nodec2和nodee2,且nodea与nodea1、nodea2,nodeb与nodeb1、nodeb2,nodec与nodec1,noded与noded1,nodee与nodee2分别部署在同一节点设备上。以及,可以将subnet1、subnet2等作为区块链主网,并在此基础上进一步创建出区块链子网,例如在subnet1的基础上创建出区块链子网subnet1.1,其过程与subnet1或subnet2的创建相似,仅仅是将区块链主网替换为区块链子网subnet1,此处不再赘述,最后得到subnet1.1包含nodea3、nodeb3和nodec3,使得且nodea与nodea1、nodea2、nodea3,nodeb与nodeb1、nodeb2、nodeb3,nodec与nodec1、nodec2、nodec3分别部署在同一节点设备上。可见,节点设备a中部署有主网节点nodea以及子网节点nodea1、nodea2和nodea1.1,节点设备b中部署有主网节点nodeb以及子网节点nodeb1、nodeb2和nodeb1.1,节点设备b和节点设备c与节点设备a类似,不再赘述。节点设备d中部署有主网节点noded和子网节点noded,节点设备e中部署有主网节点nodee和子网节点nodee2。
[0063]
另外,对于部署有多个区块链节点的节点设备,其中还维护有对应于多个区块链节点的公共数据库,该公共数据库用于记录上述多个区块链网络之间的公共账户的账户数据。其中,节点设备中可以维护至少一个公共数据库,任一公共数据库可以对应于节点设备所参与的全部区块链网络中的多个网络。以图4所示的nodea、nodea1、nodea1.1、nodea2这四个区块链节点所在的节点设备a为例,如图5所示,该区块链节点中部署有多个区块链网络对应的公共数据库,该数据库可以用于记录所述多个区块链网络之间的公共账户的账户数据。例如,若公共数据库对应于mainnet0和subneta两个区块链网络,则该账户可以记录二者之间的公共账户的账户数据;若公共数据库对应于subneta、subneta1和subneta2三个区块链网络,则该账户可以记录三者之间的公共账户的账户数据。
[0064]
另外,在一些实施例中,节点设备中还可以维护各个区块链节点分别对应的独立
数据库:如对应于nodea的独立数据库0、对应于nodea的独立数据库1、对应于nodea1.1的独立数据库1.1和对应于nodea2的独立数据库2。其中,上述任一独立数据库可以用于记录相应区块链节点中创建的目标账户的账户数据。例如,独立数据库0即用于记录nodea中创建的目标账户的账户数据,如图中的accounts on mainnet0,其中,上述独立账户可以为外部账户或者合约账户;任一目标账户的账户数据,可以为该账户的账户地址、账户公私钥对、账户历史操作记录等。另外,任一区块链节点对应的独立数据库中还可以记录该账户所在区块链网络中创建的智能合约,如图中的contract,以及该账户所在区块链网络中产生的历史区块,如图中的block。可见,多个区块链节点对应的公共数据库,可以仅用于记录多个区块链节点所属区块链网络之间的公共账户的账户数据。考虑到不同区块链网络中的区块链节点所维护的区块、智能合约等数据往往并不相同,所以任一区块链网络中的这类信息可以被记录于该网络对应的独立数据库中,而非记录在与其他区块链网络的公共数据库中,以实现对这部分数据的隔离。
[0065]
可以理解的是,图4所示包括区块链主网和区块链子网的多层次树形结构,仅是示例性的,是本方案所述第一区块链网络与其他区块链网络之间一种可能的结构形式。在实际应用中,节点设备中部属的多个区块链节点所属的区块链网络,完全可以不遵循上述多层次的结构形式。换言之,除了区块链主网及其所管理的区块链子网之外,本方案所述节点设备中部署的任一区块链节点所属的区块链网络,还可以是独立区块链网络,这类独立区块链网络与其他区块链网络之间并不存在前述的管理/被管理关系。如图1所示,独立区块链网络mainnet1与前述的主网mainnet0和子网subnet1、subnet2、subnet1.1等网络之间相互独立,即mainnet1与其他区块链至今并不存在前述区块链主网与区块链子网之间的管理/被管理关系。但是,任一独立区块链网络与其他各个区块链网络之间也可以实现跨链交互,例如,在mainnet1中的nodef、nodeg和nodeh分别部署于前述节点设备a、节点设备b和节点设备c中的情况下,mainnet1的上述各个节点与subnet1中的节点nodea1、nodeb1和nodec1之间分别建立有前述的网络连接链路,因此独立区块链网络mainnet1与区块链子网subnet1可以基于上述网络连接链路实现跨链交互。类似的,独立区块链网络mainnet1与区块链子网subnet2以及区块链主网mainnet0之间同样可以基于相应的网络连接链路实现跨链交互。另外值得说明的是,即便任意两个区块链网络的各个节点分别所处的节点设备并不完全相同甚至完全不同,仍然能够基于各个节点所处节点设备与其他节点设备之间的设备间网络连接实现两区块链网络之间的跨链交互,具体过程不再赘述。
[0066]
如前所述,同一节点设备中可以部署多个分别属于不同区块链网络的区块链节点,其中,任一区块链网络在实现消息共识、合约执行等功能的过程中,可能会创建并维护相应的账户,这些账户的账户数据通常会被节点设备记录在数据库中,换言之,节点设备中会维护各个区块链节点所属区块链网络的账户体系。
[0067]
在上述场景下,为了实现对区块链网络中的相关账户及其账户数据的管理和利用,节点设备及其中部署的区块链节点需要通过数据库记录各个区块链网络中区块链账户的账户数据并如何对其进行读写操作。而在记录账户数据并进行读写操作的过程中,如何减量减少节点设备需要维护的账户数据,是亟待解决的问题。
[0068]
发明人发现,多个区块链网络之间可能存在相同的区块链账户。对此,若能对这部分区块链账户的账户数据进行统一管理、统一读写操作,则节点设备只需维护一份账户数
据即可,从而有望减少节点设备需要维护的账户数据。
[0069]
为此,本说明书提出一种账户数据的读写方法,对于节点设备中部署的分别属于不同区块链网络的多个区块链节点,由节点设备维护多个区块链节点对应的公共数据库,并使用该数据库记录所述多个区块链网络之间的公共账户的账户数据,进而基于该数据记录方式响应针对目标账户的读写请求,对相应的账户数据进行读写操作。以下结合附图对本说明书的区块链子网的创建方案进行说明。
[0070]
图6是一示例性实施例提供的一种账户数据的读写方法的流程图。如图6所示,该方法第一区块链网络中的第一区块链节点,第一区块链节点所处的节点设备中还部署有其他区块链网络的区块链节点,且所述节点设备维护有对应于多个区块链节点的公共数据库,所述公共数据库用于记录多个区块链网络之间的公共账户的账户数据,所述方法包括下述步骤:
[0071]
步骤602,获取针对目标账户的读写请求。
[0072]
如前所述,本说明书所述节点设备中部署有多个区块链节点,且各个区块链节点分别属于不同的区块链网络。另外,节点设备维护有多个区块链节点对应的公共数据库,该数据库用于记录所述多个节点所属区块链网络之间的公共账户的账户数据。其中,所述第一区块链节点可以为节点设备中部署的所述多个区块链节点中的任一节点,显然,该节点所属的第一区块链网络即为上述多个区块链网络中的任一网络。另外,本说明书所述节点设备中部署的各个区块链节点所属的区块链网络,可以遵循前述的多层次树形结构。例如,所述第一区块链网络可以为其中的任一区块链网络,即第一区块链网络可以为多层次树形结构中的任一区块链子网或者区块链主网。
[0073]
同一节点设备中可以维护有多个公共数据库,任一公共数据库可以用于记录至少两个区块链之间的公共账户的账户数据;或者,同一节点设备中也可以仅维护一个公共数据库,该公共数据库可以记录任意多个区块链之间的公共账户的账户数据,而且为了避免任一公共账户与其所对应区块链网络产生混乱,可以为各个公共账户的账户数据分别添加相应的网络标识,以表征各个账户可以分别由哪几个区块链网络共用。本说明书实施例所述的公共数据库,可以为所述节点设备维护的任一公共数据库,记录于该数据库中的任一公共帐户可以由该账户所对应的各个区块链网络共同管理,相应的,可以由该节点设备中部署的属于该账户所对应的各个区块链网络的区块链节点分别执行读写操作。
[0074]
如图4所示,节点设备a中可以部署公共数据库d1和d2,其中,公共数据库d1可以用于记录subnet1与subnet2之间的公共账户的账户数据,公共数据库d2可以用于记录mainnet0、subnet1与subnet2之间的公共账户的账户数据,当然,还可以部署其他公共数据库用于记录subnet1与subnet2之间的公共账户的账户数据,subnet2与subnet1.1之间的公共账户的账户数据等,或者,在mainnet1中的任一节点(如nodef)部署于节点设备a中的情况下,还可以部署其他公共数据库用于记录mainnet0与mainnet1之间的公共账户的账户数据,mainnet1subnet1与subnet2之间的公共账户的账户数据等,不再一一赘述。或者,节点设备a中也可以部署一个公共数据库d,其中,该公共数据库d可以用于记录图1所示任意多个网络之间的公共账户的账户数据,如可以记录subnet1与subnet2之间的公共账户的账户数据,并且可以为这部分账户数据添加这两个网络的网络标识,以用于表征这部分账户数据为subnet1和subnet2共同管理;该公共数据库d还可以记录mainnet0、subnet1与subnet2
之间的公共账户的账户数据,并且可以为这部分账户数据添加这三个网络的网络标识,以用于表征这部分账户数据为mainnet0、subnet1与subnet2共同管理,不再赘述。
[0075]
值得说明的是,对于任一公共数据库中记录的多个区块链网络之间的公共账户的账户数据,所述多个区块链网络中任一区块链网络的区块链节点均可以对该账户数据执行读写操作。其中,在执行写入操作的情况下,写入的新数据可以被所述多个区块链网络中任一区块链网络的区块链节点所读取,当然也可以被所述多个区块链网络中任一区块链网络的区块链节点重新写入其他数据后所更改,不再赘述。
[0076]
在一实施例中,第一区块链网络中除了包括公共账户之外,还可以包括独立账户,即第一区块链网络中的区块链账户还可以包括两类:公共账户和独立账户;相应地,第一区块链网络中的任一区块链账户可以为公共账户或者独立账户。其中,任一区块链网络中的独立账户是仅属于该网络的区块链账户,该区块链账户的账户数据仅被记录于该区块链网络对应的独立数据库中,而不会被记录于其他数据库中。关于独立账户以及独立数据库,可参见下述实施例的详细记载,此处暂不赘述。
[0077]
在本实施例中,针对目标账户的上述读写请求,用于触发对目标账户的账户数据进行读写操作,具体的,可以为数据读取操作,也可以为数据写入操作。其中,读写请求中可以包含目标账户所属区块链网络(下称目标区块链网络)的网络标识,以便第一区块链节点据此确定该请求需要由哪个区块链网络响应;读写请求中也可以包含目标账户的账户地址和/或公钥等身份信息,以便第一区块链节点据此确定目标账户是哪个账户;读写请求中还可以包含针对目标账户的读写操作的操作信息,如待读取数据的数据标识、待写入的数据等,以便第一区块链节点据此执行相应的读写操作。值得说明的是,从数据库的底层操作的角度来说,上述数据读取操作可以对应于针对数据的读取行为,上述数据写入操作可以对应于针对数据的增加、删除和修改行为。
[0078]
另外,第一区块链节点可以通过多种方式获取所述读写请求。例如,第一区块链节点可以接收节点设备获取并发送的读写请求;再例如,第一区块链节点也可以接收节点设备中部署的其他区块链节点(如第一区块链网络或者其他区块链网络中的区块链节点)所发送的读写请求;在这两种获取方式中,读写请求可以为区块链交易或者非交易的区块链消息。又例如,第一区块链节点还可以在执行区块链交易的过程中生成上述读写请求,此时该请求可以为非交易的区块链消息,本说明书实施例并不对此进行限制。
[0079]
通常情况下,区块链网络中的账户可以包括外部账户和合约账户,其中,外部账户可以被相应的公私钥对所控制,而合约账户可以由智能合约创建,并由相应的合约代码所控制。第一区块链网络中的任一独立账户可能为外部账户或者合约账户,因此,本说明书所述的目标账户既可以外部账户么也可以为合约账户。当然,在所述目标账户的账户数量为多个的情况下,所述多个目标账户可以为多个外部账户,也可以为多个合约账户,还可以为至少一个外部账户和至少一个合约账户,本说明书实施例仅针对其中任一账户进行说明。
[0080]
步骤604,在所述目标账户的账户数据记录于所述公共数据库的情况下,从所述公共数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作。
[0081]
响应于获取到的读写请求,第一区块链节点可以先确定所述目标账户的账户数据是否被记录于自身所属第一区块链网络对应的公共数据库中。例如,在第一区块链节点维护有第一区块链网络中各个区块链账户的账户地址的情况下,第一区块链节点可以根据所
述读写请求中携带的目标账户的账户地址,确定目标账户是否为自身维护的区块链账户:在自身维护的任一区块链账户的账户地址与目标账户的账户地址相同的情况下,即可以将该区块链账户确定为目标账户;反之,若自身维护的各个区块链账户的账户地址与目标账户的账户地址均不相同,则可以确定目标账户并非属于第一区块链网络,从而可以终止针对读写请求的响应过程。
[0082]
在确定目标账户由自身所维护的情况下,第一区块链节点可以根据第一区块链网络的网络标识与公共数据库之间的对应关系,确定第一区块链网络对应的公共数据库。进而,第一区块链节点可以从该公共数据库中查找目标账户,并对其账户数据执行读写操作。
[0083]
在节点设备中部署有分别属于不同区块链网络的多个区块链节点的情况下,节点设备还维护有多个区块链节点对应的公共数据库,该公共数据库用于记录多个区块链网络之间的公共账户的账户数据。基于账户数据的该记录方式,对于获取到的针对目标账户的读写请求,第一区块链节点或者节点设备可以在目标账户的账户数据被记录于该公共数据库的情况下,从该公共数据库中查找目标账户并对其账户数据执行读写操作。
[0084]
通过上述方式,节点设备可以将不同区块链网络之间的公共账户的账户数据保存在公共数据库中,并响应于针对公共账户的读写请求,对公共数据库记录的该账户的账户数据进行读写操作。可见,多个区块链网络可以共同维护公共账户,实现了对公共账户的共享式管理方案,使得多个独立的区块链网络能够拥有可以共享的公共账户,一定程度上简化了多区块链网络场景下的账户体系,有助于减少节点设备维护账户的工作量。并且,因为公共账户的共享特性,第一区块链网络对目标账户的账户数据执行的读写操作,其操作结果也可以被其他区块链网络所使用(如读取),从而实现了不同区块链节点对同一账户的统一操作,有助于提升公共账户的管理和利用效率。
[0085]
在一实施例中,上述读写请求可以为包含目标账户的账户地址的区块链交易,第一区块链节点可以根据该账户地址在区块链交易中的记录方式,采用相应方式确定独立数据库并执行读写操作。作为一示例性实施例,目标账户的账户地址可以包含在区块链交易的from字段中,该记录方式表明上述区块链交易由目标账户所发起,从而第一区块链节点可以根据所述账户地址在第一区块链网络对应的公共数据库中查找目标账户,并从查找到的目标账户中读取记录的账户公钥。可见,第一区块链节点执行的读写操作为从目标账户中读取目标账户的账户公钥,即读写操作为数据读取操作。其中,通过上述方式读取的目标账户的账户公钥可以用于对所述区块链交易的交易签名进行验签(即验证目标账户为该交易添加的交易签名),在验证通过的情况下,第一区块链节点可以将该交易提交至第一区块链网络参与共识或者直接执行该交易;而在验证不通过的情况下,第一区块链节点可以终止针对该交易的响应过程,并且可以对该非法交易进行记录、告警等处理。通过该方式,第一区块链节点可以响应于读写请求从记录公共账户的账户数据的公共数据库中读取目标账户的账户公钥,并基于该公钥对目标账户发起的区块链交易进行验签,从而有助于保证j1所响应的区块链交易的合法性和可靠性。
[0086]
作为另一示例性实施例,目标账户的账户地址可以包含在区块链交易的to字段中,并且该交易的data字段中还可以包含入参信息。目标账户的账户地址的上述记录方式表明区块链交易由其他账户向目标账户所发起,从而第一区块链节点可以根据所述账户地址在第一区块链网络对应的公共数据库中查找目标账户,并根据所述入参信息对查找到的
目标账户的账户数据执行读写操作。其中,第一区块链节点执行的该读写操作可以为数据读取操作,此时入参信息可以为数据读取方法或者待读取数据的数据标识、账户余额等信息;或者,第一区块链节点执行的该读写操作也可以为数据写入操作,此时入参信息可以为待写入的数据。通过该方式,第一区块链节点可以响应于读写请求根据其中的入参信息对目标账户的账户数据执行读写操作,从而完成对上述区块链交易的执行过程。
[0087]
在一实施例中,多个区块链节点对应的公共数据库,还可以用于记录这些区块链节点分别所属区块链网络中的独立账户的账户数据,且该公共数据库中还记录有其中各个公共账户和目标账户的账户类型。在该场景下,第一区块链节点可以根据账户类型从公共账户中查找目标账户。例如,在目标账户的账户类型为公共账户的情况下,第一区块链节点可以从公共数据库记录的公共账户中查找该目标账户;而在目标账户的账户类型为独立账户的情况下,第一区块链节点可以从公共数据库记录的独立账户中查找目标账户。通过该方式,第一区块链节点在公共数据库所维护的多个区块链账户中查找目标账户时,可以先通过账户类型对待查找的各个区块链账户进行划分,进而仅从目标账户所属类型的区块链账户查找目标账户,有助于减少待查找的账户数量,提升目标账户的查找效率。
[0088]
在另一实施例中,节点设备中除了维护前述的公共数据库之外,还可以维护有各个区块链节点分别对应的独立数据库,这些独立数据库用于记录相应区块链节点所属区块链网络中的目标账户的账户数据。在该场景下,对于第一区块链节点获取到的上述读写请求,其对应目标账户的账户数据可能记录于第一区块链网络对应的公共数据库中,也可能记录于其他区块链网络对应的独立数据库中。换言之,目标账户可能为公共账户或者独立账户。基于此,第一区块链节点可以在确定目标账户的账户类型为公共账户的情况下,从公共数据库中查找目标账户并对其账户数据执行读写操作。另外,在目标账户的账户类型为独立账户的情况下,第一区块链节点可以先确定第一区块链节点在节点设备上对应的独立数据库,然后从该独立数据库中查找目标账户并对其账户数据执行读写操作。通过该方式,第一区块链节点可以根据目标账户的账户类型快速确定记录其账户数据的数据库,并对其账户数据执行读写操作,读写请求的响应效率较高。
[0089]
另外,在确定出所述目标账户的账户数据未记录于第一区块链节点对应的公共数据库中的情况下,第一区块链节点可以将读写请求透传至节点设备,以由节点设备从自身维护的各个独立数据库中确定出记录所述目标账户的账户数据的独立数据库,并将该请求提交至确定出的独立数据库所对应的区块链网络。可以理解的是,节点设备可以访问本地部署的任一数据库,因此节点设备可以访问所述第一区块链网络对应的独立数据库和其他区块链网络分别对应的独立数据库。不妨将所述目标账户所属的区块链网络记为目标区块链网络。基于上述方式,第一区块链节点在确定目标账户的账户数据并未记录于自身对应的公共数据库的情况下,可以将该请求透传至节点设备,以由节点设备根据各个区块链网络分别对应的数据库是否记录有目标账户确定各个区块链网络中的目标区块链网络,进而将上述读写请求提交至确定出的该网络。当然,在节点设备将读写请求提交至目标区块链网络之后,节点设备中部署的属于该网络的区块链节点也可以响应于该请求,对该网络所对应独立数据库中记录的目标账户的账户数据执行读写操作,具体过程与第一区块链节点的执行过程类似,不再赘述。
[0090]
通过该方式,利用节点设备可以访问本地部署的任一数据库的特性,在目标账户
的账户数据并未记录于第一区块链网络对应的公共数据库的情况下,仍然能够从各个网络对应的独立数据库中确定出记录有目标账户的账户数据的独立数据库,进而对该数据库中的账户数据执行读写操作,实现对读写请求的有效响应。
[0091]
其中,在读写请求为区块链交易的情况下,该交易中可以包含账户类型字段,以用于表征目标账户的账户类型。例如,该账户类型字段可以属于区块链交易的data字段的一部分,即将目标账户的账户类型记录于该区块链交易的data字段中。从而,第一区块链节点可以根据上述账户类型字段的字段取值确定目标账户的账户类型。通过该方式,区块链交易的发起方可以直接指定待操作的目标账户的账户类型,以便于第一区块链节点根据该账户类型针对账户数据快速执行读写操作,有助于减轻第一区块链节点的数据维护量并提升读写请求的响应效率。
[0092]
如前所述,在目标账户的账户数据未记录于第一区块链网络对应的公共数据库的情况下,节点设备可以从本地部署的各个区块链节点分别对应的独立数据库中确定记录目标账户的账户数据的独立数据库,其中,节点设备可以通过多种方式确定该独立数据库。例如,基于节点设备能够访问自身维护的任一数据库,节点设备可以从自身维护的所有独立数据库中确定出记录所述目标账户的账户数据的独立数据库。再例如,考虑到响应于上述读写请求执行读写操作的是第一区块链网络中的第一区块链节点,节点设备可以在目标账户的账户数据未记录于第一区块链网络对应的独立数据库,且第一区块链网络对其他区块链网络对应的独立数据库具有访问权限的情况下,从其他区块链网络对应的独立数据库中确定出记录目标账户的账户数据的独立数据。通过该方式确定出的独立数据库记录有目标账户的账户数据,第一区块链网络具有针对该数据库的访问权限,第一区块链网络中的第一区块链节点自然也具有访问权限,因此第一区块链节点能够基于该访问权限针对该数据库中的账户数据执行读写操作。对于该独立数据库来说,对其中记录的账户数据实施读写操作的第一区块链节点具有合法的访问权限,从而保证了所实施读写操作的合法性。另外,第一区块链网络可能仅对节点设备中部署的部分独立数据库具有访问权限,因此为提升确定记录目标账户的账户数据的独立数据库的效率,节点设备可以先确定第一区块链网络具有访问权限的部分独立数据库,进而从这部分数据库中确定记录目标账户的账户数据的独立数据库。
[0093]
具体的,节点设备可以维护有本地部署的各个区块链节点所属区块链网络的网络标识,从而可以根据读写请求中包含的目标区块链网络的网络标识确定本地部署的各个区块链节点所属区块链网络中的哪个网络是目标区块链网络,该目标区块链网络所对应的数据库即可作为记录目标账户的账户数据的独立数据库。
[0094]
进一步的,节点设备上部署的多个区块链节点分别所属的区块链网络之间可以构成多级区块链系统,其中的任一区块链网络可以由该多级区块链系统中的父级区块链网络管理。其中,第一区块链节点对应的独立数据库可以继承并维护其父级区块链网络中的目标账户的账户数据的副本。其中,所述多级区块链系统可以如图4所示的多层次树形结构,下面结合图5所示的节点设备a进行说明:不妨假设第一区块链网络为subnet1,父级区块链网络为mainnet0,则节点设备a在mainnet0的基础上参与创建subnet1时,可以先从mainnet0的全部区块链账户中确定待继承账户,然后从独立数据库0中读取待继承账户的账户数据,并将这部分数据写入新创建的subnet1所对应的独立数据库1中,从而在该数据
库中形成待继承账户的账户数据的副本。
[0095]
可以理解的是,上述独立数据库1中保存的账户数据的副本,仅是在subnet1的创建时刻(即从独立数据库0中读取待继承账户的账户数据的时刻)mainnet0中记录的账户数据,即该数据副本可以认为是独立数据库1中保存的账户数据在上述创建时刻的“快照”。在subnet1创建完成后,独立数据库0中记录的账户数据可以随着mainnet0的运行被更新,独立数据库1中记录的账户数据的副本可以随着subnet1的运行被更新,且二者的更新过程是相互独立的。当然,节点设备也可以仅在新创建的subnet1所对应的独立数据库1中创建各个待继承账户,而并不复制相应账户数据的副本,以仅在独立数据库1中保存subnet1运行节点产生的账户数据。通过上述方式,第一区块链网络可以从其父级区块链网络中继承原有的目标账户,或者继承原有的目标账户及其账户数据,从而用户无需在新创建的subnet1中重复创建mainnet0中已经存在的账户,subnet1中的各个节点也无需从其他区块链网络中获取账户数据,从而简化了新网络的创建过程,有助于提升创建效率。
[0096]
或者,上述第一区块链节点也可以对其父级区块链网络对应的独立数据库具有访问权限。仍以图4和图5为例,不妨假设第一区块链网络为subnet1,父级区块链网络为mainnet0,subnet1中的nodea1为第一区块链节点,则第一区块链节点可以具有针对mainnet0对应的独立数据库0的访问权限。为尽量保证父级区块链网络的独立数据库中记录的账户数据的安全性,也可以仅有部分节点具有针对独立数据库0的访问权限,如subnet1的主节点具有该访问权限,而其他节点则不具有该访问权限。其中,上述第一区块链节点是具有针对父级区块链网络所对应独立数据库的访问权限的节点。当然,mainnet0中的任一节点也可以对subnet1对应的独立数据库1具有访问权限,不再赘述。
[0097]
基于前述实施例的描述,本说明书还提出了另一种账户数据的读写方法。如图7所示,该方法应应用于节点设备,所述节点设备中部署有分别归属于不同区块链网络的多个区块链节点,且所述节点设备维护有对应于多个区块链节点的公共数据库,所述公共数据库用于记录多个区块链网络之间的公共账户的账户数据,所述方法包括以下步骤:
[0098]
步骤702,获取针对目标账户的读写请求。
[0099]
步骤704,在所述目标账户的账户数据记录于所述公共数据库的情况下,从所述公共数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作。
[0100]
在一实施例中,所述节点设备还维护有分别对应于各个区块链节点的独立数据库,所述独立数据库用于记录相应区块链节点所属区块链网络中的目标账户的账户数据;
[0101]
所述从所述公共数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作,包括:在所述目标账户的账户类型为公共账户的情况下,从所述公共数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作;
[0102]
所述方法还包括:在所述目标账户的账户类型为独立账户的情况下,确定第一区块链节点在所述节点设备上对应的独立数据库,从确定出的所述独立数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作。
[0103]
在一实施例中,还包括:
[0104]
接收第一区块链网络中的第一区块链节点透传的协助请求,所述协助请求由第一区块链节点在所述目标账户的账户数据未记录于所述公共数据库的情况下透传;
[0105]
从自身维护的各个独立数据库中确定出记录所述目标账户的账户数据的独立数
据库,并将所述协助请求提交至确定出的独立数据库对应的区块链网络。
[0106]
在一实施例中,所述从自身维护的各个独立数据库中确定出记录所述目标账户的账户数据的独立数据库,包括:
[0107]
从所述节点设备维护的所有独立数据库中确定出记录所述目标账户的账户数据的独立数据库;或者,
[0108]
在所述目标账户的账户数据未记录于第一区块链网络对应的独立数据库,且第一区块链网络对其他区块链网络对应的其他独立数据库具有访问权限的情况下,从其他独立数据库中确定出记录所述目标账户的账户数据的独立数据库。
[0109]
在一实施例中,所述节点设备上部署的多个区块链节点分别所属的区块链网络之间构成多级区块链系统,任一区块链网络由该多级区块链系统中的父级区块链网络管理;其中:
[0110]
第一区块链节点对应的独立数据库继承并维护其父级区块链网络中的目标账户的账户数据的副本;或者,
[0111]
第一区块链节点对其父级区块链网络对应的独立数据库具有访问权限。
[0112]
在一实施例中,所述公共数据库还用于记录多个区块链网络中的目标账户的账户数据,且所述公共数据库中还记录有其中各个公共账户和目标账户的账户类型;所述从所述公共数据库中查找所述目标账户,包括:
[0113]
在所述目标账户的账户类型为公共账户的情况下,从所述公共数据库记录的公共账户中查找所述目标账户;
[0114]
在所述目标账户的账户类型为独立账户的情况下,从所述公共数据库记录的独立账户中查找所述目标账户。
[0115]
在一实施例中,所述目标账户包括:外部账户和/或合约账户。
[0116]
节点设备可以将不同区块链网络之间的公共账户的账户数据保存在公共数据库中,并响应于针对公共账户的读写请求,对公共数据库记录的该账户的账户数据进行读写操作。可见,多个区块链网络可以共同维护公共账户,实现了对公共账户的共享式管理方案,使得多个独立的区块链网络能够拥有可以共享的公共账户,一定程度上简化了多区块链网络场景下的账户体系,有助于减少节点设备维护账户的工作量。并且,因为公共账户的共享特性,第一区块链网络对目标账户的账户数据执行的读写操作,其操作结果也可以被其他区块链网络所使用(如读取),从而实现了不同区块链节点对同一账户的统一操作,有助于提升公共账户的管理和利用效率。
[0117]
图8是一示例性实施例提供的一种设备的结构示意图。请参考图8,在硬件层面,该设备包括处理器802、内部总线804、网络接口806、内存808以及非易失性存储器810,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器802从非易失性存储器810中读取对应的计算机程序到内存808中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0118]
图9是一示例性实施例提供的一种账户数据的读写装置的框图。请参考图9,该装置可以应用于如图8所示的设备中,以实现本说明书的技术方案。其中,该账户数据的读写
装置应用于第一区块链网络中的第一区块链节点,第一区块链节点所处的节点设备中还部署有其他区块链网络的区块链节点,且所述节点设备维护有对应于多个区块链节点的公共数据库,所述公共数据库用于记录多个区块链网络之间的公共账户的账户数据,所述装置包括:
[0119]
请求获取模块901,用于获取针对目标账户的读写请求;
[0120]
第一读写模块902,用于在所述目标账户的账户数据记录于所述公共数据库的情况下,从所述公共数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作。
[0121]
可选的,所述读写请求为区块链交易,所述区块链交易的from字段包含所述目标账户的账户地址;所述第一读写模块902还用于:
[0122]
根据所述账户地址在所述公共数据库中查找所述目标账户,并从查找到的所述目标账户中读取记录的账户公钥,所述账户公钥用于对所述区块链交易的交易签名进行验签。
[0123]
可选的,所述数据读写请求为区块链交易,所述区块链交易的to字段包含所述目标账户的账户地址,且所述区块链交易的data字段包含入参信息;所述第一读写模块902还用于:
[0124]
根据所述账户地址在所述公共数据库中查找所述目标账户;
[0125]
根据所述入参信息对查找到的所述目标账户的账户数据执行读写操作。
[0126]
可选的,所述节点设备还维护有分别对应于各个区块链节点的独立数据库,所述独立数据库用于记录相应区块链节点所属区块链网络中的目标账户的账户数据;
[0127]
所述第一读写模块902还用于:在所述目标账户的账户类型为公共账户的情况下,从所述公共数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作;
[0128]
所述装置还包括第二读写模块903,用于:在所述目标账户的账户类型为独立账户的情况下,确定第一区块链节点在所述节点设备上对应的独立数据库,从确定出的所述独立数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作。
[0129]
可选的,还包括:
[0130]
透传模块904,用于在所述目标账户的账户数据未记录于所述公共数据库的情况下,将所述读写请求透传至所述节点设备,使所述节点设备从自身维护的各个独立数据库中确定出记录所述目标账户的账户数据的独立数据库后,将所述读写请求提交至确定出的独立数据库对应的区块链网络。
[0131]
可选的,所述透传模块904还用于:
[0132]
从所述节点设备维护的所有独立数据库中确定出记录所述目标账户的账户数据的独立数据库;或者,
[0133]
在所述目标账户的账户数据未记录于第一区块链网络对应的独立数据库,且第一区块链网络对其他区块链网络对应的独立数据库具有访问权限的情况下,从其他区块链网络对应的独立数据库中确定出记录所述目标账户的账户数据的独立数据库。
[0134]
可选的,所述节点设备上部署的多个区块链节点分别所属的区块链网络之间构成多级区块链系统,任一区块链网络由该多级区块链系统中的父级区块链网络管理;其中:
[0135]
第一区块链节点对应的独立数据库继承并维护其父级区块链网络中的目标账户
的账户数据的副本;或者,
[0136]
第一区块链节点对其父级区块链网络对应的独立数据库具有访问权限。
[0137]
可选的,所述公共数据库还用于记录多个区块链网络中的目标账户的账户数据,且所述公共数据库中还记录有其中各个公共账户和目标账户的账户类型;所述第一读写模块902还用于:
[0138]
在所述目标账户的账户类型为公共账户的情况下,从所述公共数据库记录的公共账户中查找所述目标账户;
[0139]
在所述目标账户的账户类型为独立账户的情况下,从所述公共数据库记录的独立账户中查找所述目标账户。
[0140]
可选的,所述数据读写请求为区块链交易,所属区块链交易包含账户类型字段,所述装置还包括:
[0141]
类型确定模块905,用于根据所述账户类型字段的字段取值确定所述目标账户的账户类型。
[0142]
可选的,所述目标账户包括:外部账户和/或合约账户。
[0143]
可选的,所述目标账户包括:外部账户和/或合约账户。
[0144]
图10是一示例性实施例提供的一种账户数据的读写装置的框图。请参考图10,该装置可以应用于如图8所示的设备中,以实现本说明书的技术方案。其中,该账户数据的读写装置应用于节点设备,所述节点设备中部署有分别归属于不同区块链网络的多个区块链节点,且所述节点设备维护有对应于多个区块链节点的公共数据库,所述公共数据库用于记录多个区块链网络之间的公共账户的账户数据,所述装置包括:
[0145]
请求获取模块1001,用于获取针对目标账户的读写请求;
[0146]
第一读写模块1002,用于在所述目标账户的账户数据记录于所述公共数据库的情况下,从所述公共数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作。
[0147]
可选的,所述节点设备还维护有分别对应于各个区块链节点的独立数据库,所述独立数据库用于记录相应区块链节点所属区块链网络中的目标账户的账户数据;
[0148]
所述第一读写模块1002还用于:在所述目标账户的账户类型为公共账户的情况下,从所述公共数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作;
[0149]
所述装置还包括第二读写模块1003,用于:在所述目标账户的账户类型为独立账户的情况下,确定第一区块链节点在所述节点设备上对应的独立数据库,从所述独立数据库中查找所述目标账户并对所述目标账户的账户数据执行读写操作。
[0150]
可选的,还包括:
[0151]
协助请求接收模块1004,用于接收第一区块链网络中的第一区块链节点透传的协助请求,所述协助请求由第一区块链节点在所述目标账户的账户数据未记录于所述公共数据库的情况下透传;
[0152]
协助请求提交模块1005,用于从自身维护的各个独立数据库中确定出记录所述目标账户的账户数据的独立数据库,并将所述协助请求提交至确定出的独立数据库对应的区块链网络。
[0153]
可选的,所述协助请求提交模块1004还用于:
[0154]
从所述节点设备维护的所有独立数据库中确定出记录所述目标账户的账户数据的独立数据库;或者,
[0155]
在所述目标账户的账户数据未记录于第一区块链网络对应的独立数据库,且第一区块链网络对其他区块链网络对应的其他独立数据库具有访问权限的情况下,从其他独立数据库中确定出记录所述目标账户的账户数据的独立数据库。
[0156]
可选的,所述节点设备上部署的多个区块链节点分别所属的区块链网络之间构成多级区块链系统,任一区块链网络由该多级区块链系统中的父级区块链网络管理;其中:
[0157]
第一区块链节点对应的独立数据库继承并维护其父级区块链网络中的目标账户的账户数据的副本;或者,
[0158]
第一区块链节点对其父级区块链网络对应的独立数据库具有访问权限。
[0159]
可选的,所述公共数据库还用于记录多个区块链网络中的目标账户的账户数据,且所述公共数据库中还记录有其中各个公共账户和目标账户的账户类型;所述第一读写模块1002还用于:
[0160]
在所述目标账户的账户类型为公共账户的情况下,从所述公共数据库记录的公共账户中查找所述目标账户;
[0161]
在所述目标账户的账户类型为独立账户的情况下,从所述公共数据库记录的独立账户中查找所述目标账户。
[0162]
可选的,所述目标账户包括:外部账户和/或合约账户。
[0163]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体地,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0164]
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0165]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0166]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0167]
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组建、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境
中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0168]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0169]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0170]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0171]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0172]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0173]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0174]
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目地,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0175]
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来
描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
[0176]
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
再多了解一些

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

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

相关文献