https://github.com/curvefi/fee-splitter
Pipeline to reinvest crvUSD fees for growth.
https://github.com/curvefi/fee-splitter
Last synced: 26 days ago
JSON representation
Pipeline to reinvest crvUSD fees for growth.
- Host: GitHub
- URL: https://github.com/curvefi/fee-splitter
- Owner: curvefi
- Created: 2024-07-11T12:36:37.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-10-15T17:15:59.000Z (7 months ago)
- Last Synced: 2025-04-05T02:04:48.827Z (about 2 months ago)
- Language: Python
- Homepage: https://docs.curve.fi/fees/FeeSplitter/
- Size: 1.08 MB
- Stars: 10
- Watchers: 4
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Audit: audits/ChainSecurity.pdf
Awesome Lists containing this project
README
# Fee Splitter
Reinvesting crvUSD revenue to support its growth.
# Background
Previously, Curve redistributed 100% of its revenues to veCRV holders. This project explores a new design where a percentage of crvUSD-generated revenues are reinvested to support the protocol's growth. veCRV holders still decide who's is allowed to receive the fees through governance.
# Fee Splitter
A smart contract system for collecting and distributing fees from Curve's crvUSD controllers.
## Overview
The Fee Splitter project introduces a new mechanism for distributing crvUSD-generated revenues. Instead of redistributing 100% of revenues to veCRV holders, this system allows for a portion of the fees to be shared with protocol-aligned voters and other strategic initiatives.
## Key Components
### FeeSplitter Contract
The main contract responsible for collecting fees from multiple crvUSD controllers and distributing them according to predefined weights.
Key features:
- Supports both fixed and dynamic weight receivers. Fixed weight receivers have a predetermined share of the fees, while dynamic weight receivers can adjust their share based on certain conditions.
- Allows for updating the list of receivers
- Owned by a designated address (likely DAO-controlled)### ControllerMulticlaim Module
A helper module integrated into the FeeSplitter to efficiently claim fees from multiple controllers simultaneously.
Key features:
- Maintains a list of allowed controllers
- Can claim fees from all controllers or a specified subset### Testing Suite
The project includes a comprehensive testing suite:
- Unit tests for individual contract functions
- Integration tests for full contract interactions
- Hypothesis-based stateful tests for more robust scenario coverage## Development Setup
1. Install dependencies:
```bash
poetry install
forge install
```2. Run tests:
```bash
pytest tests/unitary # unit tests
forge t # integration test
pytest tests/hypothesis # stateful/fuzz testing
```3. For deployment scripts and interactions, see the `scripts/` directory.
# Audit
The contract has been audited by Chainsecurity, the report can be found [here](audits/ChainSecurity.pdf).
## Contract Deployment
The `scripts/deploy_fee_splitter.ipynb` Jupyter notebook provides a step-by-step process for deploying the FeeSplitter contract and setting up the initial configuration.
## Autobribe
This codebase used to be home to autobribe, a protocol that never saw the light of day. Its **unfinished** code can still be found [here](https://github.com/curvefi/fee-splitter/tree/autobribe).
## Security
This project is developed by Curve.fi. For any security-related issues, please contact [email protected].
## License
Copyright (c) Curve.Fi, 2020-2024 - all rights reserved