ROSCA Payout Rotation Executor
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
ROSCA Payout Rotation Executor is a DeFi tool that executes the payout rotation in a rotating savings circle (ROSCA). It reads the ROSCA contract address, current cycle number, member contributions status (paid/pending), fund balance, payout order, next payout recipient, payout history, account nonce, gas estimates for payout, and previous payout records. The tool then guides you through executing the payout to the next member in the rotation, verifying that all members have paid for the current cycle, transferring the fund balance to the recipient, updating the payout status, and incrementing the cycle number.
HOW TO USE
Connect your wallet via the built-in connector. Select the network where the ROSCA contract is deployed. Enter the ROSCA contract address and the payment token address (use address(0) for native token). The tool will read on-chain data and display a preview including: ROSCA contract, payment token, current cycle number, fund balance, total members, member contribution status (paid/pending), next payout recipient, payout amount, and estimated gas. Review all details carefully. Click "execute payout rotation" to execute the payout. The tool will guide you through three steps: verifying all members have paid, executing the payout to the next recipient, and incrementing the cycle.
TECHNICAL MECHANISM
The tool uses ethers.js v5.7.2 to interact with the ROSCA contract. It reads member contribution status using `getMemberStatus(member, cycle)` which returns paid/pending. Current cycle number is read via `getCurrentCycle()`. Fund balance is read using `getFundBalance()` or `balanceOf()` on the fund token. Payout order is read via `getPayoutOrder()` which returns the rotation sequence. The next payout recipient is determined by `getNextPayoutRecipient()` which returns the address of the member due to receive the payout. Payout history is scanned using `eth_getLogs` for `PayoutExecuted` events, with adaptive chunking (halving chunk size on failure) to handle different RPC limits—the tool walks backward from the current block and continues even if some ranges are rejected. The payout transaction calls `executePayout()` on the contract, which verifies that all members have paid, transfers the fund balance to the next recipient, updates the payout status, and increments the cycle number. Gas estimates are calculated using `estimateGas` with EIP-1559 fee data from `feeData`. All transactions are built with EIP-1559 fee data, and the tool uses `effectiveGasPrice` from receipts for accurate cost accounting.
WHAT IT CANNOT SEE
This tool cannot verify that members have actually contributed funds—it relies on the contract's recorded state. It cannot detect if contributions are being misrepresented. It cannot guarantee that the next recipient is eligible—eligibility is determined by the contract. It cannot prevent front-running of payout execution. It cannot validate that the payout amount is correct—it uses the contract's balance. It cannot detect if the ROSCA contract has been modified. It cannot ensure that the payout order is fair. It cannot verify that the rotating savings terms are enforced off-chain.
PLEASE NOTE
This tool is EVM-only and supports Ethereum, Polygon, BNB Chain, Arbitrum, Optimism, and Avalanche. The payout transaction is signed by the connected wallet, and the user pays gas fees. Payouts should only be executed when all members have paid for the current cycle. The tool does not store or transmit any member data.