基于云计算的区块链数据处理方法及装置
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种基于云计算的区块链数据处理方法及装置。
背景技术
区块链技术(也被称之为,分布式账本技术)是一种去中性化的分布式数据库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种基于云计算的区块链数据处理方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种基于云计算的区块链数据处理方法,包括:
区块链一体机向云服务器发起密文请求,所述密文请求被所述云服务器在维护的可信执行环境内解密得到明文请求,所述明文请求中包含针对待处理数据的相关信息;
所述区块链一体机获取所述云服务器返回的执行结果,所述执行结果由所述云服务器根据所述相关信息执行针对所述待处理数据的相关操作得到。
根据本说明书一个或多个实施例的第二方面,提出了一种基于云计算的区块链数据处理方法,包括:
云服务器获取区块链一体机发起的密文请求,并在维护的可信执行环境内解密所述密文请求得到明文请求,以读取所述明文请求中包含的针对待处理数据的相关信息;
所述云服务器根据所述相关信息执行针对所述待处理数据的相关操作,并向所述区块链一体机返回对应于所述相关操作的执行结果。
根据本说明书一个或多个实施例的第三方面,提出了一种基于云计算的区块链数据处理装置,包括:
请求发起单元,使区块链一体机向云服务器发起密文请求,所述密文请求被所述云服务器在维护的可信执行环境内解密得到明文请求,所述明文请求中包含针对待处理数据的相关信息;
结果获取单元,使所述区块链一体机获取所述云服务器返回的执行结果,所述执行结果由所述云服务器根据所述相关信息执行针对所述待处理数据的相关操作得到。
根据本说明书一个或多个实施例的第四方面,提出了一种基于云计算的区块链数据处理装置,包括:
请求获取单元,使云服务器获取区块链一体机发起的密文请求,并在维护的可信执行环境内解密所述密文请求得到明文请求,以读取所述明文请求中包含的针对待处理数据的相关信息;
执行单元,使所述云服务器根据所述相关信息执行针对所述待处理数据的相关操作,并向所述区块链一体机返回对应于所述相关操作的执行结果。
根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面或第二方面所述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面或第二方面所述方法的步骤。
附图说明
图1是一示例性实施例提供的一种基于云计算的区块链数据处理系统的架构图。
图2是一示例性实施例提供的一种区块链一体机侧的基于云计算的区块链数据处理方法的流程图。
图3是一示例性实施例提供的一种调用云服务器执行链下计算任务的交互图。
图4是一示例性实施例提供的一种待加入区块链一体机申请加入目标区块链网络的交互图。
图5是一示例性实施例提供的一种云服务器侧的基于云计算的区块链数据处理方法的流程图。
图6是一示例性实施例提供的一种设备的结构示意图。
图7是一示例性实施例提供的一种基于云计算的区块链数据处理装置的框图。
图8是一示例性实施例提供的另一种基于云计算的区块链数据处理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
在区块链技术的发展早期,用户基本上都是将自身持有的PC、笔记本电脑等加入区块链网络,成为区块链网络中的区块链节点。此时可以称之为区块链网络的1.0架构时代,不仅加入区块链网络的行为是用户的自主行为,而且用户还需要自主运维,譬如对自身加入区块链网络的PC等设备进行维护和配置等。随着区块链技术的不断发展,尤其是用户对于高性能、高可用基础设施的需求不断增强,区块链网络发展为基于云服务的2.0架构时代。在2.0架构时代,Blockchain-as-a-Service(BaaS)服务为区块链快速部署、技术落地提供了快速便捷的解决方案,并支持了大量区块链服务项目。BaaS服务通常建立在公有云或者私有云这类基础设施基础上,提供强大部署能力的同时,引入了较重的基础设施依赖。而区块链作为一个典型的分布式计算技术,并不是所有节点都可以迁移到云上,而需要进行私有化部署。私有化部署带来的额外技术迁移和运维成本导致实际落地过程中会有技术接口不统一,部署维护成本高的问题。因此,为了满足用户在区块链网络的私有化、安全性等方面的需求,需要对区块链网络实现进一步的架构升级,从而实现基于区块链一体机的3.0架构时代。
区块链一体机可以实现软硬一体化。发布方在发布区块链一体机的同时,不仅向用户提供该区块链一体机的硬件设备,并且该区块链一体机还集成了针对该硬件设备实现深度优化的软件配置,从而实现了上述的软硬一体化。
针对区块链一体机可以实现硬件优化。例如,区块链一体机上可以部署专用的智能合约处理芯片,譬如该智能合约处理芯片可以为FPGA(Field Programmable GateArray,现场可编程门阵列)芯片或其他类型的芯片,以提升针对智能合约的处理效率。智能合约处理芯片可以部署有硬件信任根密钥,譬如该硬件信任根密钥可以由发布方预先烧录至该智能合约处理芯片中,且发布方能够获知该硬件信任根密钥对应的公钥(比如该公钥被公开)。因此,智能合约处理芯片可以向发布方发送协商信息,并通过硬件信任根密钥对该协商信息进行签名,使得发布方可以基于相应的公钥进行验签;以及,在验签成功后,可以确保智能合约处理芯片和发布方分别基于上述协商信息协商得到相同的密钥。协商的密钥可以包括文件部署密钥,发布方可以基于该文件部署密钥将区块链节点所需的二进制镜像文件加密传输至智能合约处理芯片,而智能合约处理芯片可以基于该文件部署密钥实现解密并部署二进制镜像文件。协商的密钥可以包括业务秘密部署密钥,发布方可以基于该业务秘密部署密钥将区块链节点的节点私钥、业务根密钥等加密传输至智能合约处理芯片,而智能合约处理芯片可以基于该业务秘密部署密钥获取并部署节点私钥、业务根密钥等,以用于满足区块链场景下的隐私交易需求。例如,节点私钥对应于节点公钥,客户端可以通过节点公钥对区块链交易进行加密传输,而区块链节点可以通过节点私钥进行解密。而业务根密钥为对称密钥,可以用于对合约代码、合约状态的取值等业务数据进行加密存储。业务根密钥也可能并不直接被使用,智能合约处理芯片可以通过该业务根密钥的衍生密钥进行加解密,以降低业务根密钥的安全风险。通过对节点私钥、业务根密钥(或其衍生密钥)的可靠管理,并且确保数据除了被智能合约处理芯片进行处理的过程之外均处于加密状态,智能合约处理芯片实际上在区块链一体机上形成了硬件的TEE(TrustedExecution Environment,可信执行环境),确保交易、合约代码、合约状态等需要隐私保护的数据不会发生隐私泄露。
再例如,区块链一体机上可以部署智能网卡。智能网卡除了实现传统网卡的功能之外,还可以替代或协助区块链一体机的CPU完成部分功能,以实现对CPU的计算卸载。尤其是,可以将网络I/O密集型的操作由CPU转移至智能网卡执行,这样CPU本身就可以处理更多的计算密集型操作,比如交易处理、存储处理等。由于智能网卡相比于区块链一体机上的其他部件(如CPU)而言,无论是在物理层面上或是逻辑层面上都更靠近网络,使得智能网卡总是优先拿到网络中传输的数据,因而在不涉及或少量涉及存储访问的情况下,通过智能网卡来处理这些数据能够实现相对更高的处理效率、相对更小的延迟、相对更大的吞吐量,从而以相对较小的成本达到比较高的性能收益。例如,在共识算法中,除了网络状态发生变化、节点发生增删、共识配置发生变化等情况下,几乎不需要访问存储,因而可以由智能网卡来完成共识操作,而只需要将共识结果告知CPU即可、无需CPU直接参与共识过程,能够显著提升共识效率。类似地,由智能网卡转发交易、由新增区块链节点上的智能网卡实现区块同步等,同样可以达到类似的效果,此处不再赘述。此外,智能网卡在收到交易后,可以通过与历史交易进行比较,比如从交易的发送方信息、目的地址、时间戳、哈希值等字段进行比较,从而识别和过滤掉重放交易。智能网卡还可以对收到的交易进行内容解析,从而过滤掉非法交易或预定义的不想处理的交易等,作为对交换机实现的基于二层或三层的报文过滤的补充。
又例如,区块链一体机上可以部署密码加速卡,也可称为高速密码卡。密码加速卡可以实现全加密内存,并通过硬件加固以抵御侧信道攻击,还可以针对探针、激光等手段实现物理防护,具有极高的安全性。举例而言,区块链一体机上使用的密码加速卡可以具有国密二级资质、国密三级资质或其他资质。当部署有密码加速卡时,上文所述的硬件信任根密钥可以被维护于该密码加速卡中,并且密码加速卡可以基于该硬件信任根密钥实现签名操作,并替代或协助智能合约处理芯片完成上文所述的密钥协商等操作;类似地,密码加速卡可以用于维护公钥,使得密码加速卡可以基于维护的公钥实现签名的验证操作。总之,可以将区块链一体机上与密钥管理、加解密、签名验签等相关的至少一部分操作交由密码加速卡,从而既可以获得极高的安全性,又可以对区块链一体机的CPU或上述的智能合约处理芯片等实现性能卸载,以提升处理效率。
针对区块链一体机可以实现软件优化。例如,区块链一体机可以内置证书授权服务,可以实现自动化的证书签发与节点身份认证,可以自动建链和区块链节点的自动加入,从而实现区块链一体机的即插即用。那么,用户可以快速实现区块链一体机的部署。比如,可在多台区块链一体机之间快捷地建立私有型的区块链网络,从而满足用户私有化、安全性和隐私性等方面的需求。又如,区块链一体机可以集成标准化的云上服务接口,使得区块链一体机可以自动对接云上服务,从而实现区块链一体机与云端部署的云服务器之间混合部署,构建混合型的区块链网络。其中,云服务器可作为相对于由区块链一体机构建的区块链网络的链下节点,也可作为云端的区块链节点与区块链一体机共同构建区块链网络。区块链一体机还可以集成标准化的跨链服务接口,使得区块链一体机可以基于标准化的跨链协议或标准化的跨链服务实现跨链服务,极大地扩展了区块链一体机的应用场景,满足用户的跨链需求,比如实现不同区块链网络之间的跨链数据交互,再比如实现区块链网络与链下计算节点之间的跨链数据交互(譬如由链下计算节点为区块链节点分担计算任务等)等。
针对区块链一体机与云服务器混合部署的场景,本说明书提供一种基于云计算的区块链数据处理方案。下面结合附图进行说明。
请参见图1,图1是一示例性实施例提供的一种基于云计算的区块链数据处理系统的架构图。如图1所示,区块链网络10可包括区块链一体机11、区块链一体机12、区块链一体机13和区块链一体机14,共4台区块链一体机。当然,本说明书并不对区块链一体机的数量加以限制。其中,区块链一体机11~14均连接至交换机15,使得区块链一体机11~14实际上接入了同一局域网。除此之外,区块链网络10还可接入云上服务(比如为上述BaaS服务),比如接入云服务器20;当然,还可接入多个云服务器,本说明书并不对云服务器的数量加以限制。通过将区块链网络10与云上服务对接,使得云上服务可通过高性能的云服务器和云计算向区块链网络10提供高性能、高可用的基础设施。
请参见图2,图2是一示例性实施例提供的一种区块链一体机侧的基于云计算的区块链数据处理方法的流程图。如图2所示,该方法可以包括以下步骤:
步骤202,区块链一体机向云服务器发起密文请求,所述密文请求被所述云服务器在维护的可信执行环境内解密得到明文请求,所述明文请求中包含针对待处理数据的相关信息。
在一实施例中,为了保证区块链一体机接入云端后的数据安全性,可在云服务器上创建TEE。区块链一体机以密文的形式向云服务器发起请求,进而由云服务器在自身维护的TEE内解密密文请求得到明文请求,从而获取明文请求中包含的数据。
TEE是基于 CPU 硬件的安全扩展,且与外部完全隔离的可信执行环境。TEE最早是由Global Platform提出的概念,用于解决移动设备上资源的安全隔离,平行于操作系统为应用程序提供可信安全的执行环境。目前工业界十分关注TEE的方案,几乎所有主流的芯片和软件联盟都有自己的TEE解决方案,比如软件方面的TPM(Trusted Platform Module,可信赖平台模块)以及硬件方面的Intel SGX(Software Guard Extensions, 软件保护扩展)、ARM Trustzone(信任区)和AMD PSP(Platform Security Processor,平台安全处理器)等。比如,可通过Intel SGX(以下简称SGX)或上述FPGA的方式来部署TEE。
以Intel SGX(以下简称SGX)技术为例。云服务器可以基于SGX技术创建enclave(围圈或飞地),以作为用于响应区块链一体机发起的请求的TEE。其中,云服务器利用CPU中新增的处理器指令,在内存中可以分配一部分区域 EPC(Enclave Page Cache,围圈页面缓存或飞地页面缓存),以用于驻留上述的enclave。上述EPC对应的内存区域被CPU内部的内存加密引擎MEE(Memory Encryption Engine)加密,该内存区域中的内容(enclave中的代码和数据)只有在CPU内核中才能够被解密,且用于加解密的密钥只有在EPC启动时生成并存储在CPU中。可见,enclave的安全边界只包含其自身和CPU,无论是特权或非特权软件都无法访问enclave,即便是操作系统管理员和VMM(virtual machine monitor,虚拟机监视器;或称为,Hypervisor)也无法影响enclave中的代码和数据,因而具有极高的安全性,并且在上述安全性保障的前提下,CPU能够在enclave中对明文形式的请求进行处理,具有极高的运算效率,从而兼顾了数据安全性和计算效率。
步骤204,所述区块链一体机获取所述云服务器返回的执行结果,所述执行结果由所述云服务器根据所述相关信息执行针对所述待处理数据的相关操作得到。
在区块链一体机作为区块链节点的情况下,可通过预言机机制实现将数据从链上传递至链下或者从链下传递至链上的操作。本说明书中将预言机合约与预言机服务器之间的配合机制称为预言机机制。具体而言,区块链一体机可通过调用(比如,创建一笔调用预言机合约的交易)预言机合约生成包含密文请求的事件,预言机服务器可监听预言机合约生成的事件,那么在预言机服务器监听到包含密文请求的事件时,从该事件中读取密文请求,从而将密文请求发送至云服务器。类似的,云服务器可将执行结果发送至预言机服务器,由预言机服务器将执行结果返回至预言机合约,从而由区块链一体机获取该执行结果。
在一实施例中,由区块链一体机来构建区块链网络,而云服务器相对于区块链网络为链下节点。基于区块链网络的去中心化架构,使得区块链上的每笔区块链交易都需要在区块链网络内的所有区块链节点上执行,以确保每个区块链节点所维护的区块链账本数据一致。如果交易逻辑较为简单,比如以比特币为例,区块链交易仅用于实现转账操作,此时即便区块链交易需要在所有区块链节点都执行,也不会导致过多的资源消耗。但是,如果区块链提供了智能合约的功能,而区块链交易调用了智能合约,那么情况可能大不相同。区块链上的智能合约是在区块链系统上可以被交易触发执行的合约,智能合约可以通过代码的形式定义。
以以太坊为例,支持用户在以太坊网络中创建并调用一些复杂的逻辑,这是以太坊区别于比特币区块链技术的最大挑战。以太坊作为一个可编程区块链的核心是以太坊虚拟机(EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,这意味着可以通过它实现各种复杂的逻辑。用户在以太坊中发布和调用的智能合约就是在EVM上运行的。实际上,虚拟机直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”)。智能合约分为部署和调用两个阶段。
在部署阶段,用户将一个包含创建智能合约信息的交易发送至以太坊网络,该交易的data字段包含智能合约的代码(如字节码),该交易的to字段为空。以太坊网络中的各个节点分别通过EVM执行这个交易,并生成对应的合约实例。在节点间通过共识机制达成一致后,上述交易对应的智能合约创建成功,区块链上出现一个与该智能合约对应的合约账户,该合约账户拥有一个特定的合约地址,合约代码(即智能合约的代码)或合约代码的哈希值保存在该合约账户中,该合约代码用于控制相应的智能合约的行为。
在调用阶段,用户(可以与部署智能合约的用户相同或不同)将一个用于调用智能合约的交易发送到以太坊网络,该交易的from字段是该用户对应的外部账户的地址,to字段是所需调用的智能合约的合约地址,data字段包含调用智能合约的方法和参数。在节点间通过共识机制达成一致后,上述交易声明调用的智能合约以规定的方式在以太坊网络的每个节点上独立执行,所有执行记录和数据都保存在区块链上,所以当交易完成后,区块链上就保存了无法篡改、不会丢失的交易凭证。
如前所述,EVM是一个图灵完备的虚拟机;类似地,其他区块链也可以采用其他类型的虚拟机,比如WASM(WebAssembly)虚拟机等。总之,当交易调用的智能合约用于实现相对复杂的逻辑时,节点通过虚拟机执行该智能合约的代码的过程会消耗相对较多的计算资源,并且由于区块链网络内的所有节点都需要执行该智能合约的代码,因此随着节点数量的增加会导致计算资源的消耗量成倍增长。因此,虽然结合TEE技术可以相对减少单个区块链节点的资源消耗、加快交易执行效率,但就整个区块链网络而言,仍然会造成极大的资源消耗和浪费。
针对上述问题,可在云端部署云服务器作为相对于区块链网络的链下节点,从而将原本需要在所有区块链节点上执行的计算操作转移至链下节点处执行,区块链节点只需要从链下节点处获取计算结果并基于该计算结果更新区块链账本数据即可,并且可以基于可验证计算(Verifiable Computation)技术证明上述的计算结果确实是在TEE内按照预期执行,而云服务器作为链下节点,并不需要如区块链节点一样由所有的云服务器执行相同的计算操作,进而可在确保可靠性的同时,降低链上的资源消耗。如前所述,通过在区块链节点部署智能合约,使得区块链节点可以执行该智能合约的代码以实现相应的计算需求;类似地,可以将用于执行计算任务的代码部署在链下节点处,使得链下节点可以执行代码以实现相应的计算需求。为了便于理解,本说明书中将部署于区块链节点的合约称为链上合约、将部署于链下节点的合约称为链下合约;当然,无论是链上合约还是链下合约,其本质都是一段可以在虚拟机内执行的代码。
基于云服务器上创建有TEE,可在云服务器上预先部署链下合约,并在该云服务器创建的TEE内部署WASM虚拟机。那么在向云服务器发起一基于WASM程序的计算任务时,云服务器可将链下合约读入TEE内并编译成WASM字节码,以WASM虚拟机作为执行引擎,将编译得到的WASM字节码在WASM虚拟机中执行。在该场景下,上述密文请求(或明文请求)为调用链下合约的请求,上述待处理数据为待计算数据,相关信息包括待计算数据和用于计算该待计算数据的链下合约的合约地址。那么,云服务器可根据合约地址确定出自身部署的链下合约,并将待计算数据和确定出的链下合约读入TEE内,并将该链下合约编译成字节码,从而通过部署于TEE内的执行引擎执行该字节码以对待计算数据进行计算。
为了便于理解,下面结合举例和图3对调用云服务器执行链下计算任务的过程进行详细说明。
请参见图3,图3是一示例性实施例提供的一种调用云服务器执行链下计算任务的交互图。如图3所示,该交互过程可以包括以下步骤:
步骤302,区块链一体机生成合约验证事件。
在本实施例中,区块链一体机作为区块链网络中的区块链节点,在调用链下的云服务器执行计算任务之前,可先验证部署于云服务器上的链下合约是否可信。而对于区块链节点与链下的云服务器之间,可通过预言机机制来实现数据传递。
步骤304,预言机服务器监听合约验证事件。
步骤306,预言机服务器向云服务器发送挑战信息。
步骤308,云服务器获取所部署链下合约的合约信息。
步骤310,云服务器向预言机服务器返回远程证明报告和待验证合约信息。
步骤312,预言机服务器向区块链一体机返回远程证明报告和待验证合约信息。
在本实施例中,区块链一体机可调用预先部署的预言机合约,该预言机合约可以生成包含该挑战信息的合约验证事件,而预言机服务器可以通过监听预言机合约产生的事件,从而获取上述挑战信息,并将挑战信息通过链下渠道发送至云服务器。云服务器在接收到挑战信息后,可分别获取针对自身部署的TEE的远程证明报告和针对自身部署的链下合约的合约信息(作为待验证合约信息)。
以Intel SGX技术为例,TEE为云服务器上创建的用于实现链下计算的enclave,远程证明过程还涉及到云服务器上另一个特殊的enclave,即quoting enclave(简称QE),QE是由英特尔提供并签名的架构型enclave(Architectural Enclave)。上述enclave首先需要生成一用于本地认证的REPORT(报告)结构,并由QE基于该REPORT结构验证该enclave是否与自身处于同一平台上,而后由QE将该REPORT结构封装为一结构体(即自荐信息),并使用EPID(enhanced privacy identification) 密钥进行签名。EPID密钥不仅代表云服务器这一平台,还代表云服务器的底层硬件的可信度,还可以绑定处理器固件的版本等信息,并且只有QE才能访问到EPID密钥,以用于对上述的结构体进行签名。在SGX技术中,上述的认证服务器可以为英特尔公司提供的IAS(Intel Attestation Service)服务器,云服务器向IAS服务器发送经过签名的上述结构体,使得IAS服务器可以对签名进行验证,并向云服务器返回相应的远程证明报告。
云服务器在创建TEE后,产生用于实现远程证明的自荐信息,该自荐信息可以用于锚定和固化TEE的信息,使得最终得到的包含该自荐信息的远程证明报告可以用于表征TEE的状态,并用于验证该TEE是否可信。例如,自荐信息中可以包含第一待检验哈希值,该第一待检验哈希值为TEE中预设信息的哈希值,比如该预设信息可以包括TEE内部署的所有代码、该TEE的开发者的公钥等。以Intel SGX技术为例,对应于TEE内部署的所有代码所生成的哈希值为MREnclave,对应于TEE的开发者的公钥所生成的哈希值为MRSigner,即第一待检验哈希值可以包括MREnclave和MRSigner。
仍以Intel SGX技术为例。如前所述,云服务器向IAS服务器发送经过签名的结构体后,由IAS服务器根据所维护的公钥集合进行签名验证,并向云服务器返回远程证明报告(即AVR报告),该远程证明报告中包含:结构体和签名验证结果,并且IAS服务器采用自身持有的私钥对该远程证明报告进行签名。
相应地,区块链一体机在获取远程证明报告后,可以首先根据IAS服务器的公钥对该远程证明报告进行签名验证,如果验证通过则表明该远程证明报告确实由IAS服务器生成,且在数据传输过程中未被篡改或丢失数据。区块链一体机可以通过任意途径获得IAS服务器的公钥,譬如远程证明报告被提供至区块链一体机时,还可以关联提供IAS的证书链,使得区块链一体机可以从该证书链中提取IAS服务器的公钥。然后,区块链一体机可以从远程证明报告中提取结构体和签名验证结果。区块链一体机可以首先查看签名验证结果,如果签名验证结果为通过验证,表明云服务器的CPU持有由Intel提供的私钥,因而TEE建立在可靠的硬件平台上,可以继续执行其他验证操作;如果签名验证结果为未通过验证,区块链一体机可以判定云服务器不可靠,无需继续其他验证操作。然后,区块链一体机可以从结构体内提取上述的哈希值MREnclave和MRSigner,即待检验MREnclave和待检验MRSigner;同时,区块链一体机预先获得了TEE的上述预设信息的第一标准哈希值,比如为MREnclave和MRSigner的可信值(以下称之为可信MREnclave和可信MRSigner),并将待检验MREnclave与可信MREnclave进行比较、将待检验MRSigner与可信MRSigner进行比较。那么,区块链一体机可以将“待检验MREnclave与可信MREnclave一致,且待检验MRSigner与可信MRSigner一致”作为确认TEE可信的前提条件;换言之,如果待检验MREnclave与可信MREnclave不一致,或者待检验MRSigner与可信MRSigner不一致,区块链一体机就判定该云服务器的TEE不可信,而如果区块链一体机设定的所有前提条件都被满足,就可以确认该云服务器的TEE可信。此外,区块链一体机对于签名验证结果进行验证的操作,与针对待检验MREnclave和待检验MRSigner进行验证的操作之间,并不存在必然的先后顺序,两者之间可以完全独立。
步骤314,区块链一体机进行签名验证和合约信息验证。
区块链一体机在根据远程证明报告确定云服务器的TEE可信的情况下,获取部署于云服务器处的链下合约的待验证合约信息,待验证合约信息被云服务器在TEE内采用自身的身份私钥进行签名,该身份私钥由云服务器在TEE内生成并维护于TEE内。比如,云服务器可将部署的链下合约读入TEE内并采用自身的身份私钥进行签名。
区块链一体机采用云服务器的身份公钥对待验证合约信息进行签名验证,以及根据链下合约的合约信息对待验证合约信息进行合约信息验证。其中,身份公钥处于公开状态,比如云服务器向外公开发布身份公钥以由区块链一体机获取。同时,链下合约的合约信息也可处于公开状态,比如链下合约的部署方向外公开发布合约信息以由区块链一体机获取。其中,合约信息可以包括链下合约的名称、描述、版本号、字节码哈希值、合约身份公钥等信息,本说明书并不对此进行限制。
在签名验证和合约信息验证通过的情况下,区块链一体机可确定区块链一体机在通过预言机机制对链下合约发起调用时,该链下合约由云服务器在TEE中执行。本说明书中验证链下合约的过程为先验证云服务器的TEE可信,那么在验证云服务器的TEE可信的情况下,若验证签名得到云服务器提供的待验证合约信息确实由云服务器的身份私钥(维护在TEE内)签名,则可确定出当前挑战的链下合约为运行在云服务器的TEE内的链下合约,然后在待验证合约信息进一步通过验证的情况下,则说明运行于云服务器TEE内的链下合约的合约信息正确,从而可最终判定云服务器中部署的链下合约可信,可按照预期执行计算任务。
步骤316,客户端向区块链一体机提交交易。
在一种情况下,客户端提交的交易中直接包含经过加密的调用请求,那么区块链一体机可以在自身维护的TEE内解密交易,得到密文请求,然后区块链一体机可以通过预言机机制将该密文请求传输至云服务器。
在另一种情况下,客户端提交的交易中包含初始数据(或初始数据的描述信息,比如该描述信息可以为存储地址),那么区块链一体机可以通过执行链上合约对初始数据进行处理以获得相应的入参数据(即待处理数据),链上合约被执行后可以将链下合约的合约地址和入参数据打包为调用请求并对该调用请求进行加密。或者,客户端生成的交易中可以包含初始数据的描述信息。由于客户端可以不直接将入参数据添加在交易中,客户端对于调用链下合约执行链下计算的过程是透明的,客户端只需要获得反馈的计算结果即可,而不需要关注调用的合约处于链上还是链下。
需要说明的是,针对调用请求的加密传输,可以采用对称加密、非对称加密或对称加密与非对称加密相结合的形式,从而确保传输过程中不会造成调用请求的内容泄露。该部分内容可参考相关技术中的应用,在此不再赘述。
步骤318,区块链一体机生成合约调用事件。
步骤320,预言机服务器监听合约调用事件。
步骤322,预言机服务器向云服务器发送调用请求。
在本实施例中,区块链一体机在通过上述步骤验证云服务器上部署的链下合约可信后,将计算任务转移至云服务器上执行。具体的,区块链一体机通过预言机机制向云服务器发起调用请求,云服务器通过预言机机制反馈计算结果。比如,区块链一体机生成合约调用事件,该合约调用事件中包含调用请求。预言机服务器在监听到合约调用事件时,读取合约调用事件中包含的调用请求,并发送至云服务器以由云服务器在维护的TEE内解密以进行响应。
步骤324,云服务器调用链下合约执行计算任务。
步骤326,云服务向预言机服务器返回计算结果。
步骤328,预言机服务器向区块链一体机返回计算结果。
区块链一体机(作为区块链节点)在获取计算结果后,可在区块链网络中广播该计算结果,以由所有区块链节点获取计算结果,进而根据该计算结果更新区块链账本。
步骤330,区块链一体机向客户端返回计算结果。
在上述实施例中,云服务器作为链下节点代替区块链节点执行计算任务。除此之外,云服务器还可作为跨链代理服务节点,与多个不同的区块链网络对接,用于实现跨链数据访问。
在该场景下,上述密文请求(或明文请求)为跨链数据访问请求,上述待处理数据为待访问数据,存证于区别于所述区块链一体机所处区块链网络的其他区块链网络中,所述相关信息包括所述待处理数据的地址信息。那么,云服务器作为跨链代理服务节点,可响应于跨链数据访问请求,根据地址信息向该其他区块链网络进行跨链访问,以获取该待访问数据,并将该待访问数据返回至区块链一体机。其中,云服务器作为跨链中继,可以根据相关技术中的跨链技术(如侧链技术、公证人技术等,本说明书并不对此进行限制)来跨链访问区块链网络中的数据,在此不再赘述。
在本说明书的基于云计算的区块链数据处理方案中,云服务器除了作为链下节点和跨链代理服务节点之外,还可作为CA(Certificate Authority,证书授权)授权节点,向允许加入区块链网络的区块链一体机签发数字证书。需要说明的是,云服务器可以同时兼容上述链下节点、跨链代理服务节点和CA授权节点三种角色的功能,也可分别由不同的云服务器来分别实现上述三种不同的功能。换言之,云服务器可以担任上述链下节点、跨链代理服务节点和CA授权节点三种角色中的至少之一。
在云服务器作为CA授权节点的场景下,上述待处理数据包括申请加入区块链网络的区块链一体机的第二身份公钥,上述相关信息包括该区块链一体机的第二描述信息。
其中,云服务器可以内置证书授权服务,即CA服务,相当于可以将云服务器配置为区块链网络的CA证书授权中心,以用于自主实现证书签发。云服务器在启动CA服务后,可以基于该CA服务首先为自身生成根证书(Root CA Cert),并在区块链网络内广播该根证书,使得区块链网络内的区块链节点可获取该根证书。
CA服务在签发证书时,需要使用到云服务器的身份密钥。假定云服务器创建了第一身份密钥,该第一身份密钥具体包括第一身份私钥和相应的第一身份公钥。进而,云服务器将第一身份私钥提供至CA服务,使CA服务通过第一身份私钥对第一身份公钥和云服务器的第一描述信息进行签名,以生成上述的根证书。由于云服务器是用自身的私钥对自身的公钥进行签名生成的数字证书,因而云服务器对应的数字证书为根证书或称为自签名证书。
云服务器需要妥善维护第一身份私钥,但可以随意公开第一身份公钥。当然,第一身份公钥实际上就包含于根证书中,因而区块链网络中的区块链节点在收到根证书后,可以从该根证书中获取第一身份公钥,并通过该第一身份公钥对该根证书进行签名验证,如果验证成功,则区块链节点可以确定该根证书有效。类似的,未加入区块链网络的区块链一体机可获取云服务器的根证书(比如,向云服务器请求获取,或者通过云服务器的广播获取),从该根证书中获取第一身份公钥,并通过该第一身份公钥对该根证书进行签名验证,如果验证成功,则确认云服务器为CA授权节点,进而向云服务器申请加入区块链网络并获取相应的数字证书。
与云服务器相类似的,申请加入区块链网络的区块链一体机(以下称为待加入区块链一体机)也创建自身的身份密钥。假定该待加入区块链一体机创建了第二身份密钥,该第二身份密钥具体包括第二身份私钥和第二身份公钥,而待加入区块链一体机发起的认证申请可以包含该待加入区块链一体机的第二身份公钥(即上述待处理数据)和该待加入区块链一体机的描述信息(即上述相关信息)。待加入区块链一体机需要妥善维护第二身份私钥。相应的,云服务器将收到的认证申请提供至CA服务后,CA服务可以通过上述的第一身份私钥对第二身份公钥、待加入区块链一体机的第二描述信息和云服务器的第一描述信息进行签名,以生成待加入区块链一体机对应的数字证书。
其中,由于云服务器对应的数字证书由其自身的第一身份私钥进行签名,因而可以直接从该数字证书中获取第一身份公钥并完成签名验证。区块链一体机对应的数字证书同样由第一区块链一体机的第一身份私钥进行签名,但该数字证书中包含的公钥为该区块链一体机对应的第二身份公钥,需要根据该数字证书所含的云服务器的第一描述信息获取根证书,并通过根证书所含的第一身份公钥验证区块链一体机对应的数字证书所含的签名,故而在云服务器对应的数字证书、区块链一体机对应的数字证书之间形成了链式关系,即证书链,其中云服务器对应的数字证书处在“根”的位置,因而其数字证书可以称为根证书。
云服务器在生成待加入区块链一体机的数字证书之前,可对待加入区块链一体机的第二描述信息进行验证,从而在验证通过的情况下生成数字证书,即通过对第二描述信息进行验证来判断是否允许待加入区块链一体机加入区块链网络。而在验证未通过的情况下,则表明待加入区块链一体机认证失败,不执行为待加入区块链一体机生成数字证书的操作。
除此之外,还可由当前区块链网络中的区块链节点参与到判断是否允许待加入区块链一体机加入区块链网络的过程中。作为一示例性实施例,云服务器可向目标区块链网络发送待加入区块链一体机的第二描述信息,以由目标区块链网络中的区块链节点根据第二描述信息来确定是否允许待加入区块链一体机加入目标区块链网络,从而在确定为允许的情况下,基于第二描述信息生成针对待加入区块链一体机的申请加入确认消息并返回至云服务器。那么,云服务器可在获取到该申请加入确认消息的情况下,为待加入区块链一体机生成数字证书。同时,目标区块链网络中的区块链节点可保存待加入区块链一体机的第二描述信息,以在后续待加入区块链一体机加入目标区块链网络时用于对该待加入区块链一体机提供的数字证书进行验证。例如,区块链节点可维护节点信息列表,将允许加入目标区块链网络的区块链一体机的描述信息记录至节点信息列表中。或者,云服务器可通过提交交易的形式向目标区块链网络发送待加入区块链一体机的第二描述信息,从而使得待加入区块链一体机的第二描述信息记录在目标区块链网络的区块中。
可见,云服务器为待加入区块链一体机生成数字证书的前提条件可以包括:云服务器对加入区块链一体机的第二描述信息验证通过,和/或,目标区块链网络基于云服务器发送的第二描述信息生成针对待加入区块链一体机的申请加入确认消息。当然,该前提条件的具体形式可根据实际需求灵活选取,本说明书并不对此进行限制。
通过上述生成数字证书的方式,CA服务签发的数字证书可以用于表明:该数字证书对应的设备已经通过了CA服务的身份认证。因此,通过对某一区块链一体机提供的数字证书进行验证,可以在验证通过后将该区块链一体机确定为区块链网络内的区块链节点。换言之,任一区块链一体机的数字证书被目标区块链网络中的任一区块链节点采用所述根证书验证通过,被该任一区块链节点作为判定该任一区块链一体机加入该目标区块链网络的前提条件。
具体而言,区块链网络内的区块链节点可接收待加入区块链一体机发送的待验证数字证书,并根据根证书所含的第一身份公钥对该待验证数字证书进行签名验证,从而在签名验证成功的情况下确定该待验证数字证书由云服务器上启动的CA服务签发。进一步的,该待验证数字证书中包含待加入区块链一体机的第二描述信息,而区块链网络内的区块链节点保存有已允许加入区块链网络的区块链一体机的描述信息,从而可判断该待验证数字证书中包含的第二描述信息是否属于已允许加入区块链网络的区块链一体机的描述信息,并在待验证数字证书中包含的第二描述信息属于已允许加入区块链网络的区块链一体机的描述信息时(此时针对待验证数字证书的验证通过),将该待验证数字证书对应的区块链一体机确定为区块链网络内的区块链节点。
为了便于理解,下面结合举例和图4对待加入区块链一体机申请加入目标区块链网络的过程进行详细说明。
请参见图4,图4是一示例性实施例提供的一种待加入区块链一体机申请加入目标区块链网络的交互图。如图4所示,该交互过程可以包括以下步骤:
步骤402,云服务器42启动CA服务。
步骤404,云服务器42生成并广播根证书。
云服务器42可以生成身份密钥,比如第一身份密钥,该第一身份密钥可以包括第一身份私钥和第一身份公钥。然后,云服务器42通过CA服务生成根证书。具体的,CA服务可以通过第一身份私钥对第一身份公钥和云服务器42的描述信息进行签名,以生成对应于云服务器42的数字证书,即上述的根证书。云服务器42在生成根证书后,向目标区块链网络广播该根证书,以由目标区块链网络中的各个区块链节点保存该根证书。其中,云服务器42的描述信息可以包括ID信息、产品序列号、IP地址、MAC地址等,本说明书并不对此进行限制。
以下以目标区块链网络中的区块链节点43和区块链节点44为例进行说明。
步骤406A,区块链节点43验证并保存根证书。
步骤406B,区块链节点44验证并保存根证书。
区块链节点43和区块链节点44可以通过该根证书所含的第一身份公钥进行签名验证,并在签名验证成功的情况下确定该根证书通过验证,从而保存该根证书。
步骤408,区块链一体机41生成并向云服务器42发送认证申请。
区块链一体机41作为待加入区块链一体机,通过生成并发送认证申请,请求云服务器42上的CA服务为该区块链一体机41签发数字证书。其中,与云服务器42相类似的,区块链一体机41可以生成身份密钥,比如第二身份密钥,该第二身份密钥可以包括第二身份私钥和第二身份公钥。区块链一体机41生成的认证申请可以包括第二身份公钥和该区块链一体机41的描述信息。其中,区块链一体机的描述信息可以包括ID信息、产品序列号、IP地址、MAC地址等,只要能够用于证明该区块链一体机的身份即可,本说明书并不对此进行限制。
步骤410,云服务器42广播区块链一体机41的描述信息。
步骤412A,区块链节点43向云服务器42返回申请加入确认消息。
步骤412B,区块链节点44向云服务器42返回申请加入确认消息。
可由当前区块链网络中的区块链节点参与到判断是否允许待加入区块链一体机加入区块链网络的过程中。因此,云服务器42可向目标区块链网络发送区块链一体机41的描述信息,以由目标区块链网络中的区块链节点根据该描述信息来确定是否允许区块链一体机41加入目标区块链网络,从而在确定为允许的情况下,向云服务器42返回相应的申请加入确认消息,以告知云服务器42目标区块链网络同意区块链一体机41加入。同时,目标区块链网络中的区块链节点可保存区块链一体机41的描述信息,以在后续区块链一体机41加入目标区块链网络时用于对区块链一体机41提供的数字证书进行验证。例如,区块链节点可维护节点信息列表,将允许加入目标区块链网络的区块链一体机的描述信息记录至节点信息列表中。比如,该节点信息列表中记录允许加入目标区块链网络的区块链一体机的IP地址,本说明书并不对此进行限制。
在一种情况下,可由目标区块链网络中的主节点来执行确定是否允许区块链一体机41加入目标区块链网络的操作。比如,目标区块链网络中的区块链节点可以通过选举确定出一台或多台主节点。其中,本说明书并不限制所采用的选举规则,比如可以按照接入网络的次序,将前n个接入网络的区块链节点确认为主节点,再比如可以按照IP地址的大小排序,从大到小或从小到大地选取n个确认为主节点的区块链节点,n为正整数。
在另一种情况下,可由目标区块链网络中所有具备记账权的节点来决定是否允许区块链一体机41加入目标区块链网络。以联盟链为例,可由所有的联盟成员共同来决定是否允许区块链一体机41加入目标区块链网络。比如,只有在满足预设比例的联盟成员允许区块链一体机41加入目标区块链网络的情况下,云服务器才能判定为目标区块链网络允许区块链一体机41加入目标区块链网络。当然,预设比例的具体取值可以根据实际情况灵活设定,本说明书并不对此进行限制。
步骤414,云服务器42验证描述信息并生成数字证书。
云服务器42在生成区块链一体机41的数字证书之前,可通过CA服务对区块链一体机41的描述信息进行验证,从而在验证通过的情况下生成数字证书,即通过对区块链一体机41的描述信息进行验证来判断是否允许区块链一体机41加入区块链网络。而在验证未通过的情况下,则表明区块链一体机41认证失败,不执行为区块链一体机41生成数字证书的操作。
具体而言,CA服务可以通过第一身份私钥对第二身份公钥、区块链一体机41的描述信息和云服务器42的描述信息进行签名,以生成对应于区块链一体机41的数字证书。这里,签名时采用的云服务器42的描述信息可能与区块链一体机41的描述信息不一致,譬如可以分别包含不同类型的描述信息,这取决于CA服务所设定的规则。同样,认证申请所含的区块链一体机41的描述信息,可能与签名时采用的区块链一体机41的描述信息不一致,比如签名时采用的描述信息可能仅为认证申请所含描述信息的一部分,尤其是可能排除了部分不适宜公开(如涉及隐私)的描述信息,再比如签名时采用的描述信息可能为认证申请所含描述信息的哈希值,这样使得数字证书能够完全对应于认证申请所含的描述信息,并且可以避免不适宜公开的描述信息被数字证书所公开。
需要说明的是,上述目标区块链网络和云服务器42根据描述信息确定是否允许区块链一体机41加入目标区块链网络的具体方式,可根据实际情况灵活设定,本说明书并不对此进行限制。比如,可通过黑名单(记录不允许加入目标区块链网络的区块链一体机的描述信息)的方式来确定是否允许区块链一体机41加入目标区块链网络。
步骤416,云服务器42向区块链一体机41返回数字证书。
步骤418,区块链一体机41向目标区块链网络广播数字证书。
步骤420A,区块链节点43验证数字证书,添加为区块链节点。
步骤420B,区块链节点44验证数字证书,添加为区块链节点。
以区块链一体机43为例进行说明,区块链节点44与此类似。区块链节点43在接收到区块链一体机41广播的数字证书后,将该数字证书作为待验证数字证书,根据云服务器42的根证书所含的第一身份公钥对该待验证数字证书进行签名验证,从而在签名验证成功的情况下确定该待验证数字证书由云服务器上启动的CA服务签发。进一步的,该待验证数字证书中包含区块链一体机41的描述信息,而区块链一体机43的节点信息列表中记录有已允许加入区块链网络的区块链一体机的描述信息,从而可查询节点信息列表中是否记录有该待验证数字证书中包含的描述信息。当查询出节点信息列表中记录有该待验证数字证书中包含的描述信息时(此时针对待验证数字证书的验证通过),将该待验证数字证书对应的区块链一体机(即区块链一体机41)确定为区块链网络内的区块链节点。
对应于上述区块链一体机侧的实施例,本说明书还提出了云服务器侧的实施例,在区块链一体机侧实施例中所涉及的描述同样可以适用于云服务器侧的实施例,下文中不再对此进行赘述。
相应地,图5是一示例性实施例提供的一种云服务器侧的基于云计算的区块链数据处理方法的流程图。如图5所示,该方法可以包括以下步骤:
步骤502,云服务器获取区块链一体机发起的密文请求,并在维护的可信执行环境内解密所述密文请求得到明文请求,以读取所述明文请求中包含的针对待处理数据的相关信息。
步骤504,所述云服务器根据所述相关信息执行针对所述待处理数据的相关操作,并向所述区块链一体机返回对应于所述相关操作的执行结果。
如前所述,所述云服务器上预先部署有链下合约,所述相关信息包括所述待处理数据和用于处理所述待处理数据的链下合约的合约地址。在该情况下,所述云服务器可先根据所述合约地址确定部署于所述云服务器上的链下合约,并将所述待处理数据和所述链下合约读入所述可信执行环境内;然后,再通过部署于所述可信执行环境内的执行引擎执行所述链下合约以对所述待处理数据进行计算。
如前所述,所述云服务器向所述区块链一体机提供针对所述可信执行环境的远程证明报告,所述远程证明报告由认证服务器对所述云服务器针对所述可信执行环境生成的自荐信息进行验证后生成;所述云服务器向所述区块链一体机提供所述链下合约的待验证合约信息,所述待验证合约信息由所述云服务器在所述可信执行环境内采用自身的身份私钥进行签名,所述身份私钥由所述云服务器维护于所述可信执行环境内;
其中,所述待验证合约信息由所述区块链一体机在根据所述远程证明报告确定所述可信执行环境可信的情况下,采用所述云服务器的身份公钥对所述待验证合约信息进行签名验证,以及根据所述链下合约的合约信息对所述待验证合约信息进行合约信息验证,并在签名验证和合约信息验证均通过的情况下判定所述链下合约可信。
如前所述,所述待处理数据存证于区别于所述区块链一体机所处区块链网络的其他区块链网络中,所述相关信息包括所述待处理数据的地址信息。在该情况下,所述云服务器可根据所述地址信息跨链访问所述其他区块链网络中存证的所述待处理数据。
如前所述,所述云服务器通过所述云服务器的第一身份私钥对所述云服务器的第一身份公钥和所述云服务器的第一描述信息进行签名以生成根证书;
所述待处理数据包括所述区块链一体机的第二身份公钥,所述相关信息包括所述区块链一体机的第二描述信息。在该情况下,所述云服务器可通过第一身份私钥对第二身份公钥、第一描述信息和所述区块链一体机的第二描述信息进行签名,以生成对应于所述区块链一体机的数字证书;其中,任一区块链一体机的数字证书被目标区块链网络中的任一区块链节点采用所述根证书验证通过,被所述任一区块链节点作为判定所述任一区块链一体机加入所述目标区块链网络的前提条件。
如前所述,所述云服务器可对第二描述信息进行验证,以在验证通过的情况下生成所述数字证书。
如前所述,所述云服务器可向所述目标区块链网络发送所述区块链一体机的第二描述信息,以在获取到所述目标区块链网络基于第二描述信息生成的针对所述区块链一体机的申请加入确认消息的情况下,生成所述数字证书。
如前所述,第二描述信息用于对所述区块链一体机的数字证书进行验证。
如前所述,所述云服务器可通过预言机机制来获取区块链一体机发起的密文请求。具体而言,所述云服务器接收预言机服务器发送的从预言机合约处监听到的事件中获取到的密文请求,所述事件由所述区块链一体机通过调用所述预言机合约生成。类似的,所述云服务器向所述预言机服务器返回所述执行结果,所述执行结果由所述预言机服务器传输至所述预言机合约。
图6是一示例性实施例提供的一种设备的示意结构图。请参考图6,在硬件层面,该设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他业务所需要的硬件。处理器602从非易失性存储器610中读取对应的计算机程序到内存608中然后运行,在逻辑层面上形成基于云计算的区块链数据处理装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图7,在一种软件实施方式中,该基于云计算的区块链数据处理装置可以包括:
请求发起单元71,使区块链一体机向云服务器发起密文请求,所述密文请求被所述云服务器在维护的可信执行环境内解密得到明文请求,所述明文请求中包含针对待处理数据的相关信息;
结果获取单元72,使所述区块链一体机获取所述云服务器返回的执行结果,所述执行结果由所述云服务器根据所述相关信息执行针对所述待处理数据的相关操作得到。
可选的,所述云服务器上预先部署有链下合约,所述相关信息包括所述待处理数据和用于处理所述待处理数据的链下合约的合约地址;所述执行结果由所述云服务器通过部署于所述可信执行环境内的执行引擎执行与所述合约地址对应的链下合约以对所述待处理数据进行计算得到。
可选的,还包括:
信息获取单元73,使所述区块链一体机获取针对所述可信执行环境的远程证明报告,所述远程证明报告由认证服务器对所述云服务器针对所述可信执行环境生成的自荐信息进行验证后生成;以及,使所述区块链一体机获取所述链下合约的待验证合约信息,所述待验证合约信息由所述云服务器在所述可信执行环境内采用自身的身份私钥进行签名,所述身份私钥由所述云服务器维护于所述可信执行环境内;
验证单元74,使所述区块链一体机在根据所述远程证明报告确定所述可信执行环境可信的情况下,采用所述云服务器的身份公钥对所述待验证合约信息进行签名验证,以及根据所述链下合约的合约信息对所述待验证合约信息进行合约信息验证,并在签名验证和合约信息验证均通过的情况下判定所述链下合约可信。
可选的,所述待处理数据存证于区别于所述区块链一体机所处区块链网络的其他区块链网络中,所述相关信息包括所述待处理数据的地址信息,所述待处理数据由所述云服务器根据所述地址信息向所述其他区块链网络进行跨链访问得到。
可选的,所述待处理数据包括所述区块链一体机的第二身份公钥,所述相关信息包括所述区块链一体机的第二描述信息;所述装置还包括:
证书获取单元75,使所述区块链一体机获取所述云服务器通过所述云服务器的第一身份私钥对第二身份公钥、所述云服务器的第一描述信息和第二描述信息进行签名得到的对应于所述区块链一体机的数字证书;
其中,任一区块链一体机的数字证书被目标区块链网络中的任一区块链节点采用根证书验证通过,被所述任一区块链节点作为判定所述任一区块链一体机加入所述目标区块链网络的前提条件;所述根证书由所述云服务器通过第一身份私钥对所述云服务器的第一身份公钥和所述云服务器的第一描述信息进行签名得到。
可选的,所述云服务器生成所述数字证书的前提条件包括:所述云服务器对第二描述信息验证通过。
可选的,所述云服务器生成所述数字证书的前提条件包括:所述目标区块链网络基于所述云服务器发送的第二描述信息生成针对所述区块链一体机的申请加入确认消息。
可选的,第二描述信息用于对所述区块链一体机的数字证书进行验证。
可选的,请求发起单元71具体用于:所述区块链一体机通过调用预言机合约生成包含所述密文请求的事件,在所述事件被预言机服务器监听到的情况下,所述事件中包含的密文请求被所述预言机服务器获取并发送至所述云服务器;
结果获取单元72具体用于:获取所述预言机服务器返回至所述预言机合约的执行结果,所述执行结果由所述云服务器返回至所述预言机服务器。
请参考图8,在另一种软件实施方式中,该基于云计算的区块链数据处理装置可以包括:
请求获取单元81,使云服务器获取区块链一体机发起的密文请求,并在维护的可信执行环境内解密所述密文请求得到明文请求,以读取所述明文请求中包含的针对待处理数据的相关信息;
执行单元82,使所述云服务器根据所述相关信息执行针对所述待处理数据的相关操作,并向所述区块链一体机返回对应于所述相关操作的执行结果。
可选的,所述云服务器上预先部署有链下合约,所述相关信息包括所述待处理数据和用于处理所述待处理数据的链下合约的合约地址;所述执行单元82具体用于:
所述云服务器根据所述合约地址确定部署于所述云服务器上的链下合约,并将所述待处理数据和所述链下合约读入所述可信执行环境内;
所述云服务器通过部署于所述可信执行环境内的执行引擎执行所述链下合约以对所述待处理数据进行计算。
可选的,还包括:
信息提供单元83,使所述云服务器向所述区块链一体机提供针对所述可信执行环境的远程证明报告,所述远程证明报告由认证服务器对所述云服务器针对所述可信执行环境生成的自荐信息进行验证后生成;以及,使所述云服务器向所述区块链一体机提供所述链下合约的待验证合约信息,所述待验证合约信息由所述云服务器在所述可信执行环境内采用自身的身份私钥进行签名,所述身份私钥由所述云服务器维护于所述可信执行环境内;
其中,所述待验证合约信息由所述区块链一体机在根据所述远程证明报告确定所述可信执行环境可信的情况下,采用所述云服务器的身份公钥对所述待验证合约信息进行签名验证,以及根据所述链下合约的合约信息对所述待验证合约信息进行合约信息验证,并在签名验证和合约信息验证均通过的情况下判定所述链下合约可信。
可选的,所述待处理数据存证于区别于所述区块链一体机所处区块链网络的其他区块链网络中,所述相关信息包括所述待处理数据的地址信息;所述执行单元82具体用于:
所述云服务器根据所述地址信息跨链访问所述其他区块链网络中存证的所述待处理数据。
可选的,还包括:证书签发单元84,使所述云服务器通过所述云服务器的第一身份私钥对所述云服务器的第一身份公钥和所述云服务器的第一描述信息进行签名以生成根证书;
所述待处理数据包括所述区块链一体机的第二身份公钥,所述相关信息包括所述区块链一体机的第二描述信息;所述执行单元82具体用于:所述云服务器通过第一身份私钥对第二身份公钥、第一描述信息和所述区块链一体机的第二描述信息进行签名,以生成对应于所述区块链一体机的数字证书;其中,任一区块链一体机的数字证书被目标区块链网络中的任一区块链节点采用所述根证书验证通过,被所述任一区块链节点作为判定所述任一区块链一体机加入所述目标区块链网络的前提条件。
可选的,还包括:
验证单元85,使所述云服务器对第二描述信息进行验证,以在验证通过的情况下生成所述数字证书。
可选的,还包括:
发送单元86,使所述云服务器向所述目标区块链网络发送所述区块链一体机的第二描述信息,以在获取到所述目标区块链网络基于第二描述信息生成的针对所述区块链一体机的申请加入确认消息的情况下,生成所述数字证书。
可选的,第二描述信息用于对所述区块链一体机的数字证书进行验证。
可选的,所述请求获取单元81具体用于:所述云服务器接收预言机服务器发送的从预言机合约处监听到的事件中获取到的密文请求,所述事件由所述区块链一体机通过调用所述预言机合约生成;
所述执行单元82具体用于:所述云服务器向所述预言机服务器返回所述执行结果,所述执行结果由所述预言机服务器传输至所述预言机合约。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。