导语:

时至今日区块链技术的应用已被诸多行业熟悉及采用,真正意义上实现了区块链技术对产业的赋能,产业区块链应用也越来越吸引市场的目光,引领着技术发展的新方向。从区块链的本质上来讲,可以分为公有链、联盟链以及私有链三种形式,虽然公链的完全去中心化是众所共同期望的,但在公链的环境下运行效率低下,且全网都可接入的公链,账本完全共享,这对很多企业是无法接受的。因此,用于企业与企业之间的联盟链基础平台——Hyperledger(超级账本)运用而生,接入有了准入限制,并且支持多种商业环境的应用。

本文翻译自行业技术巨头IBM研究院2016年的一篇研究报告,详尽阐述了区块链Hyperledger Fabric如何构建这个问题。IBM作为行业技术的先行者及实践者,早在区块链超级联盟链概念及生态诞生之初即开展了广泛且深入的探索研究, 即使在今日依然对区块链超级联盟链的课题研究具有深远的指导意义,读者可以从无论技术层面还是思维层面领悟IBM研究院对此课题所阐述的含义。

 

- 概述

区块链是一种分布式系统,其所属的分布系统又被称为“复制状态机模型”,即多个节点上从相同的初始状态开始,执行相同的一串命令,产生相同的最终状态。区块链中服务维护着一些状态,而客户端可以调用转换状态和生成输出的操作。区块链通过分布式协议模拟“可信任的”计算服务,该协议是由互联网上连接的节点运行。服务呈现或创建一个资产,其中所有节点都有一些权益相关。节点共享运行服务的共同目标,但不一定相互信任。在“无许可”的区块链中,比如比特币加密货币底层的区块链中,任何人都可以操作一个节点,并通过消耗CPU循环参与其中,并演示“工作证明”。另一方面,区块链在“许可”模式控制谁参与验证和协议;这些节点已经建立了明确的身份并组成了一个联盟。Swanson的一份报告比较了这两种模式。

Hyperledger:超级账本项目(www.hyperledger.org) 是一个合作创建的企业级项目,由开源的分布式账本框架和代码 构成。旨在通过识别和实现跨行业分布式账本开放标准平台,推进区块链技术,改变全球范围内的商业交易方式。Hyperledger是Linux基金会于2016年初成立的一个项目,开始不久即有50多名成员。

Hyperledger Fabric:Hyperledger Fabric 是一个实现运行智能合约的分布式账本平台,利用熟悉和证明技术,采用模块化架构,允许实施各种可插拔的功能。它是Hyperledger项目中正在孵化的多个项目之一。Hyperledger Fabric的开发者预览版(称为“v0.5开发者预览版”)已于2016年6月发布。

Fabric的分布式账本协议是由对节点运行的。这种Fabric能区分有两种类型的节点:验证节点是网络上运行共识、验证交易和维护账本的节点。另一方面,非验证节点是作为代理连接客户端(发出交易)和验证peer节点。非验证节点不执行交易,但可以验证交易。

当前发布Fabric的一些关键特性是:

获批准的有即时确定性的区块链;

运行在Go(golang.org)中执行的任意的智能合约(称为链码):

- 将用户自定义的链码封装在Docker容器中;

- 系统链码与peer节点运行相同的进程;

共识协议是可插拔的,目前拜占庭容错共识的实现由PBFT协议支持,提供了一个用于寻址不确定性链码的SIEVE原型,并且协议存根(命名为NOOPS)服务于单个节点上的开发;

安全支持通过权威认证(Cas)的TLS证书、注册证书和交易证书;

RocksDB (rocksdb.org)支持Persistent state(持久状态)使用键值存储系统;

支持预定义和自定义事件的事件框架;

与fabric接口的客户端SDK (Node.js)为开发工具包;

支持基础REST API和CLIs。

在开发人员预览版中,对非验证节点的支持是最小的。

架构:验证节点运行BFT共识协议来执行状态机可复制机制接受三种交易操作: Deploy transaction(部署交易):接受用Go编写的链码(表示为智能合同)作为参数;链码安装在对等节点上,并准备随时被调用。Invoke transaction(调用交易):调用之前通过部署交易安装的特定链码的交易;参数是特定于交易类型的;链码执行交易,可以相应地读写其状态中的条目,并指示它是成功还是失败。Query transaction(查询交易):从读取对等节点的持久状态直接返回进入状态项;这有可能不能确保线性化。每个链码都可以定义自己的持久状态,区块链的哈希链是计算执行的交易和结果的持久状态。

通过复制执行链码和给出潜在的BFT共识的错误假设来验证交易,比如,在n个验证对等节点中,最多f < n/3 可以“说谎”并任意执行,但其他正确执行链码。在PBFT共识之上执行时,链码交易必须是确定的,否则对等节点的状态可能会发生分歧。有一个模块化的解决方案可以过滤出明显发散的非确定性交易,并且已经在SIEVE协议中实现。运行BFT 共识的验证节点之间的成员关系目前是静态的需要手动干预。计划在未来的版本中支持动态更改运行共识的节点集。 

由于fabric实现了一个许可的分类账,因此它包含一个用于身份验证和授权的安全基础设施。通过公钥证书支持注册和交易授权,通过内加密实现链码的机密性。更准确地说,为了连接到网络,每个对等节点都需要从注册CA获得注册证书和成员服务的一部分。它授权对等点连接到网络并获得提交交易所需的交易证书。交易证书由交易CA颁发,并支持提交交易的对等节点的匿名授权,因为颁发给同一对等节点(即同一注册证书)的多个交易证书不能相互链接。链码和状态的机密性是通过交易和状态的对称密钥加密提供的,使用特定于区块链的密钥对所有具有区块链注册证书的对等方可用。未来版本计划对加密机制进行扩展,使其具有更详细的交易和状态条目的机密性。

 

- 讨论

区块链的共识协议一直在研究中保持热度,金融科技初创公司(如tendermint.com, kadena.io)也在讨论。Fabric的设计使用了共识的模块化概念,这与分布式计算中公认的共识概念是一致的。这确保了fabric的区块链相关特性可以独立于特定的共识协议进行开发。PBFT协议是已经在fabric中实现的第一个共识协议,这是由于其显著突出在:它受益于近20年系统性研究拜占庭共识的经验,密切相关知名Viewstamped Replication和Paxos之类的协议,分析了在许多环境中的使用和教科书中的描述。

 

- 结论

Hyperledger Fabric是一个用于商业用途的区块链平台。它是开源的并且基于标准,能够运行用户自定义的智能合约,支持强大的安全和身份特征,使用模块化架构和可插拔的共识协议。

在Hyperledger项目的管理下,Fabric目前正在被积极的开发中。有关Fabric的更多信息,请登录网站:

github.com/hyperledger/fabric/blob/master/docs/protocol-spec.md

来源:IBM研究院

翻译:Emily