场景::我有两个组织,每个组织中有两个同行。现在,我希望每个组织也提供一个订购者节点。
以下是我的 crypto-config.yaml 文件:
OrdererOrgs:
- Name: Orderer1
Domain: org1.xyz.com
Template:
Count: 1
- Name: Orderer2
Domain: org2.xyz.com
Template:
Count: 1
以下是我的 configtx.yaml 文件:
- &OrdererOrg1
Name: OrdererOrg01
ID: Orderer1MSP
MSPDir: crypto-config/ordererOrganizations/org1.xyz.com/msp
Policies:
Readers:
Type: Signature
Rule: "OR('Orderer1MSP.member')"
Writers:
Type: Signature
Rule: "OR('Orderer1MSP.member')"
Admins:
Type: Signature
Rule: "OR('Orderer1MSP.admin')"
- &OrdererOrg2
Name: OrdererOrg02
ID: Orderer2MSP
MSPDir: crypto-config/ordererOrganizations/org2.xyz.com/msp
Policies:
Readers:
Type: Signature
Rule: "OR('Orderer2MSP.member')"
Writers:
Type: Signature
Rule: "OR('Orderer2MSP.member')"
Admins:
Type: Signature
Rule: "OR('Orderer2MSP.admin')"
以下是我的 docker-compose-cli.yaml 文件:
services:
orderer.xyz.com:
extends:
file: base/docker-compose-base.yaml
service: orderer.xyz.com
container_name: orderer.xyz.com
networks:
- byfn
orderer0.xyz.com:
extends:
file: base/docker-compose-base.yaml
service: orderer0.xyz.com
container_name: orderer0.xyz.com
networks:
- byfn
我尝试使用以下命令创建频道:
peer channel create -o orderer.xyz.com:7050 -t 60s -c bay -f ./channel-artifacts/channel.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/org1.xyz.com/orderers/orderer0.org1.xyz.com/msp/tlscacerts/tlsca.org1.xyz.com-cert.pem
在创建频道时,我在Orderer容器日志上收到以下 ERROR :
[core.comm] ServerHandshake-> ERRO 015 TLS握手失败,原因是 错误远程错误:tls:错误的证书{“ server”:“ Orderer”,“ remote 地址”:“ 172.22.0.18:48594”}
那么,对于提供对等组织的组织,是否也可能提供订购者节点,或者有可能由单独的第三组织提供订购者节点(如本教程中所述)?为什么我会收到此错误?
感谢您的时间,如果您需要更多信息,请告诉我。
答案 0 :(得分:0)
我不知道您如何定义网络中组织和对等方的结构,但是,通过观察您为--cacert
和配置文件指定的路径,在我看来{{1} }未指定为订购者组织。
总体上我可能会问,您确定telco1.vodworks.com
的路径正确吗?
答案 1 :(得分:0)
我不是这里的专家,但是我不确定您为什么尝试连接到orderer.xyz.com?我有一个设置看起来像您要尝试的设置,为此您应该通过将以下行添加到crypto-config文件(两个订购者)来为要创建的每个订购节点命名。 :
Specs:
- Hostname: orderer
您应该在撰写文件中定义两个相应的容器,一个名为orderer.org1.xyz.com,另一个名为orderer.org2.xyz.com。
然后,您应该可以联系orderer.org1.xyz.com来创建频道。
答案 2 :(得分:0)
我终于能够找到此问题背后的实际原因。问题出在 docker-compose-cli.yaml 文件中的订购容器的服务名称。服务名称应与在hostname.domain模式之后的 crypto-config.yaml 文件中指定的名称匹配。
因此,我在 docker-compose-cli.yaml 文件中更改了订购者配置,如下所示:
services:
orderer0.telco1.vodworks.com:
extends:
file: base/docker-compose-base.yaml
service: orderer.vodworks.com
container_name: orderer.vodworks.com
networks:
- byfn
orderer0.telco2.vodworks.com:
extends:
file: base/docker-compose-base.yaml
service: orderer0.vodworks.com
container_name: orderer0.vodworks.com
networks:
- byfn
此后,我在 script.sh 和 utils.sh 中修改了peer channel
命令>脚本,添加正确的订购者名称。经过这几处更改之后,我能够成功运行我的网络并通过安装链码来验证此部署。
感谢@ arnaud-j-le-hors提供的示例应用程序帮助我弄清楚了这个问题。
答案 3 :(得分:0)
我遇到此错误
[core.comm] ServerHandshake -> ERRO 025 TLS handshake failed with error remote error: tls: internal error {"server": "Orderer", "remote address": "190.22.189.42:40746"}
当我使用结构sdk连接到启用了TLS的结构网络时。 为了解决这个问题,您需要确保连接配置文件在“订购者”部分中使用hostnameOverride属性作为示例
orderers:
orderer.example.com: 网址:grpcs:// localhost:7050
# these are standard properties defined by the gRPC library
# they will be passed in as-is to gRPC client constructor
grpcOptions:
hostnameOverride: orderer.example.com
grpc-max-send-message-length: 15
grpc.keepalive_time_ms: 360000
grpc.keepalive_timeout_ms: 180000
请查看下一个示例以获取更多信息:https://github.com/hyperledger/fabric-sdk-java/blob/master/src/test/fixture/sdkintegration/network_configs/network-config-tls.yaml
真的,我在这个错误中工作了几天,终于找到了解决方法
要了解更多信息,进行面料培训,或为智利和拉丁美洲的Hyperledger Fabric开发基于区块链的业务和政府解决方案,请访问www.blockchainempresarial.com