Mobile stablecoin FX across Celo and Arc.
Live app: https://stable-hop.vercel.app
Track demo payment: https://stable-hop.vercel.app/?guard=1
Hackathon deck: https://stable-hop.vercel.app/arc-hackathon-deck.html
STABLE·HOP is a mobile money app with three surfaces:
- Pay: pre-fund a EUR invoice with native USDC on Arc and enforce an FX ceiling with Pyth.
- Convert: exchange local stablecoins through Mento on Celo.
- Request: create a payment request as a link or QR code.
The Arc payment is the primary workflow inside the existing Celo and MiniPay product, not a separate demo. It shares the app shell, wallet state, payment links, legal surfaces, and responsive design with the existing rails.
The payer signs one transaction. Arc native USDC stays locked until a recent Pyth EUR/USD update reaches the chosen ceiling. Anyone can trigger settlement. The recipient receives the exact current USDC value and the unused amount returns to the payer. If the deadline passes first, only the payer can recover the funds. The Track view exposes funding and settlement proof without requiring a wallet.
Most stablecoin apps execute a conversion, transfer, or checkout immediately. STABLE·HOP creates a standing, pre-funded payment that executes later when a public market condition is true:
- The invoice is denominated in EUR, not USDC.
- Funding is visible before settlement.
- The FX ceiling is enforced by a source-verified contract, not an app server.
- Settlement is permissionless and uses signed Pyth data.
- There is no owner, custody key, or admin withdrawal path.
- Arc native USDC funds the payment in one transaction with no approval step.
See COMPETITION.md for the dated Arc project review.
- Contract:
0xac64...8e16 - Funding transaction:
0x8427...bcad - Settlement transaction:
0xf0ed...3293
Demo payment #1 locked 1.30 USDC for a 1 EUR invoice. Pyth settled it at 1.15585, paid 1.15585 USDC to the recipient, returned 0.14415 USDC to the payer, and left the contract with a zero balance.
- Arc Testnet, chain ID
5042002 - Native USDC at
0x3600000000000000000000000000000000000000 - Pyth at
0x2880aB155794e7179c9eE2e38200202908C17B43 - EUR/USD feed
0xa995...c30b - Maximum oracle age: 30 minutes
- Maximum confidence width: 1%
- Payment duration: 5 minutes to 30 days
Source: contracts/src/ArcFxGuard.sol
Tests: contracts/test/ArcFxGuard.t.sol
Deployment record: contracts/deployments/arc-testnet.json
npm install
npm run devnpm test
npm run contracts:test
npm run lint
npm run buildReact 19, TypeScript, Vite, wagmi, viem, TanStack Query, shadcn/Radix, Celo, Mento, MiniPay, Arc, native USDC, Pyth, Solidity, and Foundry.
STABLE·HOP is unaudited testnet software. See SECURITY.md and ARC-HACKATHON.md.