Search projects, hackathons, sponsors and tech

    ← All projects

    About

    The problem it solves Traditional yield-generating strategies for public goods funding miss a key revenue stream: the fees generated during portfolio optimization. **The Problem:** - Existing strategies donate lending yield (Aave, Compound) - When strategies rebalance for better APY, swap fees are lost - This is wasted funding potential **Our Solution:** YieldChain captures BOTH revenue streams: 1. **Aave lending yield** - automatically donated via Octant's yield-donating mechanism 2. **Rebalancing swap fees** - captured via custom Uniswap V4 hook and donated **Result:** Every time the strategy optimizes itself, it generates additional public goods funding. We've proven this works - our tests show the hook capturing 598 billion wei per swap. **Who benefits:** - DAOs with treasuries seeking sustainable funding - Public goods projects receiving more consistent funding - DeFi users who want their capital to do good while staying productive

    How it's made

    Challenges we ran into **Challenge 1: ERC-4626 Integration with Aave V3** Aave doesn't provide official mainnet-deployed ERC-4626 vaults. We needed to build our own `ATokenVault` wrapper that properly handles Aave's aToken accounting while maintaining standard ERC-4626 compliance. **Solution:** Created a simplified but production-ready wrapper based on Aave's official vault design, focusing on core deposit/withdraw flows without unnecessary complexity. --- **Challenge 2: Uniswap V4 Hook Delta Handling** V4's new delta-based accounting required careful handling of the `afterSwapReturnDelta` flag. Initial attempts to calculate swap outputs directly from BalanceDelta failed due to type mismatches. **Solution:** Used balance tracking after swaps instead of parsing deltas directly. This simplified the code while maintaining correctness. --- **Challenge 3: Currency Ordering in V4 Pools** Uniswap V4 requires currency0 < currency1 by address. Our initial USDC/DAI pool failed because addresses were in wrong order. **Solution:** Properly sorted currencies before pool initialization and adjusted swap direction accordingly. --- **Challenge 4: Whale Addresses for Fork Testing** Mainnet fork tests failed when whale addresses didn't have sufficient balances. **Solution:** Used Foundry's `deal()` cheatcode to mint tokens directly for testing, avoiding whale dependency. --- **Key Learnings:** - Start with working components separately before integration - Use proper test helpers (Deployers, deal()) for fork testing - Manual rebalancing is actually better than automated for production safety