- 🌟 Características
- 📁 Estructura del Proyecto
- 🚀 Instalación
- ⚙️ Configuración
- 🎮 Uso
- 📊 Smart Contract
- 🛠️ Tecnologías
- 🧪 Testing
- 🚀 Deploy
✅ Token Fungible Completo
- Minteo de tokens (solo admin)
- Transferencias entre cuentas
- Consulta de balance
- 7 decimales (1 BDB = 10,000,000 stroops)
✅ Frontend Moderno
- Integración con Freighter Wallet
- Diseño responsive (mobile, tablet, desktop)
- Animaciones suaves
- Paleta de colores del mar 🌊
✅ Seguridad
- Validaciones de transferencias
- Control de acceso (admin)
- Firmas con wallet del usuario
- Balance verificado antes de transferir
bdb-token-app/
├── contracts/
│ └── bdb-token/ # Smart contract (Rust/Soroban)
│ ├── src/
│ │ └── lib.rs # Código del token BDB
│ ├── Cargo.toml # Dependencias de Rust
│ └── README.md # Docs del contrato
│
├── src/ # Frontend (React + TypeScript)
│ ├── App.tsx # Componente principal
│ ├── App.css # Estilos (paleta del mar)
│ ├── contract.ts # Lógica de interacción con blockchain
│ ├── main.tsx # Entry point
│ └── vite-env.d.ts # Tipos de TypeScript
│
├── public/ # Assets estáticos
├── .env # Variables de entorno (NO subir a git)
├── .env.example # Template de variables
├── .gitignore # Archivos ignorados por git
├── package.json # Dependencias del frontend
├── tsconfig.json # Configuración TypeScript
├── vite.config.ts # Configuración Vite
└── README.md # Este archivo
Antes de comenzar, asegúrate de tener instalado:
- Node.js 18+ (Descargar)
- Rust 1.75+ (Instalar)
- Stellar CLI (Guía de instalación)
- Freighter Wallet (Extensión de navegador)
git clone https://github.com/TU_USERNAME/bdb-token-dapp.git
cd bdb-token-appnpm installSi quieres recompilar el contrato:
cd contracts/bdb-token
# Agregar target wasm32
rustup target add wasm32-unknown-unknown
# Compilar
cargo build --target wasm32-unknown-unknown --release
# El contrato compilado estará en:
# target/wasm32-unknown-unknown/release/bdb_token.wasmCopia el archivo de ejemplo:
cp .env.example .envEdita .env con tus valores:
# ID del contrato deployado en Stellar Testnet
VITE_BDB_CONTRACT_ID=CAWSMAP3EKUYB375RIGOHYOET5ISHT36MHZZTUUFOITGFVIXT4D2YF7T
# RPC URL de Stellar Testnet
VITE_STELLAR_RPC_URL=https://soroban-testnet.stellar.org- Instala la extensión Freighter
- Crea una nueva wallet o importa una existente
- Importante: Cambia la red a TESTNET
- Abre Freighter
- Click en ⚙️ Settings
- Network → Test SDF Network (TESTNET)
# Desde Freighter, copia tu dirección pública (empieza con G...)
# Luego ejecuta:
stellar keys fund TU_DIRECCION_PUBLICA --network testnetO usa el faucet web: https://laboratory.stellar.org/#account-creator?network=test
npm run devAbre tu navegador en: http://localhost:5173/
-
Conectar Wallet
- Click en "Conectar Wallet"
- Freighter abrirá un popup
- Aprueba la conexión
-
Ver Balance
- Click en "Ver mi Balance BDB"
- Se mostrará tu balance en tokens (no en stroops)
-
Transferir Tokens
- Ingresa la dirección destino (debe empezar con G)
- Ingresa la cantidad de tokens
- Click en "💰 Transferir"
- Freighter pedirá confirmación
- Aprueba la transacción
-
Desconectar
- Click en "🚪 Desconectar"
- Contract ID:
CAWSMAP3EKUYB375RIGOHYOET5ISHT36MHZZTUUFOITGFVIXT4D2YF7T - Red: Stellar Testnet
- Decimales: 7 (1 BDB = 10,000,000 stroops)
- Lenguaje: Rust + Soroban SDK
Inicializa el token (solo una vez).
stellar contract invoke \
--id CONTRACT_ID \
--source admin \
--network testnet \
-- initialize \
--admin ADMIN_ADDRESS \
--decimal 7 \
--name "Token BDB" \
--symbol "BDB"Mintea tokens a una dirección (solo admin).
stellar contract invoke \
--id CAWSMAP3EKUYB375RIGOHYOET5ISHT36MHZZTUUFOITGFVIXT4D2YF7T \
--source admin \
--network testnet \
-- mint \
--to GBEOAGM47N5TMCRGHUQW2SYVDT73BK7M4KPJVCCGUZOGAO7KHBAXOQKE \
--amount 10000000Nota: amount está en stroops. Para 1 BDB, usa 10000000.
Consulta el balance de una cuenta.
stellar contract invoke \
--id CAWSMAP3EKUYB375RIGOHYOET5ISHT36MHZZTUUFOITGFVIXT4D2YF7T \
--source cualquier_cuenta \
--network testnet \
-- balance \
--id TU_DIRECCIONTransfiere tokens entre cuentas.
stellar contract invoke \
--id CAWSMAP3EKUYB375RIGOHYOET5ISHT36MHZZTUUFOITGFVIXT4D2YF7T \
--source from_account \
--network testnet \
-- transfer \
--from FROM_ADDRESS \
--to TO_ADDRESS \
--amount 5000000- Rust - Lenguaje de programación
- Soroban SDK - Framework para smart contracts en Stellar
- Stellar CLI - Herramienta de línea de comandos
- React 18 - Librería UI
- TypeScript - Tipado estático
- Vite - Build tool y dev server
- Stellar SDK - SDK de JavaScript para Stellar
- Freighter API - Integración con wallet
- Stellar - Blockchain
- Soroban - Plataforma de smart contracts
- Testnet - Red de pruebas
cd contracts/bdb-token
cargo testnpm run test# TypeScript/ESLint
npm run lint
# Rust
cd contracts/bdb-token
cargo clippystellar keys generate deployer --network testnet
stellar keys fund deployer --network testnetcd contracts/bdb-token
cargo build --target wasm32-unknown-unknown --releasestellar contract deploy \
--wasm target/wasm32-unknown-unknown/release/bdb_token.wasm \
--source deployer \
--network testnetGuarda el CONTRACT_ID que te devuelve.
stellar contract invoke \
--id TU_CONTRACT_ID \
--source deployer \
--network testnet \
-- initialize \
--admin $(stellar keys address deployer) \
--decimal 7 \
--name "Token BDB" \
--symbol "BDB"# Instalar Vercel CLI
npm install -g vercel
# Deploy
vercel# Build de producción
npm run build
# Sube la carpeta dist/ a Netlify# Instalar gh-pages
npm install --save-dev gh-pages
# Agregar scripts en package.json:
# "predeploy": "npm run build",
# "deploy": "gh-pages -d dist"
# Deploy
npm run deployEste proyecto está bajo la licencia MIT. Ver el archivo LICENSE para más detalles.
Isamar Suarez - Tiburona Developer 🦈
- GitHub: @Felurianx2
- LinkedIn: isamarsuarez
⭐ Si te gustó este proyecto, dale una estrella en GitHub!