超级账本cryptogen 与 configtxgen 模块介绍

Posted 小生凡一

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超级账本cryptogen 与 configtxgen 模块介绍相关的知识,希望对你有一定的参考价值。

1. cryptogen模块

配置文件以及证书生成

1.1 命令介绍

cryptogen --help                 命令帮助
cryptogen showtemplate --help    子命令帮助

  • yaml格式介绍
  1. 大小写敏感
  2. 使用缩进表示层级关系(缩进的空格数不重要,只要相同层级的元素左对齐即可)
  3. '#'表示注释
  4. 进不允许使用tab建,只能使用空格键
  • yaml文件使用
  1. key:对象值表达方式
name:
 zhiliao
age:
 18
# key:数组,-后面有个空格
subject:
 - math
 - chinese
 - eng
  • 配置信息介绍–yaml格式
OrderOrgs:# order组织配置项,有多个,所以是数据
 Name:组织名称
 Domain:根域名
 Specs
	-Hostname:二级域名 e.g.:orderer.example.com
	PeerOrgs:# peer组织配置项
 Name:组织名字
 Domain
 	EnableNode0Us:是不是支持node.js
 Template:模板
 	Count:生成的peer节点数(2个的话,peer0.根域名,peer1.根域名)
 Users:创建的普通用户,管理员会自动生成
 	Count:用户数

Specs和Template的区别:

  • specs可以指定二级域名
  • Template会自动在前面加peer0peer1按顺序这样的二级域名,可以互换使用 peer0.org1.example.com

1.2 生成证书

1.2.1 生成模板配置文件

  • 指令
cryptogen showtemplate > conf.yaml


修改conf.yaml文件

修改成如下形式

1.2.2 生成证书

根据前面生成的模板配置文件生成证书

  • 指令
cryptogen generate --help
cryptogen generate  如果不指定参数则会使用默认的配置
cryptogen generate --config conf.yaml    


指定刚刚修改的conf.yaml的文件,于是就会生成两个结点的证书了。


然后可以看见目录多出了一个crypto-config文件
进去就能看见这些结点的信息了。

2. configtxgen模块

创世块通道文件的生成

2.1 configtxgen命令介绍

configtxgen --help
命令名称
-asOrg组织名称
-channelIDchannel的名字,不指定使用默认的testchainid
-outputAnchorPeersUpdate更新peer锚节点的配置信息
-outputBlock输出创世块文件路径
-outputCreateChannelTx输出通道的文件路径
-profile指定配置文件中的节点
-inspectBlock在指定路径处打印块中包含的配置
-inspectChannelCreateTx在指定路径处打印交易中包含的配置

2.2 修改配置文件

  • 配置文件已存在,叫configtx.yaml,文件名字不能修改,因为configtxgen命令没有指定配置文件的参数,使用默认的

  • 配置文件路径:sampleconfig/configtx.yaml

  • 拷贝配置文件到自己的目录下

2.3 配置信息介绍

我的配置信息是这样的,每个人的可能会由于上面的配置文件的不同而不同

但是如果你是按照我上面的进行配置的话,那可以直接复制了~
my_yaml/configtx.yaml

Organizations:
  # orderer 组织
  - &OrdererOrg   # & 取地址 组织名称
    Name: OrdererMSP # 组织名称
    ID: OrdererMSP # MSP id
    MSPDir: crypto-config/ordererOrganizations/orderer.com/msp # msp路径
    # 无需设置锚节点
  # peer 组织, 下面两个锚节点
  - &Org1
    Name: Org1MSP
    ID: Org1MSP
    MSPDir: crypto-config/peerOrganizations/org1.example.com/msp
    AnchorPeers: # 锚节点
      - Host: peer0.org1.example.com  # 组织下任意节点,选为锚节点
        Port: 7051

  - &Org2
    Name: Org2MSP
    ID: Org2MSP
    MSPDir: crypto-config/peerOrganizations/org2.example.com/msp
    AnchorPeers:
      - Host: peer0.org2.example.com
        Port: 7051

Orderer: &OrdererDefaults   # 不用改,使用默认即可
  OrdererType: solo         # 共识机制类型,solo和kafka
  Addresses:                # 排序节点的域名
    - orderer.example.com:7050   # 域名:端口号,默认是7050
  BatchTimeout: 2s          # 批次,多长时间产生新的区块
  BatchSize:                # 批次大小
    MaxMessageCount: 100    #交易的最大数量,达到后产生新的区块,100条左右
    AbsoluteMaxBytes: 64 MB # 数据量达到后产生新的区块,32或64MB左右
    PreferredMaxBytes: 512 KB #建议的交易数值大小,512KB即可
  MaxChannels: 0            # 最大通道数
  Kafka:                    # kafka信息
    # Brokers: A list of Kafka brokers to which the orderer connects.
    # NOTE: Use IP:port notation
    Brokers:
      - 127.0.0.1:9092
  # Organizations is the list of orgs which are defined as participants on
  # the orderer side of the network.
  Organizations:

################################################################################
Application: &ApplicationDefaults

  # Organizations is the list of orgs which are defined as participants on
  # the application side of the network
  Organizations:

Profiles:
  # 创世块命令的配置
  GenGenesis:
    Orderer:          # Orderer配置项
      <<: *OrdererDefaults
      Organizations:  # orderer组织
        - *OrdererOrg # orderer组织引用

    Consortiums:        # 联盟
      SampleConsortium: # 这个可以改,下面Consortium的值也要着改
        Organizations:  # peer节点组织
          - *Org1
          - *Org2
  # 通道命令配置
  GenChannel:                     # 可以改生成通道的命令名字
    Consortium: SampleConsortium  # 和上面Consortiums 下面的SampleConsortium保持一致
    Application:
      <<: *ApplicationDefaults
      Organizations:   # peer节点
        - *Org1
        - *Org2

注意:

  • 节点的idname最好保持一致
  • 锚节点只能有一个
  • key: value :和value之间是有空格,不然是不对的,正确的话颜色会变的
  • Host: peer1.example.com 和 Port: 7051中 hostport对齐

2.4 生成创世块

由于是在win下写的,所以我们要把这个东西传到linux下面。还是使用xftp6一定要设置环境变量

设置FABRIC_CFG_PATH=$PWD

然后让环境生效

进入存放configtx.yaml配置文件的路径

生成创世块命令:

configtxgen -profile GenGenesis(配置文件中profiles下的创世块命令) -outputBlock ./genesis.block(存放文件的路径,后缀为.block)
configtxgen -profile GenGenesis -outputBlock ./genesis.block


就可以看到这创世块genesis.block文件了

2.5 生成通道文件

进入存放configtx.yaml配置文件的路径

channelID: 使用小写
configtxgen -profile GenChannel(配置文件中profiles下的通道命令) -channelID fanonechannel -outputCreateChannelTx ./channel.tx(存放文件的路径,后缀为.tx)

然后我们就可以看到这个channel.tx文件了。

2.6 更新锚节点

进入存放configtx.yaml配置文件的路径

configtxgen -profile GenChannel(这里是通道的命令) 

-- channelID zlktChannel(所属哪个通道) 
-asOrg (配置文件中peer节点设置的组织名字,Name的名称) 
-outputAnchorPeersUpdate anchorPeers.tx(后缀是tx,名字最好和节点名字有关系,可能多个节点都会更新锚节点)

e.g.:
configtxgen -profile GenChannel -outputAnchorPeersUpdate ./Peer1OrgsAnchorUpdate.tx -asOrg Peer1 -channelID fanonechannel

最后

小生凡一,期待你的关注。

以上是关于超级账本cryptogen 与 configtxgen 模块介绍的主要内容,如果未能解决你的问题,请参考以下文章

超级账本Fabric的架构与设计

区块链之旅以太坊超级账本公链联盟链

超级账本新联盟

Global Blockchain总裁对超级账本恒星币和柯达币的看法

一超级账本初体验

超级账本之——Fabric