title: could not get chConfig cache reference: QueryBlockConfig failed: queryChaincode failed:
body: <p>I'm developing a middleware in Go that integrates a hyperledger fabric network using fabric-sdk-go. The middleware is running on Docker container and it's set to use the same network of fabric containers (I've check that container is connecting each others), but when I tries connect to the channel the follow error is throwed:</p>
  
  <p>failed to create new channel client: event service creation failed: could not get chConfig cache reference: QueryBlockConfig failed: queryChaincode failed: Transaction processing for endorser [peer0.slaughterhouse.kingbeefcattle.com:7051]: Endorser Client Status Code: (2) CONNECTION_FAILED. Description: dialing connection timed out [peer0.slaughterhouse.kingbeefcattle.com:7051]</p>
  
  <p>There is my config.yaml:</p>
  
  <pre><code>name: "kingbeefcattlenetowrk"
  #
  # Schema version of the content. Used by the SDK to apply the corresponding parsing rules.
  #
  version: 1.0.0
  
  #
  # The client section used by GO SDK.
  #
  client:
  
    # Which organization does this application instance belong to? The value must be the name of an org
    # defined under "organizations"
    organization: slaughterhouse
  
    logging:
      level: info
  
    # Root of the MSP directories with keys and certs.
    cryptoconfig:
      path: /crypto-config
  
    # Some SDKs support pluggable KV stores, the properties under "credentialStore"
    # are implementation specific
    credentialStore:
      path: /tmp/kingbeefcattlestore
  
      # [Optional]. Specific to the CryptoSuite implementation used by GO SDK. Software-based implementations
      # requiring a key store. PKCS#11 based implementations does not.
      cryptoStore:
        path: /tmp/kingbeefcattlemsp
  
    # BCCSP config for the client. Used by GO SDK.
    BCCSP:
      security:
       enabled: true
       default:
        provider: "SW"
       hashAlgorithm: "SHA2"
       softVerify: true
       level: 256
  
    tlsCerts:
      # [Optional]. Use system certificate pool when connecting to peers, orderers (for negotiating TLS) Default: false
      systemCertPool: false
  
      # [Optional]. Client key and cert for TLS handshake with peers and orderers
      # client:
      #   keyfile:
      #   certfile:
  
  #
  # [Optional]. But most apps would have this section so that channel objects can be constructed
  # based on the content below. If an app is creating channels, then it likely will not need this
  # section.
  #
  channels:
    # name of the channel
    kingbeefcattlechannel:
      # Required. list of orderers designated by the application to use for transactions on this
      # channel. This list can be a result of access control ("org1" can only access "ordererA"), or
      # operational decisions to share loads from applications among the orderers.  The values must
      # be "names" of orgs defined under "organizations/peers"
      # deprecated: not recommended, to override any orderer configuration items, entity matchers should be used.
      # orderers:
      #  - orderer.example.com
  
      # Required. list of peers from participating orgs
      peers:
        peer0.slaughterhouse.kingbeefcattle.com:
          # [Optional]. will this peer be sent transaction proposals for endorsement? The peer must
          # have the chaincode installed. The app can also use this property to decide which peers
          # to send the chaincode install request. Default: true
          endorsingPeer: true
  
          # [Optional]. will this peer be sent query proposals? The peer must have the chaincode
          # installed. The app can also use this property to decide which peers to send the
          # chaincode install request. Default: true
          chaincodeQuery: true
  
          # [Optional]. will this peer be sent query proposals that do not require chaincodes, like
          # queryBlock(), queryTransaction(), etc. Default: true
          ledgerQuery: true
  
          # [Optional]. will this peer be the target of the SDK's listener registration? All peers can
          # produce events but the app typically only needs to connect to one to listen to events.
          # Default: true
          eventSource: true
  
        peer1.slaughterhouse.kingbeefcattle.com:
  
      policies:
        #[Optional] options for retrieving channel configuration blocks
        queryChannelConfig:
          #[Optional] min number of success responses (from targets/peers)
          minResponses: 1
          #[Optional] channel config will be retrieved for these number of random targets
          maxTargets: 1
          #[Optional] retry options for query config block
          retryOpts:
            #[Optional] number of retry attempts
            attempts: 5
            #[Optional] the back off interval for the first retry attempt
            initialBackoff: 500ms
            #[Optional] the maximum back off interval for any retry attempt
            maxBackoff: 5s
            #[Optional] he factor by which the initial back off period is exponentially incremented
            backoffFactor: 2.0
  
  
  #
  # list of participating organizations in this network
  #
  organizations:
    slaughterhouse:
      mspid: SlaughterhouseMSP
      cryptoPath: peerOrganizations/slaughterhouse.kingbeefcattle.com/users/{userName}@slaughterhouse.kingbeefcattle.com/msp
      peers:
        - peer0.slaughterhouse.kingbeefcattle.com
        # - peer1.slaughterhouse.kingbeefcattle.com
  
  #
  # List of orderers to send transaction and channel create/update requests to. For the time
  # being only one orderer is needed. If more than one is defined, which one get used by the
  # SDK is implementation specific. Consult each SDK's documentation for its handling of orderers.
  #
  orderers:
    orderer.kingbeefcattle.com:
      url: orderer.kingbeefcattle.com:7050
      # url: grpc://172.22.0.4:7050
      # these are standard properties defined by the gRPC library
      # they will be passed in as-is to gRPC client constructor
      grpcOptions:
        # ssl-target-name-override: orderer.kingbeefcattle.com
        # These parameters should be set in coordination with the keepalive policy on the server,
        # as incompatible settings can result in closing of connection.
        # When duration of the 'keep-alive-time' is set to 0 or less the keep alive client parameters are disabled
        keep-alive-time: 0s
        keep-alive-timeout: 20s
        keep-alive-permit: false
        fail-fast: false
        # allow-insecure will be taken into consideration if address has no protocol defined, if true then grpc or else grpcs
        allow-insecure: false
  
      tlsCACerts:
        # Certificate location absolute path
        path: /crypto-config/ordererOrganizations/kingbeefcattle.com/tlsca/tlsca.kingbeefcattle.com-cert.pem
  #
  # List of peers to send various requests to, including endorsement, query
  # and event listener registration.
  #
  peers:
    peer0.slaughterhouse.kingbeefcattle.com:
      #this URL is used to send endorsement and query requests
      url: peer0.slaughterhouse.kingbeefcattle.com:7051
      # eventUrl is only needed when using eventhub (default is delivery service)
      eventUrl: peer0.slaughterhouse.kingbeefcattle.com:7053
      # url: grpc://172.22.0.2:7051
      # # eventUrl is only needed when using eventhub (default is delivery service)
      # eventUrl: grpc://172.22.0.2:7053
  
      grpcOptions:
        # ssl-target-name-override: peer0.slaughterhouse.kingbeefcattle.com
        # These parameters should be set in coordination with the keepalive policy on the server,
        # as incompatible settings can result in closing of connection.
        # When duration of the 'keep-alive-time' is set to 0 or less the keep alive client parameters are disabled
        keep-alive-time: 0s
        keep-alive-timeout: 20s
        keep-alive-permit: false
        fail-fast: false
        # allow-insecure will be taken into consideration if address has no protocol defined, if true then grpc or else grpcs
        allow-insecure: false
  
      tlsCACerts:
        # Certificate location absolute path
        # path: /crypto-config/peerOrganizations/slaughterhouse.kingbeefcattle.com/peers/peer0.slaughterhouse.kingbeefcattle.com/tls/ca.crt
        path: /crypto-config/peerOrganizations/slaughterhouse.kingbeefcattle.com/tlsca/tlsca.slaughterhouse.kingbeefcattle.com-cert.pem
  </code></pre>
  
  <p>Could someone help, please?</p>