Instalaci贸n de Nodos

Configuraci贸n de un Nodo Productor#

En EOSIO, un nodo productor y otros tipos de nodos se definen y diferencian habilitando los Plugins de Nodeos espec铆ficos. Por ejemplo, para definir un nodo no productor, es necesario exceptuar producer_plugin. Esta posibilidad de personalizaci贸n permite exponer uno o varios servicios de forma p煤blica o privada habilitando uno o varios de esos plugins.

Si estas tratando de configurar un "Full Node", puede que te resulte 煤til este enlace.

Procedamos a configurar un Nodo Productor utilizando la tecnolog铆a EOSIO. Tambi茅n puede encontrar m谩s informaci贸n 煤til sobre este tema aqu铆.

Instale EOSIO desde Binarios Precompilados#

Descarga la 煤ltima versi贸n de EOSIO para tu sistema operativo desde: Github.

Por ejemplo, para ubuntu 18.04 necesitas descargar eosio_2.0.6-1-ubuntu-18.04_amd64.deb.

Puedes usar apt para instalarlo:

$ wget https://github.com/EOSIO/eos/releases/download/v2.1.0-rc2/eosio_2.1.0-rc2-ubuntu-18.04_amd64.deb
$ sudo dpkg -i ./eosio_2.1.0-rc2-ubuntu-18.04_amd64.deb

El comando anterior descarga todas las dependencias e instala EOSIO en /usr/opt/eosio.

Configuraci贸n del Nodo#

Una vez instalados los binarios precompilados siguiendo los comandos anteriores, vamos a crear un directorio llamado testproducer y los archivos config.ini, genesis.json y start.sh en el:

$ mkdir testproducer
$ touch ~/testproducer/config.ini
$ touch ~/testproducer/genesis.json
$ touch ~/testproducer/start.sh

Ahora, escribamos algo de c贸digo en esos archivos:

config.ini#

agent-name = testproducer
# PLUGINS
# Necesario para procesar y agregar datos de la cadena en un nodo EOSIO.
plugin = eosio::chain_plugin
# Expone la funcionalidad a la interfaz RPC API
plugin = eosio::chain_api_plugin
# Necesario para habilitar cualquier funcionalidad de la API RPC proporcionada por una instancia de nodeos o keosd.
plugin = eosio::http_plugin
# Carga la funcionalidad necesaria para que un nodo produzca bloques.
plugin = eosio::producer_plugin
# Expone una serie de endpoints para el producer_plugin a la interfaz RPC API.
plugin = eosio::producer_api_plugin
# CHAIN
chain-state-db-size-mb = 16384
reversible-blocks-db-size-mb = 512
contracts-console = true
abi-serializer-max-time-ms = 2000
wasm-runtime = wabt
enable-stale-production = false
pause-on-startup = false
max-irreversible-block-age = -1
txn-reference-block-lag = 0
# BLOCK PRODUCER
producer-name = testproducer
# PEERING NETWORK
p2p-server-address = TESTPRODUCER_IP:9876 # CAMBIAR ESTO SEGUN IP DEL NODO
p2p-listen-endpoint = 0.0.0.0:9876
p2p-max-nodes-per-host = 150
max-clients = 150
connection-cleanup-period = 30
sync-fetch-span = 2000
allowed-connection = any
p2p-peer-address = SEED_NODE_IP:SEED_NODE_PORT
p2p-peer-address = PEER1_NODE_IP:PEER1_NODE_PORT
p2p-peer-address = PEER2_NODE_IP:PEER2_NODE_PORT
p2p-peer-address = API_NODE_IP:API_NODE_PORT
# Puedes continuar a帽adiendo nods peer aqu铆

Ten en cuenta que arriba hay elementos que deben ser reemplazados con sus valores correspondientes.

genesis.json#

{
"initial_timestamp": "2018-12-05T08:55:11.000",
"initial_key": "EOS_PUB_DEV_KEY",
"initial_configuration": {
"max_block_net_usage": 1048576,
"target_block_net_usage_pct": 1000,
"max_transaction_net_usage": 524288,
"base_per_transaction_net_usage": 12,
"net_usage_leeway": 500,
"context_free_discount_net_usage_num": 20,
"context_free_discount_net_usage_den": 100,
"max_block_cpu_usage": 100000,
"target_block_cpu_usage_pct": 500,
"max_transaction_cpu_usage": 50000,
"min_transaction_cpu_usage": 100,
"max_transaction_lifetime": 3600,
"deferred_trx_expiration_window": 600,
"max_transaction_delay": 3888000,
"max_inline_action_size": 4096,
"max_inline_action_depth": 4,
"max_authority_depth": 6
},
"initial_chain_id": "0000000000000000000000000000000000000000000000000000000000000000"
}

Sustituye EOS_PUB_DEV_KEY por su valor correspondiente. Para ver c贸mo generar un par de claves, consulta nuestra gu铆a sobre este tema.

start.sh#

#!/usr/bin/env bash
DATA_DIR="blockchain"
CONFIG_DIR="./blockchain/config"
EOS_PUB_KEY=EOS_PUB_KEY #REEMPLAZA ESTO CON SU VALOR CORRESPONDIENTE
EOS_PRIV_KEY=EOS_PRIV_KEY #REEMPLAZA ESTO CON SU VALOR CORRESPONDIENTE
echo "Starting Producer Node...";
set -e;
ulimit -n 65535
ulimit -s 64000
mkdir -p $CONFIG_DIR
cp ./config.ini $CONFIG_DIR/config.ini
pid=0;
nodeos=$"nodeos \
--config-dir $CONFIG_DIR \
--data-dir $DATA_DIR \
--blocks-dir $DATA_DIR/blocks \
--signature-provider $EOS_PUB_KEY=KEY:$EOS_PRIV_KEY" ;
term_handler() {
if [ $pid -ne 0 ]; then
kill -SIGTERM "$pid";
wait "$pid";
fi
exit 0;
}
start_nodeos() {
$nodeos &
sleep 10;
if [ -z "$(pidof nodeos)" ]; then
$nodeos --hard-replay-blockchain &
fi
}
start_fresh_nodeos() {
echo 'Starting new chain from genesis JSON'
$nodeos --delete-all-blocks --genesis-json genesis.json &
}
trap 'echo "Shutdown of EOSIO service...";kill ${!}; term_handler' 2 15;
if [ ! -d $DATA_DIR/blocks ]; then
start_fresh_nodeos &
elif [ -d $DATA_DIR/blocks ]; then
start_nodeos &
fi
pid="$(pidof nodeos)"
while true
do
tail -f /dev/null & wait ${!}
done

Tal vez necesites asignar permisos de ejecuci贸n a start.sh, para ello ejecuta $ chmod 755 start.sh.

Ejecute el script start.sh

$ ./start.sh

Para una informaci贸n m谩s detallada sobre el comando anterior, por favor ve aqu铆.

Crear la cuenta testproducer#

En una red blockchain basada en EOSIO, la creaci贸n de cuentas conlleva el consumo de RAM, por lo que es necesario pagar por las nuevas cuentas. En el siguiente comando sustituye CREATOR por una cuenta existente y con recursos suficientes para ejecutar la operaci贸n.

$ cleos -u http://URL_NODO_DESTINO create account CREATOR testproducer EOS_PUB_KEY

Dependiendo de la red para la que est茅s configurando el nodo, puedes crear una cuenta con los siguientes enlaces:

Registrar testproducer como un Nodo Productor#

$ cleos -u http://URL_NODO_DESTINO system regproducer testproducer EOS_PUB_KEY "www.testproducer.testlink" 0

Para una informaci贸n m谩s detallada sobre el comando anterior, por favor ve aqu铆.

Ahora, el nodo est谩 configurado. Si configuraste este nodo para operar en una Red Privada, necesitas asegurarte de que tu nodo est谩 incluido en la de productores. Consulta nuestra gu铆a para ver m谩s informaci贸n sobre esto.

Por otro lado, si quieres producir bloques en una red de prueba, los poseedores de tokens tienen que votar por ti para estar entre los 21 principales productores de bloques.

Desinstalar eosio#

Para desinstalar los binarios construidos/instalados de EOSIO y sus dependencias, ejecuta:

sudo dpkg -r eosio

Iniciar un Nodo Usando un Snapshot#

En algunas situaciones, es conveniente iniciar un nodo utilizando un snapshot, si se desea crear un estado de la red v谩lido desde el que iniciar. Se recomienda borrar todos los datos existentes en el directorio: ~./local/share/eosio/nodeos/data/*.

Supongamos que vamos a utilizar un snapshot de Jungle Testnet. Procede a ejecutar el siguiente comando:

$ wget https://backup.cryptolions.io/Jungle/snapshots/latest-snapshot.bin -P ~./local/share/eosio/nodeos/data/snapshots/

Ahora que el snapshot se ha descargado, puedes utilizar el mismo script start.sh para iniciar el nodo, s贸lo tienes que eliminar la bandera --genesis-json en el script, por lo que la funci贸n start_fresh_nodes en el archivo se ver谩 as铆:

start_fresh_nodeos() {
echo 'Starting new chain from genesis JSON'
$nodeos --delete-all-blocks &
}

Para obtener m谩s informaci贸n, ve aqu铆. Adem谩s, ve aqu铆 para ver todas las entradas de documentos disponibles para "Snapshot" en el portal developer.eos.io.

Nodos de Redes de Prueba#

Configurar un Nodo en Jungle Testnet#

Si quieres configurar un nodo en Jungle Testnet, puedes ir a EOS Jungle Testnet - Node Manual Installation en Github. Tambi茅n puedes usar Testnet Auto-Installer script. Estas herramientas fueron creadas por cryptolions.io

Configurar un Nodo en Kylin Testnet#

Para configurar un nodo en el Kylin Testnet, por favor ve al repositorio CryptoKylin-Testnet y sigue las instrucciones all铆.

Referencias#

Last updated on by JustinCast