web-dev-qa-db-fra.com

Erreur: statut inattendu: FORBIDDEN - Impossible d'atteindre le seuil implicite de 1 sous-stratégies, nécessaire 1 restante: autorisation refusée

Ma version de tissu est 1.1.0-preview, l'homologue, le responsable de la commande, configtxgen vient d'être généré.

quand j'exécute l'outil configtxgen:

configtxgen -profile SoloOrdererGenesis -outputBlock genesis.block 
configtxgen -profile mych -outputCreateChannelTx channel-artifacts/mych.tx -channelID mych

Il génère le genesis.block et mych.tx avec channelName est mych.

Puis, le client commençant par genesis.block, j’exécute comme suit:

peer channel create -f mych.tx -o orderer.example.com:7050 -c mych

il jette l'erreur, 

Erreur: statut inattendu: FORBIDDEN - Impossible d'atteindre le seuil implicite de 1 sous-stratégies, nécessaire 1 restante: autorisation refusée

quelle est la mauvaise étape?

mon fichier configtx.yaml est:

---
Profiles:
    SoloOrdererGenesis:
        Orderer:
            <<: *OrdererDefaults
            Organizations:
                - *OrdererOrg
        Consortiums:
            SampleConsortium4:
                Organizations:
                    - *Org1
                    - *Org2
                    - *Org3
                    - *Org4
            SampleConsortium3:
                Organizations:
                    - *Org1
                    - *Org2
                    - *Org3
            SampleConsortium2:
                Organizations:
                    - *Org1
                    - *Org2
            SampleConsortium1:
                Organizations:
                    - *Org1
    mych4:
        Consortium: SampleConsortium4
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2
                - *Org3
                - *Org4
    mych3:
        Consortium: SampleConsortium3
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2
                - *Org3

    mych2:
        Consortium: SampleConsortium2
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2

    mych1:
        Consortium: SampleConsortium1
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
Organizations:
    - &OrdererOrg
        Name: OrdererOrg
        ID: OrdererMSP
        MSPDir: orderer/msp

    - &Org1
        Name: Org1MSP
        ID: Org1MSP
        MSPDir: org1/peer/msp
        AnchorPeers:
            - Host: peer.org1.example.com
              Port: 17051
    - &Org2
        Name: Org2MSP
        ID: Org2MSP
        MSPDir: org2/peer/msp
        AnchorPeers:
            - Host: peer.org2.example.com
              Port: 27051            
Orderer: &OrdererDefaults
    OrdererType: solo
    Addresses:
        - orderer.example.com:7050
    BatchTimeout: 2s
    BatchSize:
        MaxMessageCount: 10
        AbsoluteMaxBytes: 99 MB
        PreferredMaxBytes: 512 KB
    Organizations:

Application: &ApplicationDefaults
    Organizations:
9
Jim Green

Quand j’ai eu ce problème, mes solutions étaient assez simples. J’avais déjà démarré mon réseau en utilisant 

/byfn.sh -m up

oublié de le faire et essayait de le démarrer en générant d'abord la crypto puis en utilisant la même commande .

/byfn.sh -m down

et a recommencé avec la même commande up.

16
VinodRasane

Il pourrait très bien s'agir simplement du mauvais chemin d'accès à un fichier. Lorsque vous avez généré le fichier mych.tx, vous l'avez écrit dans channel-artifacts/mych.tx, mais lorsque vous essayez de créer le canal, vous avez oublié le répertoire channel-artifacts. Vous pourriez essayer peer channel create -f channel-artifacts/mych.tx -o orderer.example.com:7050 -c mych

Cela dit, je viens d'avoir un problème similaire avec la même erreur. Je testais un bloc de genèse et un crypto nouvellement créés. Dans mon cas, c'était le résultat de la cryptographie et du canal précédents qui étaient stockés dans un volume Docker à partir de l'un de mes tests précédents. Cela peut être le cas avec vous {pas} _ puisque vous avez dit que vous créez un nouveau pair et un nouvel utilisateur. 

Vous pouvez vérifier cela en vous connectant à l'un des pairs (ou au conteneur cli si vous en avez un) avec docker exec -it <container name> bash, puis en exécutant peer channel list. Si vous recevez quelque chose comme ça, alors c'est votre problème:

root@4cf873123669:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel list
2018-04-05 14:09:40.734 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2018-04-05 14:09:40.734 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2018-04-05 14:09:40.739 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized
2018-04-05 14:09:40.740 UTC [msp/identity] Sign -> DEBU 004 Sign: plaintext: 0AAE070A5C08031A0C08A4DC98D60510...631A0D0A0B4765744368616E6E656C73
2018-04-05 14:09:40.740 UTC [msp/identity] Sign -> DEBU 005 Sign: digest: 93EFB49DD86ABB5568DE1E2C8FC53FA99AB52929AFA24D7B317C270DE8CDC80B
Channels peers has joined:
mych
2018-04-05 14:09:40.743 UTC [main] main -> INFO 006 Exiting.....

Si vous ne voyez pas la mych répertoriée sous "Les canaux que nos pairs ont rejoints:", ma réponse ne vous concerne pas. (Mais peut être à quelqu'un d'autre!)

Voici comment vous pourriez restaurer votre instance Hyperledger Docker locale à l'état pur:

docker-compose -f docker-compose.yaml down --volumes

Le --volumes indique à Docker de supprimer tous les volumes associés aux conteneurs du fichier de configuration. 

Pour faire bonne mesure, j'ai tout effacé (tous conteneurs et volumes Docker - il s'agissait d'un système de test) et le processus a commencé:

docker-compose -f docker-compose.yaml down --volumes
docker rm $(docker ps -aq)
docker volume Prune
rm genesis.block channel-artifacts/mych.tx

Une fois ceux-ci supprimés et la sauvegarde de Fabric démarrée, j'ai pu créer le canal sans obtenir cette erreur.

Si cela ne fonctionne pas, le dernier recours sera Sudo service docker restart qui redémarrera tous les services de menu fixe tels que le système de menu fixe, le réseau et les volumes.

4
Patrick Gardella

Si l’une des solutions de cette page ne convient à personne, essayez de supprimer votre réseau des réseaux Docker. Affichez vos réseaux Docker en exécutant docker network ls et supprimez votre réseau en exécutant docker network rm <network-name>.

Supprimer le réseau Docker a fonctionné pour moi, mais je l’ai fait sur un serveur de développement.

0
Kartik Chauhan

Il serait plus clair si vous partagez le journal de débogage du client. Pour activer le débogage, ajoutez 

- ORDERER_GENERAL_LOGLEVEL=debug 

dans votre menu fixe composez le fichier sous le service des commandes et redémarrez votre réseau. vous pouvez ensuite imprimer le journal à l'aide de la commande 

docker logs CONTAINER_NAME --details

Je suggère d’imprimer le journal avant et après l’exécution de la commande create channel.

0
MahmoudBC