信息化时代,数据大规模增长,汇集形成了大量的数据中心,这些数据中心因分属于不同企业或部门而形成相互隔离的数据孤岛,导致信息不能有效传输,难以发挥其应有的价值。尤其在政务领域,数据多且分散,同时还包含大量隐私与敏感信息,构建集中式的数据共享服务并不现实,还会增加数据被篡改或泄露的风险。随着产业互联网加速推进,安全、高效的数字化万物互联与多方协作,将越来越成为社会经济生产的重要诉求。区块链作为新型信息协作底层技术,将能与5G、AI等新一代基础信息技术为未来生活生产带来全新突破和助力。

区块链集成了密码学与分布式数据库等技术,能够有效且安全的解决跨组织的数据共享问题。然而,成千上万的数据中心有各自的数据管理模式,单个区块链应用即承载不了当前大规模的数据量,也不能满足多样化的数据管理模式,所以承载相应数据的区块链应用也将是多样化的,各有各的治理模式,需要一个兼容并包的系统将不同的区块链应用整合成统一的服务,实现安全、可扩展的跨区块链的协作。另一方面,区块链的去中心化特性强调各个参与方之间相互验证,但在政务或产业区块链领域中,数据规模大,各平行的应用链要对其他链上的数据进行验证不仅效率低下且不可行,采用层级化的治理模式可以提升效率并满足监管要求。

腾讯云区块链引擎平台是一个新型的具有高可扩展性的企业级区块链平台,其自主创新的设计主要体现在两个方面:分层与跨链互联,主打的三个目标分别是:实现大规模跨组织的信息化协作,保障敏感数据的安全流通,支持层级化的区块链治理模式。

区块链技术原理

区块链本质上是一个State Machine Replication(SMR)系统,和zookeeper等SMR系统一样,每个节点有相同的初始状态,并执行相同的操作序列,最终得到一致的数据副本;不同点在于,区块链运行在不受信任的环境,还需要容忍部分节点作恶(不按规则执行的行为,比如发布假消息等),并保证所有的诚实节点总能达成一致。

从字面意义上简单的理解,区块链维护的就是SMR系统的所有操作序列。区块链系统中每隔一段时间就会累计一批还未执行的交易请求,这些交易的集合及其排列顺序通过多个节点共识后,形成一个有序的交易片段,这些交易片段以区块的形式传播和存储。由于在整个网络中达成一次共识的时间太长,而一个区块中可以包含上千条交易,按区块进行批量共识显然比按单个交易共识效率高。既然一个区块只是一段时间内的交易片段,那么采用链表的方式把区块串联起来,并且每个区块中包含了上一区块的hash,就形成了完整且不可篡改的交易序列。

区块链可以看成一个三层的State Machine Replication(SMR)系统,如图1所示,最底层是整个SMR系统的核心,主要功能是对更新操作的顺序达成一致,并形成不可篡改的操作序列,这一功能的核心部分称作为共识算法。第二层是底层state-machine的API,更新操作通过API作用到区块链上,区块链中通过智能合约(类似于数据库的存储过程)来描述数据的操作流程。最上层则是区块链应用层,通过调用智能合约来执行业务逻辑,构建去中心化的应用,比如数字货币等。

图1. 区块链系统概要图

平台优势:高性能、安全、可扩展

腾讯云区块链在可扩展性、安全、性能等区块链关键领域具备优势技术能力。

可扩展性:支持大规模的跨区块链协作,保障敏感数据的安全跨链流通,以及支持层级化的区块链治理模式。

安全:支持国密算法,智能合约提供同态加密与零知识证明算法库;支持多链隔离的拜占庭容错共识算法。

性能:通过流水线处理,交易TPS在腾讯云32核虚拟机上高达2万以上;优化存储结构,使得区块文件存储空间相比常用区块链降低80%;支持腾讯云存储可提供海量的账本存储空间。

系统整体架构:分层互联

腾讯云区块链采用分层互联的架构,分层是解决系统扩展性问题的利器。腾讯云区块链将系统分层两层:上层是应用层;底层是跨链治理层,如图1.1所示。

图1.1 腾讯云区块链整体架构图

应用层

应用层可以构建大量平行的应用子链,每个子链可以有各自的业务和区块链治理模式,平行的应用子链之间可以进行跨链的数据交互,腾讯云区块链的分层设计简化了应用层的开发,应用层子链仅需要聚焦于实现基于区块链的应用并提供资源管理API,而跨链过程中涉及到目标链的路由管理、身份可信性验证、跨链事务管理等流程由系统负责处理。

治理层

治理层为应用层的子链的跨链协作与数据流通提供底层支撑,功能主要分成两部分:跨链事务管理与跨链身份管理。

跨链事务处理需要管理一笔交易在多个不同链之间的执行状态,以确保数据处理的一致性,即交易在多个区块链上要么全部执行成功,要么全部执行失败。与传统分布式事务不同的是,跨链事务处理过程需要保证去中心化,腾讯云区块链系统基于区块链来管理跨链事务,称之为事务链, 采用两阶段的去中心化的跨链互操作方案,实现灵活的、可大规模跨链互联的区块链系统。

跨链身份管理基于区块链为上层应用提供可信身份服务,称之为身份链,用于管理子链身份与用户身份,子链身份即上层的应用子链身份,应用子链如果需要与其他平行子链进行跨链操作,就必须事先在身份链上注册身份,子链身份除身份ID、身份公钥外,还包括该子链对外公开的资源管理API,以便实现基于身份的服务发现。用户身份即区块链应用的用户身份,身份链为上层所有子链颁发统一的用户身份,子链可以验证其他子链的用户身份,用户也可以在不同的子链上转移自身数据。身份链打通了数据的拥有者、管理者、访问者等不同角色之间的验证流程,为安全的跨链互通提供信任基础。

身份管理

治理层中的身份链管理个人、设备、机构、上层应用子链的身份信息,身份由一个可信的身份签发者(单个机构或联盟)统一颁发,该身份签发者作为整个系统中的监管角色,可以是单个可信机构或多个机构组建的联盟。

身份结构

身份由如下几个部分组成:

  • 身份标识符(ID):作为该身份的唯一识别码。
  • 身份类型(Type):分为个人、设备、机构、应用子链几大类。
  • 身份公钥(PubKey):该身份对应的非对称加密公钥,用于对该身份进行验签。对应的私钥由身份拥有者持有。
  • 身份颁发签名(Sign):由身份签发者对该身份的颁发签名。
  • 身份属性(Attribute):业务自定义的身份属性,用于身份签发者对该身份进行认证与授权。
  • 身份服务(Service):记录该身份的服务地址、API等信息,按身份类型不同分为:
    • 个人:记录托管个人数据的机构或应用子链的身份ID。
    • 机构或应用子链:记录机构或应用子链对外提供的网络服务地址,如查询API、更新API等。

身份服务发现

身份服务(Service)是整个区块链系统中解决可信数据访问的重要环节,以查询或更新某项个人数据为例阐述身份服务的使用流程,如图2.1所示:

  1. APP使用个人A的身份ID去身份链上查询A的身份服务,身份链返回A的身份服务为A数据所托管的应用子链B的身份ID。
  2. APP使用该应用子链B的身份ID去身份链上查询B的身份服务,身份链返回的该子链B对外提供的网络服务地址,即查询与更新API。
  3. APP通过子链B的服务地址,发起对个人A的数据查询或更新操作,由子链B审核操作权限并执行。

图2.1 身份服务使用流程

跨链通信

水平扩展一直是区块链面临的重要难题,腾讯云区块链创新的分层互联技术,支持上层构建任意多的应用子链,通过底层身份链作为连接各应用子链的纽带,解决不同应用子链之间的身份互信、数据授权的问题,同时基于身份链构建的跨链互联技术具备了很高的可扩展性。跨链通信分为跨链查询与跨链互操作。

跨链查询

跨链查询即查询链外的数据,链外数据可以是外部的HTTP接口(区块链预言机),也可以是其他平行子链的API。由于区块链智能合约本身不适合直接范围外部数据,腾讯云区块链通过在节点中实现一个预言机模块,统一代理所有智能合约进行链外访问,数据处理流程如图3.1所示:

  1. 应用调用智能合约,查询外部数据的指令被分发到预言机
  2. 预言机代理合约去外部服务查询数据
  3. 预言机将查询到的外部数据返回给智能合约。
  4. 智能合约直接采用外部数据进行下一步处理,并将最终结果写入状态数据库。
  5. 智能合约处理的最终结果,与预言机获取的链外数据一起被写入区块。

图3.1 跨链查询流程

跨链互操作

跨链互操作意味着一笔交易要同时修改多个区块链上的数据,相对于跨链查询更加复杂,主要体现在如何保证多个不同应用子链之间的操作一致性,同时还要避免有中心化的环节。

腾讯云区块链采用一种去中心化的两阶段提交方式实现跨链互操作,从事务链中选取多个节点作为公证人集合,由公证人集合协调不同子链之间的互操作。为了保证跨链过程的可验证性,公证人集合与子链之间需要互相验证:

  1. 公证人集合事先约定提案策略,并将提案策略写入事务链,提案策略规定有效的提案需要满足什么样的公证人签名组合。跨链过程中,子链验证的公证人集合的提案签名集是否满足约定的提案策略。
  2. 子链的元信息预先公开在事务链上,如子链的共识机制,共识节点集合等。跨链过程中,公证人验证子链的区块与交易提交凭证是否满足子链提交条件。

图3.2 跨链数据验证

跨链互联:区块链应用场景新突破

腾讯云区块链作为一个高可扩展性的多链平台,解决了隐私安全保护、性能和可扩展性瓶颈,适用于跨业务、跨部门协作的多链互通的场景,打通产业互联、万物互联最后一公里。一般而言,这些领域面临一些共同的痛点,包括比如各机构之间具有相对独立、业务各异的区块链,如果缺乏统一可验证的身份系统机制,会面临区块链之间难以形成安全有效的信息协作机制……随着业务规模的不断扩展,痛点将越加明显。一套支持平行多链并跨链互通的区块链平台可有效帮助解决以上痛点。

基于腾讯云区块链,企业机构可按业务、地域等不同的划分方式组建多个平行的区块链应用,并基于腾讯云区块链规范化的应用层API与统一的身份系统,实现安全且灵活的跨区块链的信息协作,以对外提供统一的区块链服务。例如:

政务民生领域,可使用全局可验证的公民身份验证机制进行授权,打通跨地域、跨部门的信息壁垒,提供可信数字凭证。基于算法安全保护能力,公民可以使用其身份私钥进行签名,以授权机构A查询其在机构B上托管的数据;机构也可以根据公民提供的数字化授权信息,开放公民数据给指定机构进行处理,公民和机构都有全局范围内可验证的身份与可审查的操作记录,既可减少公民跑腿办证明的次数,也消除了机构共享其数据的安全顾虑。

教育领域中,面向“学籍、学历、证照、档案、考试、录取、资助”等的管理与服务相关的教育应用,需要伴随着学生的升学、转学实现跨部门、跨业务、跨区域的数据流转,是一个典型的“分区间建链,全范围跨链”的区块链应用场景。过去,没有统一可信的教育数字身份,大大增加了业务应用链的服务成本:首先,同一用户在不同的业务下,呈现多种账户及密码,管理难度大;其次,业务平台或用户需要承担更多的发放用户证书的经济成本,造成重复投资;三是不利于开展业务数据跨链共享,实现跨链共享首先要解决不同链的用户身份互认。而依托可信教育数字身份链的身份共享体系建设跨链身份节点,则成为最方便、最经济、最高效的解决方案。

医疗领域,可基于跨链协作共建安全高效的医联体,提升就诊、医疗保险管理等效率。腾讯云区块链与某保险公司的合作,一方面打通了医疗、保险以及监管等各个环节信息共享和流通,另一方面通过智能合约来实现保险业务智能化管理,实现自核保和快速理赔的目标。而随着区块链协作的逐渐深入,不同医疗平行子链之间连通的需求越来越强烈。因为,分布在全国各地的医疗机构在使用区块链技术时通常以联盟链的形式开展,由于区域、业务上的分散性导致市面上形成多个由联盟链串联起来的医联体,虽然医联体内部可以小范围的数据互通,但在医联体之间仍然难以产生交集。一套跨链互联的机制可帮助分散的医联体、子链整合成统一的医联体区块链服务。

版权保护领域,区块链技术可以在内容原创保护领域发挥关键作用。针对内容创作领域的侵权行为,业界一直存在确权难、取证难、维权难三大难题。腾讯在2019年联合中国电子科技网络信息安全有限公司、北明软件有限公司共同推出司法区块链应用生态服务平台“至信链”,该平台的推出为版权保护、金融存证、金融类型化案件快速裁决、区块链智能合同等场景带来突破。随着区块链在司法存证领域的普及深入,不同司法存证、互联网平台著作等之间的数据如何实现互通互信,将是未来司法区块链解决取证难、维权难,实现规模化应用的关键所在。腾讯云区块链跨链协作机制可实现跨区块链的版权认证、授权、转让、质押等,并且全局可验证的身份系统可以实现相关信息留痕,便于后续信息的跨链溯源。

文章来源于腾讯云开发者社区,点击查看原文