0

I'm trying to setup a sample Hyperledger Fabric network and Hyperledger Explorer based on the examples provided in "fabric-samples".

Step 1: Create network "test-network" with 1 Org "Org1MSP", 1 orderer "orderer.example.com", 2 peer nodes "peer0.org1.example.com", "peer0.org2.example.com".

$ ./network.sh up
Using docker and docker-compose
Starting nodes with CLI timeout of '5' tries and CLI delay of '3' seconds and using database 'leveldb' with crypto from 'cryptogen'
LOCAL_VERSION=v2.5.0
DOCKER_IMAGE_VERSION=v2.5.0
/home/xxx/fabric-samples/test-network/../bin/cryptogen
Generating certificates using cryptogen tool
Creating Org1 Identities
+ cryptogen generate --config=./organizations/cryptogen/crypto-config-org1.yaml --output=organizations
org1.example.com
+ res=0
Creating Org2 Identities
+ cryptogen generate --config=./organizations/cryptogen/crypto-config-org2.yaml --output=organizations
org2.example.com
+ res=0
Creating Orderer Org Identities
+ cryptogen generate --config=./organizations/cryptogen/crypto-config-orderer.yaml --output=organizations
+ res=0
Generating CCP files for Org1 and Org2
Creating network "fabric_test" with the default driver
Creating volume "compose_orderer.example.com" with default driver
Creating volume "compose_peer0.org1.example.com" with default driver
Creating volume "compose_peer0.org2.example.com" with default driver
Creating peer0.org1.example.com ... done
Creating orderer.example.com    ... done
Creating peer0.org2.example.com ... done
Creating cli                    ... done
CONTAINER ID   IMAGE                               COMMAND             CREATED                  STATUS                  PORTS                                                                                                                             NAMES
1ab39cf70d5f   hyperledger/fabric-tools:latest     "/bin/bash"         Less than a second ago   Up Less than a second                                                                                                                                     cli
c4abbb9a1532   hyperledger/fabric-peer:latest      "peer node start"   Less than a second ago   Up Less than a second   0.0.0.0:9051->9051/tcp, :::9051->9051/tcp, 7051/tcp, 0.0.0.0:9445->9445/tcp, :::9445->9445/tcp                                    peer0.org2.example.com
13c601be0247   hyperledger/fabric-orderer:latest   "orderer"           Less than a second ago   Up Less than a second   0.0.0.0:7050->7050/tcp, :::7050->7050/tcp, 0.0.0.0:7053->7053/tcp, :::7053->7053/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp   orderer.example.com
9f8086cb1e2d   hyperledger/fabric-peer:latest      "peer node start"   Less than a second ago   Up Less than a second   0.0.0.0:7051->7051/tcp, :::7051->7051/tcp, 0.0.0.0:9444->9444/tcp, :::9444->9444/tcp                                              peer0.org1.example.com

Step 2. Created a channel "channel1":

$ ./network.sh createChannel -c channel1
Using docker and docker-compose
Creating channel 'channel1'.
If network is not up, starting nodes with CLI timeout of '5' tries and CLI delay of '3' seconds and using database 'leveldb 
Network Running Already
Using docker and docker-compose
Generating channel genesis block 'channel1.block'
/home/hnadathur/development/blockchain/hyperledger/test-frm-scrtch/fabric-samples/test-network/../bin/configtxgen
+ configtxgen -profile TwoOrgsApplicationGenesis -outputBlock ./channel-artifacts/channel1.block -channelID channel1
2023-07-18 22:32:36.200 CDT 0001 INFO [common.tools.configtxgen] main -> Loading configuration
2023-07-18 22:32:36.206 CDT 0002 INFO [common.tools.configtxgen.localconfig] completeInitialization -> orderer type: etcdraft
2023-07-18 22:32:36.206 CDT 0003 INFO [common.tools.configtxgen.localconfig] completeInitialization -> Orderer.EtcdRaft.Options unset, setting to tick_interval:"500ms" election_tick:10 heartbeat_tick:1 max_inflight_blocks:5 snapshot_interval_size:16777216 
2023-07-18 22:32:36.206 CDT 0004 INFO [common.tools.configtxgen.localconfig] Load -> Loaded configuration: /home/hnadathur/development/blockchain/hyperledger/test-frm-scrtch/fabric-samples/test-network/configtx/configtx.yaml
2023-07-18 22:32:36.207 CDT 0005 INFO [common.tools.configtxgen] doOutputBlock -> Generating genesis block
2023-07-18 22:32:36.207 CDT 0006 INFO [common.tools.configtxgen] doOutputBlock -> Creating application channel genesis block
2023-07-18 22:32:36.207 CDT 0007 INFO [common.tools.configtxgen] doOutputBlock -> Writing genesis block
+ res=0
Creating channel channel1
Using organization 1
+ osnadmin channel join --channelID channel1 --config-block ./channel-artifacts/channel1.block -o localhost:7053 --ca-file /home/hnadathur/development/blockchain/hyperledger/test-frm-scrtch/fabric-samples/test-network/organizations/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem --client-cert /home/hnadathur/development/blockchain/hyperledger/test-frm-scrtch/fabric-samples/test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt --client-key /home/hnadathur/development/blockchain/hyperledger/test-frm-scrtch/fabric-samples/test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.key
+ res=0
Status: 201
{
    "name": "channel1",
    "url": "/participation/v1/channels/channel1",
    "consensusRelation": "consenter",
    "status": "active",
    "height": 1
}

Channel 'channel1' created
Joining org1 peer to the channel...
Using organization 1
+ peer channel join -b ./channel-artifacts/channel1.block
+ res=0
2023-07-18 22:32:42.324 CDT 0001 INFO [channelCmd] InitCmdFactory -> Endorser and orderer connections initialized
2023-07-18 22:32:42.364 CDT 0002 INFO [channelCmd] executeJoin -> Successfully submitted proposal to join channel
Joining org2 peer to the channel...
Using organization 2
+ peer channel join -b ./channel-artifacts/channel1.block
+ res=0
2023-07-18 22:32:45.417 CDT 0001 INFO [channelCmd] InitCmdFactory -> Endorser and orderer connections initialized
2023-07-18 22:32:45.467 CDT 0002 INFO [channelCmd] executeJoin -> Successfully submitted proposal to join channel
Setting anchor peer for org1...
Using organization 1
Fetching channel config for channel channel1
Using organization 1
Fetching the most recent configuration block for the channel
+ peer channel fetch config config_block.pb -o orderer.example.com:7050 --ordererTLSHostnameOverride orderer.example.com -c channel1 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/organizations/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem
2023-07-19 03:32:45.618 UTC 0001 INFO [channelCmd] InitCmdFactory -> Endorser and orderer connections initialized
2023-07-19 03:32:45.620 UTC 0002 INFO [cli.common] readBlock -> Received block: 0
2023-07-19 03:32:45.620 UTC 0003 INFO [channelCmd] fetch -> Retrieving last config block: 0
2023-07-19 03:32:45.620 UTC 0004 INFO [cli.common] readBlock -> Received block: 0
Decoding config block to JSON and isolating config to Org1MSPconfig.json
+ configtxlator proto_decode --input config_block.pb --type common.Block --output config_block.json
+ jq '.data.data[0].payload.data.config' config_block.json
Generating anchor peer update transaction for Org1 on channel channel1
+ jq '.channel_group.groups.Application.groups.Org1MSP.values += {"AnchorPeers":{"mod_policy": "Admins","value":{"anchor_peers": [{"host": "peer0.org1.example.com","port": 7051}]},"version": "0"}}' Org1MSPconfig.json
+ configtxlator proto_encode --input Org1MSPconfig.json --type common.Config --output original_config.pb
+ configtxlator proto_encode --input Org1MSPmodified_config.json --type common.Config --output modified_config.pb
+ configtxlator compute_update --channel_id channel1 --original original_config.pb --updated modified_config.pb --output config_update.pb
+ configtxlator proto_decode --input config_update.pb --type common.ConfigUpdate --output config_update.json
+ jq .
++ cat config_update.json
+ echo '{"payload":{"header":{"channel_header":{"channel_id":"channel1", "type":2}},"data":{"config_update":{' '"channel_id":' '"channel1",' '"isolated_data":' '{},' '"read_set":' '{' '"groups":' '{' '"Application":' '{' '"groups":' '{' '"Org1MSP":' '{' '"groups":' '{},' '"mod_policy":' '"",' '"policies":' '{' '"Admins":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '},' '"Endorsement":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '},' '"Readers":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '},' '"Writers":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '}' '},' '"values":' '{' '"MSP":' '{' '"mod_policy":' '"",' '"value":' null, '"version":' '"0"' '}' '},' '"version":' '"0"' '}' '},' '"mod_policy":' '"",' '"policies":' '{},' '"values":' '{},' '"version":' '"0"' '}' '},' '"mod_policy":' '"",' '"policies":' '{},' '"values":' '{},' '"version":' '"0"' '},' '"write_set":' '{' '"groups":' '{' '"Application":' '{' '"groups":' '{' '"Org1MSP":' '{' '"groups":' '{},' '"mod_policy":' '"Admins",' '"policies":' '{' '"Admins":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '},' '"Endorsement":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '},' '"Readers":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '},' '"Writers":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '}' '},' '"values":' '{' '"AnchorPeers":' '{' '"mod_policy":' '"Admins",' '"value":' '{' '"anchor_peers":' '[' '{' '"host":' '"peer0.org1.example.com",' '"port":' 7051 '}' ']' '},' '"version":' '"0"' '},' '"MSP":' '{' '"mod_policy":' '"",' '"value":' null, '"version":' '"0"' '}' '},' '"version":' '"1"' '}' '},' '"mod_policy":' '"",' '"policies":' '{},' '"values":' '{},' '"version":' '"0"' '}' '},' '"mod_policy":' '"",' '"policies":' '{},' '"values":' '{},' '"version":' '"0"' '}' '}}}}'
+ configtxlator proto_encode --input config_update_in_envelope.json --type common.Envelope --output Org1MSPanchors.tx
2023-07-19 03:32:45.801 UTC 0001 INFO [channelCmd] InitCmdFactory -> Endorser and orderer connections initialized
2023-07-19 03:32:45.809 UTC 0002 INFO [channelCmd] update -> Successfully submitted channel update
Anchor peer set for org 'Org1MSP' on channel 'channel1'
Setting anchor peer for org2...
Using organization 2
Fetching channel config for channel channel1
Using organization 2
Fetching the most recent configuration block for the channel
+ peer channel fetch config config_block.pb -o orderer.example.com:7050 --ordererTLSHostnameOverride orderer.example.com -c channel1 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/organizations/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem
2023-07-19 03:32:45.973 UTC 0001 INFO [channelCmd] InitCmdFactory -> Endorser and orderer connections initialized
2023-07-19 03:32:45.975 UTC 0002 INFO [cli.common] readBlock -> Received block: 1
2023-07-19 03:32:45.975 UTC 0003 INFO [channelCmd] fetch -> Retrieving last config block: 1
2023-07-19 03:32:45.976 UTC 0004 INFO [cli.common] readBlock -> Received block: 1
Decoding config block to JSON and isolating config to Org2MSPconfig.json
+ configtxlator proto_decode --input config_block.pb --type common.Block --output config_block.json
+ jq '.data.data[0].payload.data.config' config_block.json
+ jq '.channel_group.groups.Application.groups.Org2MSP.values += {"AnchorPeers":{"mod_policy": "Admins","value":{"anchor_peers": [{"host": "peer0.org2.example.com","port": 9051}]},"version": "0"}}' Org2MSPconfig.json
Generating anchor peer update transaction for Org2 on channel channel1
+ configtxlator proto_encode --input Org2MSPconfig.json --type common.Config --output original_config.pb
+ configtxlator proto_encode --input Org2MSPmodified_config.json --type common.Config --output modified_config.pb
+ configtxlator compute_update --channel_id channel1 --original original_config.pb --updated modified_config.pb --output config_update.pb
+ configtxlator proto_decode --input config_update.pb --type common.ConfigUpdate --output config_update.json
+ jq .
++ cat config_update.json
+ echo '{"payload":{"header":{"channel_header":{"channel_id":"channel1", "type":2}},"data":{"config_update":{' '"channel_id":' '"channel1",' '"isolated_data":' '{},' '"read_set":' '{' '"groups":' '{' '"Application":' '{' '"groups":' '{' '"Org2MSP":' '{' '"groups":' '{},' '"mod_policy":' '"",' '"policies":' '{' '"Admins":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '},' '"Endorsement":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '},' '"Readers":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '},' '"Writers":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '}' '},' '"values":' '{' '"MSP":' '{' '"mod_policy":' '"",' '"value":' null, '"version":' '"0"' '}' '},' '"version":' '"0"' '}' '},' '"mod_policy":' '"",' '"policies":' '{},' '"values":' '{},' '"version":' '"0"' '}' '},' '"mod_policy":' '"",' '"policies":' '{},' '"values":' '{},' '"version":' '"0"' '},' '"write_set":' '{' '"groups":' '{' '"Application":' '{' '"groups":' '{' '"Org2MSP":' '{' '"groups":' '{},' '"mod_policy":' '"Admins",' '"policies":' '{' '"Admins":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '},' '"Endorsement":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '},' '"Readers":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '},' '"Writers":' '{' '"mod_policy":' '"",' '"policy":' null, '"version":' '"0"' '}' '},' '"values":' '{' '"AnchorPeers":' '{' '"mod_policy":' '"Admins",' '"value":' '{' '"anchor_peers":' '[' '{' '"host":' '"peer0.org2.example.com",' '"port":' 9051 '}' ']' '},' '"version":' '"0"' '},' '"MSP":' '{' '"mod_policy":' '"",' '"value":' null, '"version":' '"0"' '}' '},' '"version":' '"1"' '}' '},' '"mod_policy":' '"",' '"policies":' '{},' '"values":' '{},' '"version":' '"0"' '}' '},' '"mod_policy":' '"",' '"policies":' '{},' '"values":' '{},' '"version":' '"0"' '}' '}}}}'
+ configtxlator proto_encode --input config_update_in_envelope.json --type common.Envelope --output Org2MSPanchors.tx
2023-07-19 03:32:46.158 UTC 0001 INFO [channelCmd] InitCmdFactory -> Endorser and orderer connections initialized
2023-07-19 03:32:46.166 UTC 0002 INFO [channelCmd] update -> Successfully submitted channel update
Anchor peer set for org 'Org2MSP' on channel 'channel1'
Channel 'channel1' joined

Step 3: Configure Hyperledger Explorer following the setup steps provided here: https://github.com/hyperledger-labs/blockchain-explorer/tree/main#quick-start-using-docker

docker-compose.yaml:

# SPDX-License-Identifier: Apache-2.0
version: '2.1'

volumes:
  pgdata:
  walletstore:

networks:
  mynetwork.com:
    name: fabric_test

services:

  explorerdb.mynetwork.com:
    image: hyperledger/explorer-db:latest
    container_name: explorerdb.mynetwork.com
    hostname: explorerdb.mynetwork.com
    environment:
      - DATABASE_DATABASE=fabricexplorer
      - DATABASE_USERNAME=hppoc
      - DATABASE_PASSWORD=password
    healthcheck:
      test: "pg_isready -h localhost -p 5432 -q -U postgres"
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks:
      - mynetwork.com

  explorer.mynetwork.com:
    image: hyperledger/explorer:latest
    container_name: explorer.mynetwork.com
    hostname: explorer.mynetwork.com
    environment:
      - DATABASE_HOST=explorerdb.mynetwork.com
      - DATABASE_DATABASE=fabricexplorer
      - DATABASE_USERNAME=hppoc
      - DATABASE_PASSWD=password
      - LOG_LEVEL_APP=info
      - LOG_LEVEL_DB=info
      - LOG_LEVEL_CONSOLE=debug
      - LOG_CONSOLE_STDOUT=true
      - DISCOVERY_AS_LOCALHOST=false
      - PORT=${PORT:-8080}
    volumes:
      - ./config.json:/opt/explorer/app/platform/fabric/config.json
      - ./connection-profile:/opt/explorer/app/platform/fabric/connection-profile
      - ./organizations:/tmp/crypto
      - walletstore:/opt/explorer/wallet
    ports:
      - ${PORT:-8080}:${PORT:-8080}
    depends_on:
      explorerdb.mynetwork.com:
        condition: service_healthy
    networks:
      - mynetwork.com

connection-profile/test-network.json

{
    "name": "test-network",
    "version": "1.0.0",
    "client": {
        "tlsEnable": true,
        "adminCredential": {
            "id": "exploreradmin",
            "password": "exploreradminpw"
        },
        "enableAuthentication": true,
        "organization": "Org1MSP",
        "connection": {
            "timeout": {
                "peer": {
                    "endorser": "300"
                },
                "orderer": "300"
            }
        }
    },
    "channels": {
        "channel1": {
            "peers": {
                "peer0.org1.example.com": {}
            }
        }
    },
    "organizations": {
        "Org1MSP": {
            "mspid": "Org1MSP",
            "adminPrivateKey": {
                "path": "/tmp/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk"
            },
            "peers": ["peer0.org1.example.com"],
            "signedCert": {
                "path": "/tmp/crypto/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem"
            }
        }
    },
    "peers": {
        "peer0.org1.example.com": {
            "tlsCACerts": {
                "path": "/tmp/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt"
            },
            "url": "grpcs://192.168.176.2:7051",
                        "grpcOptions": {
                            "ssl-target-name-override": "peer0.org1.example.com",
                            "request-timeout": 12000,
                            "grpc.keepalive_time_ms": 600000
                        }
        }
    }
}

I have ensured to copy the crypto files from test-network to the explorer folder: cp -r ../test-network/organizations/ .

I run the below command to start Explorer but it fails on startup with the below error message:

[DiscoveryService]: send[channel1] - Channel:channel1 received discovery error:access denied

The Docker containers running are shown below:

$ docker ps -a
CONTAINER ID   IMAGE                               COMMAND                  CREATED              STATUS                        PORTS                                                                                                                             NAMES
a05c70be47a2   hyperledger/explorer:latest         "docker-entrypoint.s…"   49 seconds ago       Exited (1) 45 seconds ago                                                                                                                                       explorer.mynetwork.com
647005f40e54   hyperledger/explorer-db:latest      "docker-entrypoint.s…"   About a minute ago   Up About a minute (healthy)   5432/tcp                                                                                                                          explorerdb.mynetwork.com
1ab39cf70d5f   hyperledger/fabric-tools:latest     "/bin/bash"              13 minutes ago       Up 13 minutes                                                                                                                                                   cli
c4abbb9a1532   hyperledger/fabric-peer:latest      "peer node start"        13 minutes ago       Up 13 minutes                 0.0.0.0:9051->9051/tcp, :::9051->9051/tcp, 7051/tcp, 0.0.0.0:9445->9445/tcp, :::9445->9445/tcp                                    peer0.org2.example.com
13c601be0247   hyperledger/fabric-orderer:latest   "orderer"                13 minutes ago       Up 13 minutes                 0.0.0.0:7050->7050/tcp, :::7050->7050/tcp, 0.0.0.0:7053->7053/tcp, :::7053->7053/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp   orderer.example.com
9f8086cb1e2d   hyperledger/fabric-peer:latest      "peer node start"        13 minutes ago       Up 13 minutes                 0.0.0.0:7051->7051/tcp, :::7051->7051/tcp, 0.0.0.0:9444->9444/tcp, :::9444->9444/tcp                                              peer0.org1.example.com

Output of Explorer logs:

$ docker logs a05c70be47a2 -n 100

> hyperledger-explorer@1.1.8 app-start /opt/explorer
> ./start.sh

************************************************************************************
**************************** Hyperledger Explorer **********************************
************************************************************************************
[2023-07-19T03:34:37.340] [INFO] PgService - SSL to Postgresql disabled
[2023-07-19T03:34:37.342] [INFO] PgService - connecting to Postgresql postgres://hppoc:******@explorerdb.mynetwork.com:5432/fabricexplorer
[2023-07-19T03:34:37.365] [INFO] Platform -  network_config.id  test-network  network_config.profile  ./connection-profile/test-network.json
[2023-07-19T03:34:37.396] [INFO] Platform - Already registered : admin
[2023-07-19T03:34:37.397] [INFO] FabricConfig - config.client.tlsEnable  true
[2023-07-19T03:34:37.397] [INFO] FabricConfig - FabricConfig, this.config.channels  channel1
2023-07-19T03:34:37.557Z - error: [DiscoveryService]: send[channel1] - Channel:channel1 received discovery error:access denied
[2023-07-19T03:34:37.558] [ERROR] FabricClient - Error: DiscoveryService: channel1 error: access denied
    at DiscoveryService.send (/opt/explorer/node_modules/fabric-common/lib/DiscoveryService.js:363:11)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async NetworkImpl._initializeInternalChannel (/opt/explorer/node_modules/fabric-network/lib/network.js:279:13)
    at async NetworkImpl._initialize (/opt/explorer/node_modules/fabric-network/lib/network.js:231:9)
    at async Gateway.getNetwork (/opt/explorer/node_modules/fabric-network/lib/gateway.js:330:9)
[2023-07-19T03:34:37.558] [INFO] FabricClient - ********* call to initializeDetachClient **********
[2023-07-19T03:34:37.558] [INFO] FabricClient - initializeDetachClient, network config)  {
  name: 'test-network',
  version: '1.0.0',
  client: {
    tlsEnable: true,
    adminCredential: { id: 'exploreradmin', password: 'exploreradminpw' },
    enableAuthentication: true,
    organization: 'Org1MSP',
    connection: { timeout: [Object] }
  },
  channels: { channel1: { peers: [Object] } },
  organizations: {
    Org1MSP: {
      mspid: 'Org1MSP',
      adminPrivateKey: [Object],
      peers: [Array],
      signedCert: [Object]
    }
  },
  peers: {
    'peer0.org1.example.com': {
      tlsCACerts: [Object],
      url: 'grpcs://192.168.176.2:7051',
      grpcOptions: [Object]
    }
  }
}
[2023-07-19T03:34:37.559] [INFO] FabricClient - ************************************* initializeDetachClient *************************************************
[2023-07-19T03:34:37.559] [INFO] FabricClient - Error : Failed to connect client peer, please check the configuration and peer status
[2023-07-19T03:34:37.559] [INFO] FabricClient - Info :  Explorer will continue working with only DB data
[2023-07-19T03:34:37.559] [INFO] FabricClient - ************************************** initializeDetachClient ************************************************
[2023-07-19T03:34:37.561] [INFO] Platform - initializeListener, network_id, network_client  test-network {
  name: 'test-network',
  version: '1.0.0',
  client: {
    tlsEnable: true,
    adminCredential: { id: 'exploreradmin', password: 'exploreradminpw' },
    enableAuthentication: true,
    organization: 'Org1MSP',
    connection: { timeout: [Object] }
  },
  channels: { channel1: { peers: [Object] } },
  organizations: {
    Org1MSP: {
      mspid: 'Org1MSP',
      adminPrivateKey: [Object],
      peers: [Array],
      signedCert: [Object]
    }
  },
  peers: {
    'peer0.org1.example.com': {
      tlsCACerts: [Object],
      url: 'grpcs://192.168.176.2:7051',
      grpcOptions: [Object]
    }
  }
}
[2023-07-19T03:34:37.562] [INFO] main - Please open web browser to access :http://localhost:8080/
[2023-07-19T03:34:37.562] [INFO] main - pid is 20
[2023-07-19T03:34:37.563] [ERROR] main - <<<<<<<<<<<<<<<<<<<<<<<<<< Explorer Error >>>>>>>>>>>>>>>>>>>>>
[2023-07-19T03:34:37.563] [ERROR] main - Error :  [
  'Default client peer is down and no channel details available database'
]
[2023-07-19T03:34:39.563] [INFO] main - Received kill signal, shutting down gracefully
[2023-07-19T03:34:39.566] [INFO] Platform - <<<<<<<<<<<<<<<<<<<<<<<<<< Closing explorer  >>>>>>>>>>>>>>>>>>>>>
[2023-07-19T03:34:39.566] [INFO] main - Closed out connections
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! hyperledger-explorer@1.1.8 app-start: `./start.sh`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the hyperledger-explorer@1.1.8 app-start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2023-07-19T03_34_39_581Z-debug.log

Log entries from the peer container corresponding to "peer0.org1.example.com" are shown below:

$ docker logs 9f8086cb1e2d -n 20
2023-07-19 03:32:47.364 UTC 0050 INFO [gossip.channel] reportMembershipChanges -> [[channel1] Membership view has changed. peers went online:  [[peer0.org2.example.com:9051 ]] , current view:  [[peer0.org2.example.com:9051 ]]]
2023-07-19 03:34:37.552 UTC 0051 WARN [policies] SignatureSetToValidIdentities -> invalid identity error="the supplied identity is not valid: x509: certificate signed by unknown authority (possibly because of \"x509: ECDSA verification failure\" while trying to verify candidate authority certificate \"ca.org1.example.com\")" identity="(mspid=Org1MSP subject=CN=User1@org1.example.com,OU=client,L=San Francisco,ST=California,C=US issuer=CN=ca.org1.example.com,O=org1.example.com,L=San Francisco,ST=California,C=US serialnumber=302167687318362840894181243042446910005)"
2023-07-19 03:34:37.553 UTC 0052 WARN [policies] SignatureSetToValidIdentities -> invalid identity error="the supplied identity is not valid: x509: certificate signed by unknown authority (possibly because of \"x509: ECDSA verification failure\" while trying to verify candidate authority certificate \"ca.org1.example.com\")" identity="(mspid=Org1MSP subject=CN=User1@org1.example.com,OU=client,L=San Francisco,ST=California,C=US issuer=CN=ca.org1.example.com,O=org1.example.com,L=San Francisco,ST=California,C=US serialnumber=302167687318362840894181243042446910005)"
2023-07-19 03:34:37.553 UTC 0053 WARN [discovery] processQuery -> got query for channel channel1 from 192.168.176.7:56282 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
2023-07-19 03:34:37.553 UTC 0054 WARN [discovery] processQuery -> got query for channel channel1 from 192.168.176.7:56282 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
2023-07-19 03:34:37.553 UTC 0055 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=discovery.Discovery grpc.method=Discover grpc.peer_address=192.168.176.7:56282 grpc.peer_subject="CN=fabric-common" grpc.code=OK grpc.call_duration=449.584µs

Highlighting the specific error messages below:

2023-07-19 03:34:37.552 UTC 0051 WARN [policies] SignatureSetToValidIdentities -> invalid identity error="the supplied identity is not valid: x509: certificate signed by unknown authority (possibly because of "x509: ECDSA verification failure" while trying to verify candidate authority certificate "ca.org1.example.com")" identity="(mspid=Org1MSP subject=CN=User1@org1.example.com,OU=client,L=San Francisco,ST=California,C=US issuer=CN=ca.org1.example.com,O=org1.example.com,L=San Francisco,ST=California,C=US serialnumber=302167687318362840894181243042446910005)"

and

2023-07-19 03:34:37.553 UTC 0053 WARN [discovery] processQuery -> got query for channel channel1 from 192.168.176.7:56282 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

I searched for these errors and found the below links but they do not seem to address my specific scenario:

Any help to troubleshoot this would be appreciated.

Hari N
  • 147
  • 4
  • 10

0 Answers0