簡體   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