Hyperledger Fabric技术介绍
Hyperledger Fabric是分布式账本技术(DLT)的一种实现,可在模块化区块链架构中提供企业级网络安全性,可扩展性,机密性和性能
Hyperledger Fabric与其他区块链系统最大的不同体现在私有和许可。与开放无需许可的网络系统允许未知身份的参与者加入网络不同(需要通过工作量证明协议来保证交易有效并维护网络的安全),Hyperledger Fabric通过Membership Service Provider(MSP)来登记所有的成员
Fabric中的智能合约称为链码(Chaincode),逻辑(business logic)=链上代码(Chaincode)=智能合约
通过 chaincode ,我们可以查询,读写 Blockchain Ledger,Blockchain Ledger 又叫做账本。由 the world state 和 Blockchain 组成。the world state 主要服务于 chaincode 的查询。而 Blockchain是用于流水线式记录交易。
大多数情况下,chaincode只会访问账本的数据库组件和世界状态(world state)(比如查询),但不会查询交易记录
技术特性
- 1.多通道(channel)。公链一般为单账本
- 2.智能合约
- 3.权限系统MSP(membership Service Provider)
- 4.共识算法
共识:
共识插件需要实现共识包 定义的Consenter
和Chain
接口。已经有两个针对这些接口构建的插件:solo和kafka
- Solo(单节点共识)
单个节点中完成排序的方法,单点故障,整个系统都无法运行。通常只是用在演示系统和本机开发环境中。
Solo不适合生产。它不是,也永远不会是容错的 - Kafka(分布式队列)
高吞吐量的分布式发布订阅消息系统 - BFT(拜占庭容错)(目前不支持)
State Database状态数据库
当前状态数据存储在状态数据库中,用于从Chaincode进行有效的读取和查询。
支持的数据库包括levelDB和couchDB
Chaincode编程语言
Chaincode可以用任何编程语言编写并在容器中执行。目前,支持Golang,node.js和java chaincode。
也可以使用Hyperledger Composer构建Hyperledger Fabric应用程序
核心模块
成功编译完成后,有5个核心模块。基于命令行方式运行
模块名称 | 功能 |
---|---|
peer | 主节点模块,负责存储区块链数据,运行维护Chaincode |
orderer | 交易打包、排序模块 |
cryptogen | 组织和证书生成模块 |
configtxgen | 区块和交易生成模块 |
configtxlator | 区块和交易解析模块 |
peer和orderer属于系统模块,是Fabric的核心模块,启动之后会以守护进程的方式在系统后台长期运行。其余3个属于工具模块,不参与系统运行
开发通常都是从cryptogen模块开始的。系统设计完成后的第一项工作就是根据系统设计编写cryptogen的配置文件,其使用的配置文件是整个Fabric项目的基石。
peer模块是Fabric中最重要的模块,也是使用最多的模块
通用选项
1.--help选项
显示命令行模块的所有选项
查询子命令的选项信息:模块名+子命令+ --help
- -v,--version
获取当前模块的版本信息
配置
配置信息由配置文件、命令行选型、环境变量组成
环境变量>配置文件>命令选项
环境变量和配置文件可以相互转化,建议尽量把参数配置在统一的格式中。
- 如果基于Docker运行,建议采用环境变量的配置方式。
- 如果用命令直接启动,建议采用配置文件参数配置方式