IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> fabric 启动网络思路 -> 正文阅读

[系统运维]fabric 启动网络思路

network.sh

对参量进行定义:

crypto: 加密方式,cryptogen与fabric-ca

max_retry:最大的等待响应次数

cli_delay:命令间的延迟

channel_name

cc_name

cc_src_path:链码路径

cc_end_policy:背书策略

cc_coll_config:链码集配置

cc_init_fcn:链码初始化功能

会涉及以下默认目录

# use this as the default docker-compose yaml definition
COMPOSE_FILE_BASE=docker/docker-compose-test-net.yaml
# docker-compose.yaml file if you are using couchdb
COMPOSE_FILE_COUCH=docker/docker-compose-couch.yaml
# certificate authorities compose file
COMPOSE_FILE_CA=docker/docker-compose-ca.yaml
# use this as the docker compose couch file for org3
COMPOSE_FILE_COUCH_ORG3=addOrg3/docker/docker-compose-couch-org3.yaml
# use this as the default docker-compose yaml definition for org3
COMPOSE_FILE_ORG3=addOrg3/docker/docker-compose-org3.yaml

CC_SRC_LANGUAGE:链码语言

CC_VERSION:链码版本

CC_SEQUENCE:链码定义序列

DATABASE:leveldb或couchdb

networkup

启动网络networkup需要以下步骤:

  1. 先要检查先决条件:

    1. 查看是否克隆了peer的binary文件及是否克隆了配置文件
    2. 使用fabric的工具容器查看是否二进制文件和例子符合docker镜像
    3. 检查fabric-CA,若crypto变量为CA,则查看fabric-ca-client version,若输出不为零,则未找到binary文件
  2. 如果organizations/peerorganizations存在,则创建组织:(就只拿cryptogen为例)

    1. 对cryptogen进行判断,看是否存在
    2. 用cryptogen的generate来生成organization,generate需要用到yaml文件
    3. 用cryptogen的generate来生成orderer,generate需要用到yaml文件
  3. 再创建联盟:

    1. 对configtxgen进行判断,是否存在
    2. 用configtxgen来生成创世块,用到channelid,outputblock,twoorgsorderergensis,这里的是系统通道

createchannel

创建用户通道:

  1. 如果organizations/peerorganizations不存在,则调用networkup

  2. 调用createchannel.sh,将$CHANNEL_NAME $CLI_DELAY $MAX_RETRY $VERBOSE传入

    1. 设置局部变量,和需要投票的轮数,对应Raft

    2. 调用

      osnadmin channel join --channelID $CHANNEL_NAME --config-block ./channel-artifacts/${CHANNEL_NAME}.block -o localhost:7053 --ca-file "$ORDERER_CA" --client-cert "$ORDERER_ADMIN_TLS_SIGN_CERT" --client-key "$ORDERER_ADMIN_TLS_PRIVATE_KEY" >&log.txt
      

      来生成osn admin,并加入通道

    3. 将其写入日志中

    4. 将所有的Peer节点加入channel,会调用Peer中的channel.join:

       peer channel join -b $BLOCKFILE >&log.txt
      
    5. 为两个组织设置锚节点

deploycc

部署链码:

  1. 将以下参数

    $CHANNEL_NAME $CC_NAME $CC_SRC_PATH $CC_SRC_LANGUAGE $CC_VERSION $CC_SEQUENCE $CC_INIT_FCN $CC_END_POLICY $CC_COLL_CONFIG $CLI_DELAY $MAX_RETRY $VERBOSE
    

    传入deploycc.sh

  2. 首先需要将链码打包,用该命令:

    peer lifecycle chaincode package ${CC_NAME}.tar.gz --path ${CC_SRC_PATH} --lang ${CC_RUNTIME_LANGUAGE} --label ${CC_NAME}_${CC_VERSION} >&log.txt
    

    并对结果进行验证

  3. 为通道内的组织安装链码:

    1. 定义变量ORG,为传入的组织号

    2. 通过Peer工具的

      peer lifecycle chaincode install ${CC_NAME}.tar.gz >&log.txt
      

      来进行安装同样对结果进行验证

    3. 对不同的组织通过

      peer lifecycle chaincode queryinstalled >&log.txt
      

      来查看是否安装好了

    4. 对安装的链码进行投票,用到的工具为

      peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "$ORDERER_CA" --channelID $CHANNEL_NAME --name ${CC_NAME} --version ${CC_VERSION} --package-id ${PACKAGE_ID} --sequence ${CC_SEQUENCE} ${INIT_REQUIRED} ${CC_END_POLICY} ${CC_COLL_CONFIG} >&log.txt
      

      对投票结果进行输出

    5. 查看组织的链码定义提交情况,传入的也为org,用到的工具为

      peer lifecycle chaincode checkcommitreadiness --channelID $CHANNEL_NAME --name ${CC_NAME} --version ${CC_VERSION} --sequence ${CC_SEQUENCE} ${INIT_REQUIRED} ${CC_END_POLICY} ${CC_COLL_CONFIG} --output json >&log.txt
      

      等到所有的组织完成,并将结果进行输出

    6. 将两个组织的链码定义进行提交:

      peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "$ORDERER_CA" --channelID $CHANNEL_NAME --name ${CC_NAME} "${PEER_CONN_PARMS[@]}" --version ${CC_VERSION} --sequence ${CC_SEQUENCE} ${INIT_REQUIRED} ${CC_END_POLICY} ${CC_COLL_CONFIG} >&log.txt
      
    7. 查看组织的提交情况:

      peer lifecycle chaincode querycommitted --channelID $CHANNEL_NAME --name ${CC_NAME} >&log.txt
      
    8. 若$CC_INIT_FCN不为空,才能进行调用,即对其参数进行了初始化,

      peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "$ORDERER_CA" -C $CHANNEL_NAME -n ${CC_NAME} "${PEER_CONN_PARMS[@]}" --isInit -c ${fcn_call} >&log.txt
      

networkdown

  1. 先设置docker_sock:

    DOCKER_SOCK=$DOCKER_SOCK docker-compose -f $COMPOSE_FILE_BASE -f $COMPOSE_FILE_COUCH -f $COMPOSE_FILE_CA down --volumes --remove-orphans
    
    docker-compose -f $COMPOSE_FILE_COUCH_ORG3 -f $COMPOSE_FILE_ORG3 down --volumes --remove-orphans
    
    
  2. 若模式为restart:

    1. 清理容器:

      docker rm -f $(docker ps -aq --filter label=service=hyperledger-fabric) 2>/dev/null || true
      docker rm -f $(docker ps -aq --filter name='dev-peer*') 2>/dev/null || true
      
    2. 删除创建的链码镜像

      docker image rm -f $(docker images -aq --filter reference='dev-peer*') 2>/dev/null || true
      
    3. 删除orderer区块和其他的通道配置交易及证书

      docker run --rm -v "$(pwd):/data" busybox sh -c 'cd /data && rm -rf system-genesis-block/*.block organizations/peerOrganizations organizations/ordererOrganizations'
      
    4. 去除fabric artifacts

      docker run --rm -v "$(pwd):/data" busybox sh -c 'cd /data && rm -rf organizations/fabric-ca/org1/msp organizations/fabric-ca/org1/tls-cert.pem organizations/fabric-ca/org1/ca-cert.pem organizations/fabric-ca/org1/IssuerPublicKey organizations/fabric-ca/org1/IssuerRevocationPublicKey organizations/fabric-ca/org1/fabric-ca-server.db'
      
      docker run --rm -v "$(pwd):/data" busybox sh -c 'cd /data && rm -rf organizations/fabric-ca/org2/msp organizations/fabric-ca/org2/tls-cert.pem organizations/fabric-ca/org2/ca-cert.pem organizations/fabric-ca/org2/IssuerPublicKey organizations/fabric-ca/org2/IssuerRevocationPublicKey organizations/fabric-ca/org2/fabric-ca-server.db'
      
      docker run --rm -v "$(pwd):/data" busybox sh -c 'cd /data && rm -rf organizations/fabric-ca/ordererOrg/msp organizations/fabric-ca/ordererOrg/tls-cert.pem organizations/fabric-ca/ordererOrg/ca-cert.pem organizations/fabric-ca/ordererOrg/IssuerPublicKey organizations/fabric-ca/ordererOrg/IssuerRevocationPublicKey organizations/fabric-ca/ordererOrg/fabric-ca-server.db'
      
      docker run --rm -v "$(pwd):/data" busybox sh -c 'cd /data && rm -rf addOrg3/fabric-ca/org3/msp addOrg3/fabric-ca/org3/tls-cert.pem addOrg3/fabric-ca/org3/ca-cert.pem addOrg3/fabric-ca/org3/IssuerPublicKey addOrg3/fabric-ca/org3/IssuerRevocationPublicKey addOrg3/fabric-ca/org3/fabric-ca-server.db'
      
    5. 移除通道

      docker run --rm -v "$(pwd):/data" busybox sh -c 'cd /data && rm -rf channel-artifacts log.txt *.tar.gz'
      
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 14:33:10  更:2021-08-14 14:35:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:31:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计