This proposal appears on Balancer's forum.
Balancer v2 imposes the possibility to activate the “protocol fee”. The protocol fee would collect a percentage of the pool fees and passively accumulate them over time. The fee can be set in a range between 0-50% of the pool fee. The protocol fee is currently set to 0%.
In the current state, the Balancer protocol provides around 145’000 BAL weekly in incentives across the protocol (on multiple chains) without asking for anything in return. To me this was mesmerizing when looking at the overall distribution of BAL and co-incentives across chains. This is a good way to bootstrap liquidity and distribute our governance token. However, to be a sustainable and most importantly innovative protocol, we also need to collect fees as a revenue stream. As we want to transition to a fully decentralized autonomous organization (DAO), we need to think about its future and how to achieve that. The only way to be able to run a successful DAO is the availability of funds to sponsor future development and innovation of the protocol as the vision of Balancer Labs is to slowly transition from a core component to a contributor of the protocol.
In an initial phase fees will simply be accrued in a treasury. There are many possibilities and opportunities to pursue once fees accumulate. The following non-exclusive list shall give you examples on what could be done with collected fees:
Create a DAO treasury index fund to secure liquidity and sustainability of the DAO Buy back BAL and stake in the 80/20 pool Distribute parts of the revenue to protocol participants e.g. LPs
Of course, all these examples would only be implemented after careful consideration and discussion with the community and snapshot votes!
Network: mainnet
Multisig: 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f
Authorizer: 0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6
ProtocolFeesCollector: 0xce88686553686DA562CE7Cea497CE749DA109f9F
Authorize self to set fee:
Authorizer.grantRole(0xb28b769768735d011b267f781c3be90bce51d5059ba015bc7a28b3e882fb2083, 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f);
Calldata: 0x2f2ff15db28b769768735d011b267f781c3be90bce51d5059ba015bc7a28b3e882fb208300000000000000000000000010a19e7ee7d7f8a52822f6817de8ea18204f2e4f
Set fee:
ProtocolFeesCollector.setSwapFeePercentage(100000000000000000);
Calldata: 0x38e9922e000000000000000000000000000000000000000000000000016345785d8a0000
Network: polygon
Multisig: 0xd2bD536ADB0198f74D5f4f2Bd4Fe68Bae1e1Ba80
Authorizer: 0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6
ProtocolFeesCollector: 0xce88686553686DA562CE7Cea497CE749DA109f9F
Authorize self to set fee:
Authorizer.grantRole(0xb28b769768735d011b267f781c3be90bce51d5059ba015bc7a28b3e882fb2083, 0xd2bD536ADB0198f74D5f4f2Bd4Fe68Bae1e1Ba80);
Calldata: 0x2f2ff15db28b769768735d011b267f781c3be90bce51d5059ba015bc7a28b3e882fb2083000000000000000000000000d2bd536adb0198f74d5f4f2bd4fe68bae1e1ba80
Set fee:
ProtocolFeesCollector.setSwapFeePercentage(100000000000000000);
Calldata: 0x38e9922e000000000000000000000000000000000000000000000000016345785d8a0000
Network: arbitrum
Multisig: 0x6207ed574152496c9B072C24FD87cE9cd9E17320
Authorizer: 0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6
ProtocolFeesCollector: 0xce88686553686DA562CE7Cea497CE749DA109f9F
Authorize self to set fee:
Authorizer.grantRole(0xb28b769768735d011b267f781c3be90bce51d5059ba015bc7a28b3e882fb2083, 0x6207ed574152496c9B072C24FD87cE9cd9E17320);
Calldata: 0x2f2ff15db28b769768735d011b267f781c3be90bce51d5059ba015bc7a28b3e882fb20830000000000000000000000006207ed574152496c9b072c24fd87ce9cd9e17320
Set fee:
ProtocolFeesCollector.setSwapFeePercentage(100000000000000000);
Calldata: 0x38e9922e000000000000000000000000000000000000000000000000016345785d8a0000