CN115098886A - 智能合约的访问授权方法及装置 - Google Patents
智能合约的访问授权方法及装置 Download PDFInfo
- Publication number
- CN115098886A CN115098886A CN202210911198.3A CN202210911198A CN115098886A CN 115098886 A CN115098886 A CN 115098886A CN 202210911198 A CN202210911198 A CN 202210911198A CN 115098886 A CN115098886 A CN 115098886A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- access
- transaction
- access authorization
- contract
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本说明书一个或多个实施例提供一种智能合约的访问授权方法及装置,应用于区块链节点;所述区块链节点维护了与所述区块链上部署的智能合约对应的访问授权信息;所述方法包括:接收针对所述区块链上部署的第一智能合约的访问授权交易;其中,所述访问授权交易包括所述区块链上部署的第二智能合约的合约标识,以及授权给所述第二智能合约的针对所述第一智能合约的访问权限信息;响应于所述访问授权交易,对所述访问授权交易进行合法性校验;如果所述访问授权交易合法性校验通过,则将所述第二智能合约的合约标识和所述访问权限信息的对应关系,添加至所述访问授权信息。
Description
技术领域
本说明书一个或多个实施例涉及区块链领域,尤其涉及一种智能合约的访问授权方法及装置。
背景技术
智能合约的发明降低了区块链的应用门槛,联盟链的推出更是加快了企业对区块链的应用。然而,企业对区块链的应用面临着巨大的技术挑战,尤其在企业的业务逻辑日趋复杂,业务数据不断累积的情况下,由于现有的技术限制和性能瓶颈,通常需要由单个智能合约实现复杂的业务逻辑,该智能合约下也需要存储大量的业务数据。
因此,通常会导致如下问题:第一,智能合约的代码量较大,甚至可能逼近用于执行智能合约的虚拟机的上限;第二,如果为了减小智能合约的代码量,将智能合约拆分为多个子合约,则需要在这多个子合约之间进行跨合约调用来执行业务,使业务的执行性能受到影响;第三,如果智能合约所实现的业务逻辑需要升级,则需要在区块链上部署新的智能合约,即需要将升级后的业务逻辑写入至新的智能合约,并将原先的智能合约中的业务数据拷贝至新的智能合约,使得新的智能合约兼容原先的智能合约中的业务数据。
发明内容
本说明书一个或多个实施例提供技术方案如下:
本说明书提供一种智能合约的访问授权方法,应用于区块链节点;所述区块链节点维护了与所述区块链上部署的智能合约对应的访问授权信息;所述方法包括:
接收针对所述区块链上部署的第一智能合约的访问授权交易;其中,所述访问授权交易包括所述区块链上部署的第二智能合约的合约标识,以及授权给所述第二智能合约的针对所述第一智能合约的访问权限信息;
响应于所述访问授权交易,对所述访问授权交易进行合法性校验;
如果所述访问授权交易合法性校验通过,则将所述第二智能合约的合约标识和所述访问权限信息的对应关系,添加至所述访问授权信息。
本说明书还提供一种智能合约的访问授权装置,应用于区块链节点;所述区块链节点维护了与所述区块链上部署的智能合约对应的访问授权信息;所述装置包括:
接收模块,接收针对所述区块链上部署的第一智能合约的访问授权交易;其中,所述访问授权交易包括所述区块链上部署的第二智能合约的合约标识,以及授权给所述第二智能合约的针对所述第一智能合约的访问权限信息;
校验模块,响应于所述访问授权交易,对所述访问授权交易进行合法性校验;
授权模块,如果所述访问授权交易合法性校验通过,则将所述第二智能合约的合约标识和所述访问权限信息的对应关系,添加至所述访问授权信息。
本说明书还提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如上述任一项所述方法的步骤。
本说明书还提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述任一项所述方法的步骤。
在上述技术方案中,区块链中的区块链节点可以响应于接收到的针对第一智能合约的访问授权交易,在该访问授权交易合法性校验通过时,将该访问授权交易中的第二智能合约的合约标识,以及授权给该第二智能合约的针对该第一智能合约的访问权限信息的对应关系,添加至该区块链节点维护的与该区块链上部署的智能合约对应的访问授权信息。
采用上述方式,对于区块链上部署的两个智能合约而言,如果其中的第二智能合约被授权了针对其中的第一智能合约的访问权限,则该第二智能合约可以访问该第一智能合约中维护的数据,即实现了不同的智能合约之间的数据共享。
进一步的,对于共享数据的两个智能合约而言,可以仅由其中的第一智能合约维护可共享的数据,而其中的第二智能合约中则仅需要维护智能合约的合约代码,因此可以将第二智能合约拆分成多个较为简单的子合约,降低智能合约的开发、测试、升级等的成本。
附图说明
图1是本说明书一示例性实施例示出的一种智能合约的访问授权方法的流程图。
图2是本说明书一示例性实施例示出的一种智能合约的访问授权撤销方法的流程图。
图3是本说明书一示例性实施例示出的一种智能合约访问方法的流程图。
图4是本说明书一示例性实施例示出的一种设备的硬件结构的示意图。
图5是本说明书一示例性实施例示出的一种智能合约的访问授权装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
区块链一般被划分为三种类型:公有链(Public Blockchain)、私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。此外,还可以有上述多种类型的结合,比如私有链与联盟链的结合、联盟链与公有链的结合等。
在上述三种类型的区块链中,去中心化程度最高的是公有链。加入公有链的参与方(也可以称为区块链中的节点)可以读取链上的数据记录、参与交易、竞争新区块的记账权等。而且,各节点可自由加入或退出网络,并进行相关操作。
私有链则相反,网络的写入权限由某个组织或机构控制,数据读取权限受组织规定。也即,私有链可以视为一个弱中心化系统,其对节点具有严格限制且节点数量较少。这种类型的区块链更适合于特定机构内部使用。
联盟链则介于公有链以及私有链之间,可以实现“部分去中心化”。联盟链中的各节点通常有与之对应的实体机构或组织;节点通过授权加入网络并组成利益相关联盟,共同维护区块链的运行。
在区块链网络中,节点是逻辑上的通信实体;不同类型的多个节点可以运行在同一个物理服务器上,也可以运行在不同的物理服务器上。
对于区块链外产生的数据而言,可以将其构建成区块链所支持的标准的交易(Transaction)格式,然后发布至区块链,由区块链网络中的所有节点对该交易进行共识。在达成共识后,可以由区块链网络中作为记账节点的节点,将这笔交易在区块链中进行持久化存证。
目前的区块链系统通常包括两种主流的交易模型;其中,一种是UTXO(UnspentTransaction Output,未花费的交易输出)模型,而另外一种则是账户模型。
以上两类区块链如果想要实现数据存证,通常可以采用如下的存证方式:
对于采用UTXO模型的区块链而言,其支持的原生交易通常只包括转账交易,在基于转账交易进行转账的过程中,用户可以通过在转账交易中的交易附言(即转账附言)中来填充额外的数据,来将该额外的数据在区块链上进行存证。
对于采用账户模型的区块链而言,其需要存储和维护的区块链数据,通常包括区块数据、区块链中的区块链账户对应的账户状态数据;而区块数据又可以进一步包括区块头数据、区块中的区块交易数据、以及与区块中的区块交易数据对应的交易收据,等等。而在存储以上示出的各种区块链数据时,通常可以将上述各种区块链数据以key-value键值对的形式,组织成Merkle树(即默克尔树)在数据库中存储。当需要查询区块链节点存储的上述各种区块链数据时,可以通过将上述各种区块链数据的key作为查询索引,遍历上述Merkle树来高效的查询数据。
在采用账户模型的区块链中,可以在区块链上部署用于进行数据存证的智能合约,用户可以通过调用智能合约的方式,将需要存证的数据作为该智能合约对应的合约账户的账户状态,存储到与该智能合约对应的Merkle树中。
例如,通常采用一种特殊的称之为MPT树的特殊的Merkle树来存储和维护区块链数据;其中,对于账户状态数据,可以组织成MPT状态树(俗称世界状态)在数据库中存储;MPT状态树上存储了以账户地址为key,以账户状态数据为value的key-value键值对。而智能合约对应的合约账户中存储的数据内容,也会被进一步组织成Storage树(一种用于存储数据的MPT存储树)在数据库中存储;Storage树的根节点的Hash值,会作为与该合约账户对应的账户状态数据的一部分,填充到MPT状态树中;而MPT状态树的根节点的Hash会被作为认证根,进一步填充到区块头中。当用户需要进行数据存证时,可以通过调用智能合约的方式,将需要存证的数据作为该智能合约对应的合约账户的账户状态数据,存储到与该智能合约对应的Storage树中。
在区块链领域,通常将账户划分为用户账户和合约账户两类;用户账户就是由用户直接控制的账户,也称之为外部账户;而合约账户则是由用户通过用户账户创建的,包含合约代码的账户(即智能合约)。
对于区块链中的账户而言,通常会通过一个结构体,来维护账户的账户状态。当区块中的交易被执行后,区块链中与该交易相关的账户的状态通常也会发生变化。
在一个例子中,账户的结构体通常包括Balance,Nonce,Code和Storage等字段。其中:
Balance字段,用于维护账户目前的账户余额;
Nonce字段,用于维护该账户的交易次数;它是用于保障每笔交易能且只能被处理一次的计数器,有效避免重放攻击;
Code字段,用于维护该账户的合约代码;在实际应用中,Code字段中通常仅维护合约代码的Hash值;因而,Code字段通常也称之为CodeHash字段。
Storage字段,用于维护该账户的存储内容(默认字段值为空);对于合约账户而言,通常会分配一个独立的存储空间,用以存储该合约账户的存储内容;该独立的存储空间通常称之为该合约账户的账户存储。
合约账户的存储内容通常会构建成MPT(Merkle Patricia Trie)树的数据结构存储在上述独立的存储空间之中;其中,基于合约账户的存储内容构建成的MPT树,通常也称之为Storage树。而Storage字段通常仅维护该Storage树的根节点;因此,Storage字段通常也称之为StorageRoot字段。
其中,对于用户账户而言,以上示出的Code字段和Storage字段的字段值均为空值。
在可编程的区块链中,可以通过面向用户提供智能合约(Smart Contract)的功能,支持用户在区块链网络中创建并调用一些复杂的逻辑。所谓智能合约是在区块链上可以被交易触发执行的程序。
在可编程的区块链中,每一个区块链节点都可以搭载一个图灵完备的虚拟机作为智能合约的执行环境,通过它可以实现各种复杂的逻辑。用户在区块链中发布和调用智能合约就是在虚拟机上运行的。
实际上,虚拟机直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”),所以部署在区块链上的智能合约可以是字节码。字节码由一连串的字节组成,每一字节可以标识一个操作。基于开发效率、可读性等多方面考虑,开发者可以不直接书写字节码,而是选择一门高级语言编写智能合约代码。例如,高级语言可以采用诸如Solidity、Serpent、LLL语言等。对于采用高级语言编写的智能合约代码,可以经过编译器编译,生成可以部署到区块链上的字节码。
用户可以将一笔包含合约代码的智能合约创建交易发送到区块链网络后,各区块链节点均可以在搭载的虚拟机中执行这笔交易。
当区块链节点间通过共识机制达成一致后,这个智能合约成功创建,后续用户可以调用这个智能合约。
智能合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址;合约代码(Code)和账户存储(Storage)将保存在该合约账户的账户存储中。智能合约的行为由合约代码控制,而智能合约的账户存储则保存了合约的状态。
用户将一笔智能合约调用交易发送到以太坊网络后,各区块链节点均可以在搭载的虚拟机中执行这笔交易。
调用智能合约后,合约账户的账户状态可能改变。后续,某个客户端可以通过接入的区块链节点查看合约账户的账户状态。
智能合约可以以规定的方式在区块链网络中每个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当这样的交易执行完毕后,区块链上就保存了无法篡改、不会丢失的交易凭证。
本说明书旨在提出一种用于对智能合约进行访问授权的技术方案,通过区块链节点维护的与区块链上部署的智能合约对应的访问授权信息,对不同的智能合约之间的访问进行权限控制。
在上述技术方案中,区块链中的区块链节点可以响应于接收到的针对第一智能合约的访问授权交易,在该访问授权交易合法性校验通过时,将该访问授权交易中的第二智能合约的合约标识,以及授权给该第二智能合约的针对该第一智能合约的访问权限信息的对应关系,添加至该区块链节点维护的与该区块链上部署的智能合约对应的访问授权信息。
在具体实现时,针对区块链上部署的智能合约(可称为第一智能合约),该区块链中的区块链节点可以接收到针对该第一智能合约的访问授权交易。
其中,上述访问授权交易可以包括能被授权上述第一智能合约的访问权限的智能合约(可称为第二智能合约)的合约标识,以及授权给该第二智能合约的针对该第一智能合约的访问权限信息。
上述区块链节点在接收到上述访问授权交易的情况下,可以响应于该访问授权交易,对该访问授权交易进行合法性校验。
如果该访问授权交易合法性校验通过,则可以将上述第二智能合约的合约标识和上述访问权限信息的对应关系,添加至区块链中的区块链节点可以维护与该区块链上部署的智能合约对应的访问授权信息。
采用上述方式,对于区块链上部署的两个智能合约而言,如果其中的第二智能合约被授权了针对其中的第一智能合约的访问权限,则该第二智能合约可以访问该第一智能合约中维护的数据,即实现了不同的智能合约之间的数据共享。
进一步的,对于共享数据的两个智能合约而言,可以仅由其中的第一智能合约维护可共享的数据,而其中的第二智能合约中则仅需要维护智能合约的合约代码,因此可以将第二智能合约拆分成多个较为简单的子合约,降低智能合约的开发、测试、升级等的成本。
请参考图1,图1是本说明书一示例性实施例示出的一种智能合约的访问授权方法的流程图。
在本实施例中,区块链中的区块链节点可以维护与该区块链上部署的智能合约对应的访问授权信息。
在示出的一种实施方式中,与区块链上部署的智能合约对应的访问授权信息可以包括由至少一个智能合约的合约标识,以及授权给这至少一个智能合约的针对其他智能合约的访问权限信息的对应关系,构成的访问授权列表(也可称为访问控制列表,AccessControl List,ACL)。需要说明的是,智能合约的合约标识具体可以是与该智能合约对应的合约账户的账户标识。这至少一个智能合约的合约标识,以及授权给这至少一个智能合约的针对其他智能合约的访问权限信息,是一一对应的;例如,该访问授权列表可以包括智能合约A的合约标识,以及授权给智能合约A的针对智能合约B的访问权限信息,该访问权限信息指示智能合约A可以访问智能合约B中维护的数据。
在示出的一种实施方式中,对于任一智能合约而言,该智能合约的合约标识与授权给该智能合约的针对其他智能合约的访问权限信息的对应关系,可以通过key-value键值对的形式表示;该key-value键值对中的key可以是该智能合约的合约标识,value可以是授权给该智能合约的针对其他智能合约的访问权限信息。相应的,上述访问授权列表可以是与上述至少一个智能合约对应的key-value键值对构成的Map列表;该Map列表中的key-value键值对中的key为这至少一个智能合约的合约标识,value为授权给这至少一个智能合约的针对其他智能合约的访问权限信息。
在实际应用中,上述访问权限信息具体可以是访问凭证(Access Certificate,AC)。为了保证访问权限信息的数据安全,提高访问权限信息的易用性,同时节省存储空间,上述访问授权列表中存储的具体可以是至少一个智能合约的合约标识,以及授权给这至少一个智能合约的针对其他智能合约的访问权限信息的Hash值的对应关系。
上述智能合约的访问授权方法可以包括以下步骤:
步骤102:接收针对所述区块链上部署的第一智能合约的访问授权交易;其中,所述访问授权交易包括所述区块链上部署的第二智能合约的合约标识,以及授权给所述第二智能合约的针对所述第一智能合约的访问权限信息。
步骤104:响应于所述访问授权交易,对所述访问授权交易进行合法性校验。
步骤106:如果所述访问授权交易合法性校验通过,则将所述第二智能合约的合约标识和所述访问权限信息的对应关系,添加至所述访问授权信息。
针对上述区块链上部署的智能合约(可称为第一智能合约),该区块链中的区块链节点可以接收到针对该第一智能合约的访问授权交易。
其中,上述访问授权交易可以包括能被授权上述第一智能合约的访问权限的智能合约(可称为第二智能合约)的合约标识,以及授权给该第二智能合约的针对该第一智能合约的访问权限信息。
上述区块链节点在接收到上述访问授权交易的情况下,可以响应于该访问授权交易,对该访问授权交易进行合法性校验。
如果该访问授权交易合法性校验通过,则可以将上述第二智能合约的合约标识和上述访问权限信息的对应关系,添加至上述访问授权信息。
在如图1所示的智能合约的访问授权方法的基础上,请参考图2,图2是本说明书一示例性实施例示出的一种智能合约的访问授权撤销方法的流程图。
上述智能合约的访问授权撤销方法可以包括以下步骤:
步骤202:接收针对所述第一智能合约的访问授权撤销交易;其中,所述访问授权撤销交易包括所述第二智能合约的合约标识,以及授权给所述第二智能合约的针对所述第一智能合约的访问权限信息。
步骤204:响应于所述访问授权撤销交易,对所述访问授权撤销交易进行合法性校验。
步骤206:如果所述访问授权撤销交易合法性校验通过,则在所述访问授权信息中,查找所述第二智能合约的合约标识和所述访问权限信息的对应关系,并在查找到所述对应关系时,删除所述对应关系或者将所述对应关系的状态切换为已撤销状态。
针对上述区块链上部署的智能合约(可称为第一智能合约),该区块链中的区块链节点可以接收到针对该第一智能合约的访问授权撤销交易。
与上述访问授权交易类似,上述访问授权撤销交易也可以包括上述第二智能合约的合约标识,以及授权给该第二智能合约的针对上述第一智能合约的访问权限信息。
上述区块链节点在接收到上述访问授权撤销交易的情况下,可以响应于该访问授权交易,对该访问授权撤销交易进行合法性校验。
如果该访问授权撤销交易合法性校验通过,则可以在上述区块链节点维护的与上述区块链上部署的智能合约对应的访问授权信息中,查找上述第二智能合约的合约标识和上述访问权限信息的对应关系,并在查找到该对应关系时,删除该对应关系或者将该对应关系的状态切换为已撤销状态。
需要说明的是,在完成将智能合约部署在区块链上后,可以为与该智能合约对应的合约账户分配对应的公私钥对。也即,与该合约账户对应的管理方可以持有该公私钥对,其中的私钥可以用于对该管理方发起的交易进行数字签名处理,公钥则可以用于对签名进行验证。公钥可以在区块链中进行广播。
在示出的一种实施方式中,对于上述访问授权交易或者上述访问授权撤销交易而言,可以基于与上述第一智能合约对应的管理方的私钥,以及与上述第二智能合约对应的管理方的私钥,对该访问授权交易或者该访问授权撤销交易进行数字签名处理。相应的,对该访问授权交易或者该访问授权撤销交易的合法性校验,具体可以包括基于与该第一智能合约对应的管理方的公钥,以及与该第二智能合约对应的管理方的公钥,对签名进行验证,如果签名验证通过,则可以确定该访问授权交易或者该访问授权撤销交易合法性校验通过。
需要说明的是,还可以采用与如图1所示的智能合约的访问授权方法或者如图2所示的智能合约的访问授权撤销方法类似的方式,对上述区块链节点维护的与上述区块链上部署的智能合约对应的访问授权信息进行全部或部分的更新。
在如图1所示的智能合约的访问授权方法的基础上,请参考图3,图3是本说明书一示例性实施例示出的一种智能合约访问方法的流程图。
上述智能合约访问方法可以包括以下步骤:
步骤302:接收针对所述第二智能合约的数据访问交易;其中,所述数据访问交易包括待访问的目标数据的数据标识,以及所述第二智能合约的合约标识。
步骤304:响应于所述数据访问交易,在所述第二智能合约中维护的数据中,查找与所述数据标识对应的所述目标数据,并在未查找到所述目标数据时,进一步在所述访问授权信息中,查找与所述第二智能合约的合约标识对应的访问权限信息。
步骤306:基于所述访问权限信息,确定授权给所述第二智能合约访问权限的所述第一智能合约,并在所述第一智能合约中维护的数据中,继续查找与所述数据标识对应的所述目标数据。
针对区块链上部署的智能合约(例如:上述第二智能合约),上述区块链中的区块链节点可以接收到针对该第二智能合约的数据访问交易。
其中,上述数据访问交易可以包括待访问的数据(可称为目标数据)的数据标识,以及上述第二智能合约的合约标识。
上述区块链节点在接收到上述数据访问交易的情况下,可以响应于该数据访问交易,在上述第二智能合约中维护的数据中,查找与该数据访问交易中的数据标识对应的上述目标数据。
如果未在上述第二智能合约中维护的数据中查找到上述目标数据,则可以进一步在与区块链上部署的智能合约对应的访问授权信息中,查找与该第二智能合约的合约标识对应的访问权限信息。
后续,可以基于查找到的与上述第二智能合约的合约标识对应的访问权限信息,确定授权给该第二智能合约访问权限的智能合约(例如:上述第一智能合约),并在该第一智能合约中维护的数据中,继续查找与上述数据访问交易中的数据标识对应的上述目标数据。
在示出的一种实施方式中,智能合约中维护的数据可以被组织成Merkle树的形式,在区块链节点搭载的本地数据库中存储,而Merkle树上存储的是key-value键值对。因此,上述目标数据的数据标识可以包括该目标数据的key。
在上述情况下,在上述第二智能合约或者上述第一智能合约中维护的业务数据中查找与上述智能合约访问交易中的数据标识对应的上述目标数据时,具体可以在上述区块链节点搭载的本地数据库中存储的与该第二智能合约或者该第一智能合约对应的Merkle树中,查找与该目标数据的key对应的value,并将查找到的该value确定为该目标数据。
在示出的一种实施方式中,上述访问权限信息还可以包括有效期,以及授权给上述第二智能合约访问权限的数据的数据标识集合。
在上述情况下,还可以基于该访问权限信息中的上述有效期,确定该访问权限信息是否有效,如果是,则可以进一步确定该访问权限信息中的上述数据标识集合是否包括上述目标数据的数据标识,如果是,则可以基于该访问权限信息,确定授权给该第二智能合约访问权限的上述第一智能合约。
在实际应用中,可以对区块链支持的原生交易类型进行扩展,以在该区块链中扩展出具有新的功能的原生交易。需要说明的是,扩展出的具有新的功能的原生交易,具体可以是独立于转账交易或智能合约调用交易的原生交易。
在示出的一种实施方式中,可以对区块链支持的原生交易类型进行扩展,以在该区块链中扩展出一种用于对智能合约进行访问授权的原生交易,可称为访问授权交易。
例如,对于采用UTXO模型的区块链而言,可以在其支持的转账交易的基础上,再扩展出一种专用于对智能合约进行访问授权的访问授权交易;而对于采用账户模型的区块链而言,则可以在其支持的转账交易、智能合约创建交易和智能合约调用交易的基础上,再扩展出一种专用于对智能合约进行访问授权的访问授权交易。
同理,可以对区块链支持的原生交易类型进行扩展,以在该区块链中扩展出一种用于对智能合约进行访问授权撤销的原生交易,可称为访问授权撤销交易。
可以对区块链支持的原生交易类型进行扩展,以在该区块链中扩展出一种用于对智能合约进行访问的原生交易,可称为数据访问交易。
其中,上述访问授权交易、上述访问授权撤销交易、上述数据访问交易的交易格式,在本说明书中不进行特别限定;在实际应用中,可以采用兼容区块链现有的交易格式,也可以重新定义新的交易格式。
请参考图4,图4是本说明书一示例性实施例示出的一种设备的硬件结构的示意图。
如图4所示,在硬件层面,上述设备包括处理器402、内部总线404、网络接口406、内存408以及非易失性存储器410,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器402从非易失性存储器410中读取对应的计算机程序到内存408中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑模块,也可以是硬件或逻辑器件。
请参考图5,图5是本说明书一示例性实施例示出的一种智能合约的访问授权装置的框图。
上述智能合约的访问授权装置可以应用于如图4所示的设备,以实现本说明书的技术方案。该设备可以作为区块链中的区块链节点;所述区块链节点维护了与所述区块链上部署的智能合约对应的访问授权信息;该智能合约的访问授权装置可以包括:
接收模块502,接收针对所述区块链上部署的第一智能合约的访问授权交易;其中,所述访问授权交易包括所述区块链上部署的第二智能合约的合约标识,以及授权给所述第二智能合约的针对所述第一智能合约的访问权限信息;
校验模块504,响应于所述访问授权交易,对所述访问授权交易进行合法性校验;
授权模块506,如果所述访问授权交易合法性校验通过,则将所述第二智能合约的合约标识和所述访问权限信息的对应关系,添加至所述访问授权信息。
可选的,所述装置还包括:
第二接收模块,接收针对所述第一智能合约的访问授权撤销交易;其中,所述访问授权撤销交易包括所述第二智能合约的合约标识,以及授权给所述第二智能合约的针对所述第一智能合约的访问权限信息;
第二校验模块,响应于所述访问授权撤销交易,对所述访问授权撤销交易进行合法性校验;
授权撤销模块,如果所述访问授权撤销交易合法性校验通过,则在所述访问授权信息中,查找所述第二智能合约的合约标识和所述访问权限信息的对应关系,并在查找到所述对应关系时,删除所述对应关系或者将所述对应关系的状态切换为已撤销状态。
可选的,所述访问授权交易或者所述访问授权撤销交易由与所述第一智能合约对应的管理方和与所述第二智能合约对应的管理方进行了数字签名处理;
所述校验模块504或者所述第二校验模块:
对所述访问授权交易或者所述访问授权撤销交易的数字签名进行验证;
如果所述数字签名验证通过,确定所述访问授权交易或者所述访问授权撤销交易合法性校验通过。
可选的,所述装置还包括:
第三接收模块,接收针对所述第二智能合约的数据访问交易;其中,所述数据访问交易包括待访问的目标数据的数据标识,以及所述第二智能合约的合约标识;
第一查找模块,响应于所述数据访问交易,在所述第二智能合约中维护的数据中,查找与所述数据标识对应的所述目标数据,并在未查找到所述目标数据时,进一步在所述访问授权信息中,查找与所述第二智能合约的合约标识对应的访问权限信息;以及,
第二查找模块,基于所述访问权限信息,确定授权给所述第二智能合约访问权限的所述第一智能合约,并在所述第一智能合约中维护的数据中,继续查找与所述数据标识对应的所述目标数据。
可选的,所述访问授权信息包括由至少一个智能合约的合约标识,以及授权给所述至少一个目标账户的针对其他智能合约的访问权限信息的对应关系构成的访问授权列表。
可选的,所述对应关系为key-value键值对;所述访问授权列表为与所述至少一个智能合约对应的key-value键值对构成的Map列表;其中,所述key-value键值对的key为所述至少一个智能合约的合约标识,所述key-value键值对的value为授权给所述至少一个目标账户的针对其他智能合约的访问权限信息。
可选的,所述第二智能合约或者所述第一智能合约中维护的数据被组织成默克尔树的形式,在所述区块链节点搭载的本地数据库中存储;所述目标数据的数据标识包括所述目标数据的key;
所述第一查找模块或者所述第二查找模块:
在所述区块链节点搭载的本地数据库中存储的所述默克尔树中,查找与所述目标数据的key对应的value,并将查找到的所述value确定为所述目标数据。
可选的,所述访问权限信息包括有效期,以及授权给所述第二智能合约访问权限的数据的数据标识集合;
所述第二查找模块:
基于所述访问权限信息中的所述有效期,确定所述访问权限信息是否有效;
如果确定所述访问权限信息有效,进一步确定所述访问权限信息中的所述数据标识集合是否包括所述目标数据的数据标识;
如果所述数据标识集合包括所述目标数据的数据标识,基于所述访问权限信息,确定授权给所述第二智能合约访问权限的所述第一智能合约。
可选的,所述访问授权交易为所述区块链支持的用于对智能合约进行访问授权的原生交易;所述访问授权撤销交易为所述区块链支持的用于对智能合约进行访问授权撤销的原生交易;所述数据访问交易为所述区块链支持的用于对智能合约进行访问的原生交易。
对于装置实施例而言,其基本对应于方法实施例,因此相关之处参见方法实施例的部分说明即可。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书的技术方案的目的。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (12)
1.一种智能合约的访问授权方法,应用于区块链节点;所述区块链节点维护了与所述区块链上部署的智能合约对应的访问授权信息;所述方法包括:
接收针对所述区块链上部署的第一智能合约的访问授权交易;其中,所述访问授权交易包括所述区块链上部署的第二智能合约的合约标识,以及授权给所述第二智能合约的针对所述第一智能合约的访问权限信息;
响应于所述访问授权交易,对所述访问授权交易进行合法性校验;
如果所述访问授权交易合法性校验通过,则将所述第二智能合约的合约标识和所述访问权限信息的对应关系,添加至所述访问授权信息。
2.根据权利要求1所述的方法,所述方法还包括:
接收针对所述第一智能合约的访问授权撤销交易;其中,所述访问授权撤销交易包括所述第二智能合约的合约标识,以及授权给所述第二智能合约的针对所述第一智能合约的访问权限信息;
响应于所述访问授权撤销交易,对所述访问授权撤销交易进行合法性校验;
如果所述访问授权撤销交易合法性校验通过,则在所述访问授权信息中,查找所述第二智能合约的合约标识和所述访问权限信息的对应关系,并在查找到所述对应关系时,删除所述对应关系或者将所述对应关系的状态切换为已撤销状态。
3.根据权利要求1或2所述的方法,所述访问授权交易或者所述访问授权撤销交易由与所述第一智能合约对应的管理方和与所述第二智能合约对应的管理方进行了数字签名处理;
对所述访问授权交易或者所述访问授权撤销交易进行合法性校验,包括:
对所述访问授权交易或者所述访问授权撤销交易的数字签名进行验证;
如果所述数字签名验证通过,确定所述访问授权交易或者所述访问授权撤销交易合法性校验通过。
4.根据权利要求1所述的方法,所述方法还包括:
接收针对所述第二智能合约的数据访问交易;其中,所述数据访问交易包括待访问的目标数据的数据标识,以及所述第二智能合约的合约标识;
响应于所述数据访问交易,在所述第二智能合约中维护的数据中,查找与所述数据标识对应的所述目标数据,并在未查找到所述目标数据时,进一步在所述访问授权信息中,查找与所述第二智能合约的合约标识对应的访问权限信息;以及,
基于所述访问权限信息,确定授权给所述第二智能合约访问权限的所述第一智能合约,并在所述第一智能合约中维护的数据中,继续查找与所述数据标识对应的所述目标数据。
5.根据权利要求4所述的方法,所述访问授权信息包括由至少一个智能合约的合约标识,以及授权给所述至少一个目标账户的针对其他智能合约的访问权限信息的对应关系构成的访问授权列表。
6.根据权利要求5所述的方法,所述对应关系为key-value键值对;所述访问授权列表为与所述至少一个智能合约对应的key-value键值对构成的Map列表;其中,所述key-value键值对的key为所述至少一个智能合约的合约标识,所述key-value键值对的value为授权给所述至少一个目标账户的针对其他智能合约的访问权限信息。
7.根据权利要求4所述的方法,所述第二智能合约或者所述第一智能合约中维护的数据被组织成默克尔树的形式,在所述区块链节点搭载的本地数据库中存储;所述目标数据的数据标识包括所述目标数据的key;
在所述第二智能合约或者所述第一智能合约中维护的数据中,查找与所述数据标识对应的所述目标数据,包括:
在所述区块链节点搭载的本地数据库中存储的所述默克尔树中,查找与所述目标数据的key对应的value,并将查找到的所述value确定为所述目标数据。
8.根据权利要求4所述的方法,所述访问权限信息包括有效期,以及授权给所述第二智能合约访问权限的数据的数据标识集合;
所述基于所述访问权限信息,确定授权给所述第二智能合约访问权限的所述第一智能合约,包括:
基于所述访问权限信息中的所述有效期,确定所述访问权限信息是否有效;
如果确定所述访问权限信息有效,进一步确定所述访问权限信息中的所述数据标识集合是否包括所述目标数据的数据标识;
如果所述数据标识集合包括所述目标数据的数据标识,基于所述访问权限信息,确定授权给所述第二智能合约访问权限的所述第一智能合约。
9.根据权利要求4所述的方法,所述访问授权交易为所述区块链支持的用于对智能合约进行访问授权的原生交易;所述访问授权撤销交易为所述区块链支持的用于对智能合约进行访问授权撤销的原生交易;所述数据访问交易为所述区块链支持的用于对智能合约进行访问的原生交易。
10.一种智能合约的访问授权装置,应用于区块链节点;所述区块链节点维护了与所述区块链上部署的智能合约对应的访问授权信息;所述装置包括:
接收模块,接收针对所述区块链上部署的第一智能合约的访问授权交易;其中,所述访问授权交易包括所述区块链上部署的第二智能合约的合约标识,以及授权给所述第二智能合约的针对所述第一智能合约的访问权限信息;
校验模块,响应于所述访问授权交易,对所述访问授权交易进行合法性校验;
授权模块,如果所述访问授权交易合法性校验通过,则将所述第二智能合约的合约标识和所述访问权限信息的对应关系,添加至所述访问授权信息。
11.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-9中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210911198.3A CN115098886A (zh) | 2022-07-29 | 2022-07-29 | 智能合约的访问授权方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210911198.3A CN115098886A (zh) | 2022-07-29 | 2022-07-29 | 智能合约的访问授权方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115098886A true CN115098886A (zh) | 2022-09-23 |
Family
ID=83301280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210911198.3A Pending CN115098886A (zh) | 2022-07-29 | 2022-07-29 | 智能合约的访问授权方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115098886A (zh) |
-
2022
- 2022-07-29 CN CN202210911198.3A patent/CN115098886A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109981679B (zh) | 在区块链网络中执行事务的方法和装置 | |
US11074245B2 (en) | Method and device for writing service data in block chain system | |
CN110032599B (zh) | 数据结构的读取及更新方法、装置、电子设备 | |
CN110020542B (zh) | 数据读写方法及装置、电子设备 | |
CN110032598B (zh) | 字段更新方法及装置、电子设备 | |
US11556658B2 (en) | Cross-partition calls in partitioned, tamper-evident data stores | |
CN110032568B (zh) | 数据结构的读取及更新方法、装置、电子设备 | |
WO2022077186A1 (zh) | 区块链中智能合约的执行方法及装置和电子设备 | |
CN109345392B (zh) | 编程题目发布、解答代码发布、解答代码检验方法及系统 | |
CN111651467A (zh) | 一种区块链节点接口发布调用方法和装置 | |
WO2024021417A1 (zh) | 数据账户创建方法及装置 | |
CN115221559A (zh) | 数据账户的访问授权方法及装置 | |
CN115203746A (zh) | 数据账户的访问授权方法及装置 | |
CN113077260A (zh) | 基于区块链的数据访问方法、装置及电子设备 | |
CN115174158B (zh) | 基于多云管理平台的云产品配置检查方法 | |
CN113536384B (zh) | 基于区块链的隐私数据映射方法、装置、介质和电子设备 | |
CN115098886A (zh) | 智能合约的访问授权方法及装置 | |
US20240013294A1 (en) | Secure Decentralized System | |
CN117235122A (zh) | 数据处理方法、装置、设备、可读存储介质及程序产品 | |
CN118051421A (zh) | Io时延故障的注入方法、装置、电子设备及存储介质 | |
CN117155946A (zh) | 区块链智能合约的升级处理方法、装置、设备及介质 | |
CN117938461A (zh) | 一种K8s系统权限管理方法、设备以及可读存储介质 |
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 |