联盟链技术
目前区块链技术的发展存在两个大的方向,即联盟链和公链,两者之间最大的区别在于是否存在”准入机制”,这里的”准入机制”指访问权限的管理机制。联盟链有“准入机制”,并不是任意的个人或组织都能参与其中,数据只在联盟链内部公开、共享。而公链,则是完全公开,没有任何的准入门槛,所有个人或组织都可以参与其中,数据对所有人公开。
背景
下面从技术方面对联盟链和公链的异同点做了一个大致的对比:
整体来说,联盟链在实现了分布式账本、共识算法、防篡改等区块链标志性能力外,也重点实现了准入机制。联盟链既具有区块链的数据透明、防篡改特性,并将数据的互联互通限定在一定范围内,且具有不错的性能来支撑业务。企业或机构在选型过程中,往往选择联盟链技术。
在国家的十四五规划中,也明确指出“以联盟链为重点发展区块链服务平台和金融科技、供应链管理、政务服务等领域应用方案”,足可见联盟链技术是未来区块链技术一个极其重要的发展方向。
联盟链现状
目前,联盟链的现状可以用一句话概括:“超级账本 Hyperledger 旗下的 Fabric 一家独大”Hyperledger 是 Linux 金会于 2015 年 12 月发起的开源区块链项目,旨在通过提供支持不同用途组件的模块化框架,集中开展许多独立工作来开发开放协议和标准,推动跨行业区块链技术的发展,帮助企业更容易地建立企业级区块链解决方案。
图:Hyperledger 旗下项目,来源 Hyperledger 官网
Hyperledger 目前 8 个创始会员、超过 122 个普通会员以及 48 个准会员机构。其中不仅包括 IBM、Microsoft、J.P.Morgan、Accenture 等国外科技、金融巨头,也包含蚂蚁、百度、腾讯、京东、小米、平安银行等国内互联网和金融巨头。
图:Hyperledger 社区会员,来源 Hyperledger 官网
Fabric 正是 Hyperledger 中的联盟链项目,目前在 git 上已经获得超过 11.7k 颗星,并拥有超过 270 名开发者贡献代码,主流的云服务供应商均提供 Fabric 的 BaaS 区块链服务平台。后面会详细介绍下 Fabric“准入机制”。
Fabirc 准入机制
下图是一个典型的 Fabric 区块链网络,包含 3 个成员组织(ORG1,ORG2,ORG3)和 1 个排序组织(ORG4)。
图:Fabric 网络拓扑,来源:https://medium.com/coinmonks/designing-a-hyperledger-fabric-network-7adcd78dabc3
这里提到了两种类型的组织,即成员组织和排序组织。
成员组织即 MemberOrg 可以理解为联盟链网络中的参与方,是有数据上链需求的实体,一般会在网络中维护一个或多个 Peer 节点。
排序组织即 OrdererOrg,负责 Fabric 中的交易排序以及区块创建,往往由网络的发起者或监管机构运行维护。Orderer 是 Fabric 一个独特的设计,不同的底层区块链网络虽然采用不同的共识算法来生成区块,但出块节点一般都具有随机性.而 Fabric 为了提升出块效率以及提升联盟内部的数据监管,将网络的出块权完全赋予了单个组织,即 Orderer Organization,该组织采用 RAFT 共识算法,维护了一个由多个 orderer 节点组成的排序节点集群,负责接收交易、生成区块、发送区块。
这两个组织构成了 Fabric 网络的主体,而每个组织都会包含一个成员身份(以下简称 MSP),MSP 可以理解为组织的 identity,在网络中完全代表一个组织参与网络共识。Fabric 的“准入机制”正是围绕以 MSP 成员身份为中心的 Channel 成员管理来实现的。下面,详细介绍下 MSP 成员身份、Channel 通道和 Channel 成员管理。
MSP 成员身份
Fabric 中的成员身份采用的是传统的 PKI 体系,如下图所示:
图:PKI 体系,来源:Fabric 文档
每个组织在加入到网络之前,会首先维护一个属于自己的 CA(Certificate Authority)证书颁发机构,用于用户身份的注册以及用户证书的签发、注销。一个 CA 证书主要包括
Subject:主体身份信息
SubjectPublic Key:主体的公钥
Issuer:颁发者即 CA 的信息
Signature:颁发者即 CA 的数字签名
PKI 证书,来源:Fabric 文档
MSP 身份的验证流程如下:
1) ORG1 的某身份账户向 ORG2 展示自己的证书(证书由 ORG1 的 CA 颁发)
2) ORG2 可向 ORG1 的 CA 机构获取 Root CA 证书,并提取 Subject Public Key
3) 借助 ORG1 CA 机构的 Subject Public Key 来验证该身份账户提供的证书签名
4) 签名验证通过,该身份账户为 ORG1 合法账户
Fabric 中每个组织首先会创建一个 Admin 用户,并在本地维护一个 msp 目录,目录主要包含:
组织 CA 的 root 证书(./msp/cacerts)
组织 Admin 账户的公私钥(./msp/keystore)
组织 Admin 账户的签名证书(./msp/signcerts)
图:MSP 身份,来源:Fabric 文档
至此,我们知道了 Fabric 中的 MSP 身份体系,那么:组织的 MSP 身份是如何在网络中发挥作用的?Fabric 网络是如何通过组织的 MSP 身份来限制网络成员的呢?
简单来说,Fabric 是借助可配置的 channel 来限制成员身份,只有包含在 channel 内的成员组织身份才允许加入网络、参与共识、同步数据。下面详细介绍下 Channel 的概念以及以 Channel 为基础实现的成员身份管理。
Channel 通道
Channel 同样是 Fabric 的一个独特设计,在 Fabric 中,存在着两种类型的 channel,即:
system channel:系统级 channel,在联盟链网络组建时创建,用于定义联盟链网络的创始成员等信息,由排序组织负责管理。
application channel:应用级 channel,联盟链网络中更细粒度的划分,可以由网络中的部分组织组建而成,一个 application channel 代表一个真正意义上的区块链,拥有着一套独立的账本数据,application channel 由网络的成员组织管理。
一个 Fabric 联盟链网络只有一个 system channel,但可以包含多个 application channel。可以理解为一个联盟中,由于组织之间有着不同的利益关系往来,不同的组织之间会建立不同的链(即不同的 application channel)。
也就是说,Fabric 联盟链的“准入机制”是以一个 application channel 为基础进行的,成员管理也就是一个 channel 的管理。
Channel 成员管理
Channel 的成员组织会在创建 channel 的时候指定,并将各个成员组织的 MSP 包含在创始区块(genesis block)中,主要是包含成员组织的 CA 证书和 Admin 账户证书,并以此管理成员。具体过程如下:
1. 配置并生成 genesis block
1) 配置成员组织,重要内容:
ID:成员组织在网络中的标识
MSPDir:成员组织的 MSP 本地目录,用于加载 msp 的相关证书
Policies:用于定义成员组织内部的读、写、审计权限
图:成员组织定义
2) 配置 application channel,重要内容:
Organizations: 定义 applicationchannel 中包含的成员组织,如下图,包含 Org1 和 Org2
图:applicationchannel 的定义
3)以上述两个配置为基础创建 genesis block
2. 发起者用 genesis block 在网络中启动这个 application channel
3. 成员组织申请将节点 peer 加入到 application channel 中,申请信息中将包含成员组织的身份证书
4. 通过 genesis block 中的各个成员组织 CA 证书来验证申请者的身份是否为 application channel 中的成员组织颁发。如果是,则成员组织节点加入成功并开始同步账本数据;如果不是,则会被拒绝。
由此,Fabric 实现了对授权组织节点的准入以及对非授权节点的拒绝。
总结
联盟链技术借助准入机制实现了对区块链网络成员的可控,使得企业中的利益相关方能够在相对可控的范围内实现数据的共享、防篡改以及可追溯,促进了企业在区块链落地场景的探索。鉴于联盟链技术在企业级区块链领域的优势以及国家十四五规划中的背书,笔者认为,联盟链技术在未来几年会持续发展,在各个领域也会出现一些区块链技术的优秀落地场景,非常值得研究与探索。
原文链接:联盟链技术
评论