首页> 中国专利> 一种可同时支持公有链、联盟链及私有链的区块链系统及应用方法

一种可同时支持公有链、联盟链及私有链的区块链系统及应用方法

摘要

本发明提供一种可同时支持公有链、联盟链及私有链的区块链系统,包括由P2P网络连接的多个节点,所述节点共同完成对区块链数据的读写;所述区块链由一创世区块和一系列数据结构相同的其他区块以哈希值链接组成,所述创世区块含有特殊字段,该特殊字段包括区块链类型标识、区块链ID、预选节点、共识机制、读取规则及数据读取合约;所述节点包括预选节点及后续加入的节点,所述预选节点具有写权限,用于判断加入联盟链、私有链实例的新节点是否具有读权限,并为已具备读权限的节点获取写权限提供凭据;所述节点运行的模块包括P2P通信模块、数据存储模块、身份管理模块、密码工具模块及共识机制模块。

著录项

  • 公开/公告号CN107733855A

    专利类型发明专利

  • 公开/公告日2018-02-23

    原文格式PDF

  • 申请/专利权人 中国科学院信息工程研究所;

    申请/专利号CN201710772499.1

  • 发明设计人 张锐;肖禹亭;

    申请日2017-08-31

  • 分类号H04L29/06(20060101);H04L29/08(20060101);

  • 代理机构11200 北京君尚知识产权代理事务所(普通合伙);

  • 代理人余长江

  • 地址 100093 北京市海淀区闵庄路甲89号

  • 入库时间 2023-06-19 04:41:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-05

    授权

    授权

  • 2018-03-20

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20170831

    实质审查的生效

  • 2018-02-23

    公开

    公开

说明书

技术领域

本发明属于计算机应用技术领域,具体涉及一种可同时支持公有链、联盟链及私有链的区块链系统,允许开发者及使用者根据不同的应用需求灵活配置区块链;还涉及基于该系统的新节点处理方法、权限获取方法和数据读写方法。

背景技术

区块链技术起源于比特币,是一种利用密码学方法保护数据安全的分布式存储技术,具有不可篡改、不可伪造等显著特性。利用该技术可在无中心信任机构存在的场景下,为彼此互不信任的实体建立信任联系,可打破传统互联网需要依赖中心的信任模式,降低信任成本,因此被广泛应用于数字经济、互联网治理和大数据发展等多个领域。区块链技术被广泛认为将对人类社会产生深远影响,更被赞誉为第四次工业革命的核心。

根据区块链读写权限的开放程度,可将其分为以下三种:

公有链,参与者可以是任意的实体,任何参与者都可参与共识、读写区块链;

联盟链,主要参与者涉及到多个机构,其共识过程受到预选节点控制,而共识结果直接影响写入权限,而其读取权限或者完全对外开放,或者被任意程度地进行了限制;

私有链,主要参与者为某个特定的机构,其写入权限仅由该机构掌控,同样地其读取权限或者对外开放,或者被任意程度地进行了限制。

不同类型的区块链适用于不同的应用场合,其实现的侧重点也有不同。例如,私有链以及联盟链需要增加成员管理机制以更好地控制读写权限,而在私有链及联盟链已存在一定的信任基础上,共识机制可以不再是十分消耗资源的工作量证明机制,可以替换为权益证明、拜占庭容错等低耗的共识机制,甚至在某些私有链(如个人私有链)中可以不采用共识机制。

目前,工业界及学术界的关注点主要围绕着区块链的应用、安全性、匿名性、扩容、效率提升等方面,而公有链、联盟链及私有链的差异方面只考虑如何实现跨链交易,并且已知的区块链项目基本是完全属于公有链或者完全属于私有链。

发明内容

本发明的目的在于提出一种可同时支持公有链、联盟链及私有链的区块链系统,基于同一个系统即可有效地同时处理公有链、联盟链及私有链,使用者可以根据具体的应用需求进行相应配置,获取相应的区块链。还提供基于该系统的应用方法,包括新节点的处理方法、权限获取方法和数据读写方法。

为达到上述目的,本发明采用如下技术方案:

一种可同时支持公有链、联盟链及私有链的区块链系统,运行在由P2P网络连接的多个节点上,由所述节点共同协作以操纵区块链,完成对区块链数据的读写。

所述区块链由创世区块及一系列数据结构相同的区块以哈希值链接组成,所述创世区块含有特殊字段,该特殊字段包括区块链类型标识、区块链ID、预选节点、共识机制、读取规则及数据读取合约,区块链类型包括公有链、联盟链及私有链;区块链ID是区块链实例的唯一标识符;预选节点是在联盟链及私有链中具备特殊功能的节点;共识机制包括工作量证明机制、权益证明机制、拜占庭容错机制等;读取规则规定不同身份的节点对数据的读取能力;数据读取合约是所有节点读取数据的依据。通过对以上特殊字段的设置可完成对区块链的配置;除所述创世区块外,其他区块具有相同数据结构。

所述节点主要包括预选节点及后续加入的节点,所述预选节点在联盟链及私有链中为最初具有写权限的节点并且需要判断新加入新节点是否具有读权限,并为已具备读权限的节点升级写权限提供凭据;特别地,所述节点还包括轻节点,无论其是否具有读写权限,其仅同步所述创世区块以及其他区块的区块哈希、区块头信息。

所述节点主要通过运行以下模块以参与整个区块链系统的运行:

1)P2P通信模块,用于通过P2P网络传输节点间需要共享的数据;

2)数据存储模块,用于存储数据,并支持对本地数据的访问;

3)数据传播模块,用于规定数据在P2P网络中传递及在本地存储的具体格式,并对数据进行有效性验证;

4)身份管理模块,用于对所有节点的身份信息进行管理,以及根据要加入的区块链类型对所有节点的读写权限进行管理;

5)密码工具模块,用于提供哈希算法、签名算法;

6)共识机制模块,用于实现系统的共识机制,对写数据需要共识的区块链,由所有具有写权限的节点根据该共识机制进行竞争来将数据写入新区块。

进一步地,所述节点在本地运行有虚拟机,并含有数据访问接口,所述虚拟机用于支持代码运行,用户可据以开发新的智能合约,该数据访问接口基于所述数据读取合约。

一种基于上述系统的新节点的处理方法,步骤包括:

新节点加入所述系统时,需广播要加入的区块链ID、自己的身份信息及公钥给系统中所有已知节点;

如果所述区块链为公有链,则无需权限管理,直接由任意一已知节点为其同步所有区块;

如果所述区块链为联盟链或私有链,则需要权限管理,由预选节点根据该节点的身份信息和公钥或与其的交互按照读取规则来判断其读权限,如其具备读权限,则同步所有区块,否则仅同步创世区块和所有可完全公开信息。

一种基于上述系统的节点获取写权限的方法,步骤包括:

所述系统中已具备读权限的节点如果要获取写权限,需由一个或多个预选节点背书,即提供同意其具备写权限的凭据,如出具由背书节点对写权限的详细说明及该节点公钥的签名或者联合签名。

一种基于上述系统的写数据方法,步骤包括:

针对给新区块写入数据,如果需要共识,则由具有写权限的节点根据共识机制进行竞争来写入数据;

如果不需要共识,则由某个具有写权限的节点直接写入数据。

一种基于上述系统的读数据方法,步骤包括:

将用户信息、公钥以及要读取的字段作为合约的输入,查询本地是否具有相应字段;

如果本地有相应字段,则直接返回结果,否则判断区块链是否有读取限制;

如果该区块链有读取限制,则根据输入的用户信息判断所述节点是否满足读取规则,如果满足读取规则,则远程调用最近的预选节点的数据读取合约,并返回读取结果,否则终止执行;

如果该区块链没有读取限制,则判断当前节点是否为轻节点,如果是,则连接其他节点获取数据,否则同步所有区块并返回相应结果。

与现有技术相比,本发明的积极效果为:

本发明提供的系统,通过设置创世区块特殊字段,使较大差异的公有链、联盟链及私有链能够通过同一个方法流程实现数据传递及读写,允许使用者根据实际需求定制区块链。本发明适用于某些不同区块链需要共存的场景中,无需采用多套系统就可兼容,减少构建成本。

附图说明

图1为一种可同时支持公有链、联盟链及私有链的区块链系统结构图。

图2为区块链结构图。

图3为基于本发明系统的处理流程图。

图4为一种基于本发明系统的读数据方法流程图。

具体实施方式

为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。

根据读写权限的不同,区块链被划分为公有链、联盟链及私有链,它们之间存在较大差异;但同时还存在着一些共通的特性,如它们均采用P2P通信方式,均采用密码算法保证安全性,基础数据结构相同,数据处理过程类似等。根据这些通用特性,可以提供一种统一的系统框架,使不同的区块链共用同一工作流程。

为了兼容不同链之间的差异,在设计数据结构时考虑尽可能地覆盖标识这些差异的字段,通过区块链创世对这些字段进行设置以实现对区块链的配置;在设计工作流程时在相同框架下设置不同的逻辑分支。

通过该思路,本发明公开一种可同时支持公有链、联盟链及私有链的区块链系统,如图1所示,由多个节点通过P2P网络连接而成,节点可分为预选节点、后续加入的节点。

节点上包括多个基础模块,具体包括P2P通信模块、数据传播模块、身份管理机模块,密码工具模块、数据存储模块及共识机制模块等。数据在一个节点产生之后通过P2P通信模块传入P2P网络被其他节点共享。数据传播模块用于规定数据在P2P网络中传递及在本地存储的具体格式,并对数据进行处理,如数据的有效性验证等。身份管理模块对所有节点身份信息的处理,并根据要加入的区块链类型完成对所有节点的读写权限的管理,如由预选节点对要求升级写权限的节点背书等。密码工具模块提供哈希算法、签名算法等,是区块链具有不可篡改、不可伪造等特性的保证。数据存储模块用于存储数据,并支持对本地数据的访问。共识机制模块用于实现系统中可选的共识机制,如工作量证明机制、权益证明机制、拜占庭容错机制等。这些共识机制适用于不同的场景,例如,工作量证明机制更加适用于公有链,而权益证明机制更加适用于联盟链。共识机制是数据写入的核心,具有写权限的节点参与共识,由共识结果决定最终写入当前数据的节点。每个区块链实例仅采用一种共识机制,在每次初始化区块链实例时给出。

节点上包括一虚拟机,用于支持代码运行,允许用户开发运行新的智能合约。特别地,节点上还提供一数据访问接口,其以数据读取合约的形式提供,数据读取合约是在区块链创世阶段即给出的特殊的智能合约。

基于以上基础模块,本系统可实现的主要功能包括创世区块的生成、读数据、写数据、权限升级等。创世区块的生成主要实现对区块链的配置,设定所有特殊字段,如规定区块链类型、配置共识机制、选取预选节点、编译数据读取合约等。读数据则调用数据访问接口获取读取结果,并对结果进行验证等。写数据则根据所描述的数据处理方法实现写数据流程。权限升级则提供对节点写权限的升级方法。

本系统在构建时主要包含以下两部分:

一、通用数据结构设计:

保留区块链哈希链式结构,在创世区块中增加额外的特殊字段,标识不同链之间的差异并完成对区块链的配置;

设置预选节点,在联盟链及私有链中赋予此类节点特殊权利,令它们成为最初仅有的具有写权限的节点,之后新加入的节点如果想具有写权限,需要所有预选节点为其背书;

设置数据读取合约,所有节点通过调用合约读数据,其具体设计方法可采用如图4的通用合约架构,在其基础上增加详细的读取规则,亦可采用其他方法。

二、通用流程设计:采取区块链创世-加入新成员-写-读流程。

区块链创世完成对创世区块的设置;

对新成员加入采用请求/响应的方法,已有成员通过读取规则判断其读取权限,如果满足规则,则同步所有区块,否则仅同步创世区块及可公开信息,而写入权限被看作为节点升级,此仅存在于联盟链及私有链中,具有特殊权利的预选节点对其进行判断;

给区块链中写入数据一般通过共识实现,而在无需采用共识的特殊情况下,则允许任何具有写权限的节点直接写入;

读取区块链的数据则依赖于创世区块中的数据读取合约。

所有区块的数据结构如图2所示,主要分为创世区块、其它区块(如区块I)以及当前区块。特别地,当前区块是正在生成但仍未完成的区块,不考虑其具体结构。

创世区块是一个区块链实例的开端,通过对以下字段设置完成区块链配置:区块链类型标识该实例属于公有链、联盟链及私有链中的某一种;区块链ID是唯一标识符,系统中的所有节点可同时参与不同的区块链实例,此字段用以区别;预选节点是被选定的特殊节点,联盟链及私有链必填字段,由预选节点对读写权限进行管理;共识机制指定该实例具体采用的共识机制,并且完成具体参数的选取,如果无需共识,则置空;读取规则规定不同身份的节点具有的读数据的能力;数据读取合约提供数据访问接口,为一段可执行代码,其中包含关于数据访问的控制策略。

其它区块主要包含区块大小、区块哈希、区块头、数据总量、数据等字段。其中数据字段包含从前一个区块到该区块之间产生的所有数据记录;区块头主要包含父区块哈希、Merkle根、时间戳等字段。Merkle根存放的是将所有数据以Merkle树的形式组织的根节点的值,允许轻节点不用下载一个区块中的所有数据就能够进行快速校验。

为兼容不同链之间的差异,基于上述系统采用一个具有多个分支的逻辑处理流程,如图3所示,步骤如下:

一)初始化配置:

1、所有链的开端均是生成创世区块,完成区块链的配置。完成以上步骤,即可获得一个区块链实例,并且该实例具有唯一的标识符ID。初始化配置之后,当前网络中只有预选节点。

二)新节点的加入:

2、当新节点加入时,其首先广播想要加入的区块链ID、自己的身份信息及公钥等到其他节点,如果该链无需权限管理,则任意接收到该信息的节点均可以为其同步所有区块。

3、如果新加入的节点只是以轻节点的身份加入,则仅同步创世区块及其他区块的重要信息,如区块哈希、区块头等;否则,只有预选节点需要对该信息进行回应,通过与该节点进行交互或根据既定规则判断该节点是否具备读权限。

4、如果其具有读权限,则同步所有区块到该节点,否则,只同步创世区块及所有可完全公开的信息。

三)获取读权限:

5、当一个拥有读权限的节点希望拥有写权限,则需要与所有预选节点交互以获取它们对自己身份的背书,即当所有预选节点均同意该节点可以拥有写权限则发送凭据给该节点。此后,该节点可以通过这些凭据证明自己拥有写权限。

四)写数据:

6、当有新的数据需要被写入时,如果需要共识,则由拥有写权限的节点参与共识并写入区块链,否则,可直接由某个拥有写权限的节点直接写入区块链。

五)读数据:

7、当需要读数据时,则运行创世区块中的数据读取合约获取结果。

特别地,数据读取合约的设计需要包含数据访问的控制策略,本发明给出一种基于本系统的数据读取合约的数据读取方法,其流程如图4所示,步骤如下:

1、将用户身份信息、公钥以及希望读取的字段作为合约的输入。通过输入格式正确的信息可以调用数据读取合约。

2、该合约首先判断本地是否有相应数据,如果有则直接返回结果;否则,按以下条件执行;

3、如果有读取限制,则根据输入的用户信息及公钥等判断该节点是否满足读取规则;

4、如果满足规则则远程调用最近的预选节点的数据读取合约,并返回读取结果,如果不满足读取规则,则终止执行;

5、如果无读取限制,根据本节点是否为轻节点采取不同的操作,如果为轻节点则连接其他节点获取数据,如果非轻节点则同步所有区块并返回本地读取结果。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号