CN109829013A - 用于在区块链网络中运行智能合约的方法、存储介质、计算设备 - Google Patents
用于在区块链网络中运行智能合约的方法、存储介质、计算设备 Download PDFInfo
- Publication number
- CN109829013A CN109829013A CN201811612245.4A CN201811612245A CN109829013A CN 109829013 A CN109829013 A CN 109829013A CN 201811612245 A CN201811612245 A CN 201811612245A CN 109829013 A CN109829013 A CN 109829013A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- block chain
- environment
- trusted computation
- 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
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种用于在区块链网络中运行智能合约的方法、存储介质、计算设备,所述方法包括:A.接收调用请求,所述调用请求用于请求调用第一智能合约,所述第一智能合约仅能运行于区块链节点的可信计算环境;B.在所述区块链节点的普通计算环境中运行第二智能合约,并通过所述第二智能合约调用所述第一智能合约;C.获取所述第一智能合约的执行结果;以及D.返回所述执行结果。通过本发明提供的方案能够改善智能合约在运行时的安全性。
Description
技术领域
本发明涉及区块链技术领域,具体地涉及一种用于在区块链网络中运行智能合约的方法、存储介质、计算设备。
背景技术
区块链是用分布式数据库识别、传播和记载信息的智能化对等网络,也称为价值互联网。区块链技术包括以块结构存储数据,使用密码学保证传输和访问安全等,其能够实现数据一致性存储、反篡改、去中心的技术体系。
智能合约是指一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议,智能合约可以为区块链节点设备中执行特定功能的计算机程序。智能合约可以记录交易并且共享交易数据,使得被存储在区块链中任一节点的数据将被共享到区块链中的所有节点,因而其他节点均能获得数据内容。
现有的区块链系统一般都支持智能合约,区块链节点在执行区块链应用时,通过调用相应的智能合约来执行区块链网络中的业务,并获得相应的运行结果。
发明内容
本发明的实施例提供了一种用于在区块链网络中运行智能合约的方法、存储介质、计算设备。
本发明实施例的第一方面提供一种用于在区块链网络中运行智能合约的方法,包括:A.接收调用请求,所述调用请求用于请求调用第一智能合约,所述第一智能合约仅能运行于区块链节点的可信计算环境;B.在所述区块链节点的普通计算环境中运行第二智能合约,并通过所述第二智能合约调用所述第一智能合约;C.获取所述第一智能合约的执行结果;以及D.返回所述执行结果。
本实施例的方案能够改善智能合约在运行时的安全性。具体地,将所述第一智能合约封装在所述可信计算环境中运行,由于能够访问所述可信计算环境的必须是受信的代码,如所述第二智能合约,其他任何非受信代码的访问都将被所述可信计算环境拒绝,由此,可以实现利用可信计算环境的安全优势改善所述第一智能合约的运行安全性的效果。
本发明实施例还提供一种计算设备,包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行以下步骤:A.接收调用请求,所述调用请求用于请求调用第一智能合约,所述第一智能合约仅能运行于区块链节点的可信计算环境;B.在所述区块链节点的普通计算环境中运行第二智能合约,并通过所述第二智能合约调用所述第一智能合约;C.获取所述第一智能合约的执行结果;以及D.返回所述执行结果。
本发明实施例还提供一种存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述方法的步骤。
附图说明
图1是本发明实施例的一种用于在区块链网络中运行智能合约的方法的流程图;
图2是本发明实施例的一个典型的应用场景的示意图。
具体实施方式
本申请发明人经过分析发现,现有的区块链系统中,智能合约执行时的安全性无法得到有效保障。
具体而言,在有些基于区块链的系统中,智能合约的执行需要在非常安全和可信的环境中。例如,在多方安全计算场景中,区块链节点在调用智能合约进行计算时,需要确保智能合约的计算过程不被他方恶意攻击。
以基于区块链网络的用户信用共享系统为例,所述用户信用共享系统由多家金融公司组成,其中每家公司都有自己的贷款用户。所述区块链网络可以包括多个可通信的区块链节点,假设每一区块链节点对应一家金融公司。为防止多头借贷,每家金融公司都将自己的用户的借款信息通过自己的区块链节点记录在公共的区块链账本中。其中,所述用户的借款信息可以包括借款的金额、逾期的时间、逾期的金额等。
但是,由于这些借款信息属于敏感信息,所以区块链账本中所存储的这些借款信息肯定是经过加密处理的。当其中一家金融公司需要查询某一借款用户在整个系统中的借款信息,如在各家金融公司的借款总额、逾期总额等时,需要对区块链账本中记录有该借款用户的借款信息的区块进行解密处理,然后才能得到所需的信息。另一方面,统计得到的借款用户在整个系统中的借款信息如果也要记录到所述区块链账本的话,也需要对包含这些数据的区块进行加密处理。
上述加密和解密数据的操作都是由运行于区块链节点的智能合约执行的,为确保加密和解密期间用户的数据不被他人恶意窃取,这就对智能合约的运行环境的安全性,尤其是执行所述加密和解密数据的操作的智能合约的运行环境的安全性提出了更高要求。否则,如果所述智能合约的运行环境的安全性过低,运行中的所述智能合约极有可能被不法分子攻击,进而获取所述用户的借款数据等隐私信息,导致用户隐私泄露。
在现有的区块链系统中,智能合约是运行于区块链节点的沙盒环境的。所述沙盒环境使得智能合约运行于受限的环境中,拥有受限的访问权限,如只能调用非常有限的系统接口。沙盒环境对智能合约的运行更多的起到限制作用,而非保护作用。并且,沙盒环境也无法满足有些智能合约对运行环境的高安全性要求,如,内存是否经过加密、是否可以访问进程等。
本发明实施例的第一方面提供一种用于在区块链网络中运行智能合约的方法,包括:A.接收调用请求,所述调用请求用于请求调用第一智能合约,所述第一智能合约仅能运行于区块链节点的可信计算环境;B.在所述区块链节点的普通计算环境中运行第二智能合约,并通过所述第二智能合约调用所述第一智能合约;C.获取所述第一智能合约的执行结果;以及D.返回所述执行结果。
本实施例的方案能够改善智能合约在运行时的安全性。具体地,将所述第一智能合约封装在所述可信计算环境中运行,由于能够访问所述可信计算环境的必须是受信的代码,如所述第二智能合约,其他任何非受信代码的访问都将被所述可信计算环境拒绝,由此,可以实现利用可信计算环境的安全优势改善所述第一智能合约的运行安全性的效果。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
以下参考附图详细描述本公开的各个示例性实施例。附图中的流程图和框图示出了根据本公开的各种实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分可以包括一个或多个用于实现各个实施例中所规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者他们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。还应当注意,流程图中各个步骤的序号并不代表对各个步骤的执行顺序的限定。
本文所使用的术语“包含”、“包括”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”,表示还可以包括其他内容。在本公开内容中,术语“基于”是“至少部分地基于”;术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。
本文中出现的“智能合约”的定义与区块链技术中本领域技术人员公知的定义相同。具体而言,智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议,智能合约可以为区块链节点中执行特定功能的计算机程序。
将所述智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可篡改。同时,由区块链自带的共识算法构建一套状态机系统,使得智能合约能够高效的运行。
具体而言,所述区块链网络中的每一区块链节点可运行有智能合约运行引擎,所述智能合约运行引擎用于验证和运行智能合约。进一步地,每一区块链节点可运行有一区块链服务,所述智能合约运行引擎可以包含于所述区块链服务。智能合约被安装部署到所述区块链节点后,由所述智能合约运行引擎来对所述智能合约进行验证、运行等操作,并输出运行结果。
进一步地,所述智能合约对所述区块链网络中的各个区块链节点通常都是公开透明的,其安装和运行通常也需要各个区块链节点达成共识。
本文中出现的“区块链节点的计算环境”是指:所述区块链节点进行处理和计算的环境。通常而言,区块链节点的计算环境可以包括基于中央处理器(Central ProcessingUnit,简称CPU,可简称为处理器)实现的运算环境。更具体地,所述运算环境可以包括普通环境和可信计算环境,可信计算环境为计算环境中仅允许特定的软件或应用程序运行、访问的部分,普通环境为计算环境中允许所有的软件或应用程序运行、访问的部分。进一步而言,基于CPU的可信计算环境是一种芯片级别的安全保护机制,也可以称为可信执行环境(Trusted Execution Environment,简称TEE)。
例如,可以利用软件保护扩展(Software Guard Extensions,简称SGX)技术构建所述可信计算环境,也可称为基于SGX的可信计算环境。具体地,所述可信计算环境将合法软件的安全操作封装在一个区域(enclave)中,保护其不受恶意软件的攻击,特权或者非特权的软件都无法访问该区域。也即,当软件和数据位于该区域中时,即便操作系统也无法影响该区域里面的代码和数据。所述区域的安全边界只包含CPU和它自身。在SGX中一个CPU可以运行多个安全区域,并发执行亦可。
本文中出现的“第一智能合约”是指:仅能在区块链节点的可信计算环境中运行的智能合约,也可称为受保护的智能合约。
例如,所述第一智能合约可以是由区块链即服务(Blockchain as a Service,简称BaaS)平台的用户自己提供的,需要运行在安全度较高的计算机环境中的智能合约。
在一个实施例中,所述第一智能合约可以与业务相关,不同的业务对应不同的第一智能合约。以前述用户信用共享场景为例,所述第一智能合约可以为用于执行查询操作的智能合约,通过执行所述查询操作可以获取借款用户在整个所述用户信用共享系统中的借款信息。
所述BaaS平台可以是一个区块链的服务提供平台,主要负责区块链底层平台和基于区块链的应用服务的部署、管理和运维。
在一个实施例中,所述BaaS平台可以提供打包工具,供所述用户生成所述第一智能合约。具体地,所述打包工具可以用于将所述第一智能合约的接口包装成可以被外部程序直接调用的接口,如超文本传输协议(HTTP,Hyper Text Transfer Protocol,简称HTTP)、远程过程调用(Remote Procedure Call,简称RPC)接口等。
例如,在部署区块链节点时,所述BaaS平台可以将需要所述第一智能合约的程序、具有调用权限的组织(如查询方、所述区块链节点的所有方)的证书和接口一并封装。进一步地,所述BaaS平台可以使用所述组织的密钥对封装后的第一智能合约进行签名,然后发送至所述区块链节点,以更好地提高安全性。
或者,所述用户也可以通过自身的区块链管理客户端使用组织的密钥对所述第一智能合约进行签名,然后借助所述BaaS平台发送至所述区块链节点。
进一步地,所述区块链节点收到所述第一智能合约后,可以使用所述组织的证书对所述第一智能合约进行验证,验证通过后,再安装所述第一智能合约。如可以安装至所述区块链节点的可信计算环境。
本发明实施例通过将关键的智能合约放到可信计算环境中运行,能够提高安全性。
本文中出现的“第二智能合约”是指:用于调用所述第一智能合约的智能合约。进一步而言,所述第二智能合约为所述第一智能合约提供对外的通信通道,使得所述第一智能合约能够经过该通信通道被调用。所述第二智能合约也可称为可调用受保护的智能合约的智能合约。
例如,所述第二智能合约可以由所述BaaS平台提供,所述第二智能合约并不实现具体的业务,而是提供公用接口专用于连接第一智能合约和外界。
换言之,所述第二智能合约可以类似于所述第一智能合约的调用接口。
具体地,所述第二智能合约可以运行于所述区块链节点的普通计算环境。例如,所述第二智能合约可以运行于所述区块链节点的普通计算环境内的沙盒(sandbox)环境中。
进一步地,所述沙盒环境可以是由所述处理器提供的,并且,所述处理器可以许可或限制运行于所述沙盒环境中的所述第二智能合约访问所述可信计算环境。
在一个实施例中,所述处理器可以许可运行于所述沙盒环境的所述第二智能合约访问并调用所述第一智能合约,相应的,所述第二智能合约可以集成有所述可信计算环境的程序库。其中,程序库可以为用于驱动所述第一智能合约在所述可信计算环境中运行的开发工具程序的集合。所述开发工具程序可以为软件开发工具包(Software DevelopmentKit,简称SDK)。
在一个变化例中,所述处理器可以限制运行于所述沙盒环境的所述第二智能合约访问或调用所述第一智能合约,相应的,所述可信计算环境的程序库可以集成于所述区块链节点的智能合约运行引擎,所述处理器许可所述智能合约运行引擎访问所述可信计算环境。进一步地,通过所述智能合约运行引擎运行所述程序库,所述第二智能合约可以实现对所述第一智能合约的调用。
沙盒是一种虚拟技术,其原理是通过重定向技术,把程序生成和修改的文件定向到自身文件夹中。在一个实施例中,所述沙盒环境允许运行于其中的进程对外进行网络上的交互,也即,所述第二智能合约具有与所述可信计算环境进行交互的权限。此时,第二智能合约可以集成有所述程序库,并可以通过所述程序库调用所述第一智能合约。
在一个变化例中,所述沙盒环境限制运行于其中的进程不能对外进行网络上的交互,也即,所述第二智能合约仅能与所述智能合约运行引擎交互。此时,所述智能合约运行引擎集成有所述程序库,所述第二智能合约需要通过所述智能合约运行引擎调用所述第一智能合约,并通过所述智能合约运行引擎获取所述第一智能合约的运行结果。
在一个实施例中,所述第二智能合约的接口可以包括:接口名、所述接口名对应的第1到N个参数的参数名、所述接口名对应的第1到N个参数的参数类型、所述接口名对应的第1到N个参数的参数值。
例如,所述接口名可以为“计算用户的贷款总额”,该接口名可以对应三个参数,参数名分别为参数1、参数2和参数3,其中,参数1的参数类型:字符串、参数名称:贷款用户名、参数值:张三,参数2的参数类型:时间、参数名称:查询贷款总额的起始时间、参数值:2018年3月1日;参数3的参数类型:时间、参数名称:查询贷款总额的结束时间、参数值:2018年9月1日。通过本实施例的方案,区块链节点运行第二智能合约,能够得到参数1指向的用户在2018年3月1日至2018年9月1日期间的累计贷款总额。
在一个实施例中,所述第一智能合约和第二智能合约可以为一智能合约运行于不同计算环境的两个相互独立的部分。或者,所述第一智能合约和第二智能合约也可以相互独立的两个智能合约。
本文中出现的“智能合约运行引擎”是指:验证和运行智能合约的计算机程序、计算机程序模块或计算机应用。所述智能合约运行引擎为运行于区块链节点上的区块链应用服务程序服务,以实现各种区块链应用。
本文中出现的“智能合约调用程序”是指:运行于所述智能合约运行引擎的计算机程序、计算机程序模块或计算机应用,所述智能合约调用程序能够在所述第一智能合约和第二智能合约之间实现数据中转。所述智能合约调用程序运行于所述智能合约运行引擎,较之运行于所述沙盒环境的第二智能合约可以拥有更多的权限。所述智能合约调用程序可以称为受保护的智能合约调用程序。
例如,当所述程序库是集成于所述智能合约运行引擎的时,所述程序库具体可以是集成于所述智能合约调用程序的。
本文中出现的“调用请求”是指:调用特定的智能合约执行相应业务的请求信息,所述区块链节点在执行上层的区块链应用时,可以将相应的调用请求发送至所述智能合约运行引擎,以调用相应的智能合约并获取执行结果。
具体地,所述调用请求可以包含请求调用的智能合约的参数,由所述智能合约运行引擎根据所述参数确定需要被调用的智能合约。
例如,所述调用请求可以由用户发出,以执行特定的区块链应用。
本文中出现的“执行结果”是指:所述第一智能合约响应于所述调用请求开始运行后得到的运行结果。
本文中出现的“数据”是指:区块链节点在交易过程中产生或涉及的至少一个事务中的事务数据。其中,所述事务数据是指事务(transaction)进行过程中产生的各种数据。进一步地,事务数据可以包括事务进行过程中产生的各种中间数据,以及事务进行完成后得到的各种结果数据。
本文中出现的“区块链应用”是指:区块链技术在业务场景上的应用。例如,能源领域的区块链应用、金融领域的区块链应用等。所述区块链应用可以基于区块链客户端程序实现。
本文中出现的“业务”包括为了达成特定的目的或实现特定的功能而进行的一系列(即一个或多个,通常为多个)事务的集合。例如,为了达成查询用户信用的目的而进行的信用查询业务可以包括借款查询事务、逾期查询事务等一系列事务。又例如,供应链金融业务等。
应当理解,给出这些示例性实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开的实施例,而并非以任何方式限制发明的范围。
本发明实施例的区块链技术方案可以应用于不同的领域中,例如,在供应链金融应用场景中,存储在区块链账本中的应收账款数据具有加密存储的需要,但是又想在智能合约中完成供应链金融业务上应收账款的转让和拆分。
在实际应用中,可以存在两个智能合约,其中一个智能合约(记作智能合约1)用于完成区块链账本中数据的加密和解密操作,由于加密和解密的过程需要在安全的运行环境中进行,以保护加密前的数据和解密后得到的数据免遭盗取,所以,智能合约1可以为本发明实施例所述第一智能合约并仅能运行在区块链节点的可信计算环境中。
所述两个智能合约中的另一个智能合约(记作智能合约2)用于完成业务上的应收账款数据的转让和拆分,本操作对运行环境的安全性要求较低,因而智能合约2可以不需要运行在所述区块链节点的可信计算环境。
进一步地,当所述区块链节点调用所述智能合约2完成业务上的应收账款数据的转让和拆分后,可以进一步调用所述智能合约1对转让和拆分后的应收账款数据进行加密,并将加密处理后的数据存储到所述区块链账本。另一方面,在调用所述智能合约2对获取自区块链账本的应收账款数据进行处理之前,由于所述应收账款数据是经过加密处理的,所述区块链节点也可以先调用所述智能合约1对所述应收账款数据进行解密操作,然后再调用所述智能合约2完成相应的业务逻辑。
其中,对所述智能合约1运行的控制流程可以采用本发明实施例的方案实现。
图1是本发明实施例的一种用于在区块链网络中运行智能合约的方法的流程图。其中,所述区块链网络可以由多个可通信的区块链节点构成,本实施例的方案可以由所述区块链节点执行。
具体地,在本实施例中,所述方法可以包括:
在101处,执行步骤A,接收调用请求,所述调用请求用于请求调用第一智能合约,所述第一智能合约仅能运行于区块链节点的可信计算环境;
在102处,执行步骤B,在所述区块链节点的普通计算环境中运行第二智能合约,并通过所述第二智能合约调用所述第一智能合约;
在103处,执行步骤C,获取所述第一智能合约的执行结果;
在104处,执行步骤D,返回所述执行结果。
在一个实施例中,所述调用请求可以使用所述调用请求的发送端的密钥签名,以提供认证能力,确保发送端有权调用第一智能合约执行业务。
进一步地,在所述步骤A之后,本实施例所述智能合约运行的控制方法还可以包括:步骤O,对所述调用请求的签名进行验证,以判断所述发送端是否对所述第一智能合约具有调用权限;步骤P,当判断结果表明所述发送端对所述第一智能合约具有调用权限时,执行所述步骤B。
例如,可以预先将对所述第一智能合约具有调用权限的至少一个组织的证书封装在所述第二智能合约中,并部署至所述区块链节点。响应于接收到所述调用请求,所述区块链节点可以从中提取所述发送端的证书和签名,通过所述发送端的证书验证所述签名是否正确,同时比较接收到的调用请求中的证书和预先封装在第二智能合约中的至少一个组织的证书是否一致,以判断所述发送端是否属于对所述第一智能合约具有调用权限的组织。其中,所述组织可以包括所述区块链节点的所属方,所述区块链网络的参与方等。
在一个实施例中,所述第二智能合约可以是运行于所述区块链节点的普通计算环境内的沙盒环境中的。
在一个典型的应用场景中,参考图2,区块链节点2的计算环境包括可信计算环境21和普通计算环境(图未示),所述普通计算环境包括沙盒环境23。
所述区块链节点2可以运行区块链服务程序27,以调用智能合约运行引擎25。
在部署所述区块链节点2时,区块链节点2可以自BaaS平台(图未示)获取第一智能合约22和第二智能合约24并部署在所述区块链节点2,并调用所述智能合约运行引擎25验证和运行所述第一智能合约22和第二智能合约24。
其中,第一智能合约22仅能运行于所述可信计算环境21,所述第二智能合约24可以运行于所述沙盒环境23。
接下来对所述区块链节点2运行所述第一智能合约22的过程做具体阐述。
具体地,所述区块链节点2接收到一调用请求,所述调用请求可以由用户发出并用于实现特定的区块链应用,所述调用请求可以包含请求调用的智能合约的参数。在本场景中,假定所述调用请求用于请求所述区块链节点运行所述第一智能合约22,并请求获取所述第一智能合约22的执行结果。
进一步地,所述区块链节点2可以通过所述智能合约运行引擎25接收所述调用请求,并通过所述智能合约运行引擎25根据调用请求中的参数确定待调用的智能合约。在本场景中,可以确定待调用的智能合约为所述第一智能合约22。
进一步地,由于所述第一智能合约22为仅能运行于所述可信计算环境21的智能合约,所述区块链节点2可以通过智能合约运行引擎25调用运行于沙盒环境23的第二智能合约24,以通过所述第二智能合约24调用所述第一智能合约22。
在本场景中,所述区块链节点2的处理器(图未示)许可运行于所述沙盒环境23的所述第二智能合约24访问所述可信计算环境21。也即,所述第二智能合约24可以集成有所述可信计算环境的程序库。因而,所述步骤B可以进一步包括:在所述沙盒环境23运行所述第二智能合约24,并通过集成于所述第二智能合约24中的所述程序库调用所述第一智能合约22。
进一步地,所述区块链节点2可以通过所述第二智能合约24获取所述第一智能合约22返回的执行结果,并向用户返回所述执行结果。
在另一个实施例中,所述步骤B可以进一步包括:通过所述第二智能合约指示所述智能合约运行引擎调用所述第一智能合约,所述智能合约运行引擎集成有所述可信计算环境的程序库。
在另一个典型的应用场景中,仍参考图2,在本场景中,所述区块链节点2的处理器(图未示)许可所述智能合约运行引擎25访问所述可信计算环境21。在本场景中,所述区块链节点2的处理器可能限制运行于所述沙盒环境23的所述第二智能合约24的访问权限,使得所述第二智能合约24仅能与所述智能合约运行引擎25进行数据交互。
因而,响应于接收到所述调用请求,所述区块链节点2可以运行所述第二智能合约24,并通过所述第二智能合约24指示所述智能合约运行引擎25调用所述第一智能合约22。
具体地,可以通过集成在所述智能合约运行引擎25的智能合约调用程序26中的可信计算环境的程序库来调用所述第一智能合约22。
进一步地,所述区块链节点2还可以通过所述第二智能合约24指示所述智能合约运行引擎25获取所述第一智能合约22的执行结果,并向用户返回所述执行结果。
由上,采用本实施例的方案,能够改善智能合约在运行时的安全性。具体地,将所述第一智能合约封装在所述可信计算环境中运行,由于能够访问所述可信计算环境的必须是受信的代码,如所述第二智能合约,其他任何非受信代码的访问都将被所述可信计算环境拒绝,由此,可以实现利用可信计算环境的安全优势改善所述第一智能合约的运行安全性的效果。
进一步地,本实施例的方案通过将智能合约的受保护部分运行在可信计算环境中,确保智能合约的受保护部分能够安全的运行。
进一步地,本实施例通过所述BaaS平台提供的执行第一智能合约的方案不受具体业务的限制,可以执行通用的受保护的智能合约。具体而言,针对不同的业务采用同一套逻辑封装生成对应的第一智能合约,并采用通用的第二智能合约统一调用各个第一智能合约,利于在实际应用中推广。
本发明实施例还提供一种计算设备,包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时可以执行以下步骤:A.接收调用请求,所述调用请求用于请求调用第一智能合约,所述第一智能合约仅能运行于区块链节点的可信计算环境;B.在所述区块链节点的普通计算环境中运行第二智能合约,并通过所述第二智能合约调用所述第一智能合约;C.获取所述第一智能合约的执行结果;以及D.返回所述执行结果。
在一个实施例中,所述可信计算环境可以是由处理器提供的,并且所述处理器许可所述第二智能合约访问所述可信计算环境。
在一个实施例中,所述步骤B可以进一步包括:通过集成在所述第二智能合约中的所述可信计算环境的程序库来调用所述第一智能合约。
在一个实施例中,所述可信计算环境可以是由处理器提供的,并且所述处理器许可区块链节点中的智能合约运行引擎访问所述可信计算环境,并且所述步骤B进一步包括:通过所述第二智能合约指示所述智能合约运行引擎调用所述第一智能合约,所述智能合约运行引擎集成有所述可信计算环境的程序库。
进一步地,本发明实施例还公开一种存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述图1所示实施例中所述的方法技术方案。优选地,所述存储介质可以包括诸如非挥发性(Non-Volatile)存储器或者非瞬态(Non-Transitory)存储器等计算机可读存储介质。所述存储介质可以包括ROM、RAM、磁盘或光盘等。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (9)
1.一种用于在区块链网络中运行智能合约的方法,其特征在于,包括:
A.接收调用请求,所述调用请求用于请求调用第一智能合约,所述第一智能合约仅能运行于区块链节点的可信计算环境;
B.在所述区块链节点的普通计算环境中运行第二智能合约,并通过所述第二智能合约调用所述第一智能合约;
C.获取所述第一智能合约的执行结果;以及
D.返回所述执行结果。
2.根据权利要求1所述的方法,其特征在于,所述可信计算环境是由处理器提供的,并且所述处理器许可所述第二智能合约访问所述可信计算环境。
3.根据权利要求1或2所述的方法,其特征在于,所述步骤B进一步包括:通过集成在所述第二智能合约中的所述可信计算环境的程序库来调用所述第一智能合约。
4.根据权利要求1所述的方法,其特征在于,所述可信计算环境是由处理器提供的,并且所述处理器许可区块链节点中的智能合约运行引擎访问所述可信计算环境,并且所述步骤B进一步包括:
通过所述第二智能合约指示所述智能合约运行引擎调用所述第一智能合约,所述智能合约运行引擎集成有所述可信计算环境的程序库。
5.一种计算设备,其特征在于,包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行以下步骤:
A.接收调用请求,所述调用请求用于请求调用第一智能合约,所述第一智能合约仅能运行于区块链节点的可信计算环境;
B.在所述区块链节点的普通计算环境中运行第二智能合约,并通过所述第二智能合约调用所述第一智能合约;
C.获取所述第一智能合约的执行结果;以及
D.返回所述执行结果。
6.根据权利要求5所述的计算设备,其特征在于,所述可信计算环境是由处理器提供的,并且所述处理器许可所述第二智能合约访问所述可信计算环境。
7.根据权利要求5或6所述的计算设备,其特征在于,所述步骤B进一步包括:
通过集成在所述第二智能合约中的所述可信计算环境的程序库来调用所述第一智能合约。
8.根据权利要求5所述的计算设备,其特征在于,所述可信计算环境是由处理器提供的,并且所述处理器许可区块链节点中的智能合约运行引擎访问所述可信计算环境,并且所述步骤B进一步包括:
通过所述第二智能合约指示所述智能合约运行引擎调用所述第一智能合约,所述智能合约运行引擎集成有所述可信计算环境的程序库。
9.一种存储介质,其上存储有计算机指令,其特征在于,所述计算机指令运行时执行权利要求1至4任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811612245.4A CN109829013A (zh) | 2018-12-27 | 2018-12-27 | 用于在区块链网络中运行智能合约的方法、存储介质、计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811612245.4A CN109829013A (zh) | 2018-12-27 | 2018-12-27 | 用于在区块链网络中运行智能合约的方法、存储介质、计算设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109829013A true CN109829013A (zh) | 2019-05-31 |
Family
ID=66861335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811612245.4A Pending CN109829013A (zh) | 2018-12-27 | 2018-12-27 | 用于在区块链网络中运行智能合约的方法、存储介质、计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109829013A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110580412A (zh) * | 2019-11-08 | 2019-12-17 | 支付宝(杭州)信息技术有限公司 | 基于链代码的权限查询配置方法及装置 |
CN111090581A (zh) * | 2019-11-22 | 2020-05-01 | 腾讯科技(深圳)有限公司 | 智能合约测试方法、装置、计算机设备和存储介质 |
CN111310206A (zh) * | 2020-02-12 | 2020-06-19 | 腾讯科技(深圳)有限公司 | 一种数据加密方法、节点设备及存储介质 |
CN111524007A (zh) * | 2020-04-16 | 2020-08-11 | 广州拉卡拉信息技术有限公司 | 一种智能合约的嵌入式入侵检测方法及装置 |
CN111538783A (zh) * | 2020-04-20 | 2020-08-14 | 成都质数斯达克科技有限公司 | 一种智能合约执行约束的方法、装置、终端及存储介质 |
CN111709029A (zh) * | 2020-05-14 | 2020-09-25 | 哈希森林(北京)科技有限公司 | 基于区块链和可信计算网络的数据运算和隐私交易方法 |
CN112544057A (zh) * | 2019-06-20 | 2021-03-23 | 深圳市网心科技有限公司 | 区块链节点设备及其认证方法、装置、存储介质 |
CN117172913A (zh) * | 2023-10-12 | 2023-12-05 | 广州保德来小额贷款有限公司 | 一种基于智能合约的合约变更手续执行方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107342858A (zh) * | 2017-07-05 | 2017-11-10 | 武汉凤链科技有限公司 | 一种基于可信环境的智能合约保护方法和系统 |
CN107943580A (zh) * | 2017-11-13 | 2018-04-20 | 上海点融信息科技有限责任公司 | 用于管理区块链节点处的用户智能合约的方法以及设备 |
CN108173850A (zh) * | 2017-12-28 | 2018-06-15 | 杭州趣链科技有限公司 | 一种基于区块链智能合约的身份认证系统和身份认证方法 |
US20180218343A1 (en) * | 2017-01-30 | 2018-08-02 | Dais Technology, Inc. | Smart contract execution on a blockchain |
CN108510389A (zh) * | 2018-03-30 | 2018-09-07 | 深圳前海微众银行股份有限公司 | 基于区块链的智能合约调用方法、设备及可读存储介质 |
CN108989389A (zh) * | 2018-06-11 | 2018-12-11 | 北京航空航天大学 | 一种建立智能合约微服务化的方法 |
CN109033823A (zh) * | 2018-07-23 | 2018-12-18 | 上海点融信息科技有限责任公司 | 用于在区块链网络中验证和运行智能合约的方法和装置 |
CN109063474A (zh) * | 2018-07-23 | 2018-12-21 | 上海点融信息科技有限责任公司 | 用于在区块链网络中验证和运行智能合约的方法和装置 |
-
2018
- 2018-12-27 CN CN201811612245.4A patent/CN109829013A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180218343A1 (en) * | 2017-01-30 | 2018-08-02 | Dais Technology, Inc. | Smart contract execution on a blockchain |
CN107342858A (zh) * | 2017-07-05 | 2017-11-10 | 武汉凤链科技有限公司 | 一种基于可信环境的智能合约保护方法和系统 |
CN107943580A (zh) * | 2017-11-13 | 2018-04-20 | 上海点融信息科技有限责任公司 | 用于管理区块链节点处的用户智能合约的方法以及设备 |
CN108173850A (zh) * | 2017-12-28 | 2018-06-15 | 杭州趣链科技有限公司 | 一种基于区块链智能合约的身份认证系统和身份认证方法 |
CN108510389A (zh) * | 2018-03-30 | 2018-09-07 | 深圳前海微众银行股份有限公司 | 基于区块链的智能合约调用方法、设备及可读存储介质 |
CN108989389A (zh) * | 2018-06-11 | 2018-12-11 | 北京航空航天大学 | 一种建立智能合约微服务化的方法 |
CN109033823A (zh) * | 2018-07-23 | 2018-12-18 | 上海点融信息科技有限责任公司 | 用于在区块链网络中验证和运行智能合约的方法和装置 |
CN109063474A (zh) * | 2018-07-23 | 2018-12-21 | 上海点融信息科技有限责任公司 | 用于在区块链网络中验证和运行智能合约的方法和装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112544057A (zh) * | 2019-06-20 | 2021-03-23 | 深圳市网心科技有限公司 | 区块链节点设备及其认证方法、装置、存储介质 |
CN110580412A (zh) * | 2019-11-08 | 2019-12-17 | 支付宝(杭州)信息技术有限公司 | 基于链代码的权限查询配置方法及装置 |
CN111090581A (zh) * | 2019-11-22 | 2020-05-01 | 腾讯科技(深圳)有限公司 | 智能合约测试方法、装置、计算机设备和存储介质 |
CN111090581B (zh) * | 2019-11-22 | 2024-02-09 | 腾讯科技(深圳)有限公司 | 智能合约测试方法、装置、计算机设备和存储介质 |
CN111310206A (zh) * | 2020-02-12 | 2020-06-19 | 腾讯科技(深圳)有限公司 | 一种数据加密方法、节点设备及存储介质 |
CN111524007A (zh) * | 2020-04-16 | 2020-08-11 | 广州拉卡拉信息技术有限公司 | 一种智能合约的嵌入式入侵检测方法及装置 |
CN111538783A (zh) * | 2020-04-20 | 2020-08-14 | 成都质数斯达克科技有限公司 | 一种智能合约执行约束的方法、装置、终端及存储介质 |
CN111709029A (zh) * | 2020-05-14 | 2020-09-25 | 哈希森林(北京)科技有限公司 | 基于区块链和可信计算网络的数据运算和隐私交易方法 |
CN117172913A (zh) * | 2023-10-12 | 2023-12-05 | 广州保德来小额贷款有限公司 | 一种基于智能合约的合约变更手续执行方法及系统 |
CN117172913B (zh) * | 2023-10-12 | 2024-02-13 | 广州保德来小额贷款有限公司 | 一种基于智能合约的合约变更手续执行方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111475849B (zh) | 基于区块链账户的隐私数据查询方法及装置 | |
CN109829013A (zh) | 用于在区块链网络中运行智能合约的方法、存储介质、计算设备 | |
Sookhak et al. | Security and privacy of smart cities: a survey, research issues and challenges | |
CN111181720B (zh) | 基于可信执行环境的业务处理方法及装置 | |
CN109598616B (zh) | 一种引入仲裁机制的区块链数据隐私保护的方法 | |
US20240106809A1 (en) | Cryptographic systems and methods | |
CN110580413B (zh) | 基于链下授权的隐私数据查询方法及装置 | |
EP3962020B1 (en) | Information sharing methods and systems | |
CN110580245B (zh) | 隐私数据的共享方法及装置 | |
CN110580412B (zh) | 基于链代码的权限查询配置方法及装置 | |
CN107743133A (zh) | 移动终端及其基于可信安全环境的访问控制方法和系统 | |
CN111475850B (zh) | 基于智能合约的隐私数据查询方法及装置 | |
CN110580411B (zh) | 基于智能合约的权限查询配置方法及装置 | |
Petrlic et al. | A privacy-friendly architecture for future cloud computing | |
CN110263544A (zh) | 结合交易类型和判断条件的收据存储方法和节点 | |
US7194759B1 (en) | Used trusted co-servers to enhance security of web interaction | |
CN110276610B (zh) | 基于交易偏移量实现动态加密的方法及装置 | |
Cooijmans et al. | Secure key storage and secure computation in Android | |
Bhutta et al. | Towards secure IoT-based payments by extension of payment card industry data security standard (PCI DSS) | |
Verma et al. | Secure document sharing model based on blockchain technology and attribute-based encryption | |
Ding et al. | Sunspot: A decentralized framework enabling privacy for authorizable data sharing on transparent public blockchains | |
KR102211033B1 (ko) | 전자인증절차의 대행 서비스 시스템 | |
Wilusz et al. | Securing cryptoasset insurance services with multisignatures | |
Petrlic et al. | Unlinkable content playbacks in a multiparty DRM system | |
Manimuthu et al. | RETRACTED ARTICLE: An enhanced approach on distributed accountability for shared data in cloud |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190531 |
|
WD01 | Invention patent application deemed withdrawn after publication |