代码之家  ›  专栏  ›  技术社区  ›  Paradox

通道未配置任何具有“发现”角色的对等方

  •  0
  • Paradox  · 技术社区  · 5 年前

    我试图从javafabricsdk做一个事务。我可以从节点正确查询数据,但在执行事务时,我收到以下错误:

    org.hyperledger.fabric.sdk.exception.ServiceDiscoveryException: The channel is not configured with any peers with the 'discover' role
        at org.hyperledger.fabric.sdk.Channel.sendTransactionProposalToEndorsers(Channel.java:3955) ~[fabric-sdk-java-1.4.5.jar:na]
        at org.hyperledger.fabric.gateway.impl.TransactionImpl.sendTransactionProposal(TransactionImpl.java:155) ~[fabric-gateway-java-1.4.0.jar:na]
        at org.hyperledger.fabric.gateway.impl.TransactionImpl.submit(TransactionImpl.java:91) ~[fabric-gateway-java-1.4.0.jar:na]
        at org.hyperledger.fabric.gateway.impl.ContractImpl.submitTransaction(ContractImpl.java:50) ~[fabric-gateway-java-1.4.0.jar:na]
    

    0 回复  |  直到 5 年前
        1
  •  0
  •   Udyan Sharma    5 年前

    虽然我一直在使用NodeSDK,但是根据我阅读的java资源,您一定是在使用“network config”(.yaml/.json)文件将应用程序(通过SDK)与网络连接起来。其中将出现对等部分,其定义如下: https://github.com/hyperledger/fabric-sdk-java/blob/master/src/test/fixture/sdkintegration/network_configs/network-config.yaml#L76 发现:是的 .

    核心-同行-八卦-外部终结点 在你的docker文件里。

        2
  •  0
  •   iOS-Developer84    4 年前

    1 在运行网络(对等)之前,添加 提供给对等服务的信息 文件。如果我们为每个组织至少设置一个锚节点,这将是有帮助的。

    services:
      peer1.org1.example.com:
         environment:
            - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:5051
            # Need to change the peer domain and port with your desired value 
            - CORE_PEER_GOSSIP_USELEADERELECTION=true
            - CORE_PEER_GOSSIP_ORGLEADER=false
    

    外部端点将帮助其他组织的对等方查找对等方。

    2 从更新对等信息网络连接.yml归档 发现:是的

    channels:
      testchannel:
        peers:
          peer1.org1.example.com:
            endorsingPeer: true
            chaincodeQuery: true
            ledgerQuery: true
            eventSource: true
            discover: true
    

    三。 在从应用程序创建网关期间启用发现

    Gateway.Builder builder = Gateway.createBuilder();
    ...     
    builder.discovery(true).identity(wallet, userName).networkConfig(connectionProfile);
    // Connect to gateway using application specified parameters
    gateway = builder.connect();
    

    运行应用程序后,它将使用来自peer1.org1的发现服务。example.com网站并将获取其他组织对等方的信息(例如peer2.org2。example.com网站,peer1.org2。example.com网站)从海峡那边。

    但它不会与域(peer1.org1)一起运行。example.com网站,peer1.org2。example.com网站,第2页或第2页。example.com网站)因为域与实际IP没有绑定。 你需要在你的 /etc/主机 用于测试应用程序的文件( ).

    127.0.0.1 peer1.org1.example.com
    127.0.0.1 peer1.org2.example.com
    127.0.0.1 peer2.org2.example.com
    

        3
  •  0
  •   Srikumar S    4 年前

    如果您已经通过编程方式添加了对等机,则可以在添加时设置对等机的角色。这是一个片段

    newChannel.joinPeer(peer, Channel.PeerOptions.createPeerOptions().setPeerRoles(EnumSet.of(Peer.PeerRole.EVENT_SOURCE, Peer.PeerRole.SERVICE_DISCOVERY))); //Add more roles as you see if
    

    当你用newChannel.initialize(),它将重新初始化完整的网络发现。

    推荐文章