Saltar al contenido principal

Guía de Inicio Rápido

En el vasto universo de las tecnologías blockchain, donde cada segundo cuenta y la complejidad técnica puede intimidar, KodeChain emerge como un faro de simplicidad y poder. Esta guía te llevará de la curiosidad inicial a tener un nodo completamente funcional en menos de 10 minutos, revelando cómo el código en main.go y los módulos subyacentes transforman comandos simples en una infraestructura blockchain robusta y segura.

Requisitos Previos

Requisitos de Hardware

  • CPU: 2+ cores - El corazón computacional que ejecutará el consenso DPoS y PBFT
  • RAM: 4 GB mínimo, 8 GB recomendado - Memoria para mantener el estado de la blockchain y procesar transacciones
  • Almacenamiento: 50 GB SSD - Espacio para la base de datos LevelDB que almacena bloques y estado
  • Red: Conexión a Internet estable (1 Mbps+) - Conectividad para el protocolo P2P y sincronización

Requisitos de Software

  • Sistema Operativo: Ubuntu 20.04+, macOS 11+, o Windows 10+ - Plataformas probadas para la estabilidad del runtime Go
  • Go: Versión 1.24.0 o superior - El lenguaje que impulsa toda la lógica de KodeChain, desde el consenso hasta la VM
  • Git: Para clonar el repositorio - Herramienta esencial para acceder al código fuente
  • Make: Para compilación (opcional) - Automatiza el proceso de build definido en los Makefiles

Instalación Rápida

1. Clonar el Repositorio

El viaje comienza con una simple clonación que trae todo el poder de KodeChain a tu máquina local:

git clone https://github.com/kodechain/kodechain-node-validator.git
cd kodechain-node-validator

Este comando descarga no solo el código fuente, sino toda la arquitectura modular que hace de KodeChain un sistema tan versátil.

2. Instalar Dependencias

Go gestiona las dependencias a través de módulos, asegurando que todas las bibliotecas criptográficas, de red y de consenso estén disponibles:

go mod download

Este paso instala dependencias críticas como las bibliotecas post-cuánticas ML-DSA-65, los paquetes de red P2P, y las utilidades de consenso.

3. Compilar el Nodo

La compilación transforma el código Go en un ejecutable nativo, optimizado para tu arquitectura:

go build -o kodechain main.go

O usando Make para una experiencia más automatizada:

make build

El resultado es un binario que encapsula toda la lógica desde main.go, pasando por los módulos de consenso en consensus/, hasta la máquina virtual en vm/.

4. Configurar el Nodo

La configuración es el puente entre el código y tu entorno específico. Crea un archivo config.json que defina cómo tu nodo interactuará con la red:

{
"node_id": "node-1",
"consensus_type": "dpos",
"network": {
"p2p_port": 30303,
"http_port": 8545,
"discovery_port": 30301
},
"bootstrap_nodes": [
"enode://[node-id]@seed1.kodechain.io:30303",
"enode://[node-id]@seed2.kodechain.io:30303"
]
}

Cada parámetro tiene un propósito específico: el node_id identifica tu nodo en la red P2P, el consensus_type determina si usarás DPoS o PBFT, y los puertos definen los puntos de comunicación.

5. Iniciar el Nodo

Con la configuración lista, un simple comando despierta toda la infraestructura blockchain:

./kodechain --config config.json

O con parámetros en línea para mayor flexibilidad:

./kodechain \
--node-id "node-1" \
--consensus dpos \
--http-port 8545 \
--p2p-port 30303

En este momento, el código en main.go inicializa la aplicación, carga la configuración, y comienza el proceso de arranque que incluye la sincronización con peers, la inicialización del consenso, y la apertura de la API REST.

Verificación de Instalación

1. Verificar Estado del Nodo

La primera verificación confirma que tu nodo no solo está ejecutándose, sino que está vivo y comunicándose con la red:

curl http://localhost:8545/api/blockchain/status

Respuesta esperada:

{
"status": "syncing",
"current_height": 1250,
"latest_hash": "0x123...",
"peer_count": 8,
"consensus_type": "dpos"
}

Esta respuesta revela el estado interno del nodo: está sincronizando con la red (el proceso que descarga y valida la blockchain completa), conoce otros 8 nodos peers, y está configurado para usar consenso DPoS.

2. Verificar Peers Conectados

Los peers son los otros nodos con los que tu instancia se comunica para mantener la red distribuida:

curl http://localhost:8545/api/network/peers

Esta llamada revela la tabla de enrutamiento Kademlia que mantiene el módulo P2P, mostrando cómo tu nodo se integra en la red peer-to-peer.

3. Verificar Sincronización

La sincronización es el proceso crítico donde tu nodo descarga toda la historia de la blockchain:

curl http://localhost:8545/api/blockchain/latest

Este endpoint retorna el último bloque conocido, permitiéndote verificar que la sincronización progresa correctamente y que tu nodo tiene acceso a la información más reciente de la cadena.

Crear tu Primera Wallet

1. Generar Claves

La seguridad post-cuántica comienza con la generación de claves resistente a ataques cuánticos:

cd handlers
make generate

Este comando ejecuta el código en handlers/validator_key_generator.go, que utiliza algoritmos ML-DSA-65 para crear claves que resistirán tanto ataques clásicos como cuánticos. Generará:

  • keystore-[timestamp].json - Tu clave privada encriptada, protegida por criptografía post-cuántica
  • deposit_data-[timestamp].json - Los datos necesarios para staking y validación
  • withdrawal_credentials.json - Las credenciales para retirar fondos de staking

2. Obtener tu Address

Tu dirección es la identidad pública derivada de tu clave privada:

cat keystore-*.json | jq -r '.address'

Esta dirección, con el prefijo 0x, es lo que usarás para recibir transacciones y participar en el staking.

3. Solicitar Tokens de Testnet

Para experimentar sin riesgos, únete a la comunidad KodeChain en Discord y solicita tokens de prueba:

!faucet [tu-address]

El faucet de testnet te proporcionará KDC gratuitos para experimentar con transacciones, contratos inteligentes y staking sin comprometer fondos reales.

Realizar tu Primera Transacción

1. Crear Transacción

Tu primera transacción marca el momento en que pasas de observador a participante activo en la red KodeChain:

curl -X POST http://localhost:8545/api/transactions/send \
-H "Content-Type: application/json" \
-d '{
"from": "0xYourAddress",
"to": "0xRecipientAddress",
"amount": "1000000000000000000",
"privateKey": "your-private-key"
}'

Esta llamada HTTP llega al endpoint definido en api/endpoints/transactions.go, que valida la transacción, la firma con tu clave privada usando ML-DSA-65, y la añade al mempool para ser incluida en el siguiente bloque por el consenso DPoS.

2. Verificar Transacción

Una vez enviada, puedes rastrear el viaje de tu transacción a través de la red:

curl http://localhost:8545/api/transactions/[tx-hash]

Este endpoint consulta la base de datos LevelDB para encontrar tu transacción, mostrando su estado: pendiente en el mempool, confirmada en un bloque, o fallida por algún motivo.

Explorar la Blockchain

Ver Últimos Bloques

curl http://localhost:8545/api/blockchain/blocks?limit=10

Ver Bloque Específico

curl http://localhost:8545/api/blockchain/blocks/100

Ver Transacciones Pendientes

curl http://localhost:8545/api/transactions/pending

Monitoreo Básico

Ver Logs del Nodo

tail -f kodechain.log

Estadísticas de Red

curl http://localhost:8545/api/network/status

Estado de Mempool

curl http://localhost:8545/api/mempool/stats

Problemas Comunes

El nodo no sincroniza

Solución:

  1. Verificar conexión a Internet
  2. Verificar que los puertos estén abiertos
  3. Verificar nodos bootstrap en configuración
# Verificar conectividad
curl http://localhost:8545/api/network/peers

# Reiniciar nodo
./kodechain --config config.json

No puedo conectarme a peers

Solución:

  1. Verificar configuración de firewall
  2. Verificar que puertos estén abiertos
  3. Intentar con UPnP habilitado
# Verificar puertos abiertos
netstat -tuln | grep -E '30303|8545'

# Habilitar UPnP
./kodechain --config config.json --upnp

Errores de memoria

Solución:

  1. Aumentar memoria asignada
  2. Limpiar blockchain antigua
  3. Reducir cache size
# Limpiar blockchain
rm -rf ./data/blockchain

# Reiniciar con menos cache
./kodechain --config config.json --cache 512