Una implementación completa de blockchain para Windows 11 usando Go (Golang) con consenso, memoria compartida, almacenamiento de 1GB y ejecución de programas en la blockchain.
- Blockchain Completa: Implementación completa con bloques, transacciones y Proof of Work
- Consenso Proof of Work: Mecanismo de consenso robusto con dificultad ajustable
- Gestión de Memoria Compartida: Gestión inteligente de RAM con límites configurables
- Almacenamiento 1GB: Sistema de almacenamiento persistente con límite de 1GB
- Smart Contracts: Motor de ejecución de contratos inteligentes con máquina virtual
- Red P2P: Sistema de red distribuida para nodos de blockchain
- API REST: Servidor API completo para interacción con la blockchain
- Interfaz Web: Dashboard web para gestión y monitoreo
- Windows 11
- Go 1.19 o superior
- Puerto 8080 y 8081 disponibles (configurables)
# Si tienes los archivos en tu directorio actual:
cd c:\Users\victor.Batou\Desktop\blockchaingo mod tidygo build -o blockchain.exe# Iniciar con configuración por defecto
./blockchain.exe
# O con parámetros personalizados
./blockchain.exe -api-port=8080 -p2p-port=8081 -auto-mine=true -miner=mi_direccionAbrir navegador web en: http://localhost:8080
# Verificar estado del sistema
curl http://localhost:8080/api/health
# Ver estadísticas de la blockchain
curl http://localhost:8080/api/status
# Crear una transacción
curl -X POST http://localhost:8080/api/transactions \
-H "Content-Type: application/json" \
-d '{"from":"alice","to":"bob","amount":10}'
# Minar un bloque
curl -X POST http://localhost:8080/api/blocks/mine \
-H "Content-Type: application/json" \
-d '{"miner_address":"miner1"}'-node-id string # Identificador del nodo (por defecto: generado automáticamente)
-api-port int # Puerto del servidor API (por defecto: 8080)
-p2p-port int # Puerto de red P2P (por defecto: 8081)
-p2p-address string # Dirección P2P (por defecto: 127.0.0.1)
-storage string # Directorio de almacenamiento (por defecto: ./blockchain_data)
-max-ram int # Máximo RAM en MB (por defecto: 512)
-max-storage float # Máximo almacenamiento en GB (por defecto: 1.0)
-miner string # Dirección del minero (por defecto: miner_address_default)
-auto-mine # Habilitar minería automática (por defecto: false)
-bootstrap string # Peer de arranque para conectarDespliega y ejecuta contratos inteligentes:
# Desplegar contrato
curl -X POST http://localhost:8080/api/contracts \
-H "Content-Type: application/json" \
-d '{
"owner": "developer1",
"code": "FUNCTION increment\nSET counter 1\nSTORE counter\nRETURN\nEND",
"gas_limit": 100000
}'
# Ejecutar función del contrato
curl -X POST http://localhost:8080/api/contracts/{address}/execute \
-H "Content-Type: application/json" \
-d '{
"function": "increment",
"parameters": {},
"gas_limit": 50000
}'Conectar múltiples nodos:
# Nodo 1 (puerto 8080/8081)
./blockchain.exe -node-id=node1 -api-port=8080 -p2p-port=8081
# Nodo 2 (puerto 8082/8083)
./blockchain.exe -node-id=node2 -api-port=8082 -p2p-port=8083
# Conectar nodos
curl -X POST http://localhost:8080/api/network/peers \
-H "Content-Type: application/json" \
-d '{
"node_id": "node2",
"address": "127.0.0.1",
"port": 8083
}'Monitorear recursos:
# Estadísticas de memoria
curl http://localhost:8080/api/memory/stats
# Estadísticas de almacenamiento
curl http://localhost:8080/api/storage/stats
# Almacenar datos personalizados
curl -X PUT http://localhost:8080/api/storage/data/mi_clave \
-H "Content-Type: application/json" \
-d '"mis datos"'GET /api/blockchain- Obtener blockchain completaGET /api/blockchain/stats- Estadísticas de blockchainGET /api/blocks- Obtener bloques (paginados)GET /api/blocks/{index}- Obtener bloque específicoPOST /api/blocks/mine- Minar bloque
POST /api/transactions- Crear transacciónGET /api/transactions/pending- Transacciones pendientesGET /api/transactions/{id}- Obtener transacción
GET /api/balances/{address}- Balance de direcciónGET /api/balances- Todos los balances
POST /api/contracts- Desplegar contratoGET /api/contracts- Listar contratosGET /api/contracts/{address}- Obtener contratoPOST /api/contracts/{address}/execute- Ejecutar funciónGET /api/contracts/{address}/storage- Storage del contrato
GET /api/health- Estado del sistemaGET /api/status- Estadísticas completasGET /api/memory/stats- Estadísticas de memoriaGET /api/storage/stats- Estadísticas de almacenamientoGET /api/network/stats- Estadísticas de red
# 1. Desplegar contrato de votación
curl -X POST http://localhost:8080/api/contracts \
-d '{
"owner": "admin",
"code": "FUNCTION vote\nGET candidate\nPUSH 1\nADD\nSTORE candidate\nEMIT VoteCast\nRETURN\nEND",
"gas_limit": 200000
}'
# 2. Votar por candidato
curl -X POST http://localhost:8080/api/contracts/{address}/execute \
-d '{
"function": "vote",
"parameters": {"candidate": "alice"},
"gas_limit": 50000
}'# 1. Desplegar token
curl -X POST http://localhost:8080/api/contracts \
-d '{
"owner": "token_creator",
"code": "FUNCTION transfer\nGET from\nGET amount\nSUB\nSTORE from\nGET to\nGET amount\nADD\nSTORE to\nEMIT Transfer\nRETURN\nEND",
"gas_limit": 300000
}'
# 2. Transferir tokens
curl -X POST http://localhost:8080/api/contracts/{address}/execute \
-d '{
"function": "transfer",
"parameters": {"from": "alice", "to": "bob", "amount": 100},
"gas_limit": 75000
}'El sistema genera logs detallados en la consola:
📦 Initializing storage manager (1.0 GB limit)...
🧠 Initializing shared memory pool (512 MB limit)...
⛓️ Initializing blockchain...
🎯 Created new blockchain with genesis block
🤖 Initializing smart contract virtual machine...
🌐 Initializing P2P network (Port: 8081)...
🚀 Initializing API server (Port: 8080)...
# Estado general
curl http://localhost:8080/api/status | jq
# Solo blockchain
curl http://localhost:8080/api/blockchain/stats | jq
# Solo memoria
curl http://localhost:8080/api/memory/stats | jq# Cambiar puertos
./blockchain.exe -api-port=9080 -p2p-port=9081# Reducir límite de RAM
./blockchain.exe -max-ram=256# Cambiar directorio de datos
./blockchain.exe -storage="D:\blockchain_data"blockchain/
├── main.go # Punto de entrada principal
├── blockchain.go # Estructuras core de blockchain
├── memory.go # Gestión de memoria compartida
├── storage.go # Sistema de almacenamiento 1GB
├── contracts.go # Motor de smart contracts
├── network.go # Red P2P distribuida
├── api.go # Servidor API REST
├── go.mod # Dependencias Go
├── go.sum # Checksums de dependencias
├── web/ # Interfaz web
│ └── index.html # Dashboard web
└── blockchain_data/ # Datos persistentes (creado automáticamente)
- Validación de Transacciones: Verificación de balances y firmas
- Proof of Work: Consenso robusto contra ataques
- Límites de Gas: Prevención de loops infinitos en contratos
- Gestión de Memoria: Límites estrictos para prevenir ataques DoS
- Validación de Bloques: Verificación completa de integridad
- Memoria Compartida: Pool de contextos reutilizables
- Limpieza Automática: Garbage collection periódico
- Almacenamiento Eficiente: Compresión y índices optimizados
- Red P2P Asíncrona: Comunicación no bloqueante
- API Cache: Respuestas optimizadas
- Fork el proyecto
- Crear branch de feature (
git checkout -b feature/AmazingFeature) - Commit cambios (
git commit -m 'Add AmazingFeature') - Push al branch (
git push origin feature/AmazingFeature) - Abrir Pull Request
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para detalles.
- Issues: Reportar bugs y solicitar features
- Wiki: Documentación extendida
- Discussions: Preguntas y discusiones de la comunidad
Hecho con ❤️ para Windows 11 y Golang