Skip to content

Commit

Permalink
Merge pull request #216 from balancer/fee-model-and-partner-improvements
Browse files Browse the repository at this point in the history
Refactor: Partner Onboarding Overhaul - Part 1
  • Loading branch information
Xeonus authored Feb 4, 2025
2 parents 4ac4431 + ca71722 commit 19d247e
Show file tree
Hide file tree
Showing 16 changed files with 596 additions and 241 deletions.
33 changes: 23 additions & 10 deletions docs/.vuepress/components/DecisionTree.vue
Original file line number Diff line number Diff line change
@@ -1,15 +1,28 @@
<template>
<div class="decision-tree">
<div class="step-container" v-if="currentStep">
<div v-if="currentStep" class="step-container">
<h2 class="step-title">{{ currentStep.title }}</h2>
<p class="step-question" v-if="currentStep.question">{{ currentStep.question }}</p>
<div class="options-container" v-if="currentStep.options">
<button class="option-button" v-for="option in currentStep.options" :key="option.text" @click="goToStep(option.nextStep)">
<p v-if="currentStep.question" class="step-question">
{{ currentStep.question }}
</p>
<div v-if="currentStep.options" class="options-container">
<button
v-for="option in currentStep.options"
:key="option.text"
class="option-button"
@click="goToStep(option.nextStep)"
>
{{ option.text }}
</button>
</div>
<p class="step-result" v-if="currentStep.result" v-html="currentStep.result"></p>
<button class="reset-button" v-if="isResult" @click="reset">Restart</button>
<p
v-if="currentStep.result"
class="step-result"
v-html="currentStep.result"
></p>
<button v-if="isResult" class="reset-button" @click="reset">
Restart
</button>
</div>
</div>
</template>
Expand All @@ -25,7 +38,7 @@ export default defineComponent({
data() {
return {
currentStepId: 'start',
steps: partnerDecisionTreeConfig
steps: partnerDecisionTreeConfig,
};
},
computed: {
Expand All @@ -34,16 +47,16 @@ export default defineComponent({
},
isResult(): boolean {
return !!this.currentStep?.result;
}
},
},
methods: {
goToStep(stepId: string) {
this.currentStepId = stepId;
},
reset() {
this.currentStepId = 'start';
}
}
},
},
});
</script>

Expand Down
103 changes: 65 additions & 38 deletions docs/.vuepress/constants/partnerDecisionTreeConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,77 +19,98 @@ export const partnerDecisionTreeConfig: Step[] = [
'What best describes your current product needs or primary use-case?',
options: [
{
text: 'Correlated / Yield-Bearing Asset Liquidity',
nextStep: 'step1',
text: 'Yield Optimization & Liquidity Provision',
nextStep: 'yield_step',
},
{
text: 'Optimised Liquidity for Governance Tokens',
text: 'Governance Token Liquidity',
nextStep: 'resultD',
},
{ text: 'Index-Fund Like Products', nextStep: 'resultC' },
{
text: 'Customised Pool Logic',
text: 'Index Products or Multi-Token Pools',
nextStep: 'resultC',
},
{
text: 'Custom Pool Logic or Extensions',
nextStep: 'resultE',
},
{
text: 'Liquidity for LVR Protection',
nextStep: 'resultF',
text: 'Stablecoin or Correlated Asset Liquidity',
nextStep: 'stable_step',
},
{
text: 'Stable Coin Liquidity',
nextStep: 'step2',
text: 'LVR Protection',
nextStep: 'resultF',
},
],
},
{
id: 'step1',
title: 'Step 1',
question:
'What feature do you need for correlated asset or yield-bearing liquidity?',
id: 'yield_step',
title: 'Yield Strategy',
question: 'What type of yield strategy are you looking to implement?',
options: [
{
text: 'Deep liquidity pool for highly-correlated assets containing 50% yield-bearing tokens',
text: 'Maximum yield with 100% capital efficiency (v3)',
nextStep: 'boosted_step',
},
{
text: 'Traditional yield-bearing token pool (v2)',
nextStep: 'resultA',
},
],
},
{
id: 'boosted_step',
title: 'Boosted Pools (v3)',
question: 'What type of assets are you looking to boost?',
options: [
{
text: 'Deep liquidity for highly correlated assets which do not contain yield-bearing tokens',
nextStep: 'resultB',
text: 'Stablecoins with Lending Market integration',
nextStep: 'resultI',
},
{
text: 'Other yield-generating strategies',
nextStep: 'resultJ',
},
],
},
{
id: 'step2',
title: 'Step 2',
id: 'stable_step',
title: 'Stablecoin Strategy',
question:
'What feature do you need for hosting your stable coin liquidity?',
'What is your primary goal for stablecoin or correlated asset liquidity?',
options: [
{
text: 'Maximizing token utilization with additional yield generation of stable coins',
nextStep: 'resultG',
text: 'Maximize yield while maintaining deep liquidity (v3)',
nextStep: 'boosted_step',
},
{
text: 'Customized invariant for highly efficient trading',
text: 'Optimized trading efficiency',
nextStep: 'resultH',
},
{
text: 'Traditional stable pool (v2)',
nextStep: 'resultB',
},
],
},
{
id: 'resultA',
title: 'Composable Stable Pools',
title: 'Composable Stable Pools (v2)',
result:
'A <a href="https://docs.balancer.fi/concepts/pools/composable-stable.html#composable-stable-pools" target="_blank" rel="noopener noreferrer">composable stable pool</a> with a rate provider setup will best suit your needs. Consult <a href="/partner-onboarding/balancer-v2/onboard-yb-token.html" target="_blank" rel="noopener noreferrer">our v2 onboarding guide</a> for more details.',
'A <a href="https://docs-v2.balancer.fi/concepts/pools/composable-stable.html#composable-stable-pools" target="_blank" rel="noopener noreferrer">composable stable pool</a> with a rate provider setup will best suit your needs. Consult <a href="/partner-onboarding/balancer-v2/onboard-yb-token.html" target="_blank" rel="noopener noreferrer">our v2 onboarding guide</a> for more details.',
},
{
id: 'resultB',
title: 'Composable Stable Pools',
title: 'Composable Stable Pools (v2)',
result:
'A <a href="https://docs.balancer.fi/concepts/pools/composable-stable.html#composable-stable-pools" target="_blank" rel="noopener noreferrer">composable stable pool</a> without any special requirements. Use <a href="https://app.balancer.fi/#/ethereum/pool/create" target="_blank" rel="noopener noreferrer">this community tool</a> to create a pool. ',
'A <a href="https://docs-v2.balancer.fi/concepts/pools/composable-stable.html#composable-stable-pools" target="_blank" rel="noopener noreferrer">composable stable pool</a> without any special requirements. Use <a href="https://balancer.defilytica.tools/pool-creator-v2" target="_blank" rel="noopener noreferrer">this community tool</a> to create a pool.',
},
{
id: 'resultC',
title: 'A multi-token pool',
title: 'Weighted Pools',
result:
'A multi-token pool with up to 8 tokens will suit best your needs. <a href="https://app.balancer.fi/#/ethereum/pool/create" target="_blank" rel="noopener noreferrer">Create a pool</a> now!',
'A weighted pool with up to 8 tokens will best suit your needs for creating index-like products. <a href="https://balancer.defilytica.tools/pool-creator-v2" target="_blank" rel="noopener noreferrer">Create a pool</a> now!',
},
{
id: 'resultD',
Expand All @@ -99,26 +120,32 @@ export const partnerDecisionTreeConfig: Step[] = [
},
{
id: 'resultE',
title: 'Pools with Hooks',
title: 'Pools with Hooks (v3)',
result:
'A Balancer v3 pool with <a href="/concepts/core-concepts/hooks.html" target="_blank" rel="noopener noreferrer">custom hook</a> logic sounds like a perfect fit for your needs. Explore hooks now!',
'Balancer v3\'s <a href="/concepts/core-concepts/hooks.html" target="_blank" rel="noopener noreferrer">hooks system</a> allows you to extend existing pool types with custom logic. Perfect for implementing unique features while maintaining core pool efficiency.',
},
{
id: 'resultF',
title: 'CowAMM liquidity pool',
title: 'CowAMM Liquidity Pool',
result:
'A CowAMM liquidity pool based on their custom implementation might be best suited for your LVR protection needs.',
},
{
id: 'resultH',
title: 'Gyroscope E-CLPs',
result:
'A CowAMM liquidity pool based on their custom implementation based on Balancer might be best suited for your needs',
'<a href="https://app.gyro.finance/" target="_blank" rel="noopener noreferrer">Gyroscope\'s</a> elliptical concentrated liquidity pools offer the best trading efficiency for highly correlated assets with customized trading curves.',
},
{
id: 'resultG',
title: 'Boosted Pools',
id: 'resultI',
title: 'Lending Market Boosted Pools (v3)',
result:
'A <a href="/partner-onboarding/onboarding-overview/products/boostedpools.html" target="_blank" rel="noopener noreferrer">boosted pool</a> on Balancer v3 will guarantee additional yield generation and high utilization rates of stable coin pairings',
'A v3 <a href="/partner-onboarding/onboarding-overview/products/boostedpools.html" target="_blank" rel="noopener noreferrer">Boosted Pool</a> is perfect for your needs. It offers 100% capital efficiency, maximizing yield through e.g. lending markets while maintaining deep liquidity for trades via an efficient buffer system.',
},
{
id: 'resultH',
title: 'Gyroscope E-CLPs',
id: 'resultJ',
title: 'Custom Boosted Pools (v3)',
result:
'<a href="https://app.gyro.finance/" target="_blank" rel="noopener noreferrer">Gyroscopes</a> elliptical concentrated liquidity pools offer the best trading efficiency for highly correlated assets with customized trading curves.',
'A v3 <a href="/partner-onboarding/onboarding-overview/products/boostedpools.html" target="_blank" rel="noopener noreferrer">Boosted Pool</a> can be integrated with your chosen yield strategy. The buffer system ensures gas-efficient swaps while maintaining 100% capital utilization in your yield-generating protocol.',
},
];
Binary file not shown.
Binary file not shown.
105 changes: 105 additions & 0 deletions docs/concepts/protocol-fee-model/protocol-fee-model.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
---
title: Protocol Fee Model
order: 2
---

# Protocol Fee Model and Core Pool Framework

This documentation outlines Balancer's protocol fee model and core pool framework across Balancer v2 and v3, as established by governance with [BIP-734](https://snapshot.org/#/s:balancer.eth/proposal/0x7a451385e49e341dce818927bf36aa35dfc6e42dabe328cb34e873c84fa452e4).

## Summary

Balancer's protocol fee model is designed to optimize revenue generation and redistribution for liquidity providers (LPs), veBAL holders, and the DAO. The model differs between Balancer v2 and v3, with v3 introducing a more LP-friendly yield fee structure to drive adoption of boosted pools technology.

::: info Key Changes in v3
- Reduced yield fees from 50% to 10% to increase adoption
- Universal 50% swap fees across all pools
- Simplified fee distribution model
- Introduction of boosted pools technology
:::

![veBAL Pool Flows](./images/veBAL-pool-flows-dark.webp)

## Fee Structure Overview

| Fee Type | Balancer v2 | Balancer v3 |
|----------|-------------|-------------|
| Yield Fees | 50% | 10% |
| Swap Fees | 50% | 50% |

## Fee Distribution Model
Balancer protocol fees are distributed differently based on pool classification. Pools are classified as either core pools or non-core pools:

- **Core Pools**: Pools that meet specific criteria (detailed in Core Pool Framework) and participate in the protocol's incentive flywheel. These pools typically contain yield-bearing assets or serve as primary liquidity venues.
- **Non-Core Pools**: All other pools that don't meet core pool criteria or haven't applied for core pool status.

### Core Pools

| Recipient | Percentage |
|-----------|------------|
| Voting Incentives | 70% |
| veBAL Holders | 12.5% |
| DAO | 17.5% |

### Non-Core Pools

| Recipient | Percentage |
|-----------|------------|
| veBAL Holders | 82.5% |
| DAO | 17.5% |

## Fee Model on Balancer v3

### Fee Structure
- Yield fees: 10% on yield-bearing asset yields
- Swap fees: 50% on all collected swap fees

::: tip Boosted Pools
V3 introduces boosted pools that deploy underlying liquidity into yield-generating markets, allowing any token with an external yield market to be transformed into a yield-bearing asset.
:::

## Fee Model on Balancer v2

### Fee Structure
- Yield fees: 50% on yield-bearing asset yields (unchanged)
- Swap fees: 50% on all collected swap fees (unchanged)

::: warning V2 Changes
The non-core pool fee redirect to core pools (introduced in [BIP-457](https://snapshot.org/#/s:balancer.eth/proposal/0x97856a0a66781666509f8e2d3dfa05aceabc543526e7fa546321f36f44030c03)) has been discontinued.
:::

## Core Pool Framework

The core pool framework establishes criteria for pools to achieve core status and access enhanced benefits.

### Composition Requirements
- Minimum 50% yield-bearing or boosted tokens for weighted or composable stable pools
- 80/20 weighted pools that utilize Balancer as their primarily liquidity hub (e.g. RDNT:WETH 80/20 pool on Arbitrum). Protocols need to apply to core pool status for such pool types (Check the ALCX/ETH [proposal](https://forum.balancer.fi/t/bip-290-designate-alcx-eth-80-20-as-a-core-pool-with-10-emissions-cap/4753) as a good example)
- Must maintain a minimum $100k TVL consistently

### Technical Requirements
- No yield fee exemption
- Fee settings delegated to Balancer governance in some form or another (no sovereignty on fees)
- Alternative protocol fee setting required if default settings unavailable

### Token Requirements
- Verified smart contracts for all tokens
- No transfer restrictions or rebasing mechanics

### Core Pool List Maintenance
The Balancer Maxis are running and maintaining automation jobs that query on-chain states of all pools deployed on Balancer v2 and v3 that also have a veBAL gauge active. Based on this data following procedures are executed:
- Bi-weekly evaluation of core pool status by checking that a gauge is active and TVL is >= $100k USD
- New pool types require governance approval
- Regular framework review through DAO governance

::: danger Important Note
Core pool status can be lost if requirements are no longer met during bi-weekly evaluations. The currently active core pool list is publicly available via the bal_addresses Maxis [repository](https://github.com/BalancerMaxis/bal_addresses/blob/main/outputs/core_pools.json).
:::

## References and Additional Resources

1. [Protocol Fee Dune Dashboard](https://dune.com/balancer/protocol-fees)
2. [Core Pools Analytics Dashboard](https://balancer.defilytica.com/#/corePools)
3. [Automatic Core Pool List](https://github.com/BalancerMaxis/bal_addresses/blob/main/outputs/core_pools.json)
4. [Fee Distribution Model Analysis](https://docs.google.com/spreadsheets/d/1dx82Hqcw53AwnXOkY3CFSJMshojjT7BzlsKf3zQa-FQ/edit?gid=759201376#gid=759201376)
5. [Core Pool Framework BIP](https://forum.balancer.fi/t/bip-457-core-pool-incentive-program-automation/5254)
38 changes: 0 additions & 38 deletions docs/partner-onboarding/balancer-v2/core-pools.md

This file was deleted.

19 changes: 0 additions & 19 deletions docs/partner-onboarding/balancer-v2/direct-incentives.md

This file was deleted.

Loading

0 comments on commit 19d247e

Please sign in to comment.