Blockchain区块链架构设计之三:Hyperledger Fabric介绍

Hyperledger Fabric 区块链架构

概述:区块链通过由互联网上连接的节点运行的分布式协议来模拟可信计算服务。 区块链服务可以代表或创建一类资产,其中所有节点都是对等的,节点之间有限共享分布式账本上的数据,同时不需要依赖相互信任。另一方面,区块链在许可制模型中由弱中心联盟控制谁可以参与验证和写入数据; 这种基于身份认证体系的成熟模型可用于商业化区块链应用场景。

Hyperledger:Hyperledger项目是一个成员共同协作的企业级,开源分布式账本框架和代码库。 它的目的是推动区块链技术发展,实现分布式账本技术的跨行业开放标准,改变未来全球交易的方式。 作为Linux基金会的其中一个项目,迄今为止,Hyperledger项目已经有多达100个成员。

Hyperledger Fabric :Fabric是一个分布式账本平台方案,主要用于运行智能合约,利用可靠的技术以及可插拔方式实现各种商业应用场景的模块化架构。它是目前在Hyperledger项目下孵化的多个项目之一,由IBM、DAH和blockstream贡献。 Hyperledger Fabric的最新版本为“v0.6.1-开发者预览版”)。 Fabric的分布式账本协议由Peer节点运行,Fabric包含两类节点类型:1)验证节点是网络上负责运行共识的一组节点,他们负责验证交易以及维护分布式账本。2)非验证节点作为将客户端(发出事务)连接到验证节点的代理。非验证节点不执行事务,但它可以验证它们。

Fabric当前结构版本的一些主要功能如下:

•定位许可制区块链;

•由Go、JAVA语言实现运行任意智能合约:

- 用户定义的智能合约封装在Docker容器中执行;

- 系统智能合约与节点运行相同的进程;

•共识算法是可插拔的,目前支持使用PBFT;

•通过证书颁发机构(CA)提供TLS证书,登录证书和交易证书;

•使用KV持久化数据存储,支持RocksDB、LevelDB;

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

•与Fabric交互的客户端Node.js 、Python SDK;

•支持基本的REST API和CLI。

核心架构:验证节点运行可接受三种事务类型的状态复制机以及BFT一致性协议,这三种事务是1)部署事务:将Go、JAVA编写的智能合约作为参数,智能合约在验证节点上初始化部署并准备好被调用;2)调用事务:调用先前已部署的指定智能合约的事务,参数由事务类型指定; 智能合约执行事务,并相应地读取和写入KV数据库,返回是否成功或者失败;3)查询事务:直接从节点读取持久化的世界观状态返回有关的数据条目;

每个智能合约可以定义其自己的持久化数据及类型,分布式账本的哈希链是在所执行的事务和所得到的持久化数据上计算得出的。交易的验证通过重复执行智能合约并基于BFT的容错能力,即假设在最多f <n / 3的n个有效节点中的“作恶”行为,但所有其他人正确地执行智能合约。当执行PBFT共识时,智能合约的交易必须是确定性的,否则状态的复制可能产生分歧。运行BFT一致性算法的验证节点的成员资格目前是静态添加的。支持动态调整运行共识节点集合的版本预计会在2017年早些时候上线。

由于架构设计上定位许可制区块链,它包含用于认证和授权的安全基础结构。它支持通过公钥的注册、交易授权证书和通过链上数据加密的方式实现智能合约的数据保密性。更确切地说,想要访问区块链网络,每个用户需要从成员管理服务的用户登录CA那里获得登录证书,如想要进行交易,需要从负责管理交易的CA那里获取提交交易所需的交易证书,同时,fabric提供了一种机制,支持对提交事务的Peer节点进行假名授权,意思是发布给同一节点的多个交易证书之间不能彼此链接进而追溯出交易来源的身份。

智能合约和数据的保密性是通过对称密码算法加密来提供的,该加密通过拥有登录证书的节点分配特定的密钥来执行数据加密。更细粒度的加密机制将在未来版本提供

结论。 Hyperledger Fabric是一个许可制区块链的技术平台,旨在为商业化应用所使用。它是开源的,基于工业标准运行用户定义的智能合约,支持强大的安全性身份特征,并且使用具有可插拔共识算法的模块化架构。该架构目前正在发展,并在Hyperledger项目的治理下得到积极开发。

发布于 2016-11-25