Últimas entradas

Integración de Hyperledger Explorer en una red Blockchain Fabric

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

Iniciar sesion Hyperledger Explorer

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.

Dashboard Hyperledger Explorer
Detalle transacciones Hyperledger Explorer

Fuente:
https://www.hyperledger.org/projects/explorer
https://github.com/hyperledger/blockchain-explorer


Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *