Hyperledger Explorer es una de las herramientas que desde 2016, está en la Incubadora de Hyperledger. el cual es el resultado de unificar los trabajos previos que IBM, Intel y DTCC estaban desarrollando para crear sus propios exploradores de cadena de bloques.
Es similar a los exploradores de criptomonedas como BlockExplorer, permite visualizar de forma amigable e intuitiva las transacciones, nodos de una blockchain.
Es de código abierto, simple, potente, fácil de usar y de fácil mantenimiento. Actualmente se puede configurar y compilar de forma local tanto en macOS como en Ubuntu.
Para el siguiente ejemplo realizaremos la integración de Explorer a una red Blockchain implementada usada Hyperledger Fabric, en el siguiente post se explica como hacerlo Implementación de una red Blockchain usando Hyperledger Fabric
Pre-requisitos
- SO Ubuntu 18.04
- NodeJs 8.11.x
- PostgreSQL 10.x
- Jq 1.5.x
- Red Blockchain Hyperledger Fabric iniciada
NodeJs
curl -sL https://deb.nodesource.com/setup_8.x | sudo bash -
sudo apt install nodejs
PostgreSQL
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
sudo apt update
sudo apt -y install postgresql postgresql-contrib
Jq
sudo apt install jq
Hyperledger Explorer
Descargamos las fuentes desde su repositio de github
git clone https://github.com/hyperledger/blockchain-explorer.git
cd blockchain-explorer/app
Configuración base de datos
En el archivo explorerconfig.json se modificará los datos de acceso a la base de datos PostgreSQL
{
"persistence": "postgreSQL",
"platforms": ["fabric"],
"postgreSQL": {
"host": "127.0.0.1",
"port": "5432",
"database": "fabricexplorer",
"username": "***********",
"passwd": "**********"
},
"sync": {
"type": "local",
"platform": "fabric",
"blocksSyncTime": "1"
},
"jwt": {
"secret": "**************",
"expiresIn": "2h"
}
}
vim explorerconfig.json
cd blockchain-explorer/app/persistence/fabric/postgreSQL
chmod -R 775 db/
./createdb.sh
Verificación base de datos
sudo -u postgres psql
Configuración Explorer
cd blockchain-explorer/app/platform/fabric
vim config.json
{
"network-configs": {
"acme-network": {
"name": "acme-network",
"profile": "./connection-profile/acme-network.json"
}
},
"license": "Apache-2.0"
}
cd blockchain-explorer/app/platform/fabric/connection-profile/
cp first-network.json acme-network.json
vim acme-network.json
Modificar las siguientes variables de acuerdo a sus llaves generadas en Hyperledger Fabric
“adminPrivateKey”
“signedCert”
“tlsCACerts”
{
"name": "acme-network",
"version": "1.0.0",
"license": "Apache-2.0",
"client": {
"tlsEnable": true,
"adminUser": "admin",
"adminPassword": "adminpw",
"enableAuthentication": false,
"organization": "Org1",
"connection": {
"timeout": {
"peer": {
"endorser": "300"
},
"orderer": "300"
}
}
},
"channels": {
"marketplace": {
"peers": {
"peer0.org1.acme.com": {}
},
"connection": {
"timeout": {
"peer": {
"endorser": "6000",
"eventHub": "6000",
"eventReg": "6000"
}
}
}
}
},
"organizations": {
"Org1MSP": {
"mspid": "Org1MSP",
"fullpath": true,
"adminPrivateKey": {
"path": "/.../acme-network/crypto-config/peerOrganizations/org1.acme.com/users/Admin@org1.acme.com/msp/keystore/4706af6a835bd52196be4ae402da1e99d98c61e1040811ce5306fc49002141b4_sk"
},
"signedCert": {
"path": "/.../acme-network/crypto-config/peerOrganizations/org1.acme.com/users/Admin@org1.acme.com/msp/signcerts/Admin@org1.acme.com-cert.pem"
}
}
},
"peers": {
"peer0.org1.acme.com": {
"tlsCACerts": {
"path": "/.../acme-network/crypto-config/peerOrganizations/org1.acme.com/peers/peer0.org1.acme.com/tls/ca.crt"
},
"url": "grpcs://peer0.org1.acme.com:7051",
"eventUrl": "grpcs://peer0.org1.acme.com:7053",
"grpcOptions": {
"ssl-target-name-override": "peer0.org1.acme.com"
}
}
}
}
Build Explorer
cd blockchain-explorer
npm install
cd blockchain-explorer/app/test
npm install
npm run test
cd client/
npm install
npm run test:ci -- -u --coverage
npm run build
Iniciar Explorer
cd blockchain-explorer
./start.sh
Acceder via browser
http://[IP]:8080
Usuario: adminUser
Contraseña: adminPassword
Gráficamente se puede observar el número de bloques que se han creado por minuto u hora o el número de transacciones que se han llevado a cabo también por hora o por minuto, ademas de los chaincode (Smart Contract) instanciados en la red, en la gráfica circular se puede ver el número de transacciones que han realizado las diferentes organizaciones.
Fuente:
https://www.hyperledger.org/projects/explorer
https://github.com/hyperledger/blockchain-explorer