繁体   English   中英

Hyperledger Fabric Node.js Sdk 出现错误:访问被拒绝

[英]Hyperledger Fabric Node.js Sdk got error :access denied

我收到下面提到的错误。 我已经建立了一个 Hyperledger Fabric 网络,它有 2 个参数,每个参数都有一个对等点。 我已经创建、安装、实例化了 docker 容器内的链码,它们工作正常。 我使用 node.js SDK 来注册管理员和注册用户(类似于 fabcar)。 成功注册用户后,我尝试连接到频道(query.js)。 我面临错误Channel:mychannel received discovery error:access denied. 请帮我解决这个问题。

错误

2020-07-30T20:02:58.852Z - error: [Channel.js]: Channel:mychannel received discovery error:access denied 2020-07-30T20:02:58.853Z - error: [Channel.js]: Error: Channel:mychannel Discovery error:access denied 2020-07-30T20:02:58.853Z - error: [Network]: _initializeInternalChannel: Unable to initialize channel. Attempted to contact 1 Peers. Last error was Error: Channel:mychannel Discovery error:access denied Failed to evaluate transaction: Error: Unable to initialize channel. Attempted to contact 1 Peers. Last error was Error: Channel:mychannel Discovery error:access denied

在导航到对等日志时,我发现

2020-07-30 20:01:27.729 UTC [discovery] processQuery -> WARN 063 got query for channel mychannel from 172.21.0.1:39964 but it isn't eligible: implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Writers' sub-policies to be satisfied
2020-07-30 20:01:27.729 UTC [discovery] processQuery -> WARN 064 got query for channel mychannel from 172.21.0.1:39964 but it isn't eligible: implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Writers' sub-policies to be satisfied
2020-07-30 20:01:27.729 UTC [comm.grpc.server] 1 -> INFO 065 unary call completed grpc.service=discovery.Discovery grpc.method=Discover grpc.peer_address=172.21.0.1:39964 grpc.code=OK grpc.call_duration=960.632µs.

订单日志

: go1.12.12
OS/Arch: linux/amd64
2020-07-30 19:45:19.010 UTC [orderer.common.server] Start -> INFO 008 Beginning to serve requests
2020-07-30 19:49:35.018 UTC [comm.grpc.server] 1 -> INFO 009 streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.peer_address=172.21.0.6:47634 grpc.code=OK grpc.call_duration=17.59346ms
2020-07-30 19:49:35.021 UTC [fsblkstorage] newBlockfileMgr -> INFO 00a Getting block information from block storage
2020-07-30 19:49:35.131 UTC [orderer.commmon.multichannel] newChain -> INFO 00b Created and starting new chain mychannel
2020-07-30 19:49:35.134 UTC [comm.grpc.server] 1 -> INFO 00c streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.peer_address=172.21.0.6:47632 grpc.code=OK grpc.call_duration=140.497072ms
2020-07-30 19:53:41.978 UTC [orderer.common.broadcast] Handle -> WARN 00d Error reading from 172.21.0.6:47718: rpc error: code = Canceled desc = context canceled
2020-07-30 19:53:41.978 UTC [comm.grpc.server] 1 -> INFO 00e streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.peer_address=172.21.0.6:47718 error="rpc error: code = Canceled desc = context canceled" grpc.code=Canceled grpc.call_duration=3.667041ms
2020-07-30 19:53:49.541 UTC [comm.grpc.server] 1 -> INFO 00f streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.peer_address=172.21.0.3:41404 grpc.code=OK grpc.call_duration=3.734645ms
2020-07-30 19:56:07.720 UTC [orderer.common.broadcast] Handle -> WARN 010 Error reading from 172.21.0.6:47906: rpc error: code = Canceled desc = context canceled
2020-07-30 19:56:07.720 UTC [comm.grpc.server] 1 -> INFO 011 streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.peer_address=172.21.0.6:47906 error="rpc error: code = Canceled desc = context canceled" grpc.code=Canceled grpc.call_duration=5.159439458s
2020-07-30 20:00:15.785 UTC [orderer.common.broadcast] Handle -> WARN 012 Error reading from 172.21.0.6:48010: rpc error: code = Canceled desc = context canceled

Configtx.yaml

Organizations:

- &ordererOrg
Name: Orderer
ID: OrdererMSP
MSPDir: crypto-config/ordererOrganizations/orderer.immume.com/msp

- &Org1
Name: Org1
ID: Org1MSP
MSPDir: crypto-config/peerOrganizations/org1.immume.com/msp
AnchorPeers:
- Host: peer0.org1.immume.com
Port: 7051

- &Org2
Name: Org2
ID: Org2MSP
MSPDir: crypto-config/peerOrganizations/org2.immume.com/msp
AnchorPeers:
- Host: peer0.org2.immume.com
Port: 8051


Capabilities:
Channel: &ChannelMyCapabilities
V1_3: true
Orderer: &OrderMyCapabilities
V1_1: true
Application: &ApplicationMyCapabilities
V1_3: true
V1_2: false
V1_1: false
Application: &ApplicationMyDefaults


Organizations:

Orderer: &OrdererMyDefault

OrdererType: solo
Addresses:
- orderer.orderer.immume.com:7050
BatchTimeout: 2s
BatchSize:
MaxMessageCount: 40
AbsoluteMaxBytes: 98 MB
PreferredMaxBytes: 4354 KB


Profiles:

myGenesisProfile:
Capabilities:
<<: *ChannelMyCapabilities
Orderer:
<<: *OrdererMyDefault
Organizations:
- *ordererOrg
Capabilities:
<<: *OrderMyCapabilities
Consortiums:
myconsortium:
Organizations:
- *Org1
- *Org2


mychannel:
Consortium: myconsortium
Application:
<<: *ApplicationMyDefaults
Organizations:
- *Org1
- *Org2
Capabilities:
<<: *ApplicationMyCapabilities

newchannel:
Consortium: myconsortium
Application:
<<: *ApplicationMyDefaults
Organizations:
- *Org1
- *Org2
Capabilities:
<<: *ApplicationMyCapabilities

我还附上了屏幕截图,以便更好地参考对等日志、订单日志、query.js、connection.yaml、docker 容器调用和查询

对等体0

peer0.org1 日志

订货人日志

configtx.yaml 第 1 部分

configtx.yaml 第 2 部分

查询.js

peer0 链码容器调用和查询

连接,yaml

如果您尚未配置或未使用发现服务,请在文件query.js中禁用它。

通过在语句await gateway.connect(ccp, { wallet, identity: 'appUser', discovery: { enabled: true, asLocalhost: true } });中设置discovery: { enabled: false }来禁用发现服务;

在您的 query.js 中使用服务发现选项"asLocalhost": false 由于应用程序在区块链网络之外运行。

并且还将连接中的 url.yaml 更改为容器的主机名,而不是 localhost 或 127.0.0.1。 例如像这样:

  orderers:
    orderer.example.com:
      url: grpcs://orderer.example.com:7050               // like this
      grpcOptions:
       ssl-target-name-override: orderer.example.com
      tlsCACerts:
        path:  ./caro-blockchain-commonfiles/config/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
  peers:
    peer0.org1.example.com:
      url: grpcs://peer0.org1.example.com:7051                 // like this 
      grpcOptions:
        ssl-target-name-override: peer0.org1.example.com
      tlsCACerts:
        path: ./caro-blockchain-commonfiles/config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/cacerts/localhost-7054-ca-org1.pem
    peer0.org2.example.com:
      url: grpcs://peer0.org2.example.com:9051               // like this 
      grpcOptions:
        ssl-target-name-override: peer0.org2.example.com
      tlsCACerts:
        path: ./caro-blockchain-commonfiles/config/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/cacerts/localhost-8054-ca-org2.pem

最后检查应用程序,它是否与区块链服务位于同一网络中。

docker network connect networkNameBlockchain  containerNameOfApp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM