>

하이퍼 레져를 처음 사용하는 예이며 여기 . 체인 코드를 재생하려고 시도했지만 체인 코드를 업그레이드하려고하는 부분에 붙어 있습니다

도커 피어 노드 내에서 피어 체인 코드 업그레이드를 실행하려고했습니다.

peer chaincode upgrade -n tuna-app -p github.com/tuna-app

하지만 오류로 끝납니다

Error getting (testchainid) orderer endpoint: Error endorsing GetConfigBlock: rpc error: code = Unknown desc = chaincode error (status: 500, message: "GetConfigBlock" request failed authorization check for channel [testchainid]: [Failed to get policy manager for channel [testchainid]])

  • 답변 # 1

    체인 코드를 업그레이드 할 채널 이름을 지정하고 args 및 새 버전을 지정해야합니다. 또한 피어 cli가 업그레이드 트랜잭션을 제출할 수 있도록 주문 서비스 엔드 포인트를 지정해야합니다.

    peer chaincode upgrade -n tuna-app -v 2.0 \
                   -c '{"Args":[""]}' \
                   -p github.com/tuna-app -C mychannel \
                   -o orderer:7051
    
    

    자세한 내용은 여기를 참조하십시오.

  • 답변 # 2

    여기에는 bash에 기본 스크립트가 있습니다.

    #!/bin/bash
    PRV_VERSION='v2';
    VERSION='v3';
    CONTAINER_IDS=$(docker ps -a | grep "mycc-$PRV_VERSION" | awk '{print $1}')
    docker rm -f $CONTAINER_IDS
    docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/peer/users/[email protected]/msp" peer0.org1.example.com \
        peer chaincode install \
        -n mycc \
        -v $VERSION \
        -p /etc/hyperledger/chaincode \
        -l node;
    docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/peer/users/[email protected]/msp" peer1.org1.example.com \
        peer chaincode install \
        -n mycc \
        -v $VERSION \
        -p /etc/hyperledger/chaincode \
        -l node;
    docker exec -e "CORE_PEER_LOCALMSPID=Org2MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/peer/users/[email protected]/msp" peer0.org2.example.com \
        peer chaincode install \
        -n mycc \
        -v $VERSION \
        -p /etc/hyperledger/chaincode \
        -l node;
    docker exec -e "CORE_PEER_LOCALMSPID=Org2MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/peer/users/[email protected]/msp" peer1.org2.example.com \
        peer chaincode install \
        -n mycc \
        -v $VERSION \
        -p /etc/hyperledger/chaincode \
        -l node;
    sleep 10;
    ORDERER_CA=/etc/hyperledger/organizations/users/[email protected]/msp/tlscacerts/tlsca.example.com-cert.pem
    docker exec  -e "CORE_PEER_LOCALMSPID=Org1MSP" \
                 -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/peer/users/[email protected]/msp" \
                 peer0.org1.example.com \
        peer chaincode upgrade \
        -o orderer.example.com:7050 --tls --cafile $ORDERER_CA \
        -C mychannel \
        -n mycc \
        -v $VERSION \
        -c '{"Args":[""]}' \
        -p /etc/hyperledger/chaincode
    ORDERER_CA=/etc/hyperledger/organizations/users/[email protected]/msp/tlscacerts/tlsca.example.com-cert.pem
    docker exec  -e "CORE_PEER_LOCALMSPID=Org2MSP" \
                 -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/peer/users/[email protected]/msp" \
                 peer0.org2.example.com \
        peer chaincode upgrade \
        -o orderer.example.com:7050 --tls --cafile $ORDERER_CA \
        -C mychannel \
        -n mycc \
        -v $VERSION \
        -c '{"Args":[""]}' \
        -p /etc/hyperledger/chaincode
    
    

    피어를 당신의 peer0.org1에 공유하고 체인 코드 자체 (js 또는 go로)를 공유해야합니다. 여기에는 docker-compose.yml 부분이 있습니다 :

    peer0.org1.example.com:
        container_name: peer0.org1.example.com
        extends:
          file:   base.yaml
          service: peer-base
        environment:
          - CORE_PEER_ID=peer0.org1.example.com
          - CORE_PEER_LOCALMSPID=Org1MSP
          - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
        ports:
          - 7051:7051
          - 7053:7053
        volumes:
            - ./channel/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/:/etc/hyperledger/crypto/peer
            - ./channel/crypto-config/peerOrganizations/org1.example.com/users:/etc/hyperledger/peer/users
            - ./channel/crypto-config/ordererOrganizations/example.com/users:/etc/hyperledger/organizations/users
            - ./src/github.com/example_cc/node:/etc/hyperledger/chaincode
    
    

    다음으로 로그를 확인할 수 있습니다 :

    docker logs dev-peer0.org1.example.com-mycc-v3 -f
    
    

    개발중인 체인 코드를 업그레이드하는 것은 전체 이미지를 가져 오지 않고 전체 블록 체인을 다시 만드는 것과 동일한 시간이 걸린다는 것을 말해야합니다 (./runApp.sh 스크립트에서 제거해야 함).

관련 자료

  • 이전 ajax - Laravel Blade에서 ID를 JQuery URL로 전달하는 방법
  • 다음 lua - 전역 호출 시도 (무값)