CN114331442A - 一种区块链中智能合约的调用方法及装置 - Google Patents
一种区块链中智能合约的调用方法及装置 Download PDFInfo
- Publication number
- CN114331442A CN114331442A CN202210216965.9A CN202210216965A CN114331442A CN 114331442 A CN114331442 A CN 114331442A CN 202210216965 A CN202210216965 A CN 202210216965A CN 114331442 A CN114331442 A CN 114331442A
- Authority
- CN
- China
- Prior art keywords
- contract
- privacy
- authorization
- plaintext
- calling
- 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.)
- Granted
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种区块链中智能合约的调用方法及装置,所述区块链中预先部署有明文合约与隐私合约;所述方法包括:向所述区块链中发起针对所述明文合约的第一调用交易,以将所述隐私合约的地址作为参数输入到所述明文合约中;调用所述明文合约中的验证逻辑,根据所述隐私合约的地址获取所述隐私合约的代码,并验证所述隐私合约的代码是否满足与所述明文合约关联存储的验证条件;其中,所述验证条件为不暴露所述隐私合约的代码原文的隐私验证条件;若满足,调用所述明文合约中的跨合约调用逻辑,向所述区块链中发起针对所述隐私合约的第二调用交易,以调用并执行所述隐私合约。应用此方案,既可得到明文合约的信任,又能保障隐私合约调用前的私密性。
Description
技术领域
本说明书涉及区块链技术领域,尤其涉及一种区块链中智能合约的调用。
背景技术
一般认为,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种分布式的基础架构与计算范式。
其中,可编程区块链支持用户在可编程区块链网络中创建并调用一些复杂的逻辑,也即智能合约;通常,智能合约的代码一旦被部署在区块链上,其内部的逻辑代码也就随之暴露,因此无法满足部分需要保障私密性的业务的需求。
发明内容
有鉴于此,本说明书公开了一种区块链中智能合约的调用方法和装置。
根据本说明书实施例的第一方面,公开了一种区块链中智能合约的调用方法,其中,所述区块链中预先部署有明文合约与隐私合约;所述方法包括:
向所述区块链中发起针对所述明文合约的第一调用交易,以将所述隐私合约的地址作为参数输入到所述明文合约中;
调用所述明文合约中的验证逻辑,根据所述隐私合约的地址获取所述隐私合约的代码,并验证所述隐私合约的代码是否满足与所述明文合约关联存储的验证条件;其中,所述验证条件为不暴露所述隐私合约的代码原文的隐私验证条件;
若满足,调用所述明文合约中的跨合约调用逻辑,向所述区块链中发起针对所述隐私合约的第二调用交易,以调用并执行所述隐私合约。
可选的,所述验证条件,包括:
所述隐私合约的代码的全文的散列值、或者指定区段的散列值与预设的验证散列值相匹配。
可选的,所述隐私合约是用于控制所述明文合约中预设业务逻辑的执行权限的合约;
所述调用并执行所述隐私合约,包括:
响应于所述第二调用交易,调用所述隐私合约中的授权逻辑,判断预设的授权条件是否满足,并生成指示所述授权条件是否满足的授权标识,以使所述明文合约响应于所述授权标识,授予或者取消所述业务逻辑执行权限。
可选的,所述调用所述隐私合约中的授权逻辑,判断预设的授权条件是否满足,包括:
调用所述隐私合约中的授权逻辑,获取携带授权签名的授权信息,并校验所述授权签名是否与预设的授权用户匹配;如果是,则预设的授权条件满足。
可选的,与所述隐私合约对应的存储区域中预先存储有对应关系表,所述对应关系表中存储有授权用户与权限有效期的对应关系;
所述校验所述授权签名是否与预设的授权用户匹配,包括:
在所述对应关系表中,查询权限有效期与当前时刻相匹配的目标授权用户;
校验所述授权签名是否与所述目标授权用户匹配。
根据本说明书实施例的第二方面,公开了一种区块链中智能合约的调用装置,其中,所述区块链中预先部署有明文合约与隐私合约;所述装置包括:
第一调用模块,向所述区块链中发起针对所述明文合约的第一调用交易,以将所述隐私合约的地址作为参数输入到所述明文合约中;
验证模块,调用所述明文合约中的验证逻辑,根据所述隐私合约的地址获取所述隐私合约的代码,并验证所述隐私合约的代码是否满足与所述明文合约关联存储的验证条件;其中,所述验证条件为不暴露所述隐私合约的代码原文的隐私验证条件;
第二调用模块,在所述隐私合约的代码满足与所述明文合约关联存储的验证条件的情况下,调用所述明文合约中的跨合约调用逻辑,向所述区块链中发起针对所述隐私合约的第二调用交易,以调用并执行所述隐私合约。
可选的,所述验证条件,包括:
所述隐私合约的代码的全文的散列值、或者指定区段的散列值与预设的验证散列值相匹配。
可选的,所述隐私合约是用于控制所述明文合约中预设业务逻辑的执行权限的合约;
所述验证模块进一步:
响应于所述第二调用交易,调用所述隐私合约中的授权逻辑,判断预设的授权条件是否满足,并生成指示所述授权条件是否满足的授权标识,以使所述明文合约响应于所述授权标识,授予或者取消所述业务逻辑执行权限。
可选的,所述验证模块进一步:
调用所述隐私合约中的授权逻辑,获取携带授权签名的授权信息,并校验所述授权签名是否与预设的授权用户匹配;如果是,则预设的授权条件满足。
可选的,与所述隐私合约对应的存储区域中预先存储有对应关系表,所述对应关系表中存储有授权用户与权限有效期的对应关系;
所述验证模块进一步:
在所述对应关系表中,查询权限有效期与当前时刻相匹配的目标授权用户;
校验所述授权签名是否与所述目标授权用户匹配。
根据本说明书实施例的第三方面,公开了一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现上述任一方面实施例所述的方法。
根据本说明书实施例的第四方面,公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方面实施例所述的方法。
以上技术方案中,一方面,由于验证条件与明文合约关联存储,且仅在该验证条件被满足的情况下才能调用隐私合约,因此对于明文合约而言,隐私合约不存在临时变更内容的可能,提高了合约的可信度;
另一方面,由于验证条件是不暴露隐私合约的代码原文的隐私验证条件,且能够用于定位隐私合约的地址仅在实际调用时通过第一调用交易暴露给明文合约,因此明文合约在收到指示调用隐私合约之前,无法获知隐私合约的具体内容,从而保障了智能合约的私密性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书文本一同用于解释原理。
图1是本说明书示出的一种创建智能合约和调用智能合约的示意图;
图2是本说明书示出的一种区块链中智能合约的调用方法的流程示例图;
图3是本说明书示出的一种隐私多签场景的交互流程图;
图4是本说明书示出的一种区块链中智能合约的调用装置的结构示例图;
图5是本说明书示出的一种用于区块链中智能合约的调用的计算机设备的结构示例图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与本说明书的一些方面相一致的系统和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
一般认为,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种分布式的基础架构与计算范式,根据所有权的区别可以被分为公有链、私有链、联盟链等等类型,根据是否支持编程则可以分为可编程区块链以及不可编程区块链。
其中,可编程区块链支持用户在可编程区块链网络中创建并调用一些复杂的逻辑,也即智能合约;不论是公有链、私有链还是联盟链,都可能提供智能合约的功能。区块链上的智能合约是在区块链上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。
以可编程区块链为例,支持用户在可编程区块链网络中创建并调用一些复杂的逻辑。可编程区块链作为一个可编程区块链,其核心是虚拟机(VM),每个可编程区块链节点都可以运行VM。VM通常被设计为图灵完备的虚拟机,通过它可以实现各种复杂的逻辑。用户在可编程区块链中发布和调用智能合约就是在VM上运行的。由于智能合约可以以规定的方式在区块链网络中每个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当这样的交易执行完毕后,区块链上就保存了无法篡改、不会丢失的交易凭证。
请参见图1,图1是本说明书示出的一种创建智能合约和调用智能合约的示意图。可编程区块链中要创建一个智能合约,需要经过编写智能合约、变成字节码、部署到区块链等过程。可编程区块链中调用智能合约,是发起一笔指向智能合约地址的交易,各个节点的VM可以分别执行该交易,将智能合约代码分布式的运行在可编程区块链网络中每个节点的虚拟机中。
通常,智能合约的代码一旦被部署在区块链上,其内部的逻辑代码也就随之暴露,因此无法满足部分需要保障私密性的业务的需求。相关技术中,可以通过延迟部署隐私合约的方式达成隐私保护效果,即,仅在区块链中预先部署一个明文合约,明文合约中包括可以公开的业务逻辑,而将需要隐藏的业务逻辑放在隐私合约中,且保持该隐私合约不部署;待需要调用该部分需要隐藏的业务逻辑时,再将该隐私合约部署到区块链上;由于在需要调用该部分需要隐藏的业务逻辑之前,隐私合约并未部署到区块链中,因此需要隐藏的业务逻辑也就不会暴露给整个区块链网络。
但是,上述方案中隐私合约由于与明文合约分离部署,因此从明文合约的视角来看,隐私合约的内容是不确定的,被隐藏的业务逻辑即使被中途修改,明文合约也无法获知,因此该方案的可信度存在缺陷。
有介于此,本说明书提出一种将隐私合约和明文合约分离部署,将隐私合约代码的验证条件与明文合约关联存储,并通过调用明文合约的方式间接调用隐私合约,来达到隐私调用的目的。
在实现时,上述验证条件可以是不暴露上述隐私合约的代码原文的隐私验证条件,以使上述明文合约在验证隐私合约内容未被篡改时依然不会提前获知隐私合约内容;且上述隐私合约的地址被设计为在调用上述明文合约时方进行暴露,从而进一步保障隐私合约对明文合约的私密性。
以上技术方案中,一方面,由于验证条件与明文合约关联存储,且仅在该验证条件被满足的情况下才能调用隐私合约,因此对于明文合约而言,隐私合约不存在临时变更内容的可能,提高了合约的可信度;
另一方面,由于验证条件是不暴露隐私合约的代码原文的隐私验证条件,且能够用于定位隐私合约的地址仅在实际调用时通过第一调用交易暴露给明文合约,因此明文合约在收到指示调用隐私合约之前,无法获知隐私合约的具体内容,从而保障了智能合约的私密性。
下面通过具体实施例并结合具体的应用场景对本说明书进行描述。
请参考图2,图2是本说明书一实施例提供的一种区块链中智能合约的调用方法的流程图,其中上述区块链中预先部署有明文合约与隐私合约;上述方法可以执行以下步骤:
S201,向所述区块链中发起针对所述明文合约的第一调用交易,以将所述隐私合约的地址作为参数输入到所述明文合约中;
S202,调用所述明文合约中的验证逻辑,根据所述隐私合约的地址获取所述隐私合约的代码,并验证所述隐私合约的代码是否满足与所述明文合约关联存储的验证条件;其中,所述验证条件为不暴露所述隐私合约的代码原文的隐私验证条件;
S203,若满足,调用所述明文合约中的跨合约调用逻辑,向所述区块链中发起针对所述隐私合约的第二调用交易,以调用并执行所述隐私合约。
在相关领域中,区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的技术;通常,区块链具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的性质。区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(Private Blockchain)和联盟链(Consortium Blockchain)。此外,还可以有上述多种类型的结合,比如私有链+联盟链、联盟链+公有链等。通常各种类型的区块链性质可能存在差异,进而可以用于满足不同的技术需求;例如,如果希望获得最高的去中心化程度,则可以选用公有链;如果希望兼顾去中心化程度和性能,则可以选用联盟链等等。在实施中,如果上述区块链采用联盟链的形式,那么组成上述区块链的区块链节点则可以由相关管理部门、普通用户、网络运营商等等多种类型的实体各自提供,以保证区块链记账权的相对公正合理;又例如,如果上述区块链采用通用的可编程区块链形式,则可以使用对应的、通用的智能合约构建相关功能,并取得更高的可信度;可见,各种形式的区块链各有优势,本领域技术人员可以根据具体的需求自行选择上述区块链的类型,本说明书不限定上述区块链的具体类型。
可以理解的是,上述区块链可以通过区块链即服务(BaaS,Blockchain as aService)平台对外交互。通常,BaaS平台可以通过为区块链上发生的活动(诸如订阅和通知、用户验证、数据库管理和远程更新),提供预先编写的应用的方式,面向与BaaS平台连接的客户端侧计算设备,提供灵活可定制的区块链服务。例如,在一个例子中,合约状态查询服务器需要与区块链进行数据通信,则BaaS平台可以提供诸如MQ(Message Queue,消息队列)服务应用;与BaaS平台连接的合约状态查询服务器,可以订阅BaaS平台连接的区块链系统中某一区块链上部署的智能合约,在触发执行后在区块链上产生的合约事件;而BaaS平台可以监听该智能合约在触发执行后在区块链上产生的事件,再基于MQ服务相关的软件,将该合约事件以通知消息的形式添加到消息队列中,使得订阅该消息队列的合约状态查询服务器能够得到与上述合约事件相关的通知。
因此,在本说明书中,上述区块链的具体形态和种类可以根据具体的业务场景、需求以及条件由相关技术人员自行选择适配,本说明书无需更多限定。
可以理解的是,由于区块链具有分布式执行的性质,因此上述方法的执行主体可以宏观地视为整个区块链网络,也可以微观地视为任一区块链节点;本领域技术人员显然也可以根据区块链网络的性质自行对部分步骤进行灵活理解,例如,区块链中一节点向区块链中发起交易,也就等价于区块链中另一节点从区块链网络中接收到该交易,同样也等价于上述区块链网络执行了该交易。
在本说明书中,可以首先向上述区块链中发起针对上述明文合约的第一调用交易,以将上述隐私合约的地址作为参数输入到上述明文合约中。对应地,也可以理解为,从上述区块链网络中接收针对上述明文合约的第一调用交易,以将上述隐私合约的地址作为参数输入到上述明文合约中。
由于上述明文合约是通过上述第一调用交易中携带的参数获取到上述隐私合约的地址,因此在该步骤触发之前,可以认为上述隐私合约的地址对于上述明文合约是私密的,也就是说,在此方法执行之前,上述隐私合约的私密性是可以得到保障的。
当然亦可以理解的是,进行上述智能合约调用时使用的调用交易,其具体数据结构可以根据具体业务需求而定;例如,可以选用JSON、树、链表、结构体等等数据结构,或者其他能够满足具体业务需求的私有数据结构或者加密数据结构等等来携带上述隐私合约的地址,本说明书亦无需进行更多列举或者限定。
在本说明书中,接收到上述第一调用交易的区块链节点可以响应于上述第一调用交易调用上述明文合约中的验证逻辑,根据上述隐私合约的地址获取上述隐私合约的代码,并验证上述隐私合约的代码是否满足与上述明文合约关联存储的验证条件;其中,上述验证条件可以是不暴露上述隐私合约的代码原文的隐私验证条件。具体而言,上述明文合约中的验证逻辑中可以包含用于读取参数指示的地址中的合约代码的部分,以及将读取到的合约代码与验证条件进行验证的部分;假设上述隐私合约被部署在区块链的地址A上,那么上述地址A将随前述第一调用交易被作为参数传入该明文合约,该明文合约中的验证逻辑则可以将该地址A代入,以读取地址A指示的合约(即隐私合约)的代码,并进一步将读取到的隐私合约的代码与同该明文合约关联存储的验证条件进行验证,得到验证结果。
当然可以理解的是,在该步骤中,实际进行比对的代码既可以是隐私合约的代码全文,也可以是隐私合约的代码指定区段,例如,假设隐私合约是基于某些预设框架进行编写的,那么隐私合约的代码也可能呈现一定结构化性质(例如代码的开头和结尾存在通用的描述性代码),实际具有验证价值的可能仅是其中的一个代码区段,因此在将上述隐私合约的代码与上述验证条件进行验证时,可以取上述代码区段进行验证;而且,具体定位上述代码区段的方式,具体可以通过对代码文本的结构化解析、按文本长度截取、和/或其他标识位的识别等手段完成,本说明书无需进行进一步列举或限定。
而上述验证条件,则可以包括任意不暴露所述隐私合约的代码原文的隐私验证条件,例如基于可信执行环境黑盒的文本比对程序、或者基于代码分析的特征比对程序;在示出的一种实施方式中,上述验证可以是基于散列算法的验证;具体而言,上述验证条件可以包括:上述隐私合约的代码的全文的散列值、或者指定区段的散列值与预设的验证散列值相匹配。
举例而言,假设设计使用上述隐私合约的代码全文的SHA-256散列值作为验证条件进行验证,则可以将上述隐私合约的代码全文的SHA-256散列值预先与上述明文合约关联存储,并在上述明文合约通过上述隐私合约的地址获取到上述隐私合约的代码全文之后,重新基于获取到的上述隐私合约的代码全文计算SHA-256散列值,如果与预先关联存储的SHA-256散列值一致,则可以认为隐私合约中的代码全文没有经过篡改,确实是得到明文合约承认的最初版本。
当然可以理解的是,SHA-256仅是可选用的散列算法之一,除此之外,本领域技术人员还可以根据具体需求自行选用MD5、SM-3等散列算法,本说明书无需进行全部列举和进一步限定。
在本说明书中,如果上述隐私合约的代码满足与上述明文合约关联存储的验证条件,则可以调用上述明文合约中的跨合约调用逻辑,向上述区块链中发起针对上述隐私合约的第二调用交易,以调用并执行上述隐私合约。具体而言,通常在可编程区块链中,智能合约也可以发起合约调用交易从而调用其他智能合约,因此上述明文合约中的跨合约调用逻辑可以根据前述隐私合约的地址,生成并发出第二调用交易,以调用并执行上述隐私合约。
当然可以理解的是,由于上述隐私合约的存在目的是隐藏信息,因此被隐藏的信息的具体作用实际可以根据业务需求灵活设计;例如,被隐藏的信息可能是一段可供读取的纯信息,也可以是一个能够指示明文合约后续操作的标识符,还可以是一段本身就具有业务功能的代码;举例而言,如果上述被隐藏的信息可以是某一加密文件的解密密码,调用该隐私合约的目的就是公开该解密密码;如果上述被隐藏的信息是一段本身就具有业务功能的代码,那么该隐私合约就可以被设计为,被调用后执行用于实现上述业务功能的代码逻辑。
在示出的一种实施方式中,上述隐私合约可以是用于控制上述明文合约中预设业务逻辑的执行权限的合约;在此情况下,上述调用并执行上述隐私合约的过程就可以包括:响应于上述第二调用交易,调用上述隐私合约中的授权逻辑,判断预设的授权条件是否满足,并生成指示上述授权条件是否满足的授权标识,以使上述明文合约响应于上述授权标识,授予或者取消上述业务逻辑执行权限。举例而言,上述隐私合约与明文合约可以共同构建如下业务逻辑:“如果某上市公司的股价低于X元,则抛售该上市公司的全部股票”,且希望将“如果某上市公司的股价低于X元”这个判断逻辑进行隐藏,那么就可以将该判断逻辑写在本说明书的方案中的隐私合约中,将“抛售该上市公司的全部股票”作为有授权控制的逻辑写在明文合约中,使得上述隐私合约被执行后,生成一个指示“某上市公司的股价是否低于X元”的判断结果的授权标识,进而使得明文合约能够根据该授权标识的指示,决定是否有权执行“抛售该上市公司的全部股票”的动作。
当然可以理解的是,上述授权标识既可以直接写入区块链账本,供明文合约从更新后的区块链账本中获取到该信息,也可以推送到链外的消息系统中,使得订阅了相关消息的明文合约从中获取到该信息。本说明书对于上述明文合约如何获取到上述隐私合约生成的授权标识无需限定。
在示出的一种实施方式中,上述隐私合约中的授权逻辑,可以是基于签名校验的授权逻辑;具体而言,上述调用上述隐私合约中的授权逻辑,判断预设的授权条件是否满足的过程可以包括:调用上述隐私合约中的授权逻辑,获取携带授权签名的授权信息,并校验上述授权签名是否与预设的授权用户匹配;如果是,则预设的授权条件满足。举例而言,上述隐私合约与明文合约可以共同构建如下业务逻辑:“如果收到携带用户U的授权签名的授权信息,则抛售某上市公司的全部股票”,且希望将“如果收到携带用户U的授权签名的授权信息”这个判断逻辑进行隐藏,那么就可以将该判断逻辑写在本说明书的方案中的隐私合约中,将“抛售某上市公司的全部股票”作为有授权控制的逻辑写在明文合约中,使得上述隐私合约被执行后,根据接收到的授权信息、以及预设的授权用户,生成一个指示“是否收到携带用户U的授权签名的授权信息”的判断结果的授权标识,进而使得明文合约能够根据该授权标识的指示,决定是否有权执行“抛售某上市公司的全部股票”的动作。
应用此方案,可以将用于隐私保护的合约调用方法与数字签名技术相结合,满足更深层次的业务需求。
在示出的一种实施方式中,上述授权的权限可以存在有效期;具体而言,上述与该隐私合约对应的存储区域中可以预先存储有对应关系表,上述对应关系表中可以存储有授权用户与权限有效期的对应关系;在此情况下,上述校验上述授权签名是否与预设的授权用户匹配的过程,可以包括:首先在上述对应关系表中,查询权限有效期与当前时刻相匹配的目标授权用户;再校验上述授权签名是否与上述目标授权用户匹配。
举例而言,假设在隐私合约中需要给出“是否收到包含授权用户的授权签名的授权信息”的判断结果,且上述对应关系表中已经存储有如下信息:
用户ID | 授权有效期 |
用户U_1 | 2020-01-01至2020-12-31 |
用户U_2 | 2021-01-01至2021-12-31 |
那么,如果当前时刻为2021年,那么授权有效期与当前时刻相匹配的目标授权用户就是用户U_2而不是用户U_1,在校验“是否收到包含授权用户的授权签名的授权信息”时,校验的也就是授权签名是否与用户U_2相匹配。
当然可以理解的是,除了通过当前时刻来确定应将何用户作为目标授权用户,还可以通过授权信息中携带的时间戳来完成;可以认为,使用授权信息中携带的时间戳作为依据可以避免业务流转过程中耽误时间造成的意外授权失效,有利于改善用户体验,而将当前时刻作为依据则可以使得权限系统设计更加严密、更具可信度。
在另一示出的实施方式中,上述用户还可以是由多个存在逻辑关系的子用户形成用户组;举例而言,上述对应关系表中已经存储有如下信息:
用户ID | 授权有效期 |
用户U_1 | 2020-01-01至2020-12-31 |
用户U_2或用户U_3 | 2021-01-01至2021-12-31 |
用户U_4与用户U_5 | 2022-01-01至2022-12-31 |
那么,如果当前时刻为2021年,要使得“是否收到包含授权用户的授权签名的授权信息”的结果为是,就需要授权签名与用户U_2匹配,或者与用户U_3匹配;而如果当前时刻为2022年,要使得“是否收到包含授权用户的授权签名的授权信息”的结果为是,就需要授权签名既与用户U_2匹配,也与用户U_3匹配(例如,上述授权签名中包含了两份签名)。当然可以理解的是,上述用户组中多个用户之间权限的逻辑关系(与、或、非)可以根据具体的业务需求进行设计,本说明书无需进行更多列举和限定。
上述方案将用于隐私保护的合约调用方法与区块链多签技术相结合,可以满足更深层次的业务需求。
请参见图3,图3是本说明书示出的一种基于以上智能合约调用方案实现的隐私多签场景的交互流程图;在该示例中,可以包括链上公共空间、明文合约、隐私合约三个交互方,可以理解的是,上述三个交互方均为逻辑上的交互方,也可以被理解为软件模块,并不与物理层面上诸如区块链节点等概念等同;在执行上述隐私多签场景下的方案时,可以首先向明文合约发起携带隐私合约地址的第一调用交易,调用明文合约,使其获取到隐私合约的代码并基于关联存储的验证条件进行验证,在验证通过后向隐私合约发起第二调用交易以调用隐私合约;隐私合约可以从链上公共空间获取到包含多签授权签名的授权信息,并确认多签授权签名的有效性,若确认有效,则可以通过链上标识符或者链下的消息系统等方式告知明文合约授权通过,而明文合约即可进一步得到授权,执行后续的业务逻辑。
上述内容即为本说明书针对所述区块链中智能合约的调用方法的全部实施例。根据以上实施例可知,应用上述方案,一方面,可以提高合约的可信度;另一方面,保障了智能合约的私密性。本说明书还提供了对应的区块链中智能合约的调用装置的实施例如下:
本说明书提出一种区块链中智能合约的调用装置,其中所述区块链中预先部署有明文合约与隐私合约,该区块链中智能合约的调用装置的结构示例如图4所示,包括:
第一调用模块401,向所述区块链中发起针对所述明文合约的第一调用交易,以将所述隐私合约的地址作为参数输入到所述明文合约中;
验证模块402,调用所述明文合约中的验证逻辑,根据所述隐私合约的地址获取所述隐私合约的代码,并验证所述隐私合约的代码是否满足与所述明文合约关联存储的验证条件;其中,所述验证条件为不暴露所述隐私合约的代码原文的隐私验证条件;
第二调用模块403,在所述隐私合约的代码满足与所述明文合约关联存储的验证条件的情况下,调用所述明文合约中的跨合约调用逻辑,向所述区块链中发起针对所述隐私合约的第二调用交易,以调用并执行所述隐私合约。
在一种具体实施方式中,上述验证条件,可以包括:上述隐私合约的代码的全文的散列值、或者指定区段的散列值与预设的验证散列值相匹配。
在一种具体实施方式中,上述隐私合约是用于控制上述明文合约中预设业务逻辑的执行权限的合约;上述验证模块402可以进一步:响应于上述第二调用交易,调用上述隐私合约中的授权逻辑,判断预设的授权条件是否满足,并生成指示上述授权条件是否满足的授权标识,以使上述明文合约响应于上述授权标识,授予或者取消上述业务逻辑执行权限。
在一种具体实施方式中,上述验证模块402可以进一步:调用上述隐私合约中的授权逻辑,获取携带授权签名的授权信息,并校验上述授权签名是否与预设的授权用户匹配;如果是,则预设的授权条件满足。
在一种具体实施方式中,与上述隐私合约对应的存储区域中预先存储有对应关系表,上述对应关系表中存储有授权用户与权限有效期的对应关系;上述验证模块402可以进一步:在上述对应关系表中,查询权限有效期与当前时刻相匹配的目标授权用户;校验上述授权签名是否与上述目标授权用户匹配。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述的区块链中智能合约的调用方法。
图5示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的区块链中智能合约的调用方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。
Claims (12)
1.一种区块链中智能合约的调用方法,其中,所述区块链中预先部署有明文合约与隐私合约;所述方法包括:
向所述区块链中发起针对所述明文合约的第一调用交易,以将所述隐私合约的地址作为参数输入到所述明文合约中;
调用所述明文合约中的验证逻辑,根据所述隐私合约的地址获取所述隐私合约的代码,并验证所述隐私合约的代码是否满足与所述明文合约关联存储的验证条件;其中,所述验证条件为不暴露所述隐私合约的代码原文的隐私验证条件;
若满足,调用所述明文合约中的跨合约调用逻辑,向所述区块链中发起针对所述隐私合约的第二调用交易,以调用并执行所述隐私合约。
2.根据权利要求1所述的方法,所述验证条件,包括:
所述隐私合约的代码的全文的散列值、或者指定区段的散列值与预设的验证散列值相匹配。
3.根据权利要求1所述的方法,所述隐私合约是用于控制所述明文合约中预设业务逻辑的执行权限的合约;
所述调用并执行所述隐私合约,包括:
响应于所述第二调用交易,调用所述隐私合约中的授权逻辑,判断预设的授权条件是否满足,并生成指示所述授权条件是否满足的授权标识,以使所述明文合约响应于所述授权标识,授予或者取消所述业务逻辑执行权限。
4.根据权利要求3所述的方法,所述调用所述隐私合约中的授权逻辑,判断预设的授权条件是否满足,包括:
调用所述隐私合约中的授权逻辑,获取携带授权签名的授权信息,并校验所述授权签名是否与预设的授权用户匹配;如果是,则预设的授权条件满足。
5.根据权利要求4所述的方法,与所述隐私合约对应的存储区域中预先存储有对应关系表,所述对应关系表中存储有授权用户与权限有效期的对应关系;
所述校验所述授权签名是否与预设的授权用户匹配,包括:
在所述对应关系表中,查询权限有效期与当前时刻相匹配的目标授权用户;
校验所述授权签名是否与所述目标授权用户匹配。
6.一种区块链中智能合约的调用装置,其中,所述区块链中预先部署有明文合约与隐私合约;所述装置包括:
第一调用模块,向所述区块链中发起针对所述明文合约的第一调用交易,以将所述隐私合约的地址作为参数输入到所述明文合约中;
验证模块,调用所述明文合约中的验证逻辑,根据所述隐私合约的地址获取所述隐私合约的代码,并验证所述隐私合约的代码是否满足与所述明文合约关联存储的验证条件;其中,所述验证条件为不暴露所述隐私合约的代码原文的隐私验证条件;
第二调用模块,在所述隐私合约的代码满足与所述明文合约关联存储的验证条件的情况下,调用所述明文合约中的跨合约调用逻辑,向所述区块链中发起针对所述隐私合约的第二调用交易,以调用并执行所述隐私合约。
7.根据权利要求6所述的装置,所述验证条件,包括:
所述隐私合约的代码的全文的散列值、或者指定区段的散列值与预设的验证散列值相匹配。
8.根据权利要求6所述的装置,所述隐私合约是用于控制所述明文合约中预设业务逻辑的执行权限的合约;
所述验证模块进一步:
响应于所述第二调用交易,调用所述隐私合约中的授权逻辑,判断预设的授权条件是否满足,并生成指示所述授权条件是否满足的授权标识,以使所述明文合约响应于所述授权标识,授予或者取消所述业务逻辑执行权限。
9.根据权利要求8所述的装置,所述验证模块进一步:
调用所述隐私合约中的授权逻辑,获取携带授权签名的授权信息,并校验所述授权签名是否与预设的授权用户匹配;如果是,则预设的授权条件满足。
10.根据权利要求9所述的装置,与所述隐私合约对应的存储区域中预先存储有对应关系表,所述对应关系表中存储有授权用户与权限有效期的对应关系;
所述验证模块进一步:
在所述对应关系表中,查询权限有效期与当前时刻相匹配的目标授权用户;
校验所述授权签名是否与所述目标授权用户匹配。
11.一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现权利要求1~5任一所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1~5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210216965.9A CN114331442B (zh) | 2022-03-07 | 2022-03-07 | 一种区块链中智能合约的调用方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210216965.9A CN114331442B (zh) | 2022-03-07 | 2022-03-07 | 一种区块链中智能合约的调用方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114331442A true CN114331442A (zh) | 2022-04-12 |
CN114331442B CN114331442B (zh) | 2022-05-06 |
Family
ID=81031411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210216965.9A Active CN114331442B (zh) | 2022-03-07 | 2022-03-07 | 一种区块链中智能合约的调用方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114331442B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008735A (zh) * | 2019-01-31 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 区块链中实现合约调用的方法及节点、存储介质 |
CN110033267A (zh) * | 2019-02-19 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 区块链中实现隐私保护的方法、节点、系统和存储介质 |
US20200090795A1 (en) * | 2018-09-14 | 2020-03-19 | Htc Corporation | Method and system for sharing privacy data based on smart contracts |
CN111090876A (zh) * | 2020-03-18 | 2020-05-01 | 支付宝(杭州)信息技术有限公司 | 调用合约的方法及装置 |
US20200177604A1 (en) * | 2019-07-31 | 2020-06-04 | Alibaba Group Holding Limited | Providing data authorization based on blockchain |
CN114117522A (zh) * | 2021-11-23 | 2022-03-01 | 上海交通大学 | 基于区块链和可信执行环境的车联网数据共享实现方法 |
-
2022
- 2022-03-07 CN CN202210216965.9A patent/CN114331442B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200090795A1 (en) * | 2018-09-14 | 2020-03-19 | Htc Corporation | Method and system for sharing privacy data based on smart contracts |
CN110008735A (zh) * | 2019-01-31 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 区块链中实现合约调用的方法及节点、存储介质 |
CN110033267A (zh) * | 2019-02-19 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 区块链中实现隐私保护的方法、节点、系统和存储介质 |
US20200177604A1 (en) * | 2019-07-31 | 2020-06-04 | Alibaba Group Holding Limited | Providing data authorization based on blockchain |
CN111090876A (zh) * | 2020-03-18 | 2020-05-01 | 支付宝(杭州)信息技术有限公司 | 调用合约的方法及装置 |
CN114117522A (zh) * | 2021-11-23 | 2022-03-01 | 上海交通大学 | 基于区块链和可信执行环境的车联网数据共享实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114331442B (zh) | 2022-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11139979B2 (en) | Primary and secondary blockchain device | |
CN108734028B (zh) | 基于区块链的数据管理方法、区块链节点及存储介质 | |
KR20210041404A (ko) | 전자 장치 및 그 전자 장치를 이용한 블록체인 주소 관리 방법 | |
JP7551222B2 (ja) | ブロックチェーンネットワークに基づくデータ処理方法、装置及びコンピュータ機器 | |
CN111127021B (zh) | 基于区块链的服务请求方法及装置 | |
CN110400217B (zh) | 智能合约的规则变更处理方法及装置 | |
US11916936B2 (en) | Techniques for incentivized intrusion detection system | |
CN111522809A (zh) | 数据处理方法、系统及设备 | |
CN113221165B (zh) | 一种基于区块链的用户要素认证方法及装置 | |
CN111669434B (zh) | 一种通信群组的建立方法、系统、装置及设备 | |
CN115130075A (zh) | 一种数字签章方法、装置、电子设备及存储介质 | |
CN111737304A (zh) | 一种区块链数据的处理方法、装置及设备 | |
CN114500119A (zh) | 区块链服务的调用方法和装置 | |
CN116933886B (zh) | 一种量子计算执行方法、系统、电子设备及存储介质 | |
CN112291321A (zh) | 业务处理方法、装置及系统 | |
CN114331442B (zh) | 一种区块链中智能合约的调用方法及装置 | |
CN113868691B (zh) | 一种基于云原生的区块链的授权运行方法及装置 | |
CN116975901A (zh) | 基于区块链的身份验证方法、装置、设备、介质及产品 | |
CN113949632B (zh) | 一种区块链的节点动态配置方法及装置 | |
CN113761496B (zh) | 一种基于区块链的身份校验方法及装置和电子设备 | |
CN113765674B (zh) | 一种基于区块链的跨平台注册方法及装置 | |
CN115131029A (zh) | 基于区块链的数字文件签署方法及装置 | |
CN114372280A (zh) | 一种基于多签智能合约的区块链业务执行方法及装置 | |
CN113806335A (zh) | 一种应用于区块链的数据迁移方法及装置 | |
CN114331447B (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 |