Skip to content

flow-state-coop/flow-council

Repository files navigation

Flow Council

Flow Council is a voting system that enables organizations to dynamically stream funds among recipients based on weighted votes.

Architecture

The system consists of two main contracts:

FlowCouncilFactory.sol

A lightweight factory contract for deploying new FlowCouncil instances.

FlowCouncil.sol

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

How It Works

  1. Setup: Deploy FlowCouncil via factory, configure initial admin
  2. Role Assignment: Admin grants VOTER_MANAGER_ROLE and RECIPIENT_MANAGER_ROLE
  3. Member Management: Managers add voters (with voting power) and recipients
  4. Voting Process: Voters cast their votes across recipients
  5. Automatic Distribution: Superfluid pool distributes streaming funds proportionally

Access Control

  • DEFAULT_ADMIN_ROLE: Can manage all roles and system parameters
  • VOTER_MANAGER_ROLE: Can add, remove, and edit voters
  • RECIPIENT_MANAGER_ROLE: Can add, remove, and manage recipients

Contract Deployment

Networks

Chain Chain ID
Celo 42220
Optimism Sepolia 11155420

Address

Contract Address
Council Factory 0x27b27a6471fF12E24bE368E184B96654b3e03454

Development

The project uses Foundry for development and testing:

# Install dependencies
forge install

# Run tests
forge test

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors