2017-09-05 1 views
1

Je pourrais exécuter peer chaincode instantiate plusieurs fois avec succès, il devrait le retourner exister, mais non. Pourquoi?Pourquoi chaincode instancier instancier plusieurs fois avec succès

logs after instantiate command

logs the docker returns

étapes:

de my github project chaincode-docker-devmode, je copie msp (peer et orderer utiliser ensemble), genesis.block, helloch.tx, docker-Compose-avec- couch.yaml et ainsi de suite forme autre endroit, ça devrait aller. Quand j'Execute:

docker-compose -f docker-compose-with-couch.yaml up 

pairs, donneur d'ordre, couchdb0, cli début puis cli exécuter script.sh

#script.sh content 
peer channel create -c helloch -f helloch.tx -o orderer:7050 
peer channel join -b helloch.block 

je simulent terminal à l'aide ambience cli au chemin actuel chaincode-docker-devmode en suivant :

#cli simulation, $pwd is the chaincode-docker-devmode path 
export CORE_VM_ENDPOINT=unix:///var/run/run/docker.sock 
export CORE_LOGGING_LEVEL=DEBUG 
export CORE_PEER_ID=cli 
export CORE_PEER_ADDRESS=127.0.0.1:7051 
export CORE_PEER_LOCALMSPID=DEFAULT 
export CORE_PEER_MSPCONFIGPATH=$pwd/msp 
bash 

Quand j'exécuter peer channel list Il pourrait spectacles que j'ai rejoindre Hclloch

canal. Alors j'Execute:

peer chaincode install -n hello -v 1.0 -l java -p chaincode/hsl-hsl-user-guide-examples-v14/mytest 
peer chaincode instantiate -o 127.0.0.1:7050 -C helloch -n hello -v 1.0 -l java -c "{\"Args\":[\"init\",\"a\", \"100\", \"b\",\"100\"]}" 

Mais je peux instancier plusieurs fois et le journal ne renvoie pas l'erreur as same as above instantiate logs, en fait il n'instancier pas avec succès, pourquoi?

Répondre

3

L'instanciation du chaînage est essentiellement une transaction, par conséquent, elle doit être validée, ordonnée et validée pour prendre effet. Maintenant, dans votre cas, la commande d'instanciation peer cli réussit puisque la proposition de transaction a approuvé et signé la proposition soumise au service de commande. Bien que basé sur la sortie du journal suivant:

peer  | 2017-09-05 01:09:23.650 UTC [ConnProducer] NewConnection -> ERRO 6da Failed connecting to 127.0.0.1:7050 , error: context deadline exceeded 
peer  | 2017-09-05 01:09:23.650 UTC [deliveryClient] connect -> ERRO 6db Failed obtaining connection: Could not connect to any of the endpoints: [127.0.0.1:7050] 

Peer ne peut pas se connecter à l'extrémité de service de commande qui dans votre cas configuré pour être 127.0.0.1:7050 donc éventuellement transaction instancier n'est pas engagée. Par conséquent, vous pouvez à nouveau exécuter la commande instantiate, car aucun enregistrement de transaction instantiate n'existe sur le ledger homologue de votre tentative précédente.

Vous devez modifier le point de terminaison du service de commande de 127.0.0.1:7050 à orderer:7050 et réessayer votre test. Cette valeur configurée dans le fichier configtx.yaml, par exemple:

Orderer: &OrdererDefaults 

    # Orderer Type: The orderer implementation to start 
    # Available types are "solo" and "kafka" 
    OrdererType: solo 

    Addresses: 
     - orderer:7050 
+0

Merci beaucoup, vous avez raison! Je suis très excitant. –

+0

Bienvenue :) et je crois que cela résout aussi votre autre question: https://stackoverflow.com/questions/46035198/why-chaincode-instantiate-success-but-query-failed –

+0

Oui, ils sont les mêmes problèmes. Merci, nous pouvons communiquer et puis-je avoir votre email? –

0

Vous pouvez instancier une chaîne avec le même nom une seule fois.

+0

Je ne connais qu'un seul, mais à partir de mes exemples, j'instancie plusieurs fois et les journaux de docker ne renvoient pas de message d'erreur. Je supporte instantiate does not success.But je ne peux pas trouver des raisons? Pourriez-vous regarder les journaux que j'ajoute ci-dessus et m'aider à le résoudre? –

0
peer channel create -c helloch -f helloch.tx -o 127.0.0.1:7050 

après ci-dessus, vous pouvez voir le message détail helloch.block par commande

configtxgen --inspectBlock helloch.block 

Il montre

"OrdererAddresses": { 
       "Version": "0", 
       "ModPolicy": "/Channel/Orderer/Admins", 
       "Value": { 
        "addresses": [ 
         "127.0.0.1:7050" 
        ] 
       } 
      }, 

il semble que l'adresse de l'orderer connecté qui dans helloch.block (configuration de canal) vient de ge nesis.block (qui génère à partir de configtx.yaml)