Flow Council is a voting system that enables organizations to dynamically stream funds among recipients based on weighted votes.
The system consists of two main contracts:
A lightweight factory contract for deploying new FlowCouncil instances.
The contract that manages voters, recipients, and vote processing.
Core Features:
- Role-based Access Control: Uses OpenZeppelin's AccessControl with specialized roles
- Superfluid Integration: Automatically distributes funds via Superfluid pools based on vote weights
- Vote Management: Efficient vote storage and processing
- Dynamic Membership: Add/remove voters and recipients with proper vote cleanup
- Setup: Deploy FlowCouncil via factory, configure initial admin
- Role Assignment: Admin grants
VOTER_MANAGER_ROLEandRECIPIENT_MANAGER_ROLE - Member Management: Managers add voters (with voting power) and recipients
- Voting Process: Voters cast their votes across recipients
- Automatic Distribution: Superfluid pool distributes streaming funds proportionally
DEFAULT_ADMIN_ROLE: Can manage all roles and system parametersVOTER_MANAGER_ROLE: Can add, remove, and edit votersRECIPIENT_MANAGER_ROLE: Can add, remove, and manage recipients
| Chain | Chain ID |
|---|---|
| Celo | 42220 |
| Optimism Sepolia | 11155420 |
| Contract | Address |
|---|---|
| Council Factory | 0x27b27a6471fF12E24bE368E184B96654b3e03454 |
The project uses Foundry for development and testing:
# Install dependencies
forge install
# Run tests
forge test