主要讲Fabric核心模块中Peer
Peer模块命令

peer模块是Fabric中最重要的模块,也是在Fabric系统使用最多的模块。peer模块在Fabric中被称为主节点模块,主要负责存储区块链数据、运行维护链码、提供对外服务接口等作用。
命令行和常用参数

# 通过docker启动peer节点的镜像文件
$ docker run -it hyperledger/fabric-peer bash
$ peer --help
Usage:
  peer [command]

Available Commands:
  `chaincode`   相关的子命令:
          `install`
          `instantiate`
          `invoke`
          `package`
          `query`
          `signpackage`
          `upgrade`
          `list`
  channel     通道操作: create|fetch|join|list|update|signconfigtx|getinfo.
  help        查看相关命令的帮助信息
  logging     日志级别: getlevel|setlevel|revertlevels.
  node        node节点操作: start|status.
  version     当前peer的版本.

Flags:
  -h, --help                   help for peer
      --logging-level string   Default logging level and overrides, see core.yaml for full syntax

peer channel子命令

peer channel的子命令可以通过 peer channel --help进行查看. 这里介绍一个这些子命令可以共用的一些参数:

--cafile: 当前orderer节点pem格式的tls证书文件, 要使用绝对路径.

crypto-config/ordererOrganizations/itcast.com/orderers/ubuntu.itcast.com/msp/tlscacerts/tlsca.itcast.com-cert.pem

-o, --orderer: orderer节点的地址

--tls: 通信时是否使用tls加密

create - 创建通道

命令: peer channel create [flags], 可用参数为:
            -c, --channelID: 要创建的通道的ID, 必须小写, 在250个字符以内
            -f, --file: 由configtxgen 生成的通道文件, 用于提交给orderer
            -t, --timeout: 创建通道的超时时长

$ peer channel create -o ubuntu.itcast.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA

join - 将peer加入到通道中

命令: peer channel join[flags], 可用参数为:
            -b, --blockpath: genesis创始块文件

$ peer channel join -b mychannel.block

list - 列出peer加入的通道

$ peer channel list

update - 更新

命令: peer channel update [flags], 可用参数为:
            -c, --channelID: 要创建的通道的ID, 必须小写, 在250个字符以内
            -f, --file: 由configtxgen 生成的组织锚节点文件, 用于提交给orderer

$ peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org1MSPanchors.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

peer chaincode 子命令

chaincode一共有四个公共参数选项, 这些选项所有的子命令都可以使用, 他们分别是:

--cafile: PEM格式证书的位置
        -o, --orderer: orderer服务器的访问地址
        --tls: 使用orderer的TLS证书位置
        --transient: JSON参数的编码映射

chaincode命令的运行需要一些参数,这些参数可以是配置文件也可以是环境变量,由于涉及的参数并不是很多,因此大多数时候都会采用环境变量的方式来设置参数。

install

install命令负责安装chaincode,在这个过程中如果chaincode的源代码存在语法错误,install命令会报错。install命令的选项如下所示:
            -c, --ctor: JSON格式的构造参数, 默认是"{}"
            -l, --lang: 编写chaincode的编程语言, 默认值是 golang
            -n, --name: chaincode的名字
            -p, --path: chaincode源代码的名字
            -v, --version: 当前操作的chaincode的版本, 适用这些命令install/instantiate/upgrade

$ peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/
    # 安装成功之后, 会在peer模块的数据文件中生成一个由 -n 参数和 -v 参数组成的文件,在本例中为:
    $ docker-compose -f docker-compose-cli.yaml images
          Container                  Repository            Tag      Image Id      Size  
    ------------------------------------------------------------------------------------
    cli                      hyperledger/fabric-tools     1.2.0   379602873003   1.41 GB
    orderer.example.com      hyperledger/fabric-orderer   1.2.0   4baf7789a8ec   145 MB
    peer0.org1.example.com   hyperledger/fabric-peer      1.2.0   82c262e65984   151 MB
    peer0.org2.example.com   hyperledger/fabric-peer      1.2.0   82c262e65984   151 MB
    peer1.org1.example.com   hyperledger/fabric-peer      1.2.0   82c262e65984   151 MB
    peer1.org2.example.com   hyperledger/fabric-peer      1.2.0   82c262e65984   151 MB
    itcast@ubuntu:first-network$ docker exec -it peer0.org1.example.com bash
    root@661a44ad6677:/opt/gopath/src/github.com/hyperledger/fabric/peer# find / -name mycc.1.0
    /var/hyperledger/production/chaincodes/mycc.1.0    # 查询到的结果 - mycc.1.0
    # 通过find命令搜索到的 mycc.1.0 文件就是chaincode打包之后的文件

instantiate

instantiate可以对已经执行过instanll命令的Chaincode进行实例化,instantiate命令执行完成之后会启动Chaincode运行的Docker镜像,同时instantiate命令还会对Chaincode进行初始化。instantiate命令的选项如下所示:
            -C,--channelID:当前命令运行的通道,默认值是“testchainid"。
            -c, --ctor:JSON格式的构造参数,默认值是“{}"
            -E , --escc : 应用于当前Chaincode的系统背书Chaincode的名字。
            -l,--lang:编写Chaincode的编程语言,默认值是golang
            -n,--name:Chaincode的名字。
            -P,--policy:当前Chaincode的背书策略。
            -v,--version:当前操作的Chaincode的版本,适用于install/instantiate/upgrade等命令
            -V,--vscc:当前Chaincode调用的验证系统Chaincode的名字。

$ peer chaincode instantiate -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -l golang -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "AND ('Org1MSP.member', 'Org2MSP.member')"
    # instantiate命令成功执行之后,可以通过dockerps命令查看己经启动的运行Chaincode的docker容器。

invoke

invoke命令用来调用chaincode。invoke命令的选项如下所示:
            -C,--channelID:当前命令运行的通道,默认值是“testchainid"
            -c, --ctor:JSON格式的构造参数,默认值是“{}"
            -n,--name:Chaincode的名字。

# 调用示例
    $ peer chaincode invoke -o orderer.example.com:7050  -C mychannel -n mycc -c '{"Args":["invoke","a","b","10"]}'

list

list命令用来查询已经安装的Chaincode,list命令的选项如下所示:
            -C,--channelID:当前命令运行的通道,默认值是“testchainid"
            --installed:获取当前Peer节点已经被安装的chaincode
            --instantiated:获取当前channel中已经被实例化的chaincode

# 调用示例
    $ peer chaincode list --installed

package

package用来将Chaincode打包。package命令的选项如下所示:
            -s,--cc-package:对打包后的Chaincode进行签名。
            -c, --ctor:JSON格式的构造参数,默认值是“{}"
            -i,--instantiate-policy:Chaincode的权限
            -l,--lang:编写Chaincode的编程语言,默认值是golang
            -n,--name:Chaincode的名字。
            -p,--path:Chaincode源代码的路径。
            -S,--sign:对打包的文件用本地的MSP进行签名。
            -v,--version:当前操作的Chaincode的版本,适用于install/instantiate/upgrade等命令

# 调用示例
    $ peer chaincode package —P github.com/hyperledger/fabric/examples/chaincode/go/example  —n mycc —v 1.0 -s —S -i "OR ('Org1MSP.member','Org2MSP.member')" mycc.1.0.out

query

query命令用来执行chaincode代码中的query方法。query命令的选项如下:
            -C,--channelID:当前命令运行的通道,默认值是“testchainid"
            -c, --ctor:JSON格式的构造参数,默认值是“{}"
            -x,--hex:是否对输出的内容进行编码处理
            -n,--name:Chaincode的名字。
            -r,--raw:是否输出二进制内容
            -t, --tid: 指定当前查询的编号

# 调用示例
    $ peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

signpackage

# 对打包好的chaincode进行签名
    # 示例调用
    $ peer chaincode signpackage mycc.1.0.out sign_mycc.1.0.out

upgrade

upgrade用来更新已经存在的chaincode。命令选项如下:
            -C,--channelID:当前命令运行的通道,默认值是“testchainid"
            -c, --ctor:JSON格式的构造参数,默认值是“{}"
            -E , --escc : 应用于当前Chaincode的系统背书Chaincode的名字。
            -l,--lang:编写Chaincode的编程语言,默认值是golang
            -n,--name:Chaincode的名字。
            -p, --path: chaincode源代码的名字
            -P,--policy:当前Chaincode的背书策略。
            -v,--version:当前操作的Chaincode的版本,适用于install/instantiate/upgrade等命令
            -V,--vscc:当前Chaincode调用的验证系统Chaincode的名字。

$ peer chaincode upgrade -o orderer.example.com:7050 -n mycc -v 1.1 -C mychannel -c '{"Args":["init","a","100","b","200"]}'

peer 的环境变量

# 配置文件和环境变量是设置peer启动参数的重要手段, 相关环境变量如下:
CORE_VM_ENDPOINT    # docker服务器的Deamon地址, 默认取端口的套接字, 如下:
    - `unix:///var/run/docker.sock
CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE    # chaincode容器的网络命名模式, 自己取名即可
    - `节点运行在同一个网络中才能相互通信, 不同网络中的节点相互隔离
CORE_PEER_PROFILE_ENABLED    # 使用peer内置的 profile server
    - `fabric的peer内置有profile server,默认时运行在6060端口上的,并且默认关闭。
CORE_LOGGING_LEVEL        # log日志的级别
    - `critical | error | warning | notice | info | debug
CORE_PEER_ID    # peer节点的编号, 自定义一个即可
CORE_PEER_GOSSIP_USELEADERELECTION    # 是否自动选举leader节点, 自动:true
CORE_PEER_GOSSIP_ORGLEADER            # 当前节点是否为leader节点, 是:true
CORE_PEER_ADDRESS                    # 当前peer节点的访问地址
    - `格式: 域名:端口 / IP:端口
CORE_PEER_CHAINCODELISTENADDRESS    # chaincode的监听地址
CORE_PEER_GOSSIP_EXTERNALENDPOINT    # 节点被组织外节点感知时的地址
    - `默认为空, 代表不被其他组织节点所感知
CORE_PEER_GOSSIP_BOOTSTRAP    # 启动节点后向哪些节点发起gossip连接, 以加入网络
    - `这些节点与本地节点需要属于同一个网络
CORE_PEER_LOCALMSPID     # peer节点所属的组织的编号, 在configtxgen.yaml中设置的
CORE_CHAINCODE_MODE        # chaincode的运行模式
    - `net: 网络模式
    - `dev: 开发模式, 该模式下可以在容器外运行chaincode
CORE_PEER_MSPCONFIGPATH    # 当前节点的msp文件路径
    - `启动peer的时候需要使用msp账号文件
    - `crypto-config/peerOrganizations/org1.x.com/peers/peer0.org1.x.com/msp
    - `创建channel的时候需要使用msp账号文件
    - `crypto-config/peerOrganizations/org1.x.com/users/Admin@org1.x.com/msp
CORE_PEER_TLS_ENABLED    # 是否激活tls, 激活:true, 不激活:false
CORE_PEER_TLS_CERT_FILE    # 服务器身份验证证书
    - `crypto-config/peerOrganizations/org1.x.com/peers/peer0.org1.x.com/tls/server.crt
CORE_PEER_TLS_KEY_FILE    # 服务器的私钥文件
    - `crypto-config/peerOrganizations/org1.x.com/peers/peer0.org1.x.com/tls/server.key
CORE_PEER_TLS_ROOTCERT_FILE    # 根服务器证书
    - `crypto-config/peerOrganizations/org1.x.com/peers/peer0.org1.x.com/tls/ca.crt

每个 org 会选举出一个 leader peer(实际上可以存在多个),负责连接到 orderer。leader peer从orderer 拿到新块的信息后分发给其他 peer。

静态选择leader peer

export CORE_PEER_GOSSIP_USELEADERELECTION=false
        export CORE_PEER_GOSSIP_ORGLEADER=true #指定某一个peer为leader peer
        # 1. 如果都配置为 false,那么 peer 不会尝试变成一个 leader
        # 2. 如果都配置为 true,会引发异常
        # 3. 静态配置的方式,需要自行保证 leader 的可用性

动态选择leader peer

export CORE_PEER_GOSSIP_USELEADERELECTION=true
        export CORE_PEER_GOSSIP_ORGLEADER=false

peer 默认监听的端口

下面是Hyperledger中相关监听的服务端口(默认)

7050: REST 服务端口
        7051:peer gRPC 服务监听端口
        7052:peer CLI 端口
        7053:peer 事件服务端口
        7054:eCAP
        7055:eCAA
        7056:tCAP
        7057:tCAA
        7058:tlsCAP
        7059:tlsCAA

Fabric核心模块之Peer解析相关推荐

  1. Hyperledger Fabric 核心模块(1)整体概述

    1. fabric 主要模块 cryptogen .configtxgen和configtxlator 属于工具模块.工具模块负责证书文件.区块链创始块.通道创始块等相关文件和证书的生成工作, 但是工 ...

  2. Hyperledger Fabric 核心模块(6)Fabric-ca-server

    1. Fabric-ca 的编译和安装 2 fabric-ca-server的启动和配置 fab ric - ca- server 启动之后是 以守护进程方式存在,可以通过 fabric - ca- ...

  3. Hyperledger Fabric 核心模块(7)Fabric-ca-client

    fabric-ca-client 模块通过相关的子命令完成账号注册.授权申请.证书撤销等操作 . 1. 命令 • enroll :登记账号 . • gencrl :撤销证书 . • gencsr : ...

  4. Hyperledger Fabric 核心模块(5)peerer共识

    peer 模块在Fabric 中被称为主节点模块 ,主要负 责存储区块链数据 .运行维护链码 . 提供对外付服务接口等作用 1. 命令行常用参数 peer 模块中常用的命令和参数如下所示 : //命令 ...

  5. Hyperledger Fabric 核心模块(2)configtxgen工具

    1. 说明 专门负责生成系统的创始块和通道Channel的创始块 . order 模块的genesis block创始块 channel 模块的 channel configuration trans ...

  6. Hyperledger Fabric 核心模块(3)cryptogen 工具

    1. 说明 cryptogen 工具是加密生成器,为属于组织中的各个实体生成相应的密钥和证书.证书文件代表着各个实体在网络中的身份,用于实体间进行交流和交易时进行签名或身份验证. cryptogen模 ...

  7. Hyperledger Fabric 核心模块(2)configtxgen configtx.yaml配置文件

    1. Channel / 通道配置 要写入创世区块或配置交易的通道参数 Channel: &ChannelDefaults# 定义本层级的通道访问策略,其权威路径为 /Channel/< ...

  8. Hyperledger Fabric 核心模块(4)orderer 共识

    orderer模块负责对交易进行排序,并将排好序的交易打包成区块 1. orderer 模块的命令和参数 help 显示帮助信息 start *启动 orderer 节点 version 显示版本信息 ...

  9. Hyperledger Fabric 核心模块(6)configtxlator工具

    1. 定义 无论"配置交易文件 .tx"和"初始区块文件 .block"都是二进制格式,用户都无法直接编辑.configtxlator工具主要是用于将这些配置文 ...

最新文章

  1. Linux 基金会宣布红队项目,致力于孵化开源安全工具
  2. MySQL 性能优化之高阶神技
  3. vue页面自适应屏幕宽高_Vue+Element UI 高度实时自适应
  4. SAP CRM读取产品主数据360度数据的API
  5. 最细致的Spring Boot结合Vue前后端分离项目打包部署步骤(搭配Nginx)
  6. 多台电脑共享一套鼠标键盘的免费方法
  7. 开源音乐播放器_如何选择开源音乐播放器
  8. sql server 2005技术大全_3年2.16~3.2万吨!上机数控子公司与新疆大全签订多晶硅采购长单...
  9. optparse的模块编译参数使用
  10. 微信自定义菜单java_使用Java语言开发微信公众平台(八)——自定义菜单功能
  11. XNA Game Studio 2.0安装问题,崩溃了
  12. 视频剪辑-mkv文件导入PR
  13. PMP®|项目经理如何应对项目需求变更?
  14. 马斯克11天强吞推特,全新商业帝国拼图完成
  15. selenium+java发送cookie,绕过验证码登录
  16. RF信号下采样/矩阵下采样(附python实现代码)
  17. Android APP中保持屏幕不自动灭屏的一种方法
  18. G++’s Family
  19. 「干货」项目经理工作流程23步,步步惊心
  20. v880+ 联通定制手机的永久ROOT和精简版本 国行

热门文章

  1. java static 变量共享_java中如何理解多个对象共享同一个静态成员变量?
  2. chrome web获取mac地址_老鬼傻瓜式讲解网络知识:网络设备如何通过IP地址获取设备MAC地址...
  3. 用ajax写以随机数验证码,关于前端ajax请求url为何添加一个随机数
  4. linux下imwbr1进程,Linux服务器中木马wnTKYg
  5. OpenCV关于hog特征向量的个数
  6. face recognition[翻译][深度学习理解人脸]
  7. 编码练习——Java-2-流程控制
  8. Java 中 ConcurrentHashMap 原理分析
  9. JVM学习笔记(四)------内存调优
  10. 正确认识Arrays.asList方法