Este proyecto es un ecosistema completo de comercio electrónico descentralizado que integra tecnología Blockchain (Solidity/Foundry), una Stablecoin propia (EURT) y pasarelas de pago tradicionales (Stripe) para permitir la compra de productos físicos y digitales utilizando una moneda estable vinculada al Euro.
El proyecto está dividido en varios subproyectos interconectados:
sc-ecommerce: Contratos inteligentes del núcleo del E-commerce.stablecoin/sc: Contrato inteligente de la Stablecoin EuroToken (EURT).web-customer: Interfaz para el cliente final (Comprador).web-admin: Panel de control para administradores y empresas.stablecoin/pasarela-de-pago: Microservicio de integración con Stripe.stablecoin/compra-stablecoin: Servicio de acuñación (minting) de tokens tras pago Fiat.
- Gestión de Empresas: Registro y activación de comercios.
- Catálogo de Productos: CRUD de productos con control de stock on-chain.
- Carrito de Compra: Lógica de persistencia y cálculo de totales en contrato.
- Facturación (Invoices): Generación de facturas únicas vinculadas a pedidos.
- Procesamiento de Pagos: Validación de transacciones y estados (Pending, Completed, Failed, Refunded).
- Librerías Modulares: Uso de
CompanyLib,ProductLib,CustomerLibyShoppingCartLibpara una arquitectura escalable.
- Estándar ERC20: Implementación basada en OpenZeppelin.
- Precisión: Configurado con 6 decimales para representar céntimos de Euro.
- Control de Emisión: Funciones de
mintprotegidas por el propietario para emitir tokens tras pagos verificados.
- Exploración de Productos: Catálogo dinámico consumiendo datos del contrato.
- Conexión Web3: Integración con MetaMask.
- On-ramp Fiat: Compra de EURT directamente con tarjeta de crédito/débito.
- Checkout: Proceso de pago utilizando la stablecoin propia.
- Dashboard de Gestión: Vista general de ventas y métricas.
- Gestión de Inventario: Panel para añadir productos y actualizar existencias.
- Control de Empresas: Registro de nuevas entidades en el contrato.
- Foundry: Framework de desarrollo (Forge, Anvil).
- OpenZeppelin: Contratos estándar de seguridad y tokens.
- Solidity 0.8.13+
- Next.js 14/16: Framework de React para las aplicaciones web.
- Ethers.js (v5/v6): Interacción con la blockchain.
- Tailwind CSS & DaisyUI: Estilizado y componentes de UI.
- Stripe SDK: Procesamiento de pagos con tarjeta.
classDiagram
class Ecommerce {
+CompanyStorage companyStorage
+ProductStorage productStorage
+CustomerStorage customerStorage
+ShoppingCartStorage shoppingCartStorage
+address owner
+mapping invoices
+registerCompany()
+addProduct()
+createInvoice()
+processPayment()
+addToCart()
}
class EuroToken {
+string name: "EuroToken"
+string symbol: "EURT"
+uint8 decimals: 6
+mint(to, amount)
+burn(amount)
}
class CompanyLib {
<<Library>>
+struct Company
+registerCompany()
+deactivateCompany()
}
class ProductLib {
<<Library>>
+struct Product
+addProduct()
+updateStock()
}
class CustomerLib {
<<Library>>
+struct Customer
+registerCustomer()
}
class ShoppingCartLib {
<<Library>>
+struct CartItem
+addToCart()
+calculateTotal()
}
Ecommerce ..> CompanyLib : uses
Ecommerce ..> ProductLib : uses
Ecommerce ..> CustomerLib : uses
Ecommerce ..> ShoppingCartLib : uses
Ecommerce -- EuroToken : Payments in EURT
- Node.js v18+ e npm.
- Foundry (Forge & Anvil).
- MetaMask en el navegador.
- Stripe CLI (para pruebas locales de webhooks).
anvilEjecuta el script de despliegue completo que configurará los contratos y generará los archivos .env.local automáticamente:
./deploy-complete.shAbre diferentes terminales para cada subproyecto:
Web Customer (Puerto 3030):
cd web-customer
npm install
npm run devWeb Admin (Puerto 3032):
cd web-admin
npm install
npm run devPasarela de Pago (Puerto 3034):
cd stablecoin/pasarela-de-pago
npm install
npm run devServicio de Compra de Stablecoin (Puerto 3033):
cd stablecoin/compra-stablecoin
npm install
npm run devSi vas a probar la compra de tokens con tarjeta:
stripe listen --forward-to localhost:3034/api/webhook- El usuario entra en web-customer y conecta su MetaMask.
- Si no tiene saldo, utiliza la funcionalidad "Comprar EURT" (integra Stripe).
- El servicio pasarela-de-pago procesa el cobro Fiat.
- Stripe notifica al webhook del éxito.
- El servicio compra-stablecoin ejecuta un
minten el contrato EuroToken hacia la wallet del usuario. - El usuario añade productos al carrito y realiza el "Checkout" llamando a
createInvoiceen el contrato Ecommerce. - Se firma la transacción y el stock se descuenta automáticamente en la blockchain.