Hyperledger Explorer does not show blocks, transactions, and chaincodes for Fabric v3.0.0
What happened?
I'm using Hyperledger Fabric (HLF) v3.0.0 to create a blockchain network. I formed the network with two organizations (with a peer in each organization) and an orderer. Since there is no need for a system channel in HLF v3.0.0, I created a genesis block for the application channel (named ukchannel), and the orderer was joined to this channel with the osnadmin command. Then, the other two organizations were joined to this channel. Here are the steps I followed:
1- cryptogen generate --config=./cryptogen-input/crypto-config-org1.yaml --output="crypto-material"
2- cryptogen generate --config=./cryptogen-input/crypto-config-org2.yaml --output="crypto-material"
3- cryptogen generate --config=./cryptogen-input/crypto-config-orderer.yaml --output="crypto-material"
4- docker-compose -f docker/docker-compose-orderer.yaml up -d
5- docker-compose -f docker/docker-compose-org1.yaml up -d
6- docker-compose -f docker/docker-compose-org2.yaml up -d
7- configtxgen -profile NoSystemChannel -outputBlock ./channel-artifacts/ukchannel.block -channelID ukchannel
8- osnadmin channel join -c ukchannel --config-block ./channel-artifacts/ukchannel.block -o localhost:7080 --ca-file ./crypto-material/ordererOrganizations/uk.com/orderers/orderer0.uk.com/tls/ca.crt --client-cert ./crypto-material/ordererOrganizations/uk.com/users/Admin\@uk.com/tls/client.crt --client-key ./crypto-material/ordererOrganizations/uk.com/users/Admin\@uk.com/tls/client.key
When I checked whether the orderer joined the channel:
osnadmin channel list -o localhost:7080 --ca-file ./crypto-material/ordererOrganizations/uk.com/orderers/orderer0.uk.com/tls/ca.crt --client-cert ./crypto-material/ordererOrganizations/uk.com/users/Admin\@uk.com/tls/client.crt --client-key ./crypto-material/ordererOrganizations/uk.com/users/Admin\@uk.com/tls/client.key
The output says it joined:
Status: 200
{
"systemChannel": null,
"channels": [
{
"name": "ukchannel",
"url": "/participation/v1/channels/ukchannel"
}
]
}
I changed the environment variable for Org1 and Org2 and run the command
9- peer channel join -b ./channel-artifacts/ukchannel.block
for both. Then checked them with the command
peer channel list
the output says they joined the channel also.
After this point, when I started the Hyperledger Explorer and checked the network, I saw that only the node count was written as 2 (for the two organizations). The transactions and blocks counts were shown as 0. The orderer was not included in the node count either. What could be the reason why the orderer, transactions and blocks are not seen when it sees the two organizations? Am I making a mistake with authorization? You can see the files related to the explorer below.
./docker-compose.yaml (for explorer):
# SPDX-License-Identifier: Apache-2.0
version: '2.1'
volumes:
pgdata:
walletstore:
networks:
mynetwork.com:
name: hlf3_phd_uk_uknet
services:
explorerdb.mynetwork.com:
image: ghcr.io/hyperledger-labs/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: ghcr.io/hyperledger-labs/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:
- ${EXPLORER_CONFIG_FILE_PATH}:/opt/explorer/app/platform/fabric/config.json
- ${EXPLORER_PROFILE_DIR_PATH}:/opt/explorer/app/platform/fabric/connection-profile
- ./crypto-config:/tmp/crypto
- walletstore:/opt/explorer/wallet
ports:
- ${PORT:-8080}:${PORT:-8080}
depends_on:
explorerdb.mynetwork.com:
condition: service_healthy
networks:
- mynetwork.com
./config.json:
{
"network-configs": {
"test-network": {
"name": "Test Network",
"profile": "./connection-profile/test-network.json"
}
},
"license": "Apache-2.0"
}
./connection-profile/test-network.json:
{
"name": "test-network",
"version": "1.0.0",
"client": {
"tlsEnable": true,
"adminCredential": {
"id": "exploreradmin",
"password": "exploreradminpw"
},
"enableAuthentication": false,
"organization": "Org1MSP",
"connection": {
"timeout": {
"peer": {
"endorser": "300"
},
"orderer": "300"
}
}
},
"channels": {
"ukchannel": {
"peers": {
"peer0.org1.uk.com": {}
}
}
},
"organizations": {
"Org1MSP": {
"mspid": "Org1MSP",
"adminPrivateKey": {
"path": "/tmp/crypto/peerOrganizations/org1.uk.com/users/[email protected]/msp/keystore/priv_sk"
},
"peers": ["peer0.org1.uk.com"],
"signedCert": {
"path": "/tmp/crypto/peerOrganizations/org1.uk.com/users/[email protected]/msp/signcerts/[email protected]"
}
}
},
"peers": {
"peer0.org1.uk.com": {
"tlsCACerts": {
"path": "/tmp/crypto/peerOrganizations/org1.uk.com/peers/peer0.org1.uk.com/tls/ca.crt"
},
"url": "grpcs://peer0.org1.uk.com:7051"
}
}
}
./startExplorer.sh:
rm -rf crypto-config
mkdir -p crypto-config
cp -r ../crypto-material/ordererOrganizations/ crypto-config/
cp -r ../crypto-material/peerOrganizations/ crypto-config/
sleep 5
docker-compose up -d
Here is the HL Explorer screenshot. You can see it shows the channel and two nodes: https://i.sstatic.net/T5YB3QJj.png
I also packaged, installed, approved and commited a chaincode. I can query the chain code although it does not appear on Explorer. Sorry if I gave to many details. I have been dealing with this problem for days and want to get rid of this problem. I can add further details if you need.
What did you expect to happen?
I expected to see the correct number of nodes, transactions, chaincode(s) etc., on Hyperledger Explorer.
How can we reproduce it (as minimally and precisely as possible)?
Hyperledger Explorer should be tested on Hyperledger Fabric v3.0+ for compatibility.
Anything else we need to know?
No response
OS version
# On Linux:
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.5 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
$ uname -a
Linux umit 5.15.0-124-generic #134-Ubuntu SMP Fri Sep 27 20:20:17 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
# On Windows:
C:\> wmic os get Caption, Version, BuildNumber, OSArchitecture
# paste output here
UPDATE: When I check the logs on the explorer container with docker logs CONTAINER command, it shows an error:
[2024-11-21T12:02:03.592] [ERROR] Sync - <<<<<<<<<<<<<<<<<<<<<<<<<< Synchronizer Error >>>>>>>>>>>>>>>>>>>>>
[2024-11-21T12:02:03.592] [ERROR] Sync - Error: error in simulation: failed to execute transaction d00a5575f86467db94ce1ba5e0dec11f0e837fd23b41c0ccc526128ee7c0a93e: could not launch chaincode lscc.syscc: error building chaincode: error building image: failed to get chaincode package for external build: could not get legacy chaincode package 'lscc.syscc': open /var/hyperledger/production/chaincodes/lscc.syscc: no such file or directory
Any solution?
Hey,bro,although I don't know whether u've fixed it, I'm here to share my way to deal the problem. The cause of the problem is the crash of version in my experience. When I start the network, the bash always tries to get the latest images of tool, cli, peer, order, and explorer. There's nothing when it is started with my windows -- I don't know the reason why the docker volumes with the label "latest" are v2.5.x. When it runs by linux, It always get the real latest images which are v3.x. But my explorer just support the version among 2.2.x,2.4.x,2.5.x. So I get the same problem with u. I fix it by change the version to the one I want in some config files through reading network.sh.
Hey,bro,although I don't know whether u've fixed it, I'm here to share my way to deal the problem. The cause of the problem is the crash of version in my experience. When I start the network, the bash always tries to get the latest images of tool, cli, peer, order, and explorer. There's nothing when it is started with my windows -- I don't know the reason why the docker volumes with the label "latest" are v2.5.x. When it runs by linux, It always get the real latest images which are v3.x. But my explorer just support the version among 2.2.x,2.4.x,2.5.x. So I get the same problem with u. I fix it by change the version to the one I want in some config files through reading network.sh.
maybe there are many config files you should edit, but just read and find the "latest" out and change it.
@umitkilic Have you solved it yet? I encountered the same problem