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

简介: 目录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

相关文章
|
9月前
|
安全 区块链
DAPP去中心化质押LP博饼交易系统开发|步骤逻辑|详情模式
智能合约就是一种把我们生活中的合约数字化,当满足一定条件后
|
8月前
|
算法 安全 区块链
区块链如何实现交易匿名性
**区块链匿名性摘要:** - 匿名性源于公钥/私钥系统,公钥作地址,私钥验证交易,不透露身份信息。 - Coin Mixing 和 CoinJoining 混合交易,使资金流向难以追踪。 - 匿名币如 Monero、Zcash 使用零知识证明和环签名技术增强匿名。 - 隐身地址和一次性地址增加隐私,公私钥交换确保安全交易而不暴露身份。 - 多层次加密与协议结合,保障区块链交易隐私。
|
8月前
|
供应链 监控 物联网
区块链通过其独特的分布式账本技术和智能合约功能,确保供应链信息的实时更新
**区块链技术革新供应链:分布式账本确保信息实时一致,智能合约自动执行降低错误,物联网追踪增强透明度和信任。通过去中心化、不可篡改的特性,实现交易验证、货物追踪与业务规则自动化,提升供应链效率与安全性。**
|
存储 区块链
DIDSWAP去中心化交易所系统开发|DIDSWAP合约质押案例逻辑
智能合约才从理论构想变为落地的现实 function approve address spende
|
存储 前端开发 编译器
智能合约与DApp的关系与区别
以太坊社区把基于智能合约的应用称为去中心化的应用程序(Decentralized App,简称DApp)。
智能合约与DApp的关系与区别
|
分布式数据库 区块链 数据库
DAPP合约代币质押模式系统开发流程与方案
区块链开发是一项非常有前景的技术,它是一种去中心化的分布式数据库
|
存储 安全 区块链
DAPP钱包OP链合约代币质押系统开发方案与详情
实现智能合约交易所的关键在于如何确保交易的安全性和有效性
|
存储 区块链 数据安全/隐私保护
OP链DAPP智能合约流动性质押模式系统开发方案
中心化系统的效率最高,但缺乏公平性
|
安全 前端开发 算法
DAPP智能合约链上系统开发逻辑规则定制部署
DAPP 智能合约链上系统开发是区块链技术的一个重要应用,它可以使去中心化应用程序(DApps)更加安全、高效、便捷地运行。本文将介绍 DAPP 智能合约链上系统开发的规则和详情,以及源码版的设计思路。
|
存储 安全 区块链
波场链合约交易所系统模型合约开发解决方案
address private _owner; mapping (address => bool) private _pausedUsers; event Log交易撮合(uint256 amount, address user, address trader); event Log资产变动(address from, address to, uint256 amount);