Farmly Finance is an innovative platform that simplifies liquidity management for DeFi users. With advanced strategies for concentrated liquidity, we enable users to provide liquidity effortlessly with just one click.
The project consists of several key components:
- FarmlyEasyFarm: The main contract that handles user deposits and automated liquidity management
- Strategies: Smart liquidity management strategies (e.g., Bollinger Bands) that optimize liquidity ranges
- Executors: Contracts that handle liquidity position management
- Readers: Contracts for reading on-chain data and price feeds to inform strategy decisions
- One-click liquidity provision
- Advanced concentrated liquidity management strategies
- Smart range optimization using Bollinger Bands
- Integration with Uniswap V3 for efficient liquidity management
- Chainlink price feeds for reliable price data
- Chainlink Automation for strategy execution
- Modular architecture allowing new strategies and executors to be added
- Built-in safety features and pausability
- Clone the repository:
git clone https://github.com/farmly-finance/easy-farmly-contracts.git
cd easy-farmly-contracts- Install dependencies:
forge install- Create a
.envfile with required environment variables:
SEPOLIA_RPC_URL=
BASE_SEPOLIA_RPC_URL=
PRIVATE_KEY=
ETHERSCAN_API_KEY=
You can run tests in two ways:
The project includes a test.sh script that handles the complete test setup and execution:
./test.shThis script will:
- Create necessary deployment directories
- Handle Uniswap V3 deployments
- Run the full test suite using Forge
Alternatively, you can run tests directly using Forge:
forge testRun specific tests:
forge test --match-contract FarmlyBollingerBandsStrategyDeploy to local network:
forge script script/FarmlyEasyFarm.s.sol --rpc-url localDeploy to testnet (Sepolia):
forge script script/FarmlyEasyFarm.s.sol --rpc-url sepoliasrc/
├── FarmlyEasyFarm.sol # Main contract
├── strategies/ # Liquidity management strategies
├── executors/ # Dex execution implementations
├── interfaces/ # Contract interfaces
├── libraries/ # Utility libraries
└── readers/ # Data reading contracts
- All contracts use OpenZeppelin's security contracts
- Built-in pause functionality for emergency situations
- Comprehensive test coverage
- Multiple security checks and validations
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a new Pull Request
This project is licensed under the GNU General Public License v3.0 or later - see the LICENSE file for details.