Split bills with crypto. Settle in fiat instantly.
RailDrop es un Farcaster Frame que permite dividir cuentas entre amigos usando crypto (USDC) y liquidar en fiat instantáneamente a través de Rail.
- Saliste a cenar con 3 amigos. La cuenta es $200
- Creas un split en RailDrop
- Cada amigo paga su parte ($50) con USDC
- Rail convierte automáticamente a fiat
- El restaurante recibe $200 en su cuenta bancaria
Farcaster Frame (Next.js)
↓
User clicks "Pay My Share"
↓
Smart Contract (Avalanche) holds USDC
↓
When all paid → Rail API converts to fiat
↓
Restaurant receives money in bank
- Node.js 18+
- Una wallet con AVAX para gas (testnet o mainnet)
- Cuenta en Snowtrace para API key (opcional)
cd raildrop-demo
npm installCopia el template de variables de entorno:
cp env.template .envEdita .env y agrega:
PRIVATE_KEY=tu_private_key_aqui
SNOWTRACE_API_KEY=tu_api_key_aqui # Opcional, para verificaciónPara deployar en Fuji testnet, necesitas AVAX:
- Ve a: https://faucet.avax.network/
- Ingresa tu wallet address
- Request 2 AVAX (tarda 1-2 minutos)
npx hardhat compileDeberías ver:
✓ Compiled 1 Solidity file successfully
npx hardhat run scripts/deploy.ts --network avalancheFujiOutput esperado:
🚀 Deploying RailDropEscrow...
📝 Deploying with account: 0xYourAddress...
💰 Account balance: 2.0 AVAX
⏳ Deploying contract...
✅ SUCCESS! Contract deployed to: 0x1234abcd...
🔗 View on Explorer: https://testnet.snowtrace.io/address/0x1234abcd...
📋 Save this address for frontend:
CONTRACT_ADDRESS="0x1234abcd..."
🎉 Deployment complete!
🎯 GUARDA ESA ADDRESS. La necesitas para el frontend.
npx hardhat run scripts/deploy.ts --network avalanchenpx hardhat verify --network avalancheFuji DEPLOYED_ADDRESS USDC_ADDRESS RAIL_TREASURY_ADDRESSraildrop-demo/
├── contracts/
│ └── RailDropEscrow.sol # Smart contract principal
├── scripts/
│ └── deploy.ts # Script de deployment
├── test/ # Tests (TODO)
├── hardhat.config.ts # Configuración de Hardhat
├── tsconfig.json # Configuración de TypeScript
└── README.md # Este archivo
Crea un nuevo split de pago.
Parámetros:
totalAmount: Monto total en USDC (wei)participantWallets: Array de addresses de participantesparticipantAmounts: Array de montos que cada uno debe pagardescription: Descripción del split (ej: "Dinner at La Pizzeria")payee: Address del comerciante/restaurante (opcional)expiresIn: Tiempo de expiración en segundos
Returns: splitId (bytes32)
Permite a un participante pagar su parte.
Parámetros:
splitId: ID del split
Requiere:
- Que el caller sea un participante
- Que no haya pagado ya
- Que tenga USDC aprobado para el contrato
Obtiene detalles de un split.
Parámetros:
splitId: ID del split
Returns: Todos los detalles del split
Obtiene lista de participantes de un split.
Parámetros:
splitId: ID del split
Returns: Array de participantes con sus estados de pago
El frontend será un Farcaster Frame con:
- ✅ Visual estilo Lego (bloques coloridos)
- ✅ Real-time updates (quién pagó)
- ✅ Social pressure (gamificación)
- ✅ Integración con Rail API
- Total: $200
- 4 personas
- Cada uno paga $50 en USDC
- Restaurante recibe $200 fiat
- Total: $500 (hotel + transporte)
- 5 personas
- Cada uno paga $100 en USDC
- Proveedor recibe $500 fiat
- Total: $300 (regalo de cumpleaños)
- 6 personas
- Cada uno paga $50 en USDC
- Tienda recibe $300 fiat
- ✅ ReentrancyGuard (protección contra ataques de reentrada)
- ✅ Ownable (funciones administrativas protegidas)
- ✅ OpenZeppelin contracts (auditados)
- ✅ Timelock en splits (expiración automática)
- ✅ Refund automático si split expira
npx hardhat test- Smart contract básico
- Deploy scripts
- Documentación
- Farcaster Frame
- Wallet connection (Wagmi)
- Dynamic images (@vercel/og)
- Rail API integration
- Fiat settlement
- Webhooks para notificaciones
- NFT badges ("Split Master")
- Leaderboard
- Social proof posts
Este proyecto está en desarrollo activo. Contribuciones son bienvenidas!
MIT
- Avalanche Docs: https://docs.avax.network/
- Rail.io: https://rail.io/
- Farcaster Frames: https://docs.farcaster.xyz/developers/frames
- Snowtrace (Explorer): https://snowtrace.io/
"This is RailDrop - a Farcaster Frame I built to showcase Rail's power.
How it works: You're out with friends. Bill is $200. Everyone opens the Frame, connects wallet, sends their $50 in USDC. Smart contract holds the funds. When everyone's paid, Rail converts all $200 to fiat and sends it to the restaurant's bank in 2 hours.
Why it's viral:
- Lego-style visuals (eye-catching)
- Real-time updates (social pressure to pay fast)
- Useful (solves real problem)
For Rail, this is:
- Social proof (thousands see it on Farcaster)
- Use case demo (not just speculation)
- Lead generation (users sign up for Rail accounts)
I can deploy this as an official Rail demo in 2 weeks. Interested?"
-
Snowtrace (Smart Contract)
- URL:
https://testnet.snowtrace.io/address/YOUR_CONTRACT_ADDRESS - Muestra: Contrato verificado, source code visible
- URL:
-
Landing Page (cuando esté lista)
- Visual estilo Lego
- Ejemplo de split animado
- Botón "Share on Farcaster"
Built with ❤️ for the Rail + Avalanche ecosystem