Bloquelon Documentación Oficial

Bloquelon es una blockchain híbrida PoW + PoS, modular y de alto rendimiento, pensada para aplicaciones financieras, empresariales y educativas en LATAM y el mundo.

Whitepaper Red en línea

Introducción

Bloquelon combina prueba de trabajo (PoW) para la entropía inicial y prueba de participación (PoS) para finalidad rápida, con un engine de consenso sencillo de integrar. El objetivo es ofrecer un stack comprensible, con RPC compatible y herramientas de despliegue simples.

Objetivos

  • Facilidad de adopción
  • Seguridad práctica
  • Escalabilidad gradual

Componentes

  • Core: Blockchain, Block, ChainStorage
  • Consenso: ConsensusEngine, ValidatorSet
  • P2P: p2p.php, PeerManager, NodeClient

Estado

  • Testnet estable
  • Licencias privadas para nodos
  • Documentación viva

Arquitectura

La arquitectura se organiza en capas, separando responsabilidades y permitiendo reemplazos/optimizaciones sin romper contratos internos.

Diagrama de arquitectura

Instalación

Requisitos

  • PHP 8.1 con curl y json
  • Extensión openssl (firmas y TLS)
  • Acceso a CLI para ejecutar php

Estructura recomendada

bloquelon/
 core/
   Blockchain.php
   Block.php
   ChainStorage.php
 consensus/
   ConsensusEngine.php
   ValidatorSet.php
   AttestationManager.php
 lib/
   PeerManager.php
   NodeClient.php
 data/
   peers.json
 rpcserver.php
 p2p.php
 config.php

Configuración

Ejemplo de config.php optimizado para testnet PoS:

<?php
const BLOQUELON_CONFIG = [
  'network_id' => 'bloquelon-testnet',
  'block_time' => 5,
  'gas_limit'  => 20_000_000,
  'auto_scaling' => true,
  'p2p_token' => 'bloquelon-network-key',
  'self_url'  => 'http://127.0.0.1:8080',
  'authorized_peers' => [
    'http://127.0.0.1:8080'
  ]
];
Nota: mantén p2p_token y cualquier clave fuera del repositorio si vas a publicar el código.

Ejecutar un Nodo

Desarrollo local

php -S 127.0.0.1:8080 -t ./

Usa 127.0.0.1 para evitar exposición involuntaria.

Prueba entre 2 nodos

// Nodo A (local): aade IP pública del Nodo B en data/peers.json
php -S 0.0.0.0:8080 -t ./

// Nodo B (remoto): aade IP pública del Nodo A
php -S 0.0.0.0:8080 -t ./

Al forjar un bloque, el nodo llamará a NodeClient::broadcast() p2p.php del peer.

RPC API

Bloquelon expone un RPC JSON sencillo. Todas las solicitudes usan Content-Type: application/json y siguen el estándar JSONRPC 2.0 cuando aplica.

MétodoParámetrosRespuesta
getChainInfo{ networkId, currentHeight, peers }
getBlockByHash{ hash }{ index, hash, parentHash, txs, timestamp }
getLatestBlockBloque completo
sendRawTransaction{ rawTx }{ txHash }
minePending{ newBlockHash }
curl -s http://localhost:8080/rpcserver.php \
 -H "Content-Type: application/json" \
 -d '{
   "jsonrpc":"2.0",
   "method":"getChainInfo",
   "params":{},
   "id":1
 }'

Protocolo P2P

La mensajería P2P se realiza vía POST /p2p.php con el token compartido. Mensajes soportados:

typepayloadacción
HELLO{ sender }Registra el peer si está autorizado.
NEW_BLOCK{ block }Valida y aade el bloque a la cadena.
PINGRespuesta 200 OK.
// Ejemplo de envío desde NodeClient
POST /p2p.php
{
  "type":"NEW_BLOCK",
  "sender":"http://127.0.0.1:8080",
  "token":"bloquelon-network-key",
  "data": { "block": { /* ... */ } }
}
Sugerencia: implementa firmas por nodo (clave pública) si el entorno lo requiere.

Seguridad

  • Limita el RPC con lista blanca de IPs o capa Nginx.
  • Usa HTTPS (Lets Encrypt) o túneles SSH para pruebas remotas.
  • Token P2P obligatorio y validación de bloques exhaustiva.
  • Evita exponer php -S en Internet sin controles.
  • Registra y expulsa peers con comportamiento inválido.

Licencias & Planes

Community

  • Testnet
  • Sin SLA
  • Uso educativo

Pro

  • Nodos licenciados
  • Soporte prioritario
  • Herramientas de monitoreo

Enterprise

  • Red permissionada
  • Integración onprem
  • Consultoría y SLAs

Operación & Monitoreo

Recomendado desplegar detrás de Nginx + PHPFPM. Ejemplo mínimo:

server {
  listen 443 ssl;
  server_name rpc.bloquelon.io;

  ssl_certificate /etc/letsencrypt/live/rpc.bloquelon.io/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/rpc.bloquelon.io/privkey.pem;

  location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

Monitorea logs en data/p2p.log y data/peers.log. Configura métricas (Prometheus/JSON) según tus necesidades.

Contribuir

  1. Abre un issue con propuesta clara.
  2. Haz fork y crea rama feature/....
  3. Incluye pruebas o ejemplos reproducibles.
  4. Cumple guía de estilo y firmas de commits si aplica.

FAQ

Puedo correr Bloquelon en hosting compartido?

Sí para demos (solo HTTP), pero para producción usa VPS con Nginx + PHPFPM y HTTPS.

Cómo conecto un segundo nodo?

Aade su URL en data/peers.json, comparte el token P2P y asegura reachability del puerto.

Existe explorador de bloques?

Se sugiere un subdominio scan.bloquelon.io donde publicar bloquelonscan.php y vistas relacionadas.

Changelog

  • 0.9.0 Documentación inicial, API RPC básica, P2P con token, guía de despliegue.
  • 0.8.x Refactor de consenso y almacenamiento.