ROSCA dapp

ROSCA dapp, a decentralized platform for managing this financial mechanism on-chain.

ROSCA dapp

Created At

ETHOnline 2025

Project Description

This project is a monorepo around Rosca (Rotating Savings and Credit Association) that allows to apply this financial system on-chain. The dApp allows to create a ROSCA on chain with selected members and a SafeWallet address as the organizer. The Safe multisig add trust and avoid anyone to withdraw token contributions in a bad way. If something happens, our deployed contracts are configured to ensure at least the minimum signatures are required to withdraw the pot from a running ROSCA. Appart from this case, the members will follow the configured amount to contribute in a configured timestamp (in days). When everyone has received their part one time, the ROSCA is completed on-chain!

How it's Made

For the backbone of the project, we started with a monorepo by using turborepo, from Vercel team to avoid multiple projects in different repo, and to link the process easily with scripts. We have two main apps, the Next.js app containing our frontend and the foundry app for the Solidity smart contract part. First the Next.js app is powered by RainbowKit and Wagmi (from Viem) to ease the interaction with our deployed contract. We are also using Safe SDK ProtocolKit to interact on-chain with Safe contracts (creating, signing...). For the smart-contract part with Foundry, we created and deployed the ROSCA Factory contract that allows to handle the Committee contract creation by users. The Committee contract are the instances that hold the ROSCA process and the fund of the members with the safe multisig address as the owner. These contracts are powered by PYTH Network Entropy feature, Chainlink and PYUSD as the main token for contribution. For the dev environment, we tried to make it as performant and OS free as possible. We first setup a devcontainer with required tools for devs that wants to work without installing locally every dependencies. We are also using the safe-smart-account repo as a submodule of our project to deploy the required Safe contracts (hardhat) locally on anvil alongside our ROSCA contracts. So our team was first developing locally on anvil with a lot of fund from predefined addresses and then we deployed everything on Arbitrum Sepolia and Vercel. We also used the package feature of turborepo to share the artifacts like abis and also to hold specific scripts ran to mock our oracle locally. Note: we wanted to implement envio indexer but we ran out of time.

background image mobile

Join the mailing list

Get the latest news and updates