On-chain ROSCA (rotating savings club) dApp targeting Arbitrum One and Base. Mi Tanda brings Latin America's tanda savings tradition onchain with built-in defaulter insurance, automatic NFT receipts, and rotating artist/sponsor collections.
Six contracts:
MitandaErrors.sol— single source of truth for all custom errorsTandaManager.sol— singleton factory: token allowlist, VRF orchestrator, fee config, sponsored collection registryTanda.sol— per-tanda state machine, deployed as EIP-1167 clones from a single implementationMitandaPassNFT.sol— soulbound proof-of-membership (EIP-5192)MitandaCompletionNFT.sol— soulbound completion badge, stackable for reputationMitandaReceiptNFT.sol— transferable payout receipt with frozen-at-mint sponsored art
Plus src/interfaces/ITanda.sol for clone-safe Manager → Tanda calls.
- Insurance model: 10% premium per cycle, refunded to honest finishers, forfeited by defaulters and split among the honest
- Sponsored collections: rotating slot for artists/brands; receipts mint with the active collection's art
- Private tandas: EIP-712 signed invite tickets for friend-group tandas with Privy onboarding
- VRF v2.5: Chainlink-randomized payout order
- Pull payments: all credits land in
pendingWithdrawals, claimed viawithdraw() - Custom errors throughout: zero require-strings
In active development for hackathon submission. Tests and deploy scripts pending.
forge buildSee CLAUDE.md for full architecture documentation.