具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
在区块链技术的发展早期,用户基本上都是将自身持有的PC、笔记本电脑等加入区块链网络,成为区块链网络中的区块链节点。此时可以称之为区块链网络的1.0架构时代,不仅加入区块链网络的行为是用户的自主行为,而且用户还需要自主运维,譬如对自身加入区块链网络的PC等设备进行维护和配置等。随着区块链技术的不断发展,尤其是用户对于高性能、高可用基础设施的需求不断增强,区块链网络发展为基于云服务的2.0架构时代。在2.0架构时代,Blockchain-as-a-Service(BaaS)服务为区块链快速部署、技术落地提供了快速便捷的解决方案,并支持了大量区块链服务项目。BaaS服务通常建立在公有云或者私有云这类基础设施基础上,提供强大部署能力的同时,引入了较重的基础设施依赖。而区块链作为一个典型的分布式计算技术,并不是所有节点都可以迁移到云上,而需要进行私有化部署。私有化部署带来的额外技术迁移和运维成本导致实际落地过程中会有技术接口不统一,部署维护成本高的问题。因此,为了满足用户在区块链网络的私有化、安全性等方面的需求,需要对区块链网络实现进一步的架构升级,从而实现基于区块链一体机的3.0架构时代。
区块链一体机可以实现软硬一体化。发布方在发布区块链一体机的同时,不仅向用户提供该区块链一体机的硬件设备,并且该区块链一体机还集成了针对该硬件设备实现深度优化的软件配置,从而实现了上述的软硬一体化。
针对区块链一体机可以实现硬件优化。例如,区块链一体机上可以部署专用的智能合约处理芯片,譬如该智能合约处理芯片可以为FPGA(Field Programmable GateArray,现场可编程门阵列)芯片或其他类型的芯片,以提升针对智能合约的处理效率。智能合约处理芯片可以部署有硬件信任根密钥,譬如该硬件信任根密钥可以由发布方预先烧录至该智能合约处理芯片中,且发布方能够获知该硬件信任根密钥对应的公钥(比如该公钥被公开)。因此,智能合约处理芯片可以向发布方发送协商信息,并通过硬件信任根密钥对该协商信息进行签名,使得发布方可以基于相应的公钥进行验签;以及,在验签成功后,可以确保智能合约处理芯片和发布方分别基于上述协商信息协商得到相同的密钥。协商的密钥可以包括文件部署密钥,发布方可以基于该文件部署密钥将区块链节点所需的二进制镜像文件加密传输至智能合约处理芯片,而智能合约处理芯片可以基于该文件部署密钥实现解密并部署二进制镜像文件。协商的密钥可以包括业务秘密部署密钥,发布方可以基于该业务秘密部署密钥将区块链节点的节点私钥、业务根密钥等加密传输至智能合约处理芯片,而智能合约处理芯片可以基于该业务秘密部署密钥获取并部署节点私钥、业务根密钥等,以用于满足区块链场景下的隐私交易需求。例如,节点私钥对应于节点公钥,客户端可以通过节点公钥对区块链交易进行加密传输,而区块链节点可以通过节点私钥进行解密。而业务根密钥为对称密钥,可以用于对合约代码、合约状态的取值等业务数据进行加密存储。业务根密钥也可能并不直接被使用,智能合约处理芯片可以通过该业务根密钥的衍生密钥进行加解密,以降低业务根密钥的安全风险。通过对节点私钥、业务根密钥(或其衍生密钥)的可靠管理,并且确保数据除了被智能合约处理芯片进行处理的过程之外均处于加密状态,智能合约处理芯片实际上在区块链一体机上形成了硬件的可信执行环境(TrustedExecution Environment,简称TEE),确保交易、合约代码、合约状态等需要隐私保护的数据不会发生隐私泄露。
再例如,区块链一体机上可以部署智能网卡。智能网卡除了实现传统网卡的功能之外,还可以替代或协助区块链一体机的CPU完成部分功能,以实现对CPU的计算卸载。尤其是,可以将网络I/O密集型的操作由CPU转移至智能网卡执行,这样CPU本身就可以处理更多的计算密集型操作,比如交易处理、存储处理等。由于智能网卡相比于区块链一体机上的其他部件(如CPU)而言,无论是在物理层面上或是逻辑层面上都更靠近网络,使得智能网卡总是优先拿到网络中传输的数据,因而在不涉及或少量涉及存储访问的情况下,通过智能网卡来处理这些数据能够实现相对更高的处理效率、相对更小的延迟、相对更大的吞吐量,从而以相对较小的成本达到比较高的性能收益。例如,在共识算法中,除了网络状态发生变化、节点发生增删、共识配置发生变化等情况下,几乎不需要访问存储,因而可以由智能网卡来完成共识操作,而只需要将共识结果告知CPU即可、无需CPU直接参与共识过程,能够显著提升共识效率。类似地,由智能网卡转发交易、由新增区块链节点上的智能网卡实现区块同步等,同样可以达到类似的效果,此处不再赘述。此外,智能网卡在收到交易后,可以通过与历史交易进行比较,比如从交易的发送方信息、目的地址、时间戳、哈希值等字段进行比较,从而识别和过滤掉重放交易。智能网卡还可以对收到的交易进行内容解析,从而过滤掉非法交易或预定义的不想处理的交易等,作为对交换机实现的基于二层或三层的报文过滤的补充。
又例如,区块链一体机上可以部署密码加速卡,也可称为高速密码卡。密码加速卡可以实现全加密内存,并通过硬件加固以抵御侧信道攻击,还可以针对探针、激光等手段实现物理防护,具有极高的安全性。举例而言,区块链一体机上使用的密码加速卡可以具有国密二级资质、国密三级资质或其他资质。当部署有密码加速卡时,上文所述的硬件信任根密钥可以被维护于该密码加速卡中,并且密码加速卡可以基于该硬件信任根密钥实现签名操作,并替代或协助智能合约处理芯片完成上文所述的密钥协商等操作;类似地,密码加速卡可以用于维护公钥,使得密码加速卡可以基于维护的公钥实现签名的验证操作。总之,可以将区块链一体机上与密钥管理、加解密、签名验签等相关的至少一部分操作交由密码加速卡,从而既可以获得极高的安全性,又可以对区块链一体机的CPU或上述的智能合约处理芯片等实现性能卸载,以提升处理效率。
针对区块链一体机可以实现软件优化。例如,区块链一体机可以内置证书授权服务,可以实现自动化的证书签发与节点身份认证,可以自动建链和区块链节点的自动加入,从而实现区块链一体机的即插即用。那么,用户可以快速实现区块链一体机的部署。除了能够在多台区块链一体机之间快捷地建立私有型的区块链网络,区块链一体机可以集成标准化的云上服务接口,使得区块链一体机可以自动对接云上服务,从而实现区块链一体机与云端部署的区块链节点之间混合部署,构建混合型的区块链网络。区块链一体机还可以集成标准化的跨链服务接口,使得区块链一体机可以基于标准化的跨链协议或标准化的跨链服务实现跨链服务,极大地扩展了区块链一体机的应用场景,满足用户的跨链需求,比如实现不同区块链网络之间的跨链数据交互,再比如实现区块链网络与链下计算节点之间的跨链数据交互(譬如由链下计算节点为区块链节点分担计算任务等)等。
基于各台区块链一体机上采用的统一的软件逻辑,本说明书的区块链一体机可以实现自动化的区块链网络建立过程,下面结合附图进行说明:
图1是一示例性实施例提供的一种区块链一体机的自动建链方法的流程图。如图1所示,该方法可以包括以下步骤:
步骤102,第一区块链一体机启动证书授权服务以生成根证书,并在所处网络内广播所述根证书。
区块链一体机可以内置证书授权服务,即CA(Certificate Authority)服务,相当于可以将该区块链一体机配置为所处网络内的CA证书授权中心,以用于自主实现证书签发。每台区块链一体机均可以内置CA服务,但通常只有网络内的部分区块链一体机会启动CA服务,较为典型的,可以仅有一台区块链一体机启动CA服务,而其他区块链一体机则需要向该区块链一体机申请证书。当然,不同区块链一体机之间可以存在差异,譬如网络中可以只有部分区块链一体机内置CA服务,那么必然只有这些区块链一体机中的一台或多台能够启动CA服务,并协助为其他并未内置CA服务的区块链一体机签发证书。
上述的第一区块链一体机内置了CA服务,并且启动了CA服务。该第一区块链一体机可以为网络中内置了CA服务的任意一台区块链一体机,而并不特指某一台区块链一体机。为了便于区分,下文中将未启动CA服务的区块链一体机称为第二区块链一体机,第二区块链一体机可以内置CA服务但并未开启,也可以并未内置CA服务。
网络中已接入的区块链一体机可以实现选举,以确定出一台或多台主节点。那么,第一区块链一体机可以是在被选举为主节点的情况下,启动自身的CA服务。其中,本说明书并不限制所采用的选举规则,比如可以按照接入网络的次序,将前n个接入网络的区块链一体机确认为主节点,再比如可以按照IP地址的大小排序,从大到小或从小到大地选取n个确认为主节点的区块链一体机,n为正整数。当然,选举过程只是为了确定哪个区块链一体机应当启动CA服务,但并非必须;譬如,每台区块链一体机在接入网络后可以首先执行节点发现操作,如果某台区块链一体机确定网络内尚未存在其他已接入的区块链一体机,该区块链一体机可以启动CA服务,如果确定网络内已经存在其他已接入的区块链一体机则不会启动CA服务。
第一区块链一体机在启动CA服务后,可以基于该CA服务首先为自身生成根证书(Root CA Cert),并通过在网络内广播该根证书,向其他接入该网络的第二区块链一体机表明自身已经启动了CA服务,可以指示第二区块链一体机向该第一区块链一体机发起认证申请,从而为第二区块链一体机签发证书。
CA服务在签发证书时,需要使用到第一区块链一体机的身份密钥。假定第一区块链一体机创建了第一身份密钥,该第一身份密钥具体包括第一身份私钥和相应的第一身份公钥。进而,第一区块链一体机将第一身份私钥提供至CA服务,使CA服务通过第一身份私钥对第一身份公钥和第一区块链一体机的描述信息进行签名,以生成上述的根证书。由于是用自身的私钥对自身的公钥进行签名生成的数字证书,因而第一区块链一体机对应的数字证书为根证书或称为自签名证书。
步骤104,第一区块链一体机接收所述网络内的第二区块链一体机发起的认证申请,并在所述认证申请通过验证后基于所述证书授权服务向第二区块链一体机签发叶子证书。
在上述的第一身份私钥中,第一区块链一体机需要妥善维护第一身份私钥,但可以随意公开第一身份公钥。当然,第一身份公钥实际上就包含于根证书中,因而第二区块链一体机在收到根证书后,可以从该根证书中获取第一身份公钥,并通过该第一身份公钥对该根证书进行签名验证,如果验证成功,则第二区块链一体机可以确定该根证书有效,进而确定第一区块链一体机启动了CA服务,因而第二区块链一体机可以通过向第一区块链一体机发起认证申请,以由第一区块链一体机启动的CA服务为第二区块链一体机签发数字证书。
与第一区块链一体机相类似的,第二区块链一体机也创建自身的身份密钥。假定第二区块链一体机创建了第二身份密钥,该第二身份密钥具体包括第二身份私钥和第二身份公钥,而第二区块链一体机创建的认证申请可以包含第二区块链一体机的第二身份公钥和第二区块链一体机的描述信息,第二区块链一体机需要妥善维护第二身份私钥。相应的,第一区块链一体机将收到的认证申请提供至CA服务后,CA服务可以通过上述的第一身份私钥对第二身份公钥、第二区块链一体机的描述信息和第一区块链一体机的描述信息进行签名,以生成第二区块链一体机对应的数字证书。
由于第一区块链一体机对应的数字证书由其自身的第一身份私钥进行签名,因而可以直接从该数字证书中获取第一身份公钥并完成签名验证。第二区块链一体机对应的数字证书同样由第一区块链一体机的第一身份私钥进行签名,但该数字证书中包含的公钥为第二区块链一体机对应的第二身份公钥,需要根据该数字证书所含的第一区块链一体机的描述信息获取根证书,并通过根证书所含的第一身份公钥验证第二区块链一体机对应的数字证书所含的签名,故而在第一区块链一体机对应的数字证书、第二区块链一体机对应的数字证书之间形成了链式关系,即证书链,其中第一区块链一体机对应的数字证书处在“根”的位置,因而其数字证书可以称为根证书,而第二区块链一体机对应的数字证书处在“叶子”的位置,因而其数字证书可以称为叶子证书。
步骤106,第一区块链一体机确定区块链网络中的区块链节点,所述区块链节点包括第一区块链一体机和所述网络内由所述证书授权服务签发了叶子证书的第二区块链一体机。
CA服务签发的数字证书可以用于表明:该数字证书对应的区块链一体机已经通过了CA服务的身份认证。因此,通过对某一区块链一体机提供的数字证书进行验证,可以在验证通过后将该区块链一体机确定为区块链网络内的区块链节点;当网络内所有区块链一体机均采用上述验证逻辑时,这些区块链一体机即可完成自动建链,即自动建立区块链网络。
对于第一区块链一体机而言,通过启动CA服务可以生成根证书,该第一区块链一体机可以基于该根证书确定自身属于区块链网络中的区块链节点。当然,第一区块链一体机可以对根证书进行签名验证,并在验签通过后将自身确定为区块链节点。类似地,第一区块链一体机可以接收第二区块链一体机发送的待验证叶子证书,并根据根证书所含的第一身份公钥对该待验证叶子证书进行签名验证,从而在验证成功的情况下确定该待验证叶子证书由第一区块链一体机上启动的CA服务签发,并将该待验证叶子证书对应的第二区块链一体机确定为区块链网络内的区块链节点。至此,第一区块链一体机自动将自身和除自身之外的第二区块链一体机确定为区块链节点,从而在第一区块链一体机的角度自动构建了区块链网络。
类似地,可以从第二区块链一体机的角度确定区块链节点,从而自动构建区块链网络。例如,第二区块链一体机可以对收到的根证书进行签名验证,也可以通过根证书所含的第一身份公钥对自身的叶子证书进行签名验证,还可以通过根证书所含的第一身份公钥对其他的第二区块链一体机对应的叶子证书进行签名验证。总之,第二区块链一体机可以对网络内所有区块链一体机对应的数字证书进行签名验证,并将通过验证的数字证书对应的区块链一体机确认为区块链节点。
网络内的每台区块链一体机可以基于自身对区块链节点的识别结果,与这些区块链节点之间实现数据交互,譬如收发区块链交易、完成共识操作等。每一区块链一体机可以分别维护节点信息列表,并将确定为区块链节点的区块链一体机的信息记录至节点信息列表中,该节点信息列表中记录的区块链一体机的信息可以包括下述至少之一:区块链一体机的IP地址、区块链一体机的身份公钥等,本说明书并不对此进行限制。
以图2所示的区块链一体机实现自动建链的场景为例,在图2中涉及到区块链一体机21、区块链一体机22、区块链一体机23和区块链一体机24,共4台区块链一体机。当然,本说明书并不对区块链一体机的数量加以限制。区块链一体机21~24均连接至交换机25,使得区块链一体机21~24实际上接入了同一局域网,并实现如图3所示的交互过程:
步骤301,区块链一体机21启动CA服务。
假定区块链一体机21最先接入该局域网,如果预设的选举规则将首个接入网络的区块链一体机确定为主节点,那么区块链一体机21可以将自身确定为主节点,并启动CA服务。当然,还可以采用其他选举规则,这可能导致主节点的选举结果发生变化,比如选举规则还可以将IP地址最大的区块链一体机确定为主节点等。总之,由被确定为主节点的区块链一体机启动CA服务,而其他区块链一体机则不启动CA服务。
步骤302,区块链一体机21生成并广播根证书。
区块链一体机21可以生成身份密钥,比如第一身份密钥,该第一身份密钥可以包括第一身份私钥和第一身份公钥。然后,区块链一体机21通过CA服务生成根证书。具体的,CA服务可以通过第一身份私钥对第一身份公钥和该区块链一体机21的描述信息进行签名,以生成对应于区块链一体机21的数字证书,即上述的根证书。
步骤303a,区块链一体机22验证根证书,并在验证通过后将区块链一体机21添加为区块链节点。
区块链一体机22在收到区块链一体机21广播的根证书后,可以通过该根证书所含的第一身份公钥进行签名验证。在签名验证成功的情况下,区块链一体机22可以确定该根证书通过验证,从而得到两个结论:确定区块链一体机21为区块链节点、确定区块链一体机21上启动了CA服务。区块链一体机22可以维护一节点信息列表,该节点信息列表用于记录区块链一体机22确定的区块链节点的信息,譬如区块链节点的公钥、IP地址等。因此,区块链一体机22在确定区块链一体机21为区块链节点后,可以将该区块链一体机21的信息记录至自身维护的节点信息列表中。
步骤303b,区块链一体机23验证根证书,并在验证通过后将区块链一体机21添加为区块链节点。
区块链一体机23的处理过程与区块链一体机22类似,可以参考步骤303a的描述,实际上该网络内的区块链一体机24或其他的区块链一体机均采用类似的处理逻辑,此处不再赘述。
步骤304,区块链一体机22生成认证申请并发送至区块链一体机21。
区块链一体机22在确定区块链一体机21启动了CA服务后,通过生成并发送认证申请,请求区块链一体机21上的CA服务为该区块链一体机22签发数字证书。
与区块链一体机21相类似的,区块链一体机22可以生成身份密钥,比如第二身份密钥,该第二身份密钥可以包括第二身份私钥和第二身份公钥。区块链一体机22生成的认证申请可以包括第二身份公钥和该区块链一体机22的描述信息。区块链一体机的描述信息可以包括ID信息、产品序列号、IP地址、MAC地址等,只要能够用于证明该区块链一体机的身份即可,本说明书并不对此进行限制。
步骤305,区块链一体机21验证并生成叶子证书,并将叶子证书返回区块链一体机22。
区块链一体机21在收到区块链一体机22发送的认证申请后,可以通过CA服务对认证申请所含的区块链一体机22的描述信息进行验证,在验证无误后为区块链一体机22生成数字证书。具体的,CA服务可以通过第一身份私钥对第二身份公钥、区块链一体机22的描述信息和区块链一体机21的描述信息进行签名,以生成对应于区块链一体机22的数字证书,即上述的叶子证书。这里,签名时采用的区块链一体机21的描述信息可能与区块链一体机22的描述信息不一致,譬如可以分别包含不同类型的描述信息,这取决于CA服务所设定的规则。同样,认证申请所含的区块链一体机22的描述信息,可能与签名时采用的区块链一体机22的描述信息不一致,比如签名时采用的描述信息可能仅为认证申请所含描述信息的一部分,尤其是可能排除了部分不适宜公开(如涉及隐私)的描述信息,再比如签名时采用的描述信息可能为认证申请所含描述信息的哈希值,这样使得叶子证书能够完全对应于认证申请所含的描述信息,并且可以避免不适宜公开的描述信息被叶子证书所公开。
与区块链一体机22相类似的,区块链一体机23、区块链一体机24和网络内的其他区块链一体机均可以通过步骤304~305或类似的过程,请求区块链一体机21上的CA服务签发叶子证书,此处不再一一赘述。
步骤306,区块链一体机22将叶子证书发送至区块链一体机23进行验证。
步骤307,区块链一体机23验证叶子证书,并在验证通过后将区块链一体机22添加为区块链节点。
区块链一体机23在收到区块链一体机22发送的叶子证书后,可以通过在步骤303b中从根证书内获取的第一身份公钥,对收到的叶子证书进行签名验证:如果验证成功,表明该叶子证书确实由区块链一体机21上的CA服务所签发,那么基于CA服务对区块链一体机22的背书,区块链一体机23可以确定区块链一体机22为区块链节点,并将其添加至自身维护的节点信息列表中。类似地,区块链一体机22可以确保自身的信息被添加至区块链一体机24以及网络中的其他区块链一体机所各自维护的节点信息列表中,即区块链一体机22被其他区块链一体机确认为区块链节点。其中,由于叶子证书为区块链一体机21上的CA服务所签发,因而区块链一体机21实际上可以不必像区块链一体机23等对区块链一体机22的叶子证书进行验证,而是可以在该叶子证书被签发后,就确定区块链一体机22为区块链节点,并将该区块链一体机22的信息添加至区块链一体机21所维护的节点信息列表中。当然,为了保持各个区块链一体机的逻辑一致性,区块链一体机21也可以接收区块链一体机22发送的叶子证书,并通过验证该叶子证书来确定区块链一体机22是否为区块链节点,其处理过程与步骤306-307类似。
可见,区块链一体机21-24通过如图3所示的上述步骤,可以自动完成证书签发和节点认证,使得每台区块链一体机分别确定并记录下识别出的区块链节点,从而由这些被识别出的区块链节点之间构成区块链网络,即区块链一体机21-24完成了自动建链。
图4是一示例性实施例提供的另一种区块链一体机的自动建链方法的流程图。如图4所示,该方法可以包括以下步骤:
步骤402,第二区块链一体机接入网络后,向所述网络内的第一区块链一体机发起认证申请。
如前所述,第一区块链一体机内置了CA服务,并且启动了CA服务。每台区块链一体机均可以内置CA服务,但通常只有网络内的部分区块链一体机会启动CA服务,较为典型的,可以仅有一台区块链一体机启动CA服务,而其他区块链一体机则需要向该区块链一体机申请证书。当然,不同区块链一体机之间可以存在差异,譬如网络中可以只有部分区块链一体机内置CA服务,那么必然只有这些区块链一体机中的一台或多台能够启动CA服务,并协助为其他并未内置CA服务的区块链一体机签发证书。
网络中已接入的区块链一体机可以实现选举,以确定出一台或多台主节点。那么,第一区块链一体机可以是在被选举为主节点的情况下,启动自身的CA服务。而相应地,第二区块链一体机可以在确定第一区块链一体机被选举为主节点的情况下,向第一区块链一体机发起所述认证申请。
第一区块链一体机可以在启动CA服务后生成并广播根证书。CA服务在签发证书时,需要使用到第一区块链一体机的身份密钥。假定第一区块链一体机创建了第一身份密钥,该第一身份密钥具体包括第一身份私钥和相应的第一身份公钥。进而,第一区块链一体机将第一身份私钥提供至CA服务,使CA服务通过第一身份私钥对第一身份公钥和第一区块链一体机的描述信息进行签名,以生成上述的根证书。而第二区块链一体机可以获取第一区块链一体机的根证书,并在确定该根证书通过验证的情况下,将第一区块链一体机确认为主节点。
步骤404,第二区块链一体机接收第一区块链一体机基于证书授权服务签发的叶子证书,所述叶子证书由第一区块链一体机在确定所述认证申请通过验证后生成。
与第一区块链一体机相类似的,第二区块链一体机也创建自身的身份密钥。假定第二区块链一体机创建了第二身份密钥,该第二身份密钥具体包括第二身份私钥和第二身份公钥,而第二区块链一体机创建的认证申请可以包含第二区块链一体机的第二身份公钥和第二区块链一体机的描述信息,第二区块链一体机需要妥善维护第二身份私钥。相应的,第一区块链一体机将收到的认证申请提供至CA服务后,CA服务可以通过上述的第一身份私钥对第二身份公钥、第二区块链一体机的描述信息和第一区块链一体机的描述信息进行签名,以生成第二区块链一体机对应的数字证书,即上述的叶子证书。
步骤406,第二区块链一体机在所述网络内广播所述叶子证书,以加入第一区块链一体机创建的区块链网络。
通过在网络内广播第二区块链一体机的叶子证书,可以使得网络内的其他区块链一体机接收到该第二区块链一体机的叶子证书,并通过第一区块链一体机的根证书对该叶子证书进行验证。具体的,通过获取根证书所含的第一身份公钥,并基于该第一身份公钥对叶子证书进行签名验证。如果第二区块链一体机的叶子证书在其他区块链一体机处均被验证成功,那么第二区块链一体机会被这些区块链一体机识别为区块链节点,相当于第二区块链一体机加入了相应的区块链网络。
类似地,第二区块链一体机可以根据上述的根证书对任一区块链一体机的证书进行验证,并在验证通过后确定该任一区块链一体机为区块链网络中的区块链节点。这里的任一区块链一体机可以为第一区块链一体机,由于第一区块链一体机对应的证书就是根证书,实际上是采用根证书所含的第一身份公钥对该根证书进行签名验证。这里的任一区块链一体机可以为其他的第二区块链一体机,其他的第二区块链一体机对应的证书也是叶子证书,因而可以通过根证书来验证叶子证书,此处不再赘述。在验证完成后,第二区块链一体机可以将确定为区块链节点的区块链一体机的信息记录至自身维护的节点信息列表中;类似地,第一区块链一体机或其他的第二区块链一体机均可以分别维护有节点信息列表,以用于记录自身识别出的区块链节点的信息(即区块链节点对应的区块链一体机的信息)。其中,节点信息列表中记录的信息可以包括下述至少之一:区块链一体机的IP地址、区块链一体机的身份公钥等。
图5是一示例性实施例提供的一种区块链一体机的结构示意图。请参考图5,在硬件层面,该设备包括处理器502、内部总线504、网络接口506、内存508以及非易失性存储器510,当然还可能包括其他业务所需要的硬件。处理器502从非易失性存储器510中读取对应的计算机程序到内存508中然后运行,在逻辑层面上形成区块链一体机的自动建链装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图6,在一种软件实施方式中,该区块链一体机的自动建链装置可以包括:
服务启动单元61,使第一区块链一体机启动证书授权服务以生成根证书,并在所处网络内广播所述根证书;
证书签发单元62,使第一区块链一体机接收所述网络内的第二区块链一体机发起的认证申请,并在所述认证申请通过验证后基于所述证书授权服务向第二区块链一体机签发叶子证书;
节点确定单元63,使第一区块链一体机确定区块链网络中的区块链节点,所述区块链节点包括第一区块链一体机和所述网络内由所述证书授权服务签发了叶子证书的第二区块链一体机。
可选的,服务启动单元61使第一区块链一体机启动证书授权服务,包括:
使第一区块链一体机在接入所述网络并被选举为主节点的情况下,启动所述证书授权服务。
可选的,服务启动单元61使第一区块链一体机生成根证书,包括:
使第一区块链一体机创建第一身份密钥,第一身份密钥包括第一身份私钥和相应的第一身份公钥;
使第一区块链一体机将第一身份私钥提供至所述证书授权服务,使所述证书授权服务通过第一身份私钥对第一身份公钥和第一区块链一体机的描述信息进行签名,以生成所述根证书。
可选的,所述认证申请包含第二区块链一体机的第二身份公钥和第二区块链一体机的描述信息;证书签发单元62使第一区块链一体机基于所述证书授权服务向第二区块链一体机签发叶子证书,包括:
使第一区块链一体机将第一身份私钥提供至所述证书授权服务,进而使所述证书授权服务通过第一身份私钥对第二身份公钥、第二区块链一体机的描述信息和第一区块链一体机的描述信息进行签名,以生成所述叶子证书。
可选的,节点确定单元63使第一区块链一体机确定所述网络内由所述证书授权服务签发了叶子证书的第二区块链一体机,包括:
使第一区块链一体机接收第二区块链一体机发送的待验证叶子证书;
使第一区块链一体机根据所述根证书对所述待验证叶子证书进行验证,在验证成功的情况下确定所述待验证叶子证书由所述证书授权服务签发。
可选的,还包括:
信息记录单元64,使第一区块链一体机将确定为区块链节点的区块链一体机的信息记录至节点信息列表中。
可选的,所述节点信息列表中记录的区块链一体机的信息包括下述至少之一:区块链一体机的IP地址、区块链一体机的身份公钥。
请参考图7,在另一种软件实施方式中,该区块链一体机的自动建链装置可以包括:
证书申请单元71,使第二区块链一体机接入网络后,向所述网络内的第一区块链一体机发起认证申请;
证书接收单元72,使第二区块链一体机接收第一区块链一体机基于证书授权服务签发的叶子证书,所述叶子证书由第一区块链一体机在确定所述认证申请通过验证后生成;
证书广播单元73,使第二区块链一体机在所述网络内广播所述叶子证书,以加入第一区块链一体机创建的区块链网络。
可选的,证书申请单元71使第二区块链一体机向所述网络内的第一区块链一体机发起认证申请,包括:
使第二区块链一体机在确定第一区块链一体机被选举为主节点的情况下,向第一区块链一体机发起所述认证申请。
可选的,还包括:
证书获取单元74,使第二区块链一体机获取第一区块链一体机的根证书,所述根证书由所述证书授权服务生成;
证书验证单元75,使第二区块链一体机根据所述根证书对任一区块链一体机的证书进行验证,并在验证通过后确定所述任一区块链一体机为所述区块链网络中的区块链节点。
可选的,还包括:
信息记录单元76,使第二区块链一体机将确定为区块链节点的区块链一体机的信息记录至节点信息列表中。
可选的,所述节点信息列表中记录的区块链一体机的信息包括下述至少之一:区块链一体机的IP地址、区块链一体机的身份公钥。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。