我想学完fabric的几个核心模块和功能就搭建一个最简单的fabric网络吧,总之,我们一起努力,一起学习,看着官网,网上的教程试探性的学习,由于自己还有一年就是研究生了,压力很大,学长很强。。。
一、fabric的五个核心模块
- peer:主节点模块,负责存储区块链数据,运行维护链码
- orderer:交易打包,排序模块(为什么要排序??)
- cryptogen:组织和证书生成模块
- configtxgen:区块和交易生成模块
- configtxlator:区块和交易解析模块
其中1和2是系统的模块,今后需要参与系统的运行,启动之后会以守护进程的方式在系统后台长期运行;
345是工具模块,所以可以看到他们生成一些证书文件,区块链创世块,创建通道等相关文件和证书的工作;
二、fabric模块的相关命令
由于现在没有可视化界面给我们操作,我们需要记住一些命令行代码,你就把fabric想象成一个IDE,中间的一些按钮需要你去用命令行去操作,这样是不是fabric也没有那么难了呢....
配置方式的大小关系:环境变量 > 配置文件 > 命令选项
如果你想使用下面的命令~-~,我这里多说一句,你需要配置环境变量
cp $GOPATH/src/github.com/hyperledger/fabric/release/linux-amd64/bin/* /use/local/bin
sudo chmod -R 775 /usr/local/bin/configtxgen
sudo chmod -R 775 /usr/local/bin/configtxlator
sudo chmod -R 775 /usr/local/bin/cryptogen
sudo chmod -R 775 /usr/local/bin/peer
sudo chmod -R 775 /usr/local/bin/orderer
cryptogen模块
用来生成组织结构和账号相关的文件------------------------> 所以任何fabric系统的开发都是从cryptogen模块开始的,当系统设计完之后第一项工作是根据系统开发来编写cryptogen的配置文件,然后通过这些配置文件生成一系列的证书,可谓是整个fabric的基石
cryptogen --help 显示模块的命令行选项
- help : 显示帮助信息
- generate:根据配置文件生成证书信息
- showtemplate:显示系统默认cryptogen模块配置文件信息
- version:显示当前模块的版本号
cryptogen模块的配置文件:
cryptogen模块的配置文件用来描述需要生成的证书文件的特性,比如:有多少个组织,有多少个节点,需要多少个账号等,这里我们通过一个模块的配置文件来初步了解结构:
https://github.com/hyperledger/fabric/blob/release/examples/e2e_cli/crypto-config.yaml
通过cryptogen模块的配置文件生成配置信息
举例:自己创建一个/opt/hyperledger/fabricconfig的空文件夹,自己写一个yaml文件然后
cryptogen generate --config=/opt/hyperledger/fabricconfig/crypto-config.yaml
--output /opt/hyperledger/fabricconfig/crypto-config
configtxgen模块
- asOrg:所属的组织
- channelID:channel名字,如果没有系统会提供一个默认值
- inspectBlock:打印制定区块文件中的配置内容
- inspectChannelCreateTx:打印创建通道的交易的配置文件
- outputAnchorPeersUpdate:更新channel配置信息
- outputBlock:输出区块文件的路径
- outputCreateChannelTx:标示输出创世块文件
- profile:配置文件的节点
- version:输出版本信息
configtxgen的配置文件configtx.yaml,以下是五大配置信息
- Profile:配置文件,不同的配置文件可以在这里进行编码,以指定configtxgen工具的参数
- Organizations:组织节点信息,定义了不同组织的标志,这些标志将在稍后的配置中被引用
- Orderer:启动模式,定义了将编码转换为配置事物的值,或者用于orderer相关参数的创世纪块
- Application:应用,定义了将编码转换为配置事务的值,或者用于应用程序相关参数的创世纪块
- Capablities:功能特性集合
configtxgen模块
- start:启动configtxlator REST服务器 ,两个参数 一个--hostname 一个port
- version:显示版本信息
REST服务提供了四种功能分别是:解码,编码,计算配置更新量,交易打包这四种功能,太麻烦举例了.............................
configtxgen模块
- start* 启动orderer节点
- show version information
- benchmark 采用基准本模式运行
- version 显示版本信息
peer模块
- chaincode chaincode相关操作 | install | instantiate | invoke | package | query | signpackage | upgrade | list
- channel channel相关操作 | create | fetch | join | list | update
- logging log-level | getlevel | setlevel | revertlevels
- node 启动peer节点服务器
- version 显示版本信息
其实peer 和 orderer 内容很多,有机会我补上,主要是不打想敲键盘了...