Loading repository data…
Loading repository data…
zkCaleb-dev / repository
Repositorio de ejemplos prácticos para desarrollo en Stellar blockchain. Incluye contratos inteligentes con Soroban SDK (Rust) y aplicaciones backend con Stellar SDK (JavaScript) para interactuar con contratos desplegados. Material de referencia documentado para bootcamps y desarrolladores del ecosistema Stellar.
Este repositorio contiene ejemplos prácticos desarrollados para el Bootcamp de Impacta, demostrando cómo construir aplicaciones full-stack sobre la blockchain de Stellar utilizando Soroban (contratos inteligentes).
El proyecto implementa un Sistema de Gestión de Productos completo que permite:
Toda la información se almacena de forma permanente en la blockchain de Stellar (Testnet).
ImpactaBootcamp-ExampleRepos/
├── soroban-contract/ # Contrato inteligente (Rust/Soroban)
│ ├── contracts/
│ │ └── products/ # Contrato de gestión de productos
│ │ ├── src/
│ │ │ ├── lib.rs # Implementación del contrato
│ │ │ └── test.rs # Tests unitarios
│ │ └── Cargo.toml
│ ├── Makefile # Comandos de build y deploy
│ └── README.md # Documentación del contrato
│
├── stellar-sdk-backend-integration/ # Backend REST API (Node.js/Express)
│ ├── src/
│ │ ├── index.js # Servidor Express
│ │ ├── config/
│ │ │ └── stellar.js # Cliente Stellar SDK
│ │ ├── routes/
│ │ │ └── products.js # Endpoints REST
│ │ └── types/
│ │ └── product.js # Utilidades de formato
│ ├── .env.example # Template de configuración
│ └── README.md # Documentación del backend
│
└── README.md # Este archivo
soroban-contract/)Contrato escrito en Rust utilizando el Soroban SDK que define la lógica de negocio en blockchain.
struct Product {
id: u64, // Identificador único auto-incrementado
name: String, // Nombre del producto
description: String, // Descripción
price: u64, // Precio en stroops
stock: u32 // Cantidad en inventario
}
| Función | Descripción |
|---|---|
register_product | Crea un nuevo producto con ID auto-generado |
get_product | Obtiene un producto por su ID |
update_stock | Modifica el inventario (operaciones: "add", "sub") |
update_price | Actualiza el precio de un producto |
stellar-sdk-backend-integration/)Servidor Node.js con Express que expone una API REST para interactuar con el contrato inteligente.
| Método | Ruta | Descripción |
|---|---|---|
POST | /products | Registrar un nuevo producto |
GET | /products/:id | Obtener producto por ID |
PUT | /products/:id/stock | Actualizar stock |
PUT | /products/:id/price | Actualizar precio |
GET | /health | Estado del servidor |
┌─────────────────┐
│ Cliente HTTP │
└────────┬────────┘
│ REST API
▼
┌─────────────────────────────────────┐
│ Backend (Express + Stellar SDK) │
│ ┌─────────────────────────────────┐│
│ │ routes/products.js ││
│ │ - Valida requests ││
│ │ - Convierte tipos ││
│ └──────────────┬──────────────────┘│
│ │ │
│ ┌──────────────▼──────────────────┐│
│ │ config/stellar.js ││
│ │ - Cliente Soroban ││
│ │ - Firma transacciones ││
│ └──────────────┬──────────────────┘│
└─────────────────┼───────────────────┘
│ Soroban RPC
▼
┌─────────────────────────────────────┐
│ Stellar Blockchain │
│ ┌─────────────────────────────────┐│
│ │ Contrato: products ││
│ │ - Lógica de negocio ││
│ │ - Almacenamiento persistente ││
│ └─────────────────────────────────┘│
└─────────────────────────────────────┘
Ejemplo de conversión de tipos:
Cliente → { price: 1500 } (JSON number)
Backend → BigInt(1500) (JavaScript BigInt)
Contrato → u64 (Rust unsigned 64-bit)
| Capa | Tecnología | Versión |
|---|---|---|
| Smart Contract | Rust + Soroban SDK | v23 |
| Backend Runtime | Node.js | v18+ |
| Backend Framework | Express | v5.2.1 |
| Blockchain SDK | @stellar/stellar-sdk | v14.0.0 |
| Red Blockchain | Stellar Testnet | - |
Cada componente tiene su propio README con instrucciones detalladas:
soroban-contract/README.mdstellar-sdk-backend-integration/README.mdProyecto educativo desarrollado para el Bootcamp de Impacta.