【超级账本】cryptogen 与 configtxgen 模块介绍(三)

本文涉及的产品
.cn 域名,1个 12个月
简介: 目录1. cryptogen模块1.1 命令介绍1.2 生成证书1.2.1 生成模板配置文件1.2.2 生成证书2. configtxgen模块2.1 configtxgen命令介绍2.2 修改配置文件2.3 配置信息介绍2.4 生成创世块2.5 生成通道文件2.6 更新锚节点最后

目录

1. cryptogen模块

1.1 命令介绍

1.2 生成证书

1.2.1 生成模板配置文件

1.2.2 生成证书

2. configtxgen模块

2.1 configtxgen命令介绍

2.2 修改配置文件

2.3 配置信息介绍

2.4 生成创世块

2.5 生成通道文件

2.6 更新锚节点

最后

1. cryptogen模块

配置文件以及证书生成


1.1 命令介绍

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


image.png


yaml格式介绍

大小写敏感

使用缩进表示层级关系(缩进的空格数不重要,只要相同层级的元素左对齐即可)

'#'表示注释

进不允许使用tab建,只能使用空格键

yaml文件使用

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会自动在前面加peer0,peer1按顺序这样的二级域名,可以互换使用 peer0.org1.example.com

1.2 生成证书

1.2.1 生成模板配置文件

指令

cryptogen showtemplate > conf.yaml

image.png

修改conf.yaml文件

image.png

修改成如下形式


image.png

1.2.2 生成证书

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


指令

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


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

image.png


然后可以看见目录多出了一个crypto-config文件

进去就能看见这些结点的信息了。

image.png

2. configtxgen模块

创世块和通道文件的生成


2.1 configtxgen命令介绍

configtxgen --help

image.png

2.2 修改配置文件

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


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


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



image.png

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

注意:


节点的id和name最好保持一致

锚节点只能有一个

key: value :和value之间是有空格,不然是不对的,正确的话颜色会变的

Host: peer1.example.com 和 Port: 7051中 host和port对齐

2.4 生成创世块

由于是在win下写的,所以我们要把这个东西传到linux下面。还是使用xftp6image.png

一定要设置环境变量

image.png

设置FABRIC_CFG_PATH=$PWD

image.png

然后让环境生效


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


生成创世块命令:

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

image.png


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

image.png

2.5 生成通道文件

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

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

image.png

然后我们就可以看到这个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

image.png

相关文章
|
7月前
|
安全 区块链
DAPP去中心化质押LP博饼交易系统开发|步骤逻辑|详情模式
智能合约就是一种把我们生活中的合约数字化,当满足一定条件后
|
6月前
|
算法 安全 区块链
区块链如何实现交易匿名性
**区块链匿名性摘要:** - 匿名性源于公钥/私钥系统,公钥作地址,私钥验证交易,不透露身份信息。 - Coin Mixing 和 CoinJoining 混合交易,使资金流向难以追踪。 - 匿名币如 Monero、Zcash 使用零知识证明和环签名技术增强匿名。 - 隐身地址和一次性地址增加隐私,公私钥交换确保安全交易而不暴露身份。 - 多层次加密与协议结合,保障区块链交易隐私。
|
存储 区块链
DIDSWAP去中心化交易所系统开发|DIDSWAP合约质押案例逻辑
智能合约才从理论构想变为落地的现实 function approve address spende
|
7月前
|
供应链 区块链
区块链DAPP质押合约代币系统开发|模式方案
智能合约是一种数字化的合约,它将合约内容写入区块链中,保证了合约的公开透明
|
安全 JavaScript 前端开发
DAPP智能合约交易系统开发详解 | DAPP智能合约交易系统源码合约规则解析
智能合约不仅以与传统合约相同的方式定义了协议的规则和处罚,还可以自动强制执行这些义务。它通过接受信息作为输入,通过规则为输入赋值,在合约中列出并执行这些合约条款所要求的行为
|
区块链
关于代币合约项目系统开发DAPP模式方案
关于代币合约项目系统开发DAPP模式方案
|
存储 安全 区块链
uniswap去中心化交易所系统开发|详情规则|代码逻辑
Web 3.0有望改变整个用户体验,专注于数据链接,但区块链技术能让Web 3.0真正意义上实现。
|
存储 人工智能 大数据
|
存储 区块链 编译器
DAPP链上代币发行合约去中心化项目系统开发实现技术案例及源码详情
 区块头和区块体数据也会被当作输入数据做一次Hash运算,其运算结果会被存储在下一个区块的区块头中,这样任何区块内容的修改都会反映到区块的Hash值上,而区块的Hash值又是下一个区块的输入数据,它又会被当作新区块的数据参与一次新区块的Hash运算,随着时间的推移和交易量的增加,所有的区块会通过保存前一个区块的Hash运算结果的方式组成一条链。
|
安全 区块链 Python
defi/dapp代币合约链上开发案例丨dapp/defi链上代币合约swap薄饼去中心交易所系统开发实现技术及源码
 区块链最重要的功能,就是建立一种价值共识,而这个“共识”,主要基于“价值量化的能力”和“价值安全的过程”两个方面。先是“价值量化能力”:把一件事通过数字化的方式描述清楚,就是一个价值量化的过程。