Despliegue de la plataforma IBAX Blockchain y la red IBAX
Este capítulo demuestra cómo desplegar su propia red blockchain.
Ejemplo de despliegue
Despliegue una red blockchain con tres nodos como ejemplo.
Tres nodos de red:
- El Nodo 1 es el primer nodo en la red blockchain, puede generar nuevos bloques y enviar transacciones desde clientes conectados a él;
- El Nodo 2 es otro nodo validador, puede generar nuevos bloques y enviar transacciones desde clientes conectados a él;
- El Nodo 3 es un nodo de vigilancia, no puede generar nuevos bloques, pero puede enviar transacciones desde clientes conectados a él.
La siguiente configuración se despliega para los tres nodos:
- Cada nodo utiliza su propia instancia del sistema de base de datos PostgreSQL;
- Cada nodo utiliza su propia instancia del servicio Centrifugo;
- servidor (opens new window) se implementa en el mismo host que otros componentes de back-end.
Las direcciones y puertos de ejemplo utilizados por los nodos se describen en la siguiente tabla:
| | |
Nodo | Componente | IP y puerto |
1 | PostgreSQL | 127.0.0.1:5432 |
1 | Centrifugo | 192.168.1.1:8000 |
1 | go-ibax (servicio TCP) | 192.168.1.1:7078 |
1 | go-ibax (servicio API) | 192.168.1.1:7079 |
2 | PostgreSQL | 127.0.0.1:5432 |
2 | Centrifugo | 192.168.1.2:8000 |
2 | go-ibax (servicio TCP) | 192.168.1.2:7078 |
2 | go-ibax (servicio API) | 192.168.1.2:7079 |
3 | PostgreSQL | 127.0.0.1:5432 |
3 | Centrifugo | 192.168.1.3:8000 |
3 | go-ibax (servicio TCP) | 192.168.1.3:7078 |
3 | go-ibax (servicio API) | 192.168.1.3:7079 |
Fase de implementación
Su propia red de blockchain debe ser implementada en varias fases:
Implementación del servidor
- Implementar el primer nodo
- Implementar otros nodos
Implementación del frontend
Configuración de la red de blockchain
- Crear la cuenta del creador
- Importar aplicaciones, roles y plantillas
- Agregar el primer nodo a la lista de nodos
Agregar otros nodos de validación
- Agregar miembros al rol de consenso
- Crear la cuenta del propietario del nodo
- Agregar el propietario del nodo como Validadores y agregar nuevos nodos de validación mediante votación
Despliegue del servidor
Despliegue del primer nodo
El primer nodo es un nodo especial, ya que debe ser utilizado para iniciar la red de blockchain. El primer bloque de la cadena de bloques es generado por el primer nodo, y todos los demás nodos descargan la cadena de bloques desde él. El propietario del primer nodo es el fundador de la plataforma.
Dependencias y configuración del entorno
sudo
Todos los comandos en Debian 9 deben ser ejecutados como un usuario no root. Sin embargo, algunos comandos del sistema requieren permisos de superusuario. Por defecto, sudo no está instalado en Debian 9, por lo que debe ser instalado primero.
- Convertirse en un superusuario.
- Actualizar su sistema.
- Instalar sudo.
- Agregar su usuario al grupo sudo.
- Después de reiniciar, los cambios tendrán efecto.
Lenguaje Go
Siga las instrucciones en la documentación oficial (opens new window) para instalar Go.
- Descargue la última versión estable de Go (> 1.10.x) desde el sitio web oficial de Golang (opens new window) o mediante la línea de comandos:
- Descomprima el paquete de instalación en
/usr/local
.
- Agregue
/usr/local/go/bin
al PATH de su variable de entorno (ubicado en /etc/profile
o $HOME/.profile
).
- Para que los cambios surtan efecto, ejecute
source
en ese archivo, por ejemplo:
- Elimine los archivos temporales:
PostgreSQL
- Instale PostgreSQL (> v.10) y psql:
Centrifugo
- Descargue Centrifugo versión 1.8.0 desde GitHub (opens new window) o mediante la línea de comandos:
- Eliminar archivos temporales:
Estructura del directorio
Para el sistema Debian 9, se recomienda almacenar todos los software utilizados por la plataforma blockchain en un directorio separado.
Aquí se utiliza el directorio /opt/backenddir
, pero puede utilizar cualquier directorio. En este caso, cambie todos los comandos y archivos de configuración en consecuencia.
- Cree un directorio para la plataforma blockchain:
- Haga que su usuario sea el propietario de ese directorio:
- Cree subdirectorios para Centrifugo, go-ibax y los datos del nodo. Todos los datos del nodo se almacenan en un directorio llamado
nodeX
, donde X
es el número del nodo. Dependiendo del nodo que se desee implementar, node1
es el nodo 1, node2
es el nodo 2, y así sucesivamente.
Crear una base de datos
- Cambiar la contraseña de usuario postgres a la contraseña predeterminada 123456. Puede establecer su propia contraseña, pero debe cambiarla en el archivo de configuración del nodo config.toml.
- Crear una base de datos de estado actual del nodo, por ejemplo, chaindb:
- Crear un archivo de configuración de Centrifugo:
Puede configurar su secreto personal, pero también debe cambiarlo en el archivo de configuración del nodo config.toml.
Instalación de go-ibax
- Descargue desde GitHub https://github.com/ibax-io/go-ibax (opens new window):
- Copie el archivo binario de go-ibax en el directorio
/opt/backenddir/go-ibax
.
Si está utilizando el espacio de trabajo de Go predeterminado (opens new window), el archivo binario se encuentra en el directorio $HOME/go/bin
:
- Cree el archivo de configuración del nodo 1:
- Generar las claves de nodo 1, incluyendo las claves públicas y privadas del nodo y las claves públicas y privadas de la cuenta:
- Generar el primer bloque:
- Inicializar la base de datos:
Iniciar el servidor del primer nodo
Para iniciar el servidor del primer nodo, debe iniciar dos servicios:
Si no ha creado estos archivos de servicios (opens new window), puede ejecutar los archivos binarios desde diferentes directorios en diferentes consolas.
- Ejecutar centrifugo:
- Ejecutar go-ibax:
Desplegar otros nodos
El despliegue de todos los demás nodos (nodo 2 y nodo 3) es similar al del primer nodo, pero hay tres diferencias:
- No es necesario generar el primer bloque. Sin embargo, debe copiarse desde el directorio de datos del nodo 1 al nodo actual;
- El nodo debe descargar bloques del nodo 1 mediante la opción de configuración
--nodesAddr
; - El nodo debe usar su propia dirección y puerto.
Nodo 2
Siga los siguientes pasos:
Dependencias y configuración del entorno
Crear una base de datos
Centrifugo
Instalar go-ibax
Crear el archivo de configuración del nodo 2:
- Copie el primer archivo de bloque a la segunda nodo, por ejemplo, puede hacerlo en el nodo 2 a través de
scp
:
- Genere las claves para el nodo 2, incluyendo las claves públicas y privadas del nodo y de la cuenta:
- Inicialice la base de datos:
- Ejecute Centrifugo:
- Ejecute go-ibax:
Como resultado, el nodo descargará el bloque desde el primer nodo. Este nodo no es un nodo de validación, por lo que no puede generar nuevos bloques. El nodo 2 se agregará a la lista de nodos de validación más adelante.
Nodo 3
Siguiendo la siguiente serie de operaciones:
Dependencias y configuración del entorno
Crear una base de datos
Centrifugo
Instalar go-ibax
Crear el archivo de configuración del nodo 3:
- Copie el primer archivo de bloque a la Node 3, por ejemplo, puede hacerlo en la Node 3 a través de
scp
:
Genere las claves para la Node 3, incluyendo las claves públicas y privadas de la Node y las claves públicas y privadas de la cuenta:
Inicialice la base de datos:
Ejecute Centrifugo:
Ejecute go-ibax:
Como resultado, la Node descargará el bloque desde la primera Node. Esta Node no es una Node de validación, por lo que no puede generar nuevos bloques. Los clientes pueden conectarse a esta Node y enviar transacciones a la red.
Implementación de Front-End
Solo se puede construir el cliente Govis utilizando el administrador de paquetes yarn
si se instala GNOMEGUI en la versión oficial de Debian 9 (Stretch) de 64 bits, disponible en el sitio web oficial (opens new window).
Requisitos previos del software
Node.js
- Descargue Node.js LTS versión 8.11 desde el sitio web oficial de Node.js (opens new window) o mediante la línea de comandos:
- Para instalar Node.js:
Yarn
- Descarga Yarn versión 1.7.0 desde el repositorio de Github de Yarn (https://github.com/yarnpkg/yarn/releases) o mediante la línea de comandos.
- Instalar Yarn:
Construir una aplicación Weaver
- Descargue la última versión de Weaver desde https://github.com/ibax-io/ibax-front (opens new window) a través de git:
- Instalar las dependencias de Weaver a través de Yarn:
Agregar la configuración de la red blockchain
- Crear un archivo settings.json que contenga información sobre la conexión de los nodos:
- Editar el archivo settings.json en cualquier editor de texto y agregar las configuraciones necesarias en el siguiente formato:
Ejemplo de archivo settings.json con tres nodos:
Construyendo la aplicación de escritorio Weaver
- Construyendo la versión de escritorio con yarn:
- El escritorio se empaquetará en formato de sufijo AppImage:
Después de la construcción, su aplicación estará lista para usar, pero su configuración de conexión no se podrá cambiar. Si necesita cambiar estas configuraciones, deberá construir una nueva versión de la aplicación.
Construir la aplicación web de Weaver
- Construir la aplicación web:
Después de la construcción, los archivos publicables se colocarán en el directorio build. Puede utilizar cualquier servidor web que elija para implementarlos, y el archivo settings.json también debe colocarse en ese directorio. Tenga en cuenta que si cambia la configuración de conexión, no es necesario volver a construir la aplicación, simplemente edite el archivo settings.json y reinicie el servidor web.
- Para fines de desarrollo o prueba, puede construir el servidor web de Yarn:
Afterwards, your Weaver Web application will be available at the following location: http://localhost:5000
.
Create the Creator Account
Crear una cuenta para el primer propietario del nodo. Esta cuenta es el creador de la nueva plataforma blockchain y tiene acceso de administrador.
Ejecutar Weaver;
Importar la cuenta existente con los siguientes datos:
- La copia de seguridad de la clave privada del propietario del nodo se encuentra en el archivo
/opt/backenddir/node1/PrivateKey
.
Después de iniciar sesión en la cuenta, seleccionar la opción Sin rol ya que aún no se han creado roles.
Importar aplicaciones, roles y plantillas
En este momento, la plataforma blockchain está en blanco. Puede configurarla agregando roles, plantillas y marcos de aplicación que admitan funciones básicas del ecosistema.
- Clonar el repositorio de la aplicación;
Navegue a Developer > Import en Weaver;
Importe las aplicaciones en este orden:
A./opt/backenddir/dapps/system.json
B./opt/backenddir/dapps/conditions.json
C./opt/backenddir/dapps/basic.json
D./opt/backenddir/dapps/lang_res.json
Navegue a Developer > Roles, y luego haga clic en Instalar roles predeterminados;
Salga del sistema a través del menú de perfil en la esquina superior derecha;
Inicie sesión en el sistema con el rol de Developer;
Navegue a Home > Votación > Lista de plantillas, y luego haga clic en Instalar plantilla predeterminada.
Agregar el primer nodo a la lista de nodos
Navegue a Developer > Parámetros de plataforma, y luego haga clic en el parámetro first_nodes;
Especifique los parámetros del primer nodo de la red de blockchain.
- public_key - La clave pública del nodo se encuentra en el archivo
/opt/backenddir/node1/NodePublicKey
.
Agregar otros nodos de honor
Agregar miembros al grupo de roles de consenso
Por defecto, solo los miembros del rol de consenso (Consensus) pueden participar en la votación necesaria para agregar otros nodos de honor. Esto significa que antes de agregar nuevos nodos de honor, se debe designar a los miembros del ecosistema para ese rol.
En esta sección, la cuenta del fundador se designa como el único miembro del rol de consenso. En un entorno de producción, este rol debe asignarse a los miembros que ejecutan la gobernanza de la plataforma.
- Navegue a Inicio > Roles, y luego haga clic en el rol de consenso (Consensus);
- Haga clic en Asignar para asignar la cuenta del fundador a ese rol.
Crear la cuenta del propietario de los nodos adicionales
Ejecutar Weaver;
Importar la cuenta existente con los siguientes datos:
- La copia de seguridad de la clave privada del propietario del nodo se encuentra en el archivo
/opt/backenddir/node2/PrivateKey
.
Iniciar sesión en la cuenta y seleccionar la opción Without role ya que aún no se ha creado ningún rol;
Navegar a Home > Información personal y hacer clic en el nombre de la información personal;
Agregar los detalles de la cuenta (nombre de la información personal, descripción, etc.).
Asignar el propietario del nodo como Validador
Acciones del nuevo propietario del nodo:
A. Navegar a Home > Validadores;
B. Hacer clic en Crear solicitud y completar el formulario de solicitud del candidato a validador;
C. Hacer clic en Enviar solicitud.
Acciones del fundador:
A. Iniciar sesión con el rol de consenso (Consensus);
B. Navegar a Home > Validadores;
C. Hacer clic en el icono de "reproducir" según la solicitud del candidato;
D. Navegar a Home > Votación y hacer clic en Actualizar estado de votación;
E. Hacer clic en el nombre de la votación y votar por el propietario del nodo.
Como resultado, la cuenta del nuevo propietario del nodo se asigna al rol de Validador y el nuevo nodo se agrega a la lista de nodos honoríficos.