web-dev-qa-db-ja.com

エラー:予期しないステータスを取得しました:FORBIDDEN-1つのサブポリシーの暗黙的なしきい値に到達できませんでした。残り1つが必要です:許可が拒否されました

ファブリックバージョンは1.1.0-previewで、ピア、オーダー、configtxgenが新しく生成されます。

configtxgenツールを実行すると:

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

それは、genesis.blockを生成し、channelNameがmych.txである。

次に、注文者はgenesis.blockで開始し、次を実行します:

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

エラーをスローし、

エラー:予期しないステータスを取得しました:FORBIDDEN-1つのサブポリシーの暗黙的なしきい値に到達できませんでした。残り1つが必要です:許可が拒否されました

どのステップが間違っていますか?

私のconfigtx.yamlファイルは次のとおりです。

---
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:
10
Jim Green

この問題が発生したとき、私の解決策は非常に簡単でした。

/byfn.sh -m up

それを忘れて、最初に暗号を生成してから同じコマンドを使用して開始しようとしていました。を使用して古いネットワークを最初にダウンするとすぐに問題は解決しました

/byfn.sh -m down

同じupコマンドで再び起動しました。

26
VinodRasane

ファイルの間違ったパスの単純な問題である可能性が非常に高いです。 mych.txファイルを生成したときに、channel-artifacts/mych.txに書き込みましたが、チャネルを作成しようとしたときに、channel-artifactsディレクトリを省略しました。 peer channel create -f channel-artifacts/mych.tx -o orderer.example.com:7050 -c mychを試すことができます

そうは言っても、同じエラーで同様の問題が発生しました。新しく作成されたジェネシスブロックと暗号をテストしていました。私の場合、以前のテストの1つで、以前の暗号とチャネルがDockerボリュームに保存された結果でした。新しいピアとオーダーを作成していると言ったので、それはnotかもしれません。

docker exec -it <container name> bashでピアの1つ(ある場合はcliコンテナー)に接続し、peer channel listを実行することで確認できます。このようなものが戻ってきたら、それがあなたの問題です:

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.....

「チャンネルピアが参加しました:」の下にmychが表示されない場合、私の答えはあなたに関係ありません。 (しかし、他の誰かにかもしれません!)

ローカルのHyperledger Dockerインスタンスをクリーンな状態に復元する方法は次のとおりです。

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

--volumesは、構成ファイル内のコンテナーに関連付けられているボリュームを削除するようDockerに指示します。

良い測定のために、私はすべてをスワイプして(all Dockerコンテナーとボリューム-これはテストシステムでした)、スレートまで処理し、プロセス全体を開始しました。

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

それらを削除し、Fabricのバックアップを開始すると、そのエラーが発生することなくチャネルを作成できました。

うまくいかない場合、ラストリゾートはSudo service docker restartになり、Dockerシステム、ネットワーク、ボリュームなどのすべてのdockerサービスが再起動されます。

4

この問題は何度も発生します。常にdocker volume Prune解決します。

0
Ross Tang

このページの解決策のいずれかがうまくいかなかった場合は、ネットワークをdockerネットワークから削除してみてください。 docker network lsを実行してドッカーネットワークを表示し、docker network rm <network-name>を実行してネットワークを削除します。

Dockerネットワークの削除はうまくいきましたが、開発サーバーでこれを行いました。

0
Kartik Chauhan
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel- 
artifacts/genesis.block -channelID $CHANNEL_NAME

ジェネシスブロックの作成中に、syschannelnameを渡す必要があります。

チャンネルの作成中は、別のチャンネル名を使用してください。

例:1.sysmych 2.mych

0
Ravikumar

私の場合、問題は許可とネットワークがすでに(部分的に)稼働していることにありました。

Sudoを使用せずに "./byfn.sh up"で始めていたので、初めてerrorを得ました。

次に、 "Sudo su"を実行してから "./byfn up"を実行しました。再びerrorを取得しました。

ここで答えの1つを参照すると、スーパーユーザーであるため、「./ byfn down」を実行し、次に「./byfn up」を実行しましたが、これはうまくいきました。

0
Hem M

注文者のデバッグログを共有すると、より明確になります。デバッグの追加を有効にするには

- ORDERER_GENERAL_LOGLEVEL=debug 

注文者サービスの下のdocker composeファイルで、ネットワークを再起動します。その後、コマンドを使用してログを印刷できます

docker logs CONTAINER_NAME --details

Create channelコマンドを実行する前後にログを印刷することをお勧めします。

0
MahmoudBC