当前位置:首页 > Web开发 > 正文

某个安装有链码的 peer 尝试与链码交换

2024-03-31 Web开发

手动启动 first-network 网络系列分为三部分:

手动启动 first-network 网络(一)

手动启动 first-network 网络(二)

手动启动 first-network 网络(三)

第一篇纯挚使用命令行的形式执行 byfn.sh 脚本中的内容,第二篇和第三篇是对手动启动网络过程所使用的命令和配置文件的解释。

1 启动漫衍式网络

手动生成 fabric 网络所需的配置文件后,接下来需要启动区块链中供给网络处事的各个节点。fabric 给与容器技术,使用 docker-compose 这个工具来实现区块链网络所需的节点容器打点,实现方法只需要编写节点相应的配置文件即可。

1.1 docker-compose-cli.yaml

在 first-network 目录下供给了一个 dokcer-compose 工具所需的配置文件 docker-compose-cli.yaml,我们使用该文件启动网络节点,下面是该文件的内容:

version: '2' # 暗示用的版本 2 的 YAML 版本 volumes: orderer.example.com: peer0.org1.example.com: peer1.org1.example.com: peer0.org2.example.com: peer1.org2.example.com: networks: byfn: services: orderer.example.com: # Orderer 节点 extends: # 扩展自 base/docker-compose-base.yaml 文件的 orderer.example.com file: base/docker-compose-base.yaml service: orderer.example.com container_name: orderer.example.com # 容器名称 networks: - byfn peer0.org1.example.com: # peer0.org1.example.com 节点 container_name: peer0.org1.example.com extends: file: base/docker-compose-base.yaml service: peer0.org1.example.com networks: - byfn peer1.org1.example.com: # peer1.org1.example.com 节点 container_name: peer1.org1.example.com extends: file: base/docker-compose-base.yaml service: peer1.org1.example.com networks: - byfn peer0.org2.example.com: # peer0.org2.example.com 节点 container_name: peer0.org2.example.com extends: file: base/docker-compose-base.yaml service: peer0.org2.example.com networks: - byfn peer1.org2.example.com: # peer1.org2.example.com 节点 container_name: peer1.org2.example.com extends: file: base/docker-compose-base.yaml service: peer1.org2.example.com networks: - byfn cli: # CLI 用户客户端节点 container_name: cli # 容器名称 image: hyperledger/fabric-tools:$IMAGE_TAG # 依赖的容器镜像 tty: true stdin_open: true environment: # 环境变量 - SYS_CHANNEL=$SYS_CHANNEL - GOPATH=http://www.mamicode.com/opt/gopath - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock #- FABRIC_LOGGING_SPEC=DEBUG - FABRIC_LOGGING_SPEC=INFO # 容器日志级别 - CORE_PEER_ID=cli # 当前节点名字 cli - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # 连接的 peer 节点的地点 - CORE_PEER_LOCALMSPID=Org1MSP # 连接的 peer 节点所属的组织 MSPID - CORE_PEER_TLS_ENABLED=true # 是否启动 TLS 通信 # 通信用的 TLS 证书 - CORE_PEER_TLS_CERT_FILE=http://www.mamicode.com/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt # TLS 证书对应的私钥 - CORE_PEER_TLS_KEY_FILE=http://www.mamicode.com/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key # TLS 证书的根证书 - CORE_PEER_TLS_ROOTCERT_FILE=http://www.mamicode.com/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt # 设置 CLI 客户端身份账号(MSP),客户真个角色差别,权限差别,此处是打点员账号 # 普通用户账号:对账本数据进行读写操纵 # 打点员账号:对账本数据进行读写,创建通道,让节点插手通道,安置并实例化链码 - CORE_PEER_MSPCONFIGPATH=http://www.mamicode.com/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer # 容器的默认事情目录 command: /bin/bash # 容器启动时执行的命令 volumes: # 本地系统文件路径与容器指定路径的映射 - /var/run/:/host/var/run/ - ./../chaincode/:/opt/gopath/src/github.com/chaincode - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/ - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts depends_on: # 依赖的相关容器 - orderer.example.com - peer0.org1.example.com - peer1.org1.example.com - peer0.org2.example.com - peer1.org2.example.com networks: - byfn

以上配置文件指定了网络中各个节点容器(共计 6 个容器,包孕 1 个 Orderer节点、4 个 Peer节点和 1 个 CLI 客户端)的信息。除了 CLI 容器之外的,其他容器都有 extends 指向 base/docker-compose-base.yaml 文件,下面是关联的 docker-compose-base.yaml 文件的具体内容:

version: '2' services: orderer.example.com: container_name: orderer.example.com # 容器名称 extends: # 扩展自 peer-base.yaml 文件的 orderer-base file: peer-base.yaml service: orderer-base volumes: # 本地系统文件路径与容器指定路径的映射 - ../channel-artifacts/genesis.block:/var/hyperledger/orderer/orderer.genesis.block - ../crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp - ../crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls - orderer.example.com:/var/hyperledger/production/orderer ports: - 7050:7050 # 本地系统端口与容器监听端口的映射 peer0.org1.example.com: container_name: peer0.org1.example.com # 容器名称 extends: # 扩展自 peer-base.yaml 文件的 peer-base file: peer-base.yaml service: peer-base environment: # 环境变量 - CORE_PEER_ID=peer0.org1.example.com # peer 节点的名字 - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # peer 节点的访谒地点 - CORE_PEER_LISTENADDRESS=0.0.0.0:7051 # peer 节点的监听地点,设置为 0.0.0.0 会自动读取网卡,识别实际的本机 IP - CORE_PEER_CHAINCODEADDRESS=peer0.org1.example.com:7052 # peer 节点上链码的访谒地点 - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052 # peer 节点上链码的监听地点,设置为 0.0.0.0 会自动读取网卡,识别实际的本机 IP - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.example.com:8051 # gossip协议配置 - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051 - CORE_PEER_LOCALMSPID=Org1MSP # 所属组织的 MSPID volumes: # 本地系统文件路径与容器指定路径的映射 - /var/run/:/host/var/run/ - ../crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp - ../crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls - peer0.org1.example.com:/var/hyperledger/production ports: - 7051:7051 # 本地系统端口与容器监听端口的映射 peer1.org1.example.com: container_name: peer1.org1.example.com extends: file: peer-base.yaml service: peer-base environment: - CORE_PEER_ID=peer1.org1.example.com - CORE_PEER_ADDRESS=peer1.org1.example.com:8051 - CORE_PEER_LISTENADDRESS=0.0.0.0:8051 - CORE_PEER_CHAINCODEADDRESS=peer1.org1.example.com:8052 - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:8052 - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:8051 - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051 - CORE_PEER_LOCALMSPID=Org1MSP volumes: - /var/run/:/host/var/run/ - ../crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp - ../crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls - peer1.org1.example.com:/var/hyperledger/production ports: - 8051:8051 peer0.org2.example.com: container_name: peer0.org2.example.com extends: file: peer-base.yaml service: peer-base environment: - CORE_PEER_ID=peer0.org2.example.com - CORE_PEER_ADDRESS=peer0.org2.example.com:9051 - CORE_PEER_LISTENADDRESS=0.0.0.0:9051 - CORE_PEER_CHAINCODEADDRESS=peer0.org2.example.com:9052 - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:9052 - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:9051 - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:10051 - CORE_PEER_LOCALMSPID=Org2MSP volumes: - /var/run/:/host/var/run/ - ../crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp - ../crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls - peer0.org2.example.com:/var/hyperledger/production ports: - 9051:9051 peer1.org2.example.com: container_name: peer1.org2.example.com extends: file: peer-base.yaml service: peer-base environment: - CORE_PEER_ID=peer1.org2.example.com - CORE_PEER_ADDRESS=peer1.org2.example.com:10051 - CORE_PEER_LISTENADDRESS=0.0.0.0:10051 - CORE_PEER_CHAINCODEADDRESS=peer1.org2.example.com:10052 - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:10052 - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:10051 - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:9051 - CORE_PEER_LOCALMSPID=Org2MSP volumes: - /var/run/:/host/var/run/ - ../crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp - ../crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls - peer1.org2.example.com:/var/hyperledger/production ports: - 10051:10051

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31804.html