How to create a private Ethereum network?

Crea tu Red Privada de Ethereum: Guía Completa

23/08/2025

Valoración: 4.61 (11107 votos)

Adentrarse en el mundo del desarrollo de blockchain puede parecer una tarea abrumadora, especialmente por los costos asociados a las transacciones en la red principal de Ethereum. Sin embargo, existe una solución perfecta para aprender, experimentar y desarrollar aplicaciones descentralizadas (dApps) sin gastar un solo centavo: crear tu propia red privada de Ethereum. Una red privada es un entorno aislado y controlado que funciona exactamente igual que la red principal, pero donde tú tienes el control total sobre los participantes, la generación de bloques y la distribución de Ether. En esta guía detallada, te llevaremos paso a paso a través del proceso de configuración de tu propia blockchain privada utilizando Geth, el cliente oficial de Ethereum, en un sistema Ubuntu.

How to create a private Ethereum network?
STEP - 3 : CREATE A PRIVATE ETHEREUM NETWORK , Create a folder named, private_ethereum_setup : ... , Create 2 subfolders named node1 and node2 in the folder private_ethereum_setup. ... , Create 2 accounts in the folder corresponding to node1 and node2. ... , Initialize the nodes with the genesis file.
Índice de contenido

Preparando el Terreno: Instalación de Geth

Antes de poder construir nuestra red, necesitamos la herramienta fundamental: Geth (Go Ethereum). Es crucial asegurarse de tener una instalación limpia para evitar conflictos. Si tienes una versión anterior, lo mejor es empezar de cero.

Paso 1: Desinstalar Versiones Anteriores de Geth (Opcional)

Si ya tienes Geth instalado, sigue estos comandos para una eliminación completa y segura:

sudo apt remove --purge -y ethereum sudo apt autoremove -y sudo apt clean

Verifica que se haya desinstalado correctamente. Este comando debería dar un error de "comando no encontrado":

geth version

Paso 2: Instalar Geth v1.12 en Ubuntu

Para este tutorial, utilizaremos una versión específica de Geth para garantizar la compatibilidad de todos los pasos. Nos moveremos al directorio `/usr/local/bin` para realizar la instalación.

1. Navega al directorio deseado:

cd /usr/local/bin

2. Descarga el archivo binario de Geth v1.12.0:

sudo wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.12.0-e501b3b0.tar.gz

3. Extrae el contenido del archivo descargado:

sudo tar -xvf geth-linux-amd64-1.12.0-e501b3b0.tar.gz

4. Mueve el ejecutable de Geth a una ubicación accesible en tu PATH del sistema:

sudo mv geth-linux-amd64-1.12.0-e501b3b0/geth /usr/local/bin/geth

5. Limpia los archivos de instalación que ya no son necesarios:

sudo rm -rf geth-linux-amd64-1.12.0-e501b3b0.tar.gz geth-linux-amd64-1.12.0-e501b3b0

6. Finalmente, verifica que la instalación fue exitosa. Deberías ver la información de la versión de Geth:

geth version

Construyendo la Arquitectura de la Red

Con Geth instalado, es hora de definir la estructura de nuestra red. Para este ejemplo, crearemos una red simple con dos nodos.

Paso 3: Creación de la Estructura de Directorios y Cuentas

1. Crea una carpeta principal para todo el proyecto:

mkdir private_ethereum_setup cd private_ethereum_setup

2. Dentro, crea una carpeta para cada nodo:

mkdir node1 node2

3. Ahora, generaremos una cuenta de Ethereum (un par de claves pública y privada) para cada nodo. Geth almacenará los datos de cada nodo en su respectivo directorio (`--datadir`).

Para el Nodo 1:

geth --datadir "node1" account new

Para el Nodo 2:

geth --datadir "node2" account new

Durante este proceso, se te pedirá que crees una contraseña (passphrase) para cada cuenta. ¡Es de vital importancia que guardes estas contraseñas y las direcciones públicas que se generan! Para facilitar el proceso más adelante, crea un archivo `password.txt` dentro de cada carpeta de nodo (`node1/password.txt` y `node2/password.txt`) y escribe la contraseña correspondiente en él.

El Bloque Génesis: El Origen de tu Blockchain

Toda blockchain comienza con un primer bloque, conocido como el bloque génesis. Este bloque se define en un archivo JSON y contiene la configuración inicial de la red, como el nivel de dificultad, el límite de gas y, crucialmente, las cuentas que tendrán un saldo inicial de Ether.

Paso 4: Crear y Configurar el Archivo `genesis.json`

Dentro de tu carpeta `private_ethereum_setup`, crea un archivo llamado `genesis.json` con el siguiente contenido. Deberás modificarlo con tus propias direcciones.

{ "config": { "chainId": 12345, "homesteadBlock": 0, "eip150Block": 0, "eip155Block": 0, "eip158Block": 0, "byzantiumBlock": 0, "constantinopleBlock": 0, "petersburgBlock": 0, "istanbulBlock": 0, "clique": { "period": 5, "epoch": 30000 } }, "difficulty": "1", "gasLimit": "8000000", "extradata": "0x0000000000000000000000000000000000000000000000000000000000000000[DIRECCION_NODO1_SIN_0x]0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "alloc": { "[DIRECCION_NODO1_CON_0x]": { "balance": "300000000000000000000" }, "[DIRECCION_NODO2_CON_0x]": { "balance": "400000000000000000000" } } }

Modificaciones importantes:

  • `extradata`: Aquí debes insertar la dirección pública de tu Nodo 1 (que actuará como minero o sellador), pero eliminando el `0x` inicial.
  • `alloc`: En esta sección, asignas un saldo inicial a tus cuentas. Reemplaza `[DIRECCION_NODO1_CON_0x]` y `[DIRECCION_NODO2_CON_0x]` con las direcciones públicas completas (incluyendo el `0x`) que generaste en el paso anterior.

Paso 5: Inicializar los Nodos

Con el archivo génesis listo, cada nodo debe ser inicializado para que reconozca esta configuración como el punto de partida de su blockchain.

geth init --datadir node1 genesis.json geth init --datadir node2 genesis.json

Conectando la Red: Bootnode y Comunicación Peer-to-Peer

Para que nuestros nodos se encuentren y se comuniquen, necesitamos un punto de encuentro. Este rol lo cumple el bootnode.

Paso 6: Configurar el Bootnode

1. Instala la herramienta `bootnode`:

sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update sudo apt-get install bootnode

2. Genera una clave para el bootnode. Esto creará un archivo `boot.key`.

bootnode -genkey boot.key

Paso 7: Iniciar la Red

Este es el momento de la verdad. Necesitarás tres terminales abiertas simultáneamente, todas ubicadas en la carpeta `private_ethereum_setup`.

Terminal 1: Iniciar el Bootnode

Ejecuta el bootnode usando la clave que acabas de generar. Este nodo se quedará a la espera de conexiones.

bootnode -nodekey boot.key -verbosity 9 -addr :30305

Copia la dirección `enode` que aparece en la salida. La necesitarás para los siguientes pasos.

Terminal 2: Iniciar el Nodo 1 (Minero)

Este comando iniciará el primer nodo, lo desbloqueará para firmar transacciones y activará la minería. Reemplaza la dirección `enode` y las direcciones públicas con las tuyas.

geth --datadir node1 --port 30306 --bootnodes [TU_DIRECCION_ENODE] --networkid 123454321 --unlock [DIRECCION_NODO1_CON_0x] --password node1/password.txt --authrpc.port 8551 --miner.etherbase [DIRECCION_NODO1_CON_0x] --mine

Terminal 3: Iniciar el Nodo 2 (Par)

Este comando inicia el segundo nodo y lo conecta a la red a través del bootnode. No está configurado para minar, solo para participar y sincronizar.

geth --datadir node2 --port 30307 --bootnodes [TU_DIRECCION_ENODE] --networkid 123454321 --unlock [DIRECCION_NODO2_CON_0x] --password node2/password.txt --authrpc.port 8552

Si todo ha ido bien, verás en la terminal del Nodo 1 cómo se empiezan a minar nuevos bloques, y en la terminal del Nodo 2 verás cómo se importan esos bloques. ¡Felicidades, tu red privada de Ethereum está viva!

Explorando tu Blockchain Privada

Ahora que la red está funcionando, podemos interactuar con ella usando la consola JavaScript de Geth.

Paso 8: Conectarse a un Nodo

Abre una cuarta terminal y conéctate a la instancia en ejecución del Nodo 1:

geth attach node1/geth.ipc

Desde esta consola, puedes ejecutar varios comandos para explorar y operar en tu red.

Comandos Útiles en la Consola Geth

  • Verificar conexión de pares: `net.peerCount` (debería devolver `1`, ya que el Nodo 2 está conectado).
  • Listar cuentas del nodo: `eth.accounts`
  • Consultar el número de bloque actual: `eth.blockNumber`
  • Consultar el saldo de una cuenta (en Wei): `eth.getBalance(eth.accounts[0])`
  • Consultar el saldo en Ether: `web3.fromWei(eth.getBalance(eth.accounts[0]), "ether")`
  • Enviar una transacción: Para enviar 10 Ether desde el Nodo 1 al Nodo 2, ejecuta (reemplaza las direcciones):
    eth.sendTransaction({from:"[DIRECCION_NODO1]", to:"[DIRECCION_NODO2]", value: web3.toWei(10, "ether")})
  • Ver detalles de un bloque: `eth.getBlock(eth.blockNumber)`
  • Verificar el pool de transacciones pendientes: `txpool.content`

Al realizar una transacción, verás cómo el minero (Nodo 1) la procesa y la incluye en un nuevo bloque. Posteriormente, puedes verificar los saldos de ambas cuentas para confirmar que la transferencia se ha realizado con éxito.

Preguntas Frecuentes (FAQ)

¿Por qué necesito una red privada de Ethereum?
Es un entorno ideal para desarrolladores y entusiastas. Permite probar contratos inteligentes, experimentar con la tecnología blockchain y construir aplicaciones descentralizadas sin incurrir en los costos de gas de la red principal (Mainnet) o las redes de prueba públicas (Testnets).
¿Qué es exactamente el archivo `genesis.json`?
Es el "bloque cero" o el punto de partida de tu blockchain. Define las reglas fundamentales de la red, como el ID de la cadena, la dificultad inicial de la minería y qué cuentas comienzan con un saldo de Ether.
¿Puedo añadir más de dos nodos a mi red?
¡Por supuesto! Puedes añadir tantos nodos como desees. Simplemente repite el proceso de creación de cuenta e inicialización para un `node3`, `node4`, etc., y luego inícialos apuntando al mismo `bootnode` para que puedan descubrir a los otros pares en la red.
¿Qué ocurre si olvido la contraseña de una cuenta?
La cuenta y los fondos que contiene se vuelven irrecuperables. No hay un mecanismo de "recuperación de contraseña" en Ethereum. Por eso es absolutamente crítico guardar las contraseñas en un lugar seguro.

Si quieres conocer otros artículos parecidos a Crea tu Red Privada de Ethereum: Guía Completa puedes visitar la categoría Blockchain.

Subir