Hyperledger fabric多通道多节点增删改查分角色版(mac)

cd /opt/gopath/src/github.com/hyperledger/fabric/aberic

docker images

******************************

安装docker images

$ docker pull hyperledger/fabric-tools:x86_64-1.1.0

$ docker pull hyperledger/fabric-tools:latest

$ docker pull hyperledger/fabric-ca:x86_64-1.1.0

$ docker pull hyperledger/fabric-ca:latest

$ docker pull hyperledger/fabric-couchdb:latest

$ docker pull hyperledger/fabric-orderer:x86_64-1.1.0

$ docker pull hyperledger/fabric-orderer:latest

$ docker pull hyperledger/fabric-peer:x86_64-1.1.0

$ docker pull hyperledger/fabric-peer:latest

$ docker pull hyperledger/fabric-javaenv:x86_64-1.1.0

$ docker pull hyperledger/fabric-ccenv:x86_64-1.1.0

$ docker pull hyperledger/fabric-baseimage:x86_64-0.4.6

$ docker pull hyperledger/fabric-baseos:x86_64-0.4.6

******************************

docker常用命令

docker rmi f0fe49196c40 (IMAGE ID)

docker ps -a

docker stop $(docker ps -a -q)

docker rm $(docker ps -a -q)

chmod +x /opt/gopath/src/github.com/hyperledger/fabric/aberic/bin/configtxgen

******************************

下载bin

cd /opt/gopath/src/github.com/hyperledger/fabric/scripts

./bootstrap.sh

cp bin/ ../aberic/

******************************

通道1主节点:

./bin/cryptogen generate --config=./crypto-config.yaml

/opt/gopath/src/github.com/hyperledger/fabric/aberic/bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock /opt/gopath/src/github.com/hyperledger/fabric/aberic/channel-artifacts/genesis.block

/opt/gopath/src/github.com/hyperledger/fabric/aberic/bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx /opt/gopath/src/github.com/hyperledger/fabric/aberic/channel-artifacts/mychannel.tx -channelID mychannel

export CHANNEL_NAME=mychannel

/opt/gopath/src/github.com/hyperledger/fabric/aberic/bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate /opt/gopath/src/github.com/hyperledger/fabric/aberic/channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP

/opt/gopath/src/github.com/hyperledger/fabric/aberic/bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate /opt/gopath/src/github.com/hyperledger/fabric/aberic/channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP

docker-compose -f docker-orderer.yaml up -d

docker-compose -f docker-peer0-org1.yaml up -d

docker exec -it cli bash

peer channel create -o orderer.example.com:7050 -c mychannel  -f ./channel-artifacts/mychannel.tx

peer channel join -b mychannel.block

peer chaincode install -n traceGoods -p github.com/hyperledger/fabric/aberic/chaincode/go/trace_goods -v 1.0
peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n traceGoods -c '{"Args":["init","admin","admin"]}' -P "OR ('Org1MSP.member','Org2MSP.member')" -v 1.0

重启电脑后启动fabric,执行以下三条命令

$ docker restart CONTAINER ID

$ docker exec -it cli bash

通道1子节点:

将order节点channel-artifacts和crypto-config文件夹复制过来

docker-compose -f /opt/gopath/src/github.com/hyperledger/fabric/aberic/docker-peer0-org2.yaml up -d

docker exec -it cli bash

peer channel fetch 0 mychannel.block -o orderer.example.com:7050 -c mychannel

peer channel join -b mychannel.block

peer chaincode install -n traceGoods -p github.com/hyperledger/fabric/aberic/chaincode/go/trace_goods -v 1.0

peer chaincode list --installed

peer chaincode query -C mychannel -n traceGoods -c '{"Args":["queryAllGoods","admin","1","10"]}'

通道2主节点:

export CHANNEL_NAME=mychannel2

/opt/gopath/src/github.com/hyperledger/fabric/aberic/bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/mychannel2.tx -channelID mychannel2

/opt/gopath/src/github.com/hyperledger/fabric/aberic/bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP

/opt/gopath/src/github.com/hyperledger/fabric/aberic/bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP

docker exec -it cli bash

peer channel create -o orderer.example.com:7050 -c mychannel2  -f ./channel-artifacts/mychannel2.tx

peer channel join -b mychannel2.block

peer chaincode instantiate -o orderer.example.com:7050 -C mychannel2 -n traceGoods -c '{"Args":["init","admin","admin"]}' -P "OR ('Org1MSP.member')" -v 1.0

通道2子节点:

docker exec -it cli bash

peer channel fetch 0 mychannel2.block -o orderer.example.com:7050 -c mychannel2

peer channel join -b mychannel2.block

智能合约查询命令-通道1:

peer chaincode query -C mychannel -n traceGoods -c '{"Args":["queryAllGoods","admin","1","10"]}'

peer chaincode invoke -C mychannel -n traceGoods -c '{"Args":["addGoods","94cdaa8576314e6bb4277c11bc3f0492","mychannel1的商品1","2000","2018/12/12","admin"]}'

peer chaincode invoke -C mychannel -n traceGoods -c '{"Args":["addGoods","94cdaa8576314e6bb4277c11bc3f0493","mychannel1的商品2","2000","2018/12/12","admin"]}'

智能合约查询命令-通道2:

peer chaincode query -C mychannel2 -n traceGoods -c '{"Args":["queryAllGoods","admin","1","10"]}'

peer chaincode invoke -C mychannel2 -n traceGoods -c '{"Args":["addGoods","94cdaa8576314e6bb4277c11bc3f0494","mychannel2的商品1","2000","2018/12/12","admin"]}'

peer chaincode invoke -C mychannel2 -n traceGoods -c '{"Args":["addGoods","94cdaa8576314e6bb4277c11bc3f0495","mychannel2的商品2","2000","2018/12/12","admin"]}'

出现问题:

子节点插入数据后,主从节点都无法查询新数据,解决方法,升级版本为1.1:

order节点通道1执行:

peer chaincode install -n traceGoods -p github.com/hyperledger/fabric/aberic/chaincode/go/trace_goods -v 1.1

peer chaincode upgrade -o orderer.example.com:7050 -C mychannel -n traceGoods -c '{"Args":["init","admin","admin"]}' -P "OR ('Org1MSP.member','Org2MSP.member')" -v 1.1

export CHANNEL_NAME=mychannel

/opt/gopath/src/github.com/hyperledger/fabric/aberic/bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP

/opt/gopath/src/github.com/hyperledger/fabric/aberic/bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP

order节点通道2执行:

peer chaincode upgrade -o orderer.example.com:7050 -C mychannel2 -n traceGoods -c '{"Args":["init","admin","admin"]}' -P "OR ('Org1MSP.member','Org2MSP.member')" -v 1.1

export CHANNEL_NAME=mychannel2

/opt/gopath/src/github.com/hyperledger/fabric/aberic/bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP

/opt/gopath/src/github.com/hyperledger/fabric/aberic/bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP

子节点执行:

peer chaincode install -n traceGoods -p github.com/hyperledger/fabric/aberic/chaincode/go/trace_goods -v 1.1

节点文件:

****************************

# cat docker-peer0-org1.yaml 

# Copyright IBM Corp. All Rights Reserved.

# #

# # SPDX-License-Identifier: Apache-2.0

# #

#

version: '2'

 

services:

 

  couchdb:

    container_name: couchdb

    image: hyperledger/fabric-couchdb

    environment:

      - GODEBUG=netdns=go

    # Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service,

    # for example map it to utilize Fauxton User Interface in dev environments.

    ports:

      - "5984:5984"

 

  ca:

    container_name: ca

    image: hyperledger/fabric-ca

    restart: always

    environment:

      - GODEBUG=netdns=go

      - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server

      - FABRIC_CA_SERVER_CA_NAME=ca

      - FABRIC_CA_SERVER_TLS_ENABLED=false

      - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem

      - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/c20122e3cc1d36178a0f5e3740ad6ff6bfbf396fe511e374147a392f2a9377b5_sk

    ports:

      - "7054:7054"

    command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/c20122e3cc1d36178a0f5e3740ad6ff6bfbf396fe511e374147a392f2a9377b5_sk -b admin:adminpw -d'

    volumes:

      - ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config

 

  peer0.org1.example.com:

    container_name: peer0.org1.example.com

    image: hyperledger/fabric-peer

    environment:

      - GODEBUG=netdns=go

      - CORE_LEDGER_STATE_STATEDATABASE=couchdb

      - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb:5984

 

      - CORE_PEER_ID=peer0.org1.example.com

      - CORE_PEER_NETWORKID=aberic

      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051

      - CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052

      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051

      - CORE_PEER_LOCALMSPID=Org1MSP

 

      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock

      # the following setting starts chaincode containers on the same

      # bridge network as the peers

      # https://docs.docker.com/compose/networking/

      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=aberic

      # - CORE_LOGGING_LEVEL=ERROR

      - CORE_LOGGING_LEVEL=DEBUG

      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=aberic_default

      - CORE_PEER_GOSSIP_SKIPHANDSHAKE=true

      - CORE_PEER_GOSSIP_USELEADERELECTION=true

      - CORE_PEER_GOSSIP_ORGLEADER=false

      - CORE_PEER_PROFILE_ENABLED=false

      - CORE_PEER_TLS_ENABLED=false

      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt

      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key

      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt

    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

    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer

    command: peer node start

    ports:

      - 7051:7051

      - 7052:7052

      - 7053:7053

    depends_on:

      - couchdb

    networks:

      default:

        aliases:

          - aberic

    extra_hosts:

     - "orderer.example.com:129.28.30.70"

    networks:

      default:

        aliases:

          - aberic

 

  cli:

    container_name: cli

    image: hyperledger/fabric-tools

    tty: true

    environment:

      - GODEBUG=netdns=go

      - GOPATH=/opt/gopath

      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock

      - CORE_LOGGING_LEVEL=DEBUG

      - CORE_PEER_ID=cli

      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051

      - CORE_PEER_LOCALMSPID=Org1MSP

      - CORE_PEER_TLS_ENABLED=false

      - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt

      - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key

      - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt

      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp

    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer

    volumes:

        - /var/run/:/host/var/run/

        - ./chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/aberic/chaincode/go

        - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/

        - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts

    depends_on:

      - peer0.org1.example.com

    extra_hosts:

     - "orderer.example.com:129.28.30.70"

     - "peer0.org1.example.com:129.28.30.70"

     - "peer0.org2.example.com:132.232.199.160"

****************************

# cat docker-peer0-org2.yaml 

# Copyright IBM Corp. All Rights Reserved.

# #

# # SPDX-License-Identifier: Apache-2.0

# #

#

version: '2'

 

services:

 

  couchdb:

    container_name: couchdb

    image: hyperledger/fabric-couchdb

    environment:

      - GODEBUG=netdns=go

    # Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service,

    # for example map it to utilize Fauxton User Interface in dev environments.

    ports:

      - "5984:5984"

 

  ca:

    container_name: ca

    image: hyperledger/fabric-ca

    restart: always

    environment:

      - GODEBUG=netdns=go

      - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server

      - FABRIC_CA_SERVER_CA_NAME=ca

      - FABRIC_CA_SERVER_TLS_ENABLED=false

      - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem

      - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/06a30ee974a371a6e995ed5f3645df59fa44ee2c399498d1d5b376cb6608f38d_sk

    ports:

      - "7054:7054"

    command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/06a30ee974a371a6e995ed5f3645df59fa44ee2c399498d1d5b376cb6608f38d_sk -b admin:adminpw -d'

    volumes:

      - ./crypto-config/peerOrganizations/org2.example.com/ca/:/etc/hyperledger/fabric-ca-server-config

 

  peer0.org2.example.com:

    container_name: peer0.org2.example.com

    image: hyperledger/fabric-peer

    restart: always

    environment:

      - GODEBUG=netdns=go

      - CORE_LEDGER_STATE_STATEDATABASE=couchdb

      - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb:5984

 

      - CORE_PEER_ID=peer0.org2.example.com

      - CORE_PEER_NETWORKID=aberic

      - CORE_PEER_ADDRESS=peer0.org2.example.com:7051

      - CORE_PEER_CHAINCODELISTENADDRESS=peer0.org2.example.com:7052

      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051

      - CORE_PEER_LOCALMSPID=Org2MSP

 

      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock

      # the following setting starts chaincode containers on the same

      # bridge network as the peers

      # https://docs.docker.com/compose/networking/

      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=aberic

      # - CORE_LOGGING_LEVEL=ERROR

      - CORE_LOGGING_LEVEL=DEBUG

      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=aberic_default

      - CORE_PEER_GOSSIP_SKIPHANDSHAKE=true

      - CORE_PEER_GOSSIP_USELEADERELECTION=true

      - CORE_PEER_GOSSIP_ORGLEADER=false

      - CORE_PEER_PROFILE_ENABLED=false

      - CORE_PEER_TLS_ENABLED=false

      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt

      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key

      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt

    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

    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer

    command: peer node start

    ports:

      - 7051:7051

      - 7052:7052

      - 7053:7053

    depends_on:

      - couchdb

    networks:

      default:

        aliases:

          - aberic

    extra_hosts:

     - "orderer.example.com:129.28.30.70"

    networks:

      default:

        aliases:

          - aberic

 

  cli:

    container_name: cli

    image: hyperledger/fabric-tools

    tty: true

    environment:

      - GODEBUG=netdns=go

      - GOPATH=/opt/gopath

      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock

      - CORE_LOGGING_LEVEL=DEBUG

      - CORE_PEER_ID=cli

      - CORE_PEER_ADDRESS=peer0.org2.example.com:7051

      - CORE_PEER_LOCALMSPID=Org2MSP

      - CORE_PEER_TLS_ENABLED=false

      - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt

      - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key

      - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt

      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp

    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer

    volumes:

        - /var/run/:/host/var/run/

        - ./chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/aberic/chaincode/go

        - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/

        - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts

    depends_on:

      - peer0.org2.example.com

    extra_hosts:

     - "orderer.example.com:129.28.30.70"

     - "peer0.org1.example.com:129.28.30.70"

     - "peer0.org2.example.com:132.232.199.160"

转载于:https://my.oschina.net/duojin/blog/3007061

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值