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

数据账户的访问授权方法及装置与流程

2022-10-22 09:06:21 来源:中国专利 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.处理器;
25.用于存储处理器可执行指令的存储器;
26.其中,所述处理器通过运行所述可执行指令以实现如上述任一项所述方法的步骤。
27.本说明书还提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述任一项所述方法的步骤。
28.在上述技术方案中,区块链中的区块链节点可以响应于接收到的针对数据账户的数据账户授权交易,在确定发起该数据账户授权交易的管理方具有与该数据账户对应的管理权限时,将该数据账户授权交易中的用户在区块链上注册的用户账户的账户标识,与该用户账户针对该数据账户的访问权限信息的对应关系,作为与该数据账户对应的访问授权信息,填充至该数据账户中的授权字段。
29.采用上述方式,可以将智能合约的合约代码与智能合约进行合约计算所需的业务数据分离开来,从而可以达到以下目的:第一,与智能合约对应的合约账户中仅需要维护智能合约的合约代码,因此可以将所实现的业务逻辑较为复杂的智能合约拆分成多个较为简单的子合约,降低智能合约的开发、测试、升级等的成本;第二,用户在区块链中注册的用户账户,以及与区块链上部署的智能合约对应的合约账户,均可以直接访问在区块链上创建的数据账户中维护的业务数据,即通过数据账户可以实现面向用户账户和合约账户的数据共享,节省智能合约的执行开销,实现对业务数据的并行访问,提高区块链的交易吞吐量;第三,由数据账户集中维护业务数据,可以实现业务数据的资产化,同时便于获取大量业务数据以进行数据分析、ai训练等处理。
30.除此之外,可以对用户在区块链上注册的用户账户对数据账户的访问进行权限控制,仅允许数据账户中维护的与该数据账户对应的访问授权信息所指示的用户账户访问该数据账户。
附图说明
31.图1是一种用户账户的账户结构的示意图。
32.图2是一种合约账户的账户结构的示意图。
33.图3是本说明书一示例性实施例示出的一种数据账户创建方法的流程图。
34.图4是本说明书一示例性实施例示出的一种数据账户的账户结构的示意图。
35.图5是本说明书一示例性实施例示出的一种数据账户的访问授权方法的流程图。
36.图6是本说明书一示例性实施例示出的另一种数据账户的访问授权方法的流程图。
37.图7是本说明书一示例性实施例示出的另一种数据账户的访问授权方法的流程图。
38.图8是本说明书一示例性实施例示出的一种数据账户访问方法的流程图。
39.图9是本说明书一示例性实施例示出的另一种数据账户的访问授权方法的流程图。
40.图10是本说明书一示例性实施例示出的另一种数据账户的访问授权方法的流程图。
41.图11是本说明书一示例性实施例示出的另一种数据账户访问方法的流程图。
42.图12是本说明书一示例性实施例示出的一种数据账户更新方法的流程图。
43.图13是本说明书一示例性实施例示出的一种设备的硬件结构的示意图。
44.图14是本说明书一示例性实施例示出的一种数据账户的访问授权装置的框图。
45.图15是本说明书一示例性实施例示出的另一种数据账户的访问授权装置的框图。
具体实施方式
46.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
47.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
48.区块链一般被划分为三种类型:公有链(public blockchain)、私有链(private blockchain)和联盟链(consortium blockchain)。此外,还可以有上述多种类型的结合,比如私有链与联盟链的结合、联盟链与公有链的结合等。
49.在上述三种类型的区块链中,去中心化程度最高的是公有链。加入公有链的参与方(也可以称为区块链中的节点)可以读取链上的数据记录、参与交易、竞争新区块的记账权等。而且,各节点可自由加入或退出网络,并进行相关操作。
50.私有链则相反,网络的写入权限由某个组织或机构控制,数据读取权限受组织规定。也即,私有链可以视为一个弱中心化系统,其对节点具有严格限制且节点数量较少。这种类型的区块链更适合于特定机构内部使用。
51.联盟链则介于公有链以及私有链之间,可以实现“部分去中心化”。联盟链中的各节点通常有与之对应的实体机构或组织;节点通过授权加入网络并组成利益相关联盟,共同维护区块链的运行。
52.在区块链网络中,节点是逻辑上的通信实体;不同类型的多个节点可以运行在同一个物理服务器上,也可以运行在不同的物理服务器上。
53.对于区块链外产生的数据而言,可以将其构建成区块链所支持的标准的交易(transaction)格式,然后发布至区块链,由区块链网络中的所有节点对该交易进行共识。在达成共识后,可以由区块链网络中作为记账节点的节点,将这笔交易在区块链中进行持久化存证。
54.目前的区块链系统通常包括两种主流的交易模型;其中,一种是utxo(unspent transaction output,未花费的交易输出)模型,而另外一种则是账户模型。
55.以上两类区块链如果想要实现数据存证,通常可以采用如下的存证方式:
56.对于采用utxo模型的区块链而言,其支持的原生交易通常只包括转账交易,在基
于转账交易进行转账的过程中,用户可以通过在转账交易中的交易附言(即转账附言)中来填充额外的数据,来将该额外的数据在区块链上进行存证。
57.对于采用账户模型的区块链而言,其需要存储和维护的区块链数据,通常包括区块数据、区块链中的区块链账户对应的账户状态数据;而区块数据又可以进一步包括区块头数据、区块中的区块交易数据、以及与区块中的区块交易数据对应的交易收据,等等。而在存储以上示出的各种区块链数据时,通常可以将上述各种区块链数据以key-value键值对的形式,组织成merkle树(即默克尔树)在数据库中存储。当需要查询区块链节点存储的上述各种区块链数据时,可以通过将上述各种区块链数据的key作为查询索引,遍历上述merkle树来高效的查询数据。
58.在采用账户模型的区块链中,可以在区块链上部署用于进行数据存证的智能合约,用户可以通过调用智能合约的方式,将需要存证的数据作为该智能合约对应的合约账户的账户状态,存储到与该智能合约对应的merkle树中。
59.例如,通常采用一种特殊的称之为mpt树的特殊的merkle树来存储和维护区块链数据;其中,对于账户状态数据,可以组织成mpt状态树(俗称世界状态)在数据库中存储;mpt状态树上存储了以账户地址为key,以账户状态数据为value的key-value键值对。而智能合约对应的合约账户中存储的数据内容,也会被进一步组织成storage树(一种用于存储数据的mpt存储树)在数据库中存储;storage树的根节点的hash值,会作为与该合约账户对应的账户状态数据的一部分,填充到mpt状态树中;而mpt状态树的根节点的hash会被作为认证根,进一步填充到区块头中。当用户需要进行数据存证时,可以通过调用智能合约的方式,将需要存证的数据作为该智能合约对应的合约账户的账户状态数据,存储到与该智能合约对应的storage树中。
60.在区块链领域,通常将账户划分为用户账户和合约账户两类;用户账户就是由用户直接控制的账户,也称之为外部账户;而合约账户则是由用户通过用户账户创建的,包含合约代码的账户(即智能合约)。
61.对于区块链中的账户而言,通常会通过一个结构体,来维护账户的账户状态。当区块中的交易被执行后,区块链中与该交易相关的账户的状态通常也会发生变化。
62.在一个例子中,账户的结构体通常包括balance,nonce,code和storage等字段。其中:
63.balance字段,用于维护账户目前的账户余额;
64.nonce字段,用于维护该账户的交易次数;它是用于保障每笔交易能且只能被处理一次的计数器,有效避免重放攻击;
65.code字段,用于维护该账户的合约代码;在实际应用中,code字段中通常仅维护合约代码的hash值;因而,code字段通常也称之为codehash字段。
66.storage字段,用于维护该账户的存储内容(默认字段值为空);对于合约账户而言,通常会分配一个独立的存储空间,用以存储该合约账户的存储内容;该独立的存储空间通常称之为该合约账户的账户存储。
67.合约账户的存储内容通常会构建成mpt(merkle patricia trie)树的数据结构存储在上述独立的存储空间之中;其中,基于合约账户的存储内容构建成的mpt树,通常也称之为storage树。而storage字段通常仅维护该storage树的根节点;因此,storage字段通常
也称之为storageroot字段。
68.其中,对于用户账户而言,以上示出的code字段和storage字段的字段值均为空值。
69.请参考图1,图1是一种用户账户的账户结构的示意图。
70.如图1所示,上述用户账户的账户结构具体可以包括identity字段、balance字段。其中,identity字段可以用于维护用户账户的账户标识。
71.需要说明的是,由于用户账户中的code字段和storage字段的字段值通常为空值,图1中的用户账户的账户结构中省略了code字段和storage字段。
72.请参考图2,图2是一种合约账户的账户结构的示意图。
73.如图2所示,上述合约账户的账户结构具体可以包括identity字段、balance字段、code字段、storage字段。其中,identity字段可以用于维护合约账户的账户标识。
74.需要说明的是,code字段中通常仅维护合约代码的hash值,也可称为codehash字段。storage字段中通常仅维护基于合约账户的存储内容构建成的storage树的根节点,也可称为storageroot字段。
75.在可编程的区块链中,可以通过面向用户提供智能合约(smart contract)的功能,支持用户在区块链网络中创建并调用一些复杂的逻辑。所谓智能合约是在区块链上可以被交易触发执行的程序。
76.在可编程的区块链中,每一个区块链节点都可以搭载一个图灵完备的虚拟机作为智能合约的执行环境,通过它可以实现各种复杂的逻辑。用户在区块链中发布和调用智能合约就是在虚拟机上运行的。
77.实际上,虚拟机直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”),所以部署在区块链上的智能合约可以是字节码。字节码由一连串的字节组成,每一字节可以标识一个操作。基于开发效率、可读性等多方面考虑,开发者可以不直接书写字节码,而是选择一门高级语言编写智能合约代码。例如,高级语言可以采用诸如solidity、serpent、lll语言等。对于采用高级语言编写的智能合约代码,可以经过编译器编译,生成可以部署到区块链上的字节码。
78.用户可以将一笔包含合约代码的智能合约创建交易发送到区块链网络后,各区块链节点均可以在搭载的虚拟机中执行这笔交易。
79.当区块链节点间通过共识机制达成一致后,这个智能合约成功创建,后续用户可以调用这个智能合约。
80.智能合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址;合约代码(code)和账户存储(storage)将保存在该合约账户的账户存储中。智能合约的行为由合约代码控制,而智能合约的账户存储则保存了合约的状态。
81.用户将一笔智能合约调用交易发送到以太坊网络后,各区块链节点均可以在搭载的虚拟机中执行这笔交易。
82.调用智能合约后,合约账户的账户状态可能改变。后续,某个客户端可以通过接入的区块链节点查看合约账户的账户状态。
83.智能合约可以以规定的方式在区块链网络中每个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当这样的交易执行完毕后,区块链上就保存了无法篡改、不
会丢失的交易凭证。
84.本说明书旨在提出一种用于对数据账户进行访问授权的技术方案,一方面,通过对区块链支持的账户类型,进行进一步的扩展,扩展出用于维护该区块链上部署的智能合约进行合约计算的业务数据的数据账户,实现将智能合约的合约代码与智能合约进行合约计算所需的业务数据分离开来;另一方面,通过数据账户中维护的与其对应的访问授权信息,对用户在区块链上注册的用户账户对数据账户的访问进行权限控制。
85.在上述技术方案中,区块链中的区块链节点可以响应于接收到的针对数据账户的数据账户授权交易,在确定发起该数据账户授权交易的管理方具有与该数据账户对应的管理权限时,将该数据账户授权交易中的用户在区块链上注册的用户账户的账户标识,与该用户账户针对该数据账户的访问权限信息的对应关系,作为与该数据账户对应的访问授权信息,填充至该数据账户中的授权字段。
86.在具体实现时,针对区块链上创建的任一数据账户,与该数据账户对应的管理方可以发起针对该数据账户的数据账户授权交易。在这种情况下,该区块链中的区块链节点可以接收到该数据账户授权交易。
87.其中,上述数据账户授权交易可以包括用户在区块链上注册的用户账户的账户标识,以及授权给该用户账户的针对该数据账户的访问权限信息。
88.上述区块链节点在接收到上述数据账户授权交易的情况下,可以响应于该数据账户授权交易,确定发起该数据账户授权交易的上述管理方是否具有与上述数据账户对应的管理权限。
89.如果上述管理方具有与上述数据账户对应的管理权限,则可以将上述用户账户的账户标识和上述访问权限信息的对应关系,作为与该数据账户对应的访问授权信息,填充至该数据账户中的授权字段。
90.采用上述方式,可以将智能合约的合约代码与智能合约进行合约计算所需的业务数据分离开来,从而可以达到以下目的:第一,与智能合约对应的合约账户中仅需要维护智能合约的合约代码,因此可以将所实现的业务逻辑较为复杂的智能合约拆分成多个较为简单的子合约,降低智能合约的开发、测试、升级等的成本;第二,用户在区块链中注册的用户账户,以及与区块链上部署的智能合约对应的合约账户,均可以直接访问在区块链上创建的数据账户中维护的业务数据,即通过数据账户可以实现面向用户账户和合约账户的数据共享,节省智能合约的执行开销,实现对业务数据的并行访问,提高区块链的交易吞吐量;第三,由数据账户集中维护业务数据,可以实现业务数据的资产化,同时便于获取大量业务数据以进行数据分析、ai训练等处理。
91.除此之外,可以对用户在区块链上注册的用户账户对数据账户的访问进行权限控制,仅允许数据账户中维护的与该数据账户对应的访问授权信息所指示的用户账户访问该数据账户。
92.请参考图3,图3是本说明书一示例性实施例示出的一种数据账户创建方法的流程图。
93.在本实施例中,可以对区块链支持的账户类型,进行进一步的扩展,以扩展出一种独立于用户账户和合约账户的新的账户类型,称为数据账户。也即,区块链支持的账户类型可以包括用户账户、合约账户和数据账户。
94.对于上述数据账户而言,其中可以维护上述区块链上部署的智能合约进行合约计算所需的业务数据。由此,可以实现将智能合约的合约代码与智能合约进行合约计算所需的业务数据分离开来。
95.上述数据账户创建方法可以应用于区块链节点,包括以下步骤:
96.步骤302:接收用于创建所述数据账户的数据账户创建交易;其中,所述数据账户创建交易包括所述区块链上部署的智能合约进行合约计算所需的业务数据。
97.步骤304:响应于所述数据账户创建交易,在所述区块链上创建数据账户。
98.步骤306:将所述业务数据添加至所述数据账户进行维护。
99.针对上述区块链上部署的智能合约,可以由与待创建的数据账户对应的管理方,发起数据账户创建交易。例如,上述管理方可以通过与其对应的客户端,执行发起上述数据账户创建交易的操作。该客户端在检测到该操作时,可以按照上述区块链支持的标准的交易格式,构建该数据账户创建交易,并将该数据账户创建交易发布至该区块链。在这种情况下,该区块链中的区块链节点可以接收到该数据账户创建交易。
100.在实际应用中,上述管理方具体可以是上述智能合约的所有者(例如:该智能合约可以实现某一企业的业务逻辑,此时该管理方可以是该企业),或者可以是待创建的数据账户的所有者(例如:该数据账户可以用于维护某一企业的业务数据,此时该管理方可以是该企业)。
101.需要说明的是,也可以由其他用户发起上述数据账户创建交易,或者可以由上述区块链节点在达到特定条件时,自行构建上述数据账户创建交易,本说明书对此不作限制。
102.其中,上述数据账户创建交易可以用于创建与上述智能合约对应的数据账户,即所创建的数据账户可以用于维护该智能合约进行合约计算所需的业务数据。相应的,该数据账户创建交易可以包括该智能合约进行合约计算所需的业务数据。
103.上述区块链节点在接收到上述数据账户创建交易的情况下,可以响应于该数据账户创建交易,在上述区块链上创建数据账户。
104.针对所创建的上述数据账户,上述区块链节点可以将上述数据账户创建交易中的业务数据添加至该数据账户进行维护。由此,即可创建用于维护上述智能合约进行合约计算所需的业务数据的数据账户。
105.下面对数据账户的账户结构进行详细说明。
106.在示出的一种实施方式中,与前述的用户账户和合约账户类似,数据账户中维护的业务数据可以被组织成merkle树的形式,在区块链节点搭载的本地数据库中存储。相应的,数据账户的账户结构可以包括用于维护merkle树的根节点的hash值的数据存储字段,该merkle树中写入了区块链上部署的智能合约进行合约计算所需的业务数据。
107.在上述情况下,前述的将上述数据账户创建交易中的业务数据添加至上述数据账户进行维护,具体可以包括将该数据账户创建交易中的业务数据写入上述区块链节点搭载的本地数据库中存储的merkle树,以对该merkle树进行更新,并将更新后的merkle树的根节点的hash值填充至该数据账户中的数据存储字段。
108.请参考图4,图4是本说明书一示例性实施例示出的一种数据账户的账户结构的示意图。
109.如图4所示,上述数据账户的账户结构具体可以包括storage字段。其中,storage
字段可以用于维护merkle树的根节点的hash值,也可称为storageroot字段,该merkle树中写入了智能合约进行合约计算所需的业务数据。
110.在上述情况下,合约账户的存储内容可以不再包括智能合约进行合约计算所需的业务数据,而是由独立的数据账户维护智能合约进行合约计算所需的业务数据。由此,即可实现将智能合约的合约代码与智能合约进行合约计算所需的业务数据分离开来。
111.在示出的一种实施方式中,上述区块链上部署的智能合约进行合约计算所需的业务数据,可以包括业务数据内容和与该业务数据内容对应的数据访问代码。
112.在上述情况下,前述的将上述数据账户创建交易中的业务数据写入上述区块链节点搭载的本地数据库中存储的merkle树,以对该merkle树进行更新,并将更新后的merkle树的根节点的hash值填充至上述数据账户中的数据存储字段,具体可以包括将该数据账户创建交易中的业务数据内容和数据访问代码的对应关系,写入该merkle树,以对该merkle树进行更新,并将更新后的merkle树的根节点的hash值填充至该数据账户中的数据存储字段。也即,数据账户中的数据存储字段可以用于维护merkle树的根节点的hash值,该merkle树中写入了上述区块链上部署的智能合约进行合约计算所需的业务数据内容,以及与该业务数据内容对应的数据访问代码的对应关系。
113.继续参考图4,如图4所示的数据账户的账户结构中的storage字段,可以用于维护merkle树的根节点的hash值,也可称为storageroot字段,该merkle树中写入了智能合约进行合约计算所需的业务数据内容,以及与该业务数据内容对应的数据访问代码的对应关系。在这种情况下,storage字段可以视为包括data字段和与之对应的data access code字段。
114.其中,data字段可以视为用于维护写入了智能合约进行合约计算所需的业务数据内容的merkle树的根节点的hash值,data access code字段可以视为用于维护写入了与该业务数据内容对应的数据访问代码的merkle树的根节点的hash值。
115.在示出的一种实施方式中,对于上述业务数据内容而言,与其对应的数据访问代码可以包括用于读/写该业务数据内容的接口代码。也即,通过调用该数据访问代码,可以实现对该业务数据内容的读/写。
116.在示出的一种实施方式中,上述数据账户创建交易还可以包括与上述智能合约进行合约计算所需的业务数据对应的数据描述信息。相应的,数据账户的账户结构还可以包括用于维护数据描述信息的hash值的数据描述字段,该数据描述信息与区块链上部署的智能合约进行合约计算所需的业务数据相对应。
117.在上述情况下,针对所创建的上述数据账户,上述区块链节点还可以计算上述数据账户创建交易中的与上述业务数据对应的数据描述信息的hash值,并将计算出的hash值填充至该数据账户中的数据描述字段。
118.继续参考图4,如图4所示的数据账户的账户结构具体可以包括schemahash字段、storage字段。其中,storage字段可以用于维护merkle树的根节点的hash值,也可称为storageroot字段,该merkle树中写入了智能合约进行合约计算所需的业务数据。在这种情况下,schemahash字段可以用于维护与该业务数据对应的数据描述信息的hash值。
119.在示出的一种实施方式中,上述数据账户的账户结构还可以包括以下示出的任一字段或者多个字段:用于维护所述数据账户的账户标识的账户标识字段;用于维护所述数
据账户持有的资产的余额的余额字段;用于维护所述数据账户的管理方的公钥的管理字段。
120.继续参考图4,如图4所示的数据账户的账户结构具体可以包括identity字段、balance字段、authmap字段、schemahash字段、storage字段。其中,identity字段可以用于维护数据账户的账户标识。balance字段可以用于维护数据账户持有的资产的余额。authmap字段可以用于维护数据账户的管理方的公钥。
121.需要说明的是,上述管理字段具体可以用于维护数据账户的至少一个管理方的公钥,以及为这至少一个管理方的公钥分配的权重的对应关系。
122.在实际应用中,对于区块链上创建的数据账户而言,前述的用户账户和合约账户都可以访问该数据账户,以获取该数据账户中维护的业务数据,从而可以基于该业务数据进行一定的处理。为了避免任一用户账户或者任一合约账户可以随意地访问区块链上创建的数据账户,提高数据账户中维护的业务数据的安全性,可以对用户账户和合约账户进行针对该数据账户的访问权限控制。
123.在示出的一种实施方式中,数据账户的账户结构可以包括用于维护与该数据账户对应的访问授权信息的授权字段。
124.在如图3所示的数据账户创建方法的基础上,请参考图5,图5是本说明书一示例性实施例示出的一种数据账户的访问授权方法的流程图。
125.上述数据账户的访问授权方法可以包括以下步骤:
126.步骤502:接收与所述数据账户对应的管理方发起的针对所述数据账户的数据账户授权交易;其中,所述数据账户授权交易包括目标账户的账户标识,以及授权给所述目标账户的针对所述数据账户的访问权限信息。
127.步骤504:响应于所述数据账户授权交易,确定所述管理方是否具有与所述数据账户对应的管理权限。
128.步骤506:如果所述管理方具有与所述数据账户对应的管理权限,则将所述目标账户的账户标识和所述访问权限信息的对应关系作为与所述数据账户对应的访问授权信息,填充至所述数据账户中的授权字段。
129.针对区块链上创建的任一数据账户,与该数据账户对应的管理方可以发起针对该数据账户的数据账户授权交易。在这种情况下,该区块链中的区块链节点可以接收到该数据账户授权交易。
130.其中,上述数据账户授权交易可以包括能被授权上述数据账户的访问权限的目标账户的账户标识,以及授权给该目标账户的针对该数据账户的访问权限信息。
131.上述区块链节点在接收到上述数据账户授权交易的情况下,可以响应于该数据账户授权交易,确定发起该数据账户授权交易的上述管理方是否具有与上述数据账户对应的管理权限。
132.如果上述管理方具有与上述数据账户对应的管理权限,则可以将上述目标账户的账户标识和上述访问权限信息的对应关系,作为与该数据账户对应的访问授权信息,填充至该数据账户中的授权字段。
133.在示出的一种实施方式中,与数据账户对应的访问授权信息可以包括由至少一个目标账户的账户标识,以及授权给这至少一个目标账户的针对该数据账户的访问权限信息
的对应关系,构成的访问授权列表(也可称为访问控制列表,access control list,acl)。需要说明的是,这至少一个目标账户的账户标识,以及授权给这至少一个目标账户的针对该数据账户的访问权限信息,是一一对应的。
134.在示出的一种实施方式中,对于任一目标账户而言,该目标账户的账户标识与授权给该目标账户的针对某一数据账户的访问权限信息的对应关系,可以通过key-value键值对的形式表示;该key-value键值对中的key可以是该目标账户的账户标识,value可以是授权给该目标账户的针对该数据账户的访问权限信息。相应的,上述访问授权列表可以是与上述至少一个目标账户对应的key-value键值对构成的map列表;该map列表中的key-value键值对中的key为这至少一个目标账户的账户标识,value为授权给这至少一个目标账户的针对该数据账户的访问权限信息。
135.在实际应用中,上述访问权限信息具体可以是访问凭证(access certificate,ac)。为了保证访问权限信息的数据安全,提高访问权限信息的易用性,同时节省存储空间,上述访问授权列表中存储的具体可以是至少一个目标账户的账户标识,以及授权给这至少一个目标账户的针对该数据账户的访问权限信息的hash值的对应关系。
136.继续参考图4,如图4所示的数据账户的账户结构具体可以包括identity字段、balance字段、authmap字段、acl字段、schemahash字段、storage字段。其中,acl字段可以用于维护与数据账户对应的访问授权信息(例如:访问授权列表)。
137.在示出的一种实施方式中,上述目标账户可以包括用户在上述区块链中注册的用户账户;或者,与上述区块链上部署的智能合约对应的合约账户。
138.下面分别对用户账户和合约账户访问数据账户的过程进行详细说明。
139.(1)用户账户访问数据账户
140.结合如图5所示的数据账户的访问授权方法,请参考图6,图6是本说明书一示例性实施例示出的另一种数据账户的访问授权方法的流程图。
141.上述数据账户的访问授权方法可以包括以下步骤:
142.步骤602:接收与所述数据账户对应的管理方发起的针对所述数据账户的数据账户授权交易;其中,所述数据账户授权交易包括用户在所述区块链中注册的用户账户的账户标识,以及授权给所述用户账户的针对所述数据账户的访问权限信息。
143.步骤604:响应于所述数据账户授权交易,确定所述管理方是否具有与所述数据账户对应的管理权限。
144.步骤606:如果所述管理方具有与所述数据账户对应的管理权限,则将所述用户账户的账户标识和所述访问权限信息的对应关系作为与所述数据账户对应的访问授权信息,填充至所述数据账户中的授权字段。
145.步骤602至606的具体实现可以参考步骤502至506,本说明书在此不再赘述。
146.请参考图7,图7是本说明书一示例性实施例示出的另一种数据账户的访问授权方法的流程图。
147.上述数据账户的访问授权方法可以包括以下步骤:
148.步骤702:接收与用户在所述区块链中注册的用户账户对应的管理方发起的针对所述数据账户的数据账户授权交易;其中,所述数据账户授权交易包括所述用户账户的账户标识,以及授权给所述用户账户的针对所述数据账户的访问权限信息。
149.步骤704:响应于所述数据账户授权交易,确定所述管理方是否具有与所述数据账户对应的管理权限。
150.步骤706:如果所述管理方具有与所述数据账户对应的管理权限,则生成与授权给所述用户账户针对所述数据账户的访问权限对应的审批事件,以使与所述数据账户对应的管理方在获取到所述审批事件时,对授权给所述用户账户针对所述数据账户的访问权限进行审批,并返回审批结果。
151.步骤708:响应于接收到的所述审批结果,在所述审批结果指示审批通过时,将所述用户账户的账户标识和所述访问权限信息的对应关系作为与所述数据账户对应的访问授权信息,填充至所述数据账户中的授权字段。
152.针对区块链上创建的任一数据账户,与用户在所述区块链中注册的任一用户账户对应的管理方也可以发起针对该数据账户的数据账户授权交易。在这种情况下,该区块链中的区块链节点可以接收到该数据账户授权交易。
153.其中,上述数据账户授权交易可以包括上述用户账户的账户标识,以及授权给该用户账户的针对上述数据账户的访问权限信息。
154.上述区块链节点在接收到上述数据账户授权交易的情况下,可以响应于该数据账户授权交易,确定发起该数据账户授权交易的上述管理方是否具有与上述用户账户对应的管理权限。
155.如果上述管理方具有与上述用户账户对应的管理权限,则可以生成与授权给该用户账户针对上述数据账户的访问权限对应的审批事件,并将该审批事件发布至上述区块链,从而使与该数据账户对应的管理方可以从该区块链上获取到该审批事件,据此对授权给该用户账户针对该数据账户的访问权限进行审批,并返回审批结果。
156.上述区块链节点在接收到上述审批结果的情况下,可以响应于该审批结果,在该审批结果指示审批通过时,将上述用户账户的账户标识和上述访问权限信息的对应关系,作为与上述数据账户对应的访问授权信息,填充至该数据账户中的授权字段。
157.需要说明的是,用户账户在区块链中完成注册后,可以为该用户账户分配对应的公私钥对。也即,与该用户账户对应的管理方可以持有该公私钥对,其中的私钥可以用于对该管理方发起的交易进行签名,公钥则可以用于对签名进行验证。公钥可以在区块链中进行广播。
158.在示出的一种实施方式中,在上述数据账户的账户结构还包括用于维护该数据账户的管理方的公钥的管理字段的情况下,在确定发起上述数据账户授权交易的管理方是否具有与上述数据账户对应的管理权限时,具体可以确定该管理方的公钥与该管理字段中维护的该数据账户的管理方的公钥是否匹配,如果是,则可以确定该管理方具有与该数据账户对应的管理权限。
159.在示出的一种实施方式中,上述管理字段具体可以用于维护数据账户的至少一个管理方的公钥,以及为这至少一个管理方的公钥分配的权重的对应关系。在这种情况下,在确定发起上述数据账户授权交易的管理方的公钥与该管理字段中维护的该数据账户的管理方的公钥是否匹配时,具体可以基于该管理字段中维护的该对应关系,确定与该管理方的公钥对应的权重是否达到预设的阈值,如果是,则可以确定该管理方的公钥与该数据账户的管理方的公钥匹配。
160.在实际应用中,可以基于发起上述数据账户授权交易的管理方的私钥,对该数据账户授权交易进行签名。相应的,在对该数据账户授权交易进行响应之前,可以先确定该管理方的公钥,再基于该管理方的公钥对签名进行验证,如果验证通过再进行响应。
161.类似的,上述用户账户的账户结构也可以包括用于维护该用户账户的管理方的公钥的管理字段。在这种情况下,在确定发起上述数据账户授权交易的管理方是否具有与该用户账户对应的管理权限时,也可以确定该管理方的公钥与该管理字段中维护的该用户账户的管理方的公钥是否匹配,如果是,则可以确定该管理方具有与该用户账户对应的管理权限。
162.需要说明的是,还可以采用与如图6或7所示的数据账户的访问授权方法类似的方式,对上述数据账户中的授权字段中维护的与该数据账户对应的访问授权信息进行全部或部分的更新;或者,对上述数据账户中的授权字段中维护的与该数据账户对应的访问授权信息进行全部或部分的授权撤销(例如:删除或者标记为授权已撤销)。
163.在如图6或7所示的数据账户的访问授权方法的基础上,请参考图8,图8是本说明书一示例性实施例示出的一种数据账户访问方法的流程图。
164.上述数据账户访问方法可以包括以下步骤:
165.步骤802:接收所述用户账户针对所述数据账户的数据账户访问交易;其中,所述数据账户访问交易包括待访问的目标数据的数据标识,以及授权给所述用户账户的针对所述数据账户的访问权限信息。
166.步骤804:响应于所述数据账户访问交易,确定所述数据账户访问交易中的访问权限信息,与所述数据账户中的授权字段中维护的与所述数据账户对应的访问授权信息是否匹配。
167.步骤806:如果所述访问权限信息与所述数据账户对应的访问授权信息匹配,则确定所述用户账户具有所述数据账户的访问权限,并在所述数据账户中维护的业务数据中查找与所述数据标识对应的所述目标数据。
168.针对区块链上创建的任一数据账户,上述区块链中的区块链节点可以接收到任一用户账户针对该数据账户的数据账户访问交易。
169.其中,上述数据账户访问交易可以包括待访问的数据(可称为目标数据)的数据标识,以及授权给上述用户账户的针对该数据账户的访问权限信息。
170.上述区块链节点在接收到上述数据账户访问交易的情况下,可以响应于该数据账户访问交易,确定该数据账户访问交易中的访问权限信息,与该数据账户中的授权字段中维护的与该数据账户对应的访问授权信息是否匹配。
171.如果两者匹配,则可以确定上述用户账户具有上述数据账户的访问权限,从而可以在该数据账户中维护的业务数据中查找与上述数据账户访问交易中的数据标识对应的上述目标数据。
172.由于与数据账户对应的访问授权信息可以包括由至少一个目标账户的账户标识,以及授权给这至少一个目标账户的针对该数据账户的访问权限信息的对应关系,构成的访问授权列表,在示出的一种实施方式中,上述数据账户访问交易还可以包括上述用户账户的账户标识。
173.在上述情况下,在确定上述数据账户访问交易中的访问权限信息,与上述数据账
户中的授权字段中维护的与该数据账户对应的访问授权信息是否匹配时,具体可以先基于该数据账户中的授权字段中维护的访问授权列表,查找与该用户账户的账户标识对应的访问权限信息,再确定该数据账户访问交易中的访问权限信息与查找到的访问权限信息是否匹配,如果是,则可以确定该访问权限信息与该数据账户对应的访问授权信息匹配。
174.由于数据账户中维护的业务数据可以被组织成merkle树的形式,在区块链节点搭载的本地数据库中存储,而merkle树上存储的是key-value键值对,在示出的一种实施方式中,上述目标数据的数据标识可以包括该目标数据的key。
175.在上述情况下,在上述数据账户中维护的业务数据中查找与上述数据账户访问交易中的数据标识对应的上述目标数据时,具体可以在上述区块链节点搭载的本地数据库中存储的上述merkle树中,查找与该目标数据的key对应的value,并将查找到的该value确定为该目标数据。
176.在示出的一种实施方式中,上述访问权限信息还可以包括有效期,以及授权给上述用户账户访问权限的数据的数据标识集合。
177.在上述情况下,在确定了上述访问权限信息与上述数据账户对应的访问授权信息匹配时,还可以基于该访问权限信息中的上述有效期,确定该访问权限信息是否有效,如果是,则可以进一步确定该访问权限信息中的上述数据标识集合是否包括上述目标数据的数据标识,如果是,则可以确定上述用户账户具有该数据账户的访问权限。
178.(2)合约账户访问数据账户
179.结合如图5所示的数据账户的访问授权方法,请参考图9,图9是本说明书一示例性实施例示出的另一种数据账户的访问授权方法的流程图。
180.上述数据账户的访问授权方法可以包括以下步骤:
181.步骤902:接收与所述数据账户对应的管理方发起的针对所述数据账户的数据账户授权交易;其中,所述数据账户授权交易包括与所述区块链上部署的智能合约对应的合约账户的账户标识,以及授权给所述合约账户的针对所述数据账户的访问权限信息。
182.步骤904:响应于所述数据账户授权交易,确定所述管理方是否具有与所述数据账户对应的管理权限。
183.步骤906:如果所述管理方具有与所述数据账户对应的管理权限,则将所述合约账户的账户标识和所述访问权限信息的对应关系作为与所述数据账户对应的访问授权信息,填充至所述数据账户中的授权字段。
184.步骤902至906的具体实现可以参考步骤502至506,本说明书在此不再赘述。
185.请参考图10,图10是本说明书一示例性实施例示出的另一种数据账户的访问授权方法的流程图。
186.上述数据账户的访问授权方法可以包括以下步骤:
187.步骤1002:接收与所述区块链上部署的智能合约对应的合约账户对应的管理方发起的针对所述数据账户的数据账户授权交易;其中,所述数据账户授权交易包括所述合约账户的账户标识,以及授权给所述合约账户的针对所述数据账户的访问权限信息。
188.步骤1004:响应于所述数据账户授权交易,确定所述管理方是否具有与所述合约账户对应的管理权限。
189.步骤1006:如果所述管理方具有与所述合约账户对应的管理权限,则生成与授权
给所述合约账户针对所述数据账户的访问权限对应的审批事件,以使与所述数据账户对应的管理方在获取到所述审批事件时,对授权给所述合约账户针对所述数据账户的访问权限进行审批,并返回审批结果。
190.步骤1008:响应于接收到的所述审批结果,在所述审批结果指示审批通过时,将所述合约账户的账户标识和所述访问权限信息的对应关系作为与所述数据账户对应的访问授权信息,填充至所述数据账户中的授权字段。
191.针对区块链上创建的任一数据账户,与所述区块链上部署的智能合约对应的任一合约账户对应的管理方也可以发起针对该数据账户的数据账户授权交易。在这种情况下,该区块链中的区块链节点可以接收到该数据账户授权交易。
192.其中,上述数据账户授权交易可以包括上述合约账户的账户标识,以及授权给该合约账户的针对上述数据账户的访问权限信息。
193.上述区块链节点在接收到上述数据账户授权交易的情况下,可以响应于该数据账户授权交易,确定发起该数据账户授权交易的上述管理方是否具有与上述合约账户对应的管理权限。
194.如果上述管理方具有与上述合约账户对应的管理权限,则可以生成与授权给该合约账户针对上述数据账户的访问权限对应的审批事件,并将该审批事件发布至上述区块链,从而使与该数据账户对应的管理方可以从该区块链上获取到该审批事件,据此对授权给该合约账户针对该数据账户的访问权限进行审批,并返回审批结果。
195.上述区块链节点在接收到上述审批结果的情况下,可以响应于该审批结果,在该审批结果指示审批通过时,将上述合约账户的账户标识和上述访问权限信息的对应关系,作为与上述数据账户对应的访问授权信息,填充至该数据账户中的授权字段。
196.需要说明的是,在完成将智能合约部署在区块链上后,可以为与该智能合约对应的合约账户分配对应的公私钥对。也即,与该合约账户对应的管理方可以持有该公私钥对,其中的私钥可以用于对该管理方发起的交易进行签名,公钥则可以用于对签名进行验证。公钥可以在区块链中进行广播。
197.在示出的一种实施方式中,在上述数据账户的账户结构还包括用于维护该数据账户的管理方的公钥的管理字段的情况下,在确定发起上述数据账户授权交易的管理方是否具有与上述数据账户对应的管理权限时,具体可以确定该管理方的公钥与该管理字段中维护的该数据账户的管理方的公钥是否匹配,如果是,则可以确定该管理方具有与该数据账户对应的管理权限。
198.在示出的一种实施方式中,上述管理字段具体可以用于维护数据账户的至少一个管理方的公钥,以及为这至少一个管理方的公钥分配的权重的对应关系。在这种情况下,在确定发起上述数据账户授权交易的管理方的公钥与该管理字段中维护的该数据账户的管理方的公钥是否匹配时,具体可以基于该管理字段中维护的该对应关系,确定与该管理方的公钥对应的权重是否达到预设的阈值,如果是,则可以确定该管理方的公钥与该数据账户的管理方的公钥匹配。
199.在实际应用中,可以基于发起上述数据账户授权交易的管理方的私钥,对该数据账户授权交易进行签名。相应的,在对该数据账户授权交易进行响应之前,可以先确定该管理方的公钥,再基于该管理方的公钥对签名进行验证,如果验证通过再进行响应。
200.类似的,上述合约账户的账户结构也可以包括用于维护该合约账户的管理方的公钥的管理字段。在这种情况下,在确定发起上述数据账户授权交易的管理方是否具有与该合约账户对应的管理权限时,也可以确定该管理方的公钥与该管理字段中维护的该合约账户的管理方的公钥是否匹配,如果是,则可以确定该管理方具有与该合约账户对应的管理权限。
201.需要说明的是,还可以采用与如图6或7所示的数据账户的访问授权方法类似的方式,对上述数据账户中的授权字段中维护的与该数据账户对应的访问授权信息进行全部或部分的更新;或者,对上述数据账户中的授权字段中维护的与该数据账户对应的访问授权信息进行全部或部分的授权撤销(例如:删除或者标记为授权已撤销)。
202.在如图9或10所示的数据账户的访问授权方法的基础上,请参考图11,图11是本说明书一示例性实施例示出的一种数据账户访问方法的流程图。
203.上述数据账户访问方法可以包括以下步骤:
204.步骤1102:接收所述合约账户针对所述数据账户的数据账户访问交易;其中,所述数据账户访问交易包括待访问的目标数据的数据标识,以及授权给所述合约账户的针对所述数据账户的访问权限信息。
205.步骤1104:响应于所述数据账户访问交易,确定所述数据账户访问交易中的访问权限信息,与所述数据账户中的授权字段中维护的与所述数据账户对应的访问授权信息是否匹配。
206.步骤1106:如果所述访问权限信息与所述数据账户对应的访问授权信息匹配,则确定所述合约账户具有所述数据账户的访问权限,并在所述数据账户中维护的业务数据中查找与所述数据标识对应的所述目标数据。
207.针对区块链上创建的任一数据账户,上述区块链中的区块链节点可以接收到任一合约账户针对该数据账户的数据账户访问交易。
208.其中,上述数据账户访问交易可以包括待访问的数据(可称为目标数据)的数据标识,以及授权给上述合约账户的针对该数据账户的访问权限信息。
209.上述区块链节点在接收到上述数据账户访问交易的情况下,可以响应于该数据账户访问交易,确定该数据账户访问交易中的访问权限信息,与该数据账户中的授权字段中维护的与该数据账户对应的访问授权信息是否匹配。
210.如果两者匹配,则可以确定上述合约账户具有上述数据账户的访问权限,从而可以在该数据账户中维护的业务数据中查找与上述数据账户访问交易中的数据标识对应的上述目标数据。
211.由于与数据账户对应的访问授权信息可以包括由至少一个目标账户的账户标识,以及授权给这至少一个目标账户的针对该数据账户的访问权限信息的对应关系,构成的访问授权列表,在示出的一种实施方式中,上述数据账户访问交易还可以包括上述合约账户的账户标识。
212.在上述情况下,在确定上述数据账户访问交易中的访问权限信息,与上述数据账户中的授权字段中维护的与该数据账户对应的访问授权信息是否匹配时,具体可以先基于该数据账户中的授权字段中维护的访问授权列表,查找与该合约账户的账户标识对应的访问权限信息,再确定该数据账户访问交易中的访问权限信息与查找到的访问权限信息是否
匹配,如果是,则可以确定该访问权限信息与该数据账户对应的访问授权信息匹配。
213.由于数据账户中维护的业务数据可以被组织成merkle树的形式,在区块链节点搭载的本地数据库中存储,而merkle树上存储的是key-value键值对,在示出的一种实施方式中,上述目标数据的数据标识可以包括该目标数据的key。
214.在上述情况下,在上述数据账户中维护的业务数据中查找与上述数据账户访问交易中的数据标识对应的上述目标数据时,具体可以在上述区块链节点搭载的本地数据库中存储的上述merkle树中,查找与该目标数据的key对应的value,并将查找到的该value确定为该目标数据。
215.在示出的一种实施方式中,上述访问权限信息还可以包括有效期,以及授权给上述合约账户访问权限的数据的数据标识集合。
216.在上述情况下,在确定了上述访问权限信息与上述数据账户对应的访问授权信息匹配时,还可以基于该访问权限信息中的上述有效期,确定该访问权限信息是否有效,如果是,则可以进一步确定该访问权限信息中的上述数据标识集合是否包括上述目标数据的数据标识,如果是,则可以确定上述合约账户具有该数据账户的访问权限。
217.在实际应用中,对于区块链上部署的智能合约进行合约计算所需的业务数据而言,其通常会根据实际情况的变化而发生变化。为了保证区块链上创建的数据账户中维护的业务数据的正确性,避免智能合约基于该业务数据进行合约计算时出现差错,就需要对区块链上创建的数据账户中维护的业务数据进行更新。
218.在示出的一种实施方式中,在如图3所示的数据账户创建方法的基础上,请参考图12,图12是本说明书一示例性实施例示出的一种数据账户更新方法的流程图。
219.上述数据账户更新方法可以包括以下步骤:
220.步骤1202:接收与所述数据账户对应的管理方发起的针对所述数据账户的数据账户更新交易;其中,所述数据账户更新交易包括更新后的所述业务数据。
221.步骤1204:响应于所述数据账户更新交易,确定所述管理方是否具有与所述数据账户对应的管理权限。
222.步骤1206:如果所述管理方具有与所述数据账户对应的管理权限,则将更新后的所述业务数据写入所述本地数据库中存储的默克尔树,以对所述默克尔树上已写入的所述业务数据进行更新,并将更新后的默克尔树的根节点的hash值填充至所述数据账户中的数据存储字段。
223.针对区块链上创建的任一数据账户,与该数据账户对应的管理方可以发起针对该数据账户的数据账户更新交易。在这种情况下,该区块链中的区块链节点可以接收到该数据账户更新交易。
224.由于上述数据账户可以用于维护上述区块链上部署的智能合约进行合约计算所需的业务数据,在这种情况下,上述数据账户更新交易可以包括更新后的该业务数据。
225.上述区块链节点在接收到上述数据账户更新交易的情况下,可以响应于该数据账户更新交易,确定发起该数据账户更新交易的上述管理方是否具有与上述数据账户对应的管理权限。
226.如果上述管理方具有与上述数据账户对应的管理权限,则可以基于更新后的上述业务数据对该数据账户中维护的上述业务数据进行更新。
227.由于上述数据账户中维护的上述业务数据可以被组织成merkle树的形式,在上述区块链节点搭载的本地数据库中存储,在这种情况下,可以将更新后的上述业务数据写入该merkle树,以对该merkle树上已写入的该业务数据进行更新,并将更新后的merkle树的根节点的hash值填充至该数据账户中的数据存储字段。由此,该数据账户中的数据存储字段中维护的数据,即可由写入了原先的该业务数据的merkle树的根节点的hash值,更新为写入了更新后的该业务数据的merkle树的根节点的hash值。
228.需要说明的是,上述数据账户更新交易还可以包括与更新后的上述业务数据对应的数据描述信息。在这种情况下,在对上述数据账户中维护的上述业务数据进行更新的同时,还可以将该数据账户中的数据描述字段中维护的数据,由与原先的该业务数据对应的数据描述信息的hash值,更新为与更新后的该业务数据对应的数据描述信息的hash值。
229.在实际应用中,可以对区块链支持的原生交易类型进行扩展,以在该区块链中扩展出具有新的功能的原生交易。需要说明的是,扩展出的具有新的功能的原生交易,具体可以是独立于转账交易或智能合约调用交易的原生交易。
230.在示出的一种实施方式中,可以对区块链支持的原生交易类型进行扩展,以在该区块链中扩展出一种用于创建数据账户的原生交易,可称为数据账户创建交易。
231.例如,对于采用utxo模型的区块链而言,可以在其支持的转账交易的基础上,再扩展出一种专用于创建数据账户的数据账户创建交易;而对于采用账户模型的区块链而言,则可以在其支持的转账交易、智能合约创建交易和智能合约调用交易的基础上,再扩展出一种专用于创建数据账户的数据账户创建交易。
232.同理,可以对区块链支持的原生交易类型进行扩展,以在该区块链中扩展出一种用于对所述数据账户中维护的业务数据进行更新的原生交易,可称为数据账户更新交易。
233.可以对区块链支持的原生交易类型进行扩展,以在该区块链中扩展出一种用于对所述数据账户进行访问授权的原生交易,可称为数据账户授权交易。
234.可以对区块链支持的原生交易类型进行扩展,以在该区块链中扩展出一种用于对所述数据账户进行访问的原生交易,可称为数据账户访问交易。
235.其中,上述数据账户创建交易、上述数据账户更新交易、上述数据账户授权交易、上述数据账户访问交易的交易格式,在本说明书中不进行特别限定;在实际应用中,可以采用兼容区块链现有的交易格式,也可以重新定义新的交易格式。
236.请参考图13,图13是本说明书一示例性实施例示出的一种设备的硬件结构的示意图。
237.如图13所示,在硬件层面,上述设备包括处理器1302、内部总线1304、网络接口1306、内存1308以及非易失性存储器1310,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器1302从非易失性存储器1310中读取对应的计算机程序到内存1308中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑模块,也可以是硬件或逻辑器件。
238.请参考图14,图14是本说明书一示例性实施例示出的一种数据账户的访问授权装置的框图。
239.上述数据账户的访问授权装置可以应用于如图13所示的设备,以实现本说明书的
技术方案。该设备可以作为区块链中的区块链节点;所述区块链支持的账户类型包括数据账户;所述数据账户用于维护所述区块链上部署的智能合约进行合约计算所需的业务数据;所述数据账户的账户结构包括用于维护与所述数据账户对应的访问授权信息的授权字段;该数据账户的访问授权装置可以包括:
240.接收模块1402,接收与所述数据账户对应的管理方发起的针对所述数据账户的数据账户授权交易;其中,所述数据账户授权交易包括用户在所述区块链中注册的用户账户的账户标识,以及授权给所述用户账户的针对所述数据账户的访问权限信息;
241.确定模块1404,响应于所述数据账户授权交易,确定所述管理方是否具有与所述数据账户对应的管理权限;
242.授权模块1406,如果所述管理方具有与所述数据账户对应的管理权限,则将所述用户账户的账户标识和所述访问权限信息的对应关系作为与所述数据账户对应的访问授权信息,填充至所述数据账户中的授权字段。
243.可选的,所述数据账户的账户结构还包括用于维护所述数据账户的管理方的公钥的管理字段;
244.所述确定模块1404:
245.确定所述管理方的公钥与所述管理字段中维护的所述数据账户的管理方的公钥是否匹配;
246.如果所述管理方的公钥与所述数据账户的管理方的公钥匹配,则确定所述管理方具有与所述数据账户对应的管理权限。
247.可选的,所述管理字段中维护了所述数据账户的至少一个管理方的公钥,以及为所述至少一个管理方的公钥分配的权重的对应关系;
248.所述确定模块1404:
249.基于所述管理字段中维护的所述对应关系,确定与所述管理方的公钥对应的权重是否达到预设的阈值;
250.如果与所述管理方的公钥对应的权重达到所述阈值,则确定所述管理方的公钥与所述数据账户的管理方的公钥匹配。
251.可选的,所述装置还包括:
252.第二接收模块,接收所述用户账户针对所述数据账户的数据账户访问交易;其中,所述数据账户访问交易包括待访问的目标数据的数据标识,以及授权给所述用户账户的针对所述数据账户的访问权限信息;
253.第二确定模块,响应于所述数据账户访问交易,确定所述数据账户访问交易中的访问权限信息,与所述数据账户中的授权字段中维护的与所述数据账户对应的访问授权信息是否匹配;
254.查找模块,如果所述访问权限信息与所述数据账户对应的访问授权信息匹配,则确定所述用户账户具有所述数据账户的访问权限,并在所述数据账户中维护的业务数据中查找与所述数据标识对应的所述目标数据。
255.可选的,与所述数据账户对应的访问授权信息包括由至少一个目标账户的账户标识,以及授权给所述至少一个目标账户的针对所述数据账户的访问权限信息的对应关系构成的访问授权列表。
256.可选的,所述对应关系为key-value键值对;所述访问授权列表为与所述至少一个目标账户对应的key-value键值对构成的map列表;其中,所述key-value键值对的key为所述至少一个目标账户的账户标识,所述key-value键值对的value为授权给所述至少一个目标账户的针对所述数据账户的访问权限信息。
257.可选的,所述目标账户包括用户在所述区块链中注册的用户账户;或者,与所述区块链上部署的智能合约对应的用户账户。
258.可选的,所述数据账户访问交易还包括所述用户账户的账户标识;
259.所述第二确定模块:
260.基于所述数据账户中的授权字段中维护的所述访问授权列表,查找与所述用户账户的账户标识对应的访问权限信息;
261.确定所述数据账户访问交易中的访问权限信息与查找到的访问权限信息是否匹配;
262.如果所述数据账户访问交易中的访问权限信息与查找到的访问权限信息匹配,则确定所述访问权限信息与所述数据账户对应的访问授权信息匹配。
263.可选的,所述数据账户中维护的业务数据被组织成默克尔树的形式,在所述区块链节点搭载的本地数据库中存储;所述目标数据的数据标识包括所述目标数据的key;
264.所述查找模块:
265.在所述区块链节点搭载的本地数据库中存储的所述默克尔树中,查找与所述目标数据的key对应的value,并将查找到的所述value确定为所述目标数据。
266.可选的,所述访问权限信息包括有效期,以及授权给所述用户账户访问权限的数据的数据标识集合;
267.所述查找模块:
268.基于所述访问权限信息中的所述有效期,确定所述访问权限信息是否有效;
269.如果确定所述访问权限信息有效,进一步确定所述访问权限信息中的所述数据标识集合是否包括所述目标数据的数据标识;
270.如果所述数据标识集合包括所述目标数据的数据标识,确定所述用户账户具有所述数据账户的访问权限。
271.可选的,所述数据账户授权交易为所述区块链支持的用于对所述数据账户进行访问授权的原生交易;所述数据账户访问交易为所述区块链支持的用于对所述数据账户进行访问的原生交易。
272.请参考图15,图15是本说明书一示例性实施例示出的另一种数据账户的访问授权装置的框图。
273.上述数据账户的访问授权装置可以应用于如图13所示的设备,以实现本说明书的技术方案。该设备可以作为区块链中的区块链节点;所述区块链支持的账户类型包括数据账户;所述数据账户用于维护所述区块链上部署的智能合约进行合约计算所需的业务数据;所述数据账户的账户结构包括用于维护与所述数据账户对应的访问授权信息的授权字段;该数据账户的访问授权装置可以包括:
274.接收模块1502,接收与用户在所述区块链中注册的用户账户对应的管理方发起的针对所述数据账户的数据账户授权交易;其中,所述数据账户授权交易包括所述用户账户
的账户标识,以及授权给所述用户账户的针对所述数据账户的访问权限信息;
275.确定模块1504,响应于所述数据账户授权交易,确定所述管理方是否具有与所述用户账户对应的管理权限;
276.审批模块1506,如果所述管理方具有与所述用户账户对应的管理权限,则生成与授权给所述用户账户针对所述数据账户的访问权限对应的审批事件,以使与所述数据账户对应的管理方在获取到所述审批事件时,对授权给所述用户账户针对所述数据账户的访问权限进行审批,并返回审批结果;
277.授权模块1508,响应于接收到的所述审批结果,在所述审批结果指示审批通过时,将所述用户账户的账户标识和所述访问权限信息的对应关系作为与所述数据账户对应的访问授权信息,填充至所述数据账户中的授权字段。
278.对于装置实施例而言,其基本对应于方法实施例,因此相关之处参见方法实施例的部分说明即可。
279.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书的技术方案的目的。
280.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
281.在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
282.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
283.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
284.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要
素的过程、方法、商品或者设备中还存在另外的相同要素。
285.上述对本说明书特定实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
286.在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
287.应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
288.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献