Hyperledger Fabric中的对等通道创建失败

23

我正在尝试使用一个排序器和两个对等节点来建立一个示例超级账本环境。我没有使用Docker方法,而是直接运行可执行文件。

排序器和两个对等节点已经成功启动。然而,频道创建失败,并显示以下错误。任何帮助将不胜感激。

排序器窗口上的错误

> 2017-08-17 07:28:22.338 IST [orderer/common/deliver] Handle -> WARN
> 029 Error reading from stream: rpc error: code = Canceled desc =
> context canceled 2017-08-17 07:31:08.044 IST [common/config/channel]
> CommitProposals -> WARN 02a Current configuration has no policy
> '/Channel/Application/Readers', this will likely cause problems in
> production systems 2017-08-17 07:31:08.050 IST [common/config/channel]
> CommitProposals -> WARN 02b Current configuration has no policy
> '/Channel/Application/Writers', this will likely cause problems in
> production systems 2017-08-17 07:31:08.050 IST [common/config/channel]
> CommitProposals -> WARN 02c Current configuration has no policy
> '/Channel/Application/Admins', this will likely cause problems in
> production systems 2017-08-17 07:31:08.051 IST [cauthdsl] func2 ->
> ERRO 02d Principal deserialization failure (The supplied identity is
> not valid, Verify() returned x509: certificate signed by unknown
> authority) for identity
> 0a07506565724f726712e7052d2d2d2d2d424547494e202d2d2d2d2d0a4d494943427a43434161326741774942416749514e303434797750356c6d6c3477613379723836355a6a414b42676771686b6a4f50515144416a426e4d5173770a435159445651514745774a56557a45544d4245474131554543424d4b5132467361575a76636d3570595445574d4251474131554542784d4e5532467549455a790a5957356a61584e6a627a45544d4245474131554543684d4b593246795a6d46344c6d4e76625445574d4251474131554541784d4e59324575593246795a6d46340a4c6d4e7662544165467730784e7a41344d5459784e7a41344e445261467730794e7a41344d5451784e7a41344e4452614d465578437a414a42674e56424159540a416c56544d524d77455159445651514945777044595778705a6d3979626d6c684d52597746415944565151484577315459573467526e4a68626d4e7063324e760a4d526b774677594456515144444242425a473170626b426a59584a6d59586775593239744d466b77457759484b6f5a497a6a3043415159494b6f5a497a6a30440a4151634451674145743046756e6d577635336b6366417846785953784c44565164324d336b6d586345714b556c77507a6a444a544b626c4265317931376b39380a4c64384f2f57374c777a71394b374f563957394a3765367962736b44324b4e4e4d45737744675944565230504151482f42415144416765414d417747413155640a457745422f7751434d4141774b7759445652306a42435177496f4167445a62512f58784241523253396670326b64587a78546a666c35685055724958376635460a664d446d6b4f7377436759494b6f5a497a6a304541774944534141775251496841507a303051514962515769727a467962357978736a3168384d6a316a37482b0a333971735171445438387a684169426a6776705a777675764947456b6a624a75697663574b3172476f36416b314430362f7445527a59383538513d3d0a2d2d2d2d2d454e44202d2d2d2d2d0a
> 2017-08-17 07:31:08.052 IST [orderer/common/broadcast] Handle -> WARN
> 02e [channel: testing] Rejecting broadcast of config message because
> of error: Error authorizing update: Error validating DeltaSet: Policy
> for [Groups] /Channel/Application not satisfied: Failed to reach
> implicit threshold of 1 sub-policies, required 1 remaining 2017-08-17
> 07:31:08.063 IST [orderer/common/deliver] Handle -> WARN 02f Error
> reading from stream: rpc error: code = Canceled desc = context
> canceled

ORDERER_TLS的价值

ORDERER_TLS="--tls true--cafile /opt/gopath/src/github.com/hyperledger/fabric/sampleconfig/tls/ca.crt"

创建通道时出现错误

node1@ubuntu:/opt/gopath/src/github.com/hyperledger/fabric/build/bin$ peer channel create $ORDERER_TLS -f /home/node1/Downloads/fabricDeployment-master/testing.tx -c testing -o node1.honda.com:7050 --logging-level DEBUG  -v
2017-08-17 07:28:21.953 IST [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2017-08-17 07:28:21.953 IST [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2017-08-17 07:28:21.996 IST [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized
2017-08-17 07:28:22.014 IST [msp] GetLocalMSP -> DEBU 004 Returning existing local MSP
2017-08-17 07:28:22.019 IST [msp] GetDefaultSigningIdentity -> DEBU 005 Obtaining default signing identity
2017-08-17 07:28:22.019 IST [msp] GetLocalMSP -> DEBU 006 Returning existing local MSP
2017-08-17 07:28:22.019 IST [msp] GetDefaultSigningIdentity -> DEBU 007 Obtaining default signing identity
2017-08-17 07:28:22.019 IST [msp/identity] Sign -> DEBU 008 Sign: plaintext: 0AF3050A07506565724F726712E7052D...69636174696F6E2F41646D696E731801 
2017-08-17 07:28:22.019 IST [msp/identity] Sign -> DEBU 009 Sign: digest: 63EBD4B3B350685B39A0C8E8E216EFCB3D4C3C82F74B6FA2638D2A7974EB1E74 
2017-08-17 07:28:22.020 IST [msp] GetLocalMSP -> DEBU 00a Returning existing local MSP
2017-08-17 07:28:22.020 IST [msp] GetDefaultSigningIdentity -> DEBU 00b Obtaining default signing identity
2017-08-17 07:28:22.020 IST [msp] GetLocalMSP -> DEBU 00c Returning existing local MSP
2017-08-17 07:28:22.020 IST [msp] GetDefaultSigningIdentity -> DEBU 00d Obtaining default signing identity
2017-08-17 07:28:22.020 IST [msp/identity] Sign -> DEBU 00e Sign: plaintext: 0AA6060A1108021A0608BEF0D3CC0522...1A843140B4B661FA8CBCB3170133AC2B 
2017-08-17 07:28:22.020 IST [msp/identity] Sign -> DEBU 00f Sign: digest: EB039E58FB665150B556394FD464155BBB349CEBB591A578DE402789465EDA84 
Error: Got unexpected status: BAD_REQUEST -- Error authorizing update: Error validating DeltaSet: Policy for [Groups] /Channel/Application not satisfied: Failed to reach implicit threshold of 1 sub-policies, required 1 remaining
Usage:
  peer channel create [flags]

Flags:
  -c, --channelID string   In case of a newChain command, the channel ID to create.
  -f, --file string        Configuration transaction file generated by a tool such as configtxgen for submitting to orderer
  -t, --timeout int        Channel creation timeout (default 5)

Global Flags:
      --cafile string                       Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint
      --logging-level string                Default logging level and overrides, see core.yaml for full syntax
  -o, --orderer string                      Ordering service endpoint
      --ordererTLSHostnameOverride string   The hostname override to use when validating the TLS connection to the orderer.
      --test.coverprofile string            Done (default "coverage.cov")
      --tls                                 Use TLS when communicating with the orderer endpoint
  -v, --version                             Display current version of fabric peer server

编辑开始

感谢您的回复,Yacovm。我仍然面临着同样的问题。 实际上,我正在使用您的github代码来尝试这个示例。这个脚本很棒而且易于理解。

让我快速介绍一下我目前的设置。

环境 有3个运行节点 - Ubuntu 16

编辑结束

> **Node1 Details** Hostname : node1 Domain name : honda.com User1 : node1 User2 : Admin
> 
> **Node2 Details** Hostname : node2 Domain name : carfax.com User1 : node2 User2 : Admin
> 
> **Node3 Details** Hostname : node3 Domain name : carfax.com User1 : node3 User2 : Admin

步骤1: 在所有3台机器上下载了Fabric源代码并运行"make" - 一切都成功了

源代码位于以下路径:/opt/gopath/src/github.com/hyperledger/fabric

步骤2:

在node1机器上下载了fabricDeployment-master /home/node1/Downloads/fabricDeployment-master 从node1机器开始, 我正在运行以下命令(我使用了Github提供的deploy.sh并进行了微小的更改)

[[ -z $GOPATH ]] && (echo "Environment variable GOPATH isn't set!"; exit 1)
FABRIC=$GOPATH/src/github.com/hyperledger/fabric
[[ -d "$FABRIC" ]] || (echo "Directory $FABRIC doesn't exist!"; exit 1)
for file in configtxgen peer cryptogen; do
    [[ -f $file ]] && continue
    binary=$FABRIC/build/bin/$file
    [[ ! -f $binary ]] && ( cd $FABRIC ; make $file)
    cp $binary $file && continue
done

for file in configtxgen peer cryptogen; do
    [[ ! -f $file ]] && echo "$file isn't found, aborting!" && exit 1
done

. config.sh

bootPeer=$(echo ${peers} | awk '{print $1}')
anchorPeer=$(echo ${peers} | awk '{print $1}')
PROPAGATEPEERNUM=${PROPAGATEPEERNUM:-3}
i=0
for p in $orderer $peers ; do

        echo "Making Directory structure for $p"
        mkdir -p $p/sampleconfig/crypto
        mkdir -p $p/sampleconfig/tls
        ip=$(getIP $p)
        echo "${p}'s ip address is ${ip}"
        orgLeader=false
        bootstrap=$anchorPeer:7051
        if [[ $i -eq 1 ]];then
                orgLeader=true
        fi
        (( i += 1 ))
        echo "Creating core.yaml from core.yaml.template for $p"
        cat core.yaml.template | sed "s/PROPAGATEPEERNUM/${PROPAGATEPEERNUM}/ ; s/PEERID/$p/ ; s/ADDRESS/$p/ ; s/ORGLEADER/$orgLeader/ ; s/BOOTSTRAP/$bootPeer:7051/ ; s/TLS_CERT/$p.carfax.com-cert.pem/" > $p/sampleconfig/core.yaml
done

        echo "Creating configtx.yaml from configtx.yaml.template with ANCHOR_PEER_IP & ORDERER_IP"

cat configtx.yaml.template | sed "s/ANCHOR_PEER_IP/$anchorpeer/ ; s/ORDERER_IP/$orderer/" > configtx.yaml


        echo "Creating crypto-config.yml from crypto-config.yml.template with ORDERER_IP and adding hostname node2 & node3"


cat crypto-config.yml.template | sed "s/ORDERER_IP/$orderer/" > crypto-config.yml
for p in $peers ; do
    echo "        - Hostname: $p" >> crypto-config.yml
done
cat << EOF >> crypto-config.yml
    Users:
      Count: 1
EOF

./cryptogen generate --config crypto-config.yml
./configtxgen -profile Genesis -outputBlock genesis.block  -channelID system
./configtxgen -profile Channels -outputCreateChannelTx yacov.tx -channelID yacov
./configtxgen -profile Channels -outputAnchorPeersUpdate OrdererOrganchors.tx -channelID yacov -asOrg PeerOrg

mv genesis.block node1/sampleconfig/
cp orderer.yaml node1/sampleconfig/
cp -r crypto-config/ordererOrganizations/honda.com/orderers/node1.honda.com/msp/* node1/sampleconfig/crypto
cp -r crypto-config/ordererOrganizations/honda.com/orderers/node1.honda.com/tls/* node1/sampleconfig/tls

cp -r crypto-config/peerOrganizations/carfax.com/peers/node2.carfax.com/msp/* node2/sampleconfig/crypto
cp -r crypto-config/peerOrganizations/carfax.com/peers/node2.carfax.com/tls/* node2/sampleconfig/tls/

cp -r crypto-config/peerOrganizations/carfax.com/peers/node3.carfax.com/msp/* node3/sampleconfig/crypto
cp -r crypto-config/peerOrganizations/carfax.com/peers/node3.carfax.com/tls/* node3/sampleconfig/tls/

echo "Deploying configuration - Moving configurations to respective machines"
scp -r node1/sampleconfig/* node1@node1:/opt/gopath/src/github.com/hyperledger/fabric/sampleconfig/
scp -r node2/sampleconfig/* node2@node2:/opt/gopath/src/github.com/hyperledger/fabric/sampleconfig/
scp -r node3/sampleconfig/* node3@node3:/opt/gopath/src/github.com/hyperledger/fabric/sampleconfig/

第三步:

生成的crypto-config.yaml文件

OrdererOrgs:
  - Name: Org0
    Domain: honda.com
PeerOrgs:
  - Name: Org1
    Domain: carfax.com
        - Hostname: node2
        - Hostname: node3
    Users:
      Count: 1

Resulting crypto-config.yaml
Profiles:
    Genesis:
        Orderer:
            <<: *OrdererDefaults
            Organizations:
                - *OrdererOrg
        Consortiums:
             SampleConsortium:
                Organizations:
                - *PeerOrg
    Channels:
        Consortium: SampleConsortium
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *PeerOrg
Organizations:
    - &OrdererOrg
        Name: OrdererOrg
        ID: OrdererOrg
        MSPDir: crypto-config/ordererOrganizations/honda.com/msp
        AdminPrincipal: Role.ADMIN
    - &PeerOrg
        Name: PeerOrg
        ID: PeerOrg
        MSPDir: crypto-config/peerOrganizations/carfax.com/msp
        AdminPrincipal: Role.ADMIN

        AnchorPeers:
            - Host: node2
              Port: 7051

Orderer: &OrdererDefaults

    OrdererType: solo
    Addresses:
        - node1:7050
    BatchTimeout: 1ms
    BatchSize:
        MaxMessageCount: 10
        AbsoluteMaxBytes: 99 MB
        PreferredMaxBytes: 512 KB

    MaxChannels: 0

    Kafka:
        Brokers:
            - 127.0.0.1:9092

    Organizations:

Application: &ApplicationDefault

s

Step 4 : 从node1作为node1用户启动orderer 从node2作为node2用户启动peer1 从node3作为node3用户启动peer2

到此为止,一切正常

Step 5 : 创建通道

从node1作为node1用户运行以下命令:

node1@ubuntu:~/Downloads/fabricDeployment-master$ pwd

/home/node1/Downloads/fabricDeployment-master

export FABRIC=$GOPATH/src/github.com/hyperledger/fabric
export ORDERER_TLS="--tls true --cafile `pwd`/crypto-config/ordererOrganizations/honda.com/orderers/node1.honda.com/tls/ca.crt"
export CORE_PEER_TLS_ROOTCERT_FILE=`pwd`/crypto-config/peerOrganizations/carfax.com/peers/node2.carfax.com/tls/ca.crt
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_MSPCONFIGPATH=`pwd`/crypto-config/peerOrganizations/carfax.com/users/Admin@carfax.com/msp 
export CORE_PEER_LOCALMSPID=PeerOrg 
/opt/gopath/src/github.com/hyperledger/fabric/build/bin/peer channel create $ORDERER_TLS -f yacov.tx  -c yacov -o node1:7050

configtx.yaml的内容

---
Profiles:

    Genesis:
        Orderer:
            <<: *OrdererDefaults
            Organizations:
                - *OrdererOrg
        Consortiums:
             SampleConsortium:
                Organizations:
                - *PeerOrg
    Channels:
        Consortium: SampleConsortium
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *PeerOrg

Organizations:

    - &OrdererOrg
        Name: OrdererOrg

        ID: OrdererOrg

        MSPDir: crypto-config/ordererOrganizations/honda.com/msp

        AdminPrincipal: Role.ADMIN


    - &PeerOrg
        Name: PeerOrg

        ID: PeerOrg

        MSPDir: crypto-config/peerOrganizations/carfax.com/msp

        AdminPrincipal: Role.ADMIN


        AnchorPeers:
            - Host: 
              Port: 7051


Orderer: &OrdererDefaults

    OrdererType: solo

    Addresses:
        - node1:7050

    BatchTimeout: 1ms

    BatchSize:

        MaxMessageCount: 10

        AbsoluteMaxBytes: 99 MB

        PreferredMaxBytes: 512 KB

    MaxChannels: 0

    Kafka:
        Brokers:
            - 127.0.0.1:9092

    Organizations:

Application: &ApplicationDefaults

    Organizations:

执行 Genesis Block 时的命令行语句输出

2017-08-18 16:50:37.015 IST [common/tools/configtxgen] main -> INFO 001 Loading configuration

2017年08月18日16:50:37.175 IST [common/tools/configtxgen] doOutputBlock -> 信息002 生成创世块 2017年08月18日16:50:37.179 IST [common/tools/configtxgen] doOutputBlock -> 信息003 写入创世块 创世块输出
 <1.{��������G<&�����n��ix*s!�0
�0
�0
t
����"system*@d6a8b389f09cd34562dda9af564c11bd28fed0ae9c42070f11a56c678b19e704h�N�b����S���>%��_bٮ�/
�/�/�

Consortiums��
SampleConsortium��
PeerOrg��
MSP���
PeerOrg�-----BEGIN CERTIFICATE-----
MIICKzCCAdGgAwIBAgIQCxUbHYlT+2GRvjnArG6gZjAKBggqhkjOPQQDAjBnMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzETMBEGA1UEChMKY2FyZmF4LmNvbTEWMBQGA1UEAxMNY2EuY2FyZmF4
LmNvbTAeFw0xNzA4MTgxMTIwMzZaFw0yNzA4MTYxMTIwMzZaMGcxCzAJBgNVBAYT
AlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2Nv
MRMwEQYDVQQKEwpjYXJmYXguY29tMRYwFAYDVQQDEw1jYS5jYXJmYXguY29tMFkw
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUufxUYHLgvaxfm6AObKj60v4dIwd0/gT
Xd17VLEWlUpNR63se9yjzIbKzBw2rxje+9GalDDOaNJzFG+XXNz6wKNfMF0wDgYD
VR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zAp
BgNVHQ4EIgQgEk7d6Qvvq5FBNjXfHh0Fa4MjzHXcsIKg0+B+vdZT6D8wCgYIKoZI
zj0EAwIDSAAwRQIhAI7atq+JHSmzBwZ034y6u54+uBPe+S9qyqrTVDQ9a6RoAiBG
n8WRFVKobSeMJR6igf78tAjWVuSdEhhBJV2rGKmD1Q==
-----END CERTIFICATE-----
"�-----BEGIN CERTIFICATE-----
MIICBzCCAa2gAwIBAgIQfWg0mgPDxGOBJpfWRqJ3tzAKBggqhkjOPQQDAjBnMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzETMBEGA1UEChMKY2FyZmF4LmNvbTEWMBQGA1UEAxMNY2EuY2FyZmF4
LmNvbTAeFw0xNzA4MTgxMTIwMzZaFw0yNzA4MTYxMTIwMzZaMFUxCzAJBgNVBAYT
AlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2Nv
MRkwFwYDVQQDDBBBZG1pbkBjYXJmYXguY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAEWmAAX6Xj0/H7a5S6K5lA7u1pQLYZ/6iTTLn2E1JTWTd0jI5sh0zcL9qf
dkfIk/8G0u6rLUA8WDv0EZqvi8Mt8KNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1Ud
EwEB/wQCMAAwKwYDVR0jBCQwIoAgEk7d6Qvvq5FBNjXfHh0Fa4MjzHXcsIKg0+B+
vdZT6D8wCgYIKoZIzj0EAwIDSAAwRQIhAI3IKnk6Rxw3s78GuTpwiVjObwR1ylOo
juILM99AMMFrAiAUx31MEvAZaw89QQ8KirZzl/JnCERoQ0kz8ov3jiFJzA==
-----END CERTIFICATE-----
B
SHA2SHA256J�-----BEGIN CERTIFICATE-----
MIICMDCCAdegAwIBAgIQbuC39Z6/ccEP3hMMe5cGSjAKBggqhkjOPQQDAjBqMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzETMBEGA1UEChMKY2FyZmF4LmNvbTEZMBcGA1UEAxMQdGxzY2EuY2Fy
ZmF4LmNvbTAeFw0xNzA4MTgxMTIwMzZaFw0yNzA4MTYxMTIwMzZaMGoxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRMwEQYDVQQKEwpjYXJmYXguY29tMRkwFwYDVQQDExB0bHNjYS5jYXJmYXgu
Y29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2oEQ9GicVdKYvI9pHj3iWb4P
rjT7VO8weBDbDe0/MfxwhDsXe5uReASpL2YcbUYb1nCc/n9z/qvq23LXzPusaKNf
MF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUw
AwEB/zApBgNVHQ4EIgQg/o+D3yG/Yzjm3Ka2AcI8VU63RSvF8aHIvnD10/EQtZgw
CgYIKoZIzj0EAwIDRwAwRAIgXM/MWiZFfRQdAy1ybRHV8/A2IO8Xu6+aIKcSK5kF
mXgCIBFDIzDA0DjeO0O3F7dBEf3nbiSvCQgIBQQbjGKm15+D
-----END CERTIFICATE-----
Admins"1
Admins'

PeerOrgAdmins"0
Readers%

PeerOrgAdmins"0
Writers%

PeerOrgAdmins*Admins@
ChannelCreationPolicy'

Admins/Channel/Orderer/Admins*/Channel/Orderer/Admins"
AdminsAdmins*/Channel/Orderer/Admins�
Orderer��

OrdererOrg��
MSP���

OrdererOrg�-----BEGIN CERTIFICATE-----
MIICJzCCAc6gAwIBAgIRAIMBXTi8vzqOVhQiXB+ovQMwCgYIKoZIzj0EAwIwZTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xEjAQBgNVBAoTCWhvbmRhLmNvbTEVMBMGA1UEAxMMY2EuaG9uZGEu
Y29tMB4XDTE3MDgxODExMjAzNloXDTI3MDgxNjExMjAzNlowZTELMAkGA1UEBhMC
VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28x
EjAQBgNVBAoTCWhvbmRhLmNvbTEVMBMGA1UEAxMMY2EuaG9uZGEuY29tMFkwEwYH
KoZIzj0CAQYIKoZIzj0DAQcDQgAEm3VY12jlinzimYav4K39anZGIyd7DrygL7fV
b57S7tpvwTXWfGNt58tDBf584w1Bw7Yr6M3unJjWfNj7VaLwd6NfMF0wDgYDVR0P
AQH/BAQDAgGmMA8GA1UdJQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNV
HQ4EIgQgMfMrGCUNqJqCehc2xsAYVyWqVTV3jYDcnmkyBhtFSGcwCgYIKoZIzj0E
AwIDRwAwRAIgMrdpDfMnULyS2dMtjfdWGAXPxDj4URM0nelcSjOpmAoCIB24mFvn
C34fP8icL0QVIOf+mPin2jD4HgsDP58dDFtu
-----END CERTIFICATE-----
"�-----BEGIN CERTIFICATE-----
MIICBDCCAaqgAwIBAgIQOHnvuaxK4NLP1+Qb7OIm+DAKBggqhkjOPQQDAjBlMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzESMBAGA1UEChMJaG9uZGEuY29tMRUwEwYDVQQDEwxjYS5ob25kYS5j
b20wHhcNMTcwODE4MTEyMDM2WhcNMjcwODE2MTEyMDM2WjBUMQswCQYDVQQGEwJV
UzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEY
MBYGA1UEAwwPQWRtaW5AaG9uZGEuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD
QgAEUe6whrR0aqrwMJ+kKZaAetMAYmBON4S9yu0VPaGDuaEmQufj6guOFP6eQ+6A
LPRa1LaDEWAO0sPg9xtSc2P0MaNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB
/wQCMAAwKwYDVR0jBCQwIoAgMfMrGCUNqJqCehc2xsAYVyWqVTV3jYDcnmkyBhtF
SGcwCgYIKoZIzj0EAwIDSAAwRQIhAMS9lF1z1wyp90zW2rgrIz7m0iX/hCUyR15N
kSPTuzTQAiB6HWU0nabnzQHOcWwalz4WoCeIJRA6kjpQoP7yq7JmrQ==
-----END CERTIFICATE-----
B
SHA2SHA256J�-----BEGIN CERTIFICATE-----
MIICLjCCAdSgAwIBAgIRAP+2jzBK3BFU8vDd0QvneV4wCgYIKoZIzj0EAwIwaDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xEjAQBgNVBAoTCWhvbmRhLmNvbTEYMBYGA1UEAxMPdGxzY2EuaG9u
ZGEuY29tMB4XDTE3MDgxODExMjAzNloXDTI3MDgxNjExMjAzNlowaDELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xEjAQBgNVBAoTCWhvbmRhLmNvbTEYMBYGA1UEAxMPdGxzY2EuaG9uZGEuY29t
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3vaA4FhLDOMH7h39Ih2ivixOlg+n
OI7+mF0GQrG8f2qop4gSaZQwtVIj5MpzTBcKqaa0l0k8FDdlobDtJ94QVKNfMF0w
DgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB
/zApBgNVHQ4EIgQgxL6aI6nufoznFDDukcIWHhrAYIrNu7tNFYfHsoxgX0IwCgYI
KoZIzj0EAwIDSAAwRQIhAJ5fLjps0Fq0r0l0Vfi1/35TMYgo9/6rNRkjnCZ3xPEV
AiAVbQba7Pg9s8Ej6ok2zta1biohj5+k/flDM5KXM1NfOg==
-----END CERTIFICATE-----
Admins"4
Admins*

OrdererOrgAdmins"3
Readers(


OrdererOrgAdmins"3
Writers(


OrdererOrgAdmins*Admins!
ConsensusType
soloAdmins"
    BatchSize

���1�� Admins

BatchTimeout
1msAdmins
ChannelRestrictionsAdmins"*
ockValidation
WritersAdmins""
aders
ReadersAdmins""
iters
WritersAdmins""
Admins

AdminsAdmins*Admins&
HashingAlgorithm
SHA256Admins-
BlockDataHashingStructure����Admins;
OrdererAddresses'


node1:7050/Channel/Orderer/Admins""
aders
ReadersAdmins""
iters
WritersAdmins""
Admins

AdminsAdmins*Admins

这里的评论中可以看出,这可能与签名者有关。 - Ayushya
Ayushya,谢谢。我查看了这篇文章,但我无法弄清楚哪里出了问题。 - sun
@Deepa 我了解到您已经解决了这个问题。就像你一开始说的,“我没有使用docker方法,而是直接运行可执行文件。” 当您运行可执行文件时:它将生成所有的加密材料和通道。因此,您在重复执行,导致了上述错误。 - Urko
@sun 能够解决这个错误吗?你能否分享一下你是如何解决它的方法? - Vinay Wadagavi
5个回答

28
错误:收到意外状态:BAD_REQUEST--在更新授权时出错:验证DeltaSet时出错:未满足[组] /通道/应用程序的策略:未达成1个子策略的隐式门限,需要1个剩余

这通常表明通道创建交易的签名者没有一个联盟组织的管理员权限,但也可能表示由于许多其他原因而导致失败。

不幸的是,错误信息必须有点神秘,以避免泄露有关联盟或通道成员身份的信息。为了获取根本原因,您需要检查orderer日志。如果未设置,请将日志级别调高至debug,可以通过在启动orderer之前设置FABRIC_LOGGING_SPEC=debug(或对于Fabric v1.4.x之前的版本,设置ORDERER_GENERAL_LOGLEVEL=debug)来完成。在您的orderer日志中,您将看到与对等客户端输出相同的错误文本,但在前面的行中,您将看到导致错误的其他原因。

最常见的原因包括:

  1. 标识未列在组织的管理员列表中。
  2. 标识证书未由组织CA链有效签署。
  3. orderer不知道标识所属的组织。

其他一些不太可能的原因,因为您正在使用peer二进制文件而不是自定义代码:

  1. 签名与标识或已签字节不匹配。
  2. 标识格式错误。

假设从orderer日志中无法确定原因,如果您将日志发布在此处,我将很乐意帮助诊断。

哦,作为一个有益的提示。通过使用configtxgen -inspectBlock<genesis.block>,您可以查看到您的genesis块的更人性化版本。

编辑:回顾您帖子的顶部,我在orderer日志输出中看到了这个:

ERRO 02d 主体反序列化失败(提供的身份无效,Verify() 返回 x509:证书由未知授权机构签名)

这表明该证书声称是由CA颁发的,但并非由orderer所知道的CA签署(上面的错误类型2)。如果您在引导orderer后重新生成您环境的加密材料而没有删除orderer的存储目录,则通常会发生这种情况。

需要记住的是,ORDERER_GENERAL_BOOTSTRAPFILE(或 v2.0.0 之前的 ORDERER_GENERAL_GENESISFILE)仅在系统尚未引导时才会被读取,因此更改orderer的创世块除非也删除了orderer存储,否则不会产生任何影响。


感谢Jason提供宝贵的意见。我已添加了有关订购方日志信息的调试信息。如果您能够诊断问题,请告知我。 - sun
3
如我在上面编辑的帖子中所指出的那样,潜在的问题似乎在这里:
2017-08-20 17:54:19.392 IST [cauthdsl] func2 -> ERRO 181 Principal deserialization failure (The supplied identity is not valid, Verify() returned x509: certificate signed by unknown authority) for identity
这意味着创世块内的加密材料与用于签署交易的加密材料不匹配。通常出现这种情况是因为重新生成了加密材料,但订购方分类帐没有被删除。
- Jason Yellick
谢谢Jason。在我的情况下,生成了两个加密材料,并且程序正在引用相对路径。一旦我使用了绝对路径并将其指向正确的加密材料,一切都像魔术般地运行了! - sun
你好,我遇到了类似的问题。但我认为这与身份在组织列表中不存在有关。 因为在日志中,我得到的是: DEBU 14d 检查身份是否满足Org1MSP的ADMIN角色 2017-11-13 05:44:13.330 UTC [cauthdsl] func2 -> DEBU 14e 0xc4201112b8 身份0不满足原则:此身份不是管理员如何使一个身份成为管理员? - Katiyman
我遇到了同样的问题,订购方没有采用生成的MSP,而是启动了自己的MSP... :( 在通道创建时,它失败了。 - Benjamin Fuentes
7
如果您尝试删除一个网络并重新开始后出现此错误,除了运行docker stopdocker rm之外,您还需要运行**docker volume prune**以在开始新网络之前删除旧的卷和相关数据(旧证书等)。您的卷应该命名为byfn_orderer.example.com之类的名称,因此如果稍后使用相同的名称启动容器,则可以重复使用它们 - 然后您的新证书将不会用于容器中。同时确保您的Docker镜像没有提交新数据(可能需要下载新的镜像)。 - sean

8
这与TLS无关,因为请求已经到达订购方。如果是TLS问题,您将收到以下错误:
错误:获得意外状态:BAD_REQUEST--错误授权更新:错误验证DeltaSet:未满足[Groups]/Channel/Application的策略:未能达到1个子策略的隐含阈值,需要1个剩余。
现在,该错误基本上意味着您尝试发送用于创建通道的交易,但该交易由不是通道管理员的用户(客户端证书)签名。
您需要在命令前加上类似于此的内容
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp

谢谢Yacovm,但我仍然面临同样的问题。我已提供有关我的设置的其他信息。请告诉我还缺少什么。 - sun
请添加从脚本生成的configtx.yaml文件,以及configtxgen --outputBlock genesis.block的输出。 - yacovm
已添加所请求的内容。如果需要更多细节,请告诉我。 - sun

1
以下解决方案适用于我。
进入您的同级docker容器。 转到 / etc / hyperledger / msp / users / Admin@org1.example.com / msp 并运行 export CORE_PEER_MSPCONFIGPATH = $ PWD 使用适当的标志再次运行 peer channel create 命令。

0
在我的情况下,唯一缺少的是正确定义CORE_PEER_MSPCONFIGPATH。 使用fabric 1.1 希望能对其他人有所帮助。

0

在我的情况下,docker-compose文件中的一些条目缺失:

ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt] 被更改为 ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt, /etc/hyperledger/crypto/peerORG1/tls/ca.crt, /etc/hyperledger/crypto/peerORG2/tls/ca.crt, /etc/hyperledger/crypto/peerORG3/tls/ca.crt] 然后它就可以工作了。

所以这是你可能想要检查的事情,特别是如果你有一个定制化的设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接