If this proposal passes, it will execute ten transactions:
/// Transition to v3OpenFeeAdapter on Mainnet
/// Change the owner on UniswapV3Factory to v3OpenFeeAdapter
V3_FEE_ADAPTER.setFactoryOwner(address(v3OpenFeeAdapter));
/// Enable fees on Arbitrum, Base, and OP Mainnet. For each chain:
/// Set the owner of the V3 Factory to the V3OpenFeeAdapter
V3_FACTORY.setOwner(address(v3OpenFeeAdapter));
/// Set the recipient of V2 protocol fees to the TokenJar
V2_FACTORY.setFeeTo(address(tokenJar));
/// Transition to CrossChainAccount ownership on Celo
/// Transfer v2 setFeeToSetter role
V2_FACTORY.setFeeToSetter(CrossChainAccount)
/// Transfer UniswapV3Factory owner role
V3_FACTORY.setOwner(CrossChainAccount)
// Transfer Uniswap v4 PoolManager owner role
POOL_MANAGER.transferOwnership(CrossChainAccount)
Because these transactions are crosschain, governance front ends may not decode them correctly. We recommend reviewing the Seatbelt simulation report to confirm their validity.
Mainnet
| Contract | Address |
|---|---|
| V3OpenFeeAdapter | 0x3e40DB80450f025b01E45c58b0aF763C7A29a8bd |
| V3FeeAdapter | 0x5E74C9f42EEd283bFf3744fBD1889d398d40867d |
Arbitrum
| Contract | Address |
|---|---|
| TokenJar | 0x95E337C5B155385945D407f5396387D0c2a3A263 |
| Releaser (ArbitrumBridgedResourceFirepit) | 0xB8018422bcE25D82E70cB98FdA96a4f502D89427 |
| V3OpenFeeAdapter | 0xFF7aD5dA31fECdC678796c88B05926dB896b0699 |
| UniswapV3Factory | 0x1F98431c8aD98523631AE4a59f267346ea31F984 |
| UniswapV2Factory | 0xf1D7CC64Fb4452F05c498126312eBE29f30Fbcf9 |
OP Mainnet
| Contract | Address |
|---|---|
| TokenJar | 0xb13285DF724ea75f3f1E9912010B7e491dCd5EE3 |
| Releaser (OptimismBridgedResourceFirepit) | 0x94460443Ca27FFC1baeCa61165fde18346C91AbD |
| V3OpenFeeAdapter | 0xec23Cf5A1db3dcC6595385D28B2a4D9B52503Be4 |
| UniswapV3Factory | 0x1F98431c8aD98523631AE4a59f267346ea31F984 |
| UniswapV2Factory | 0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf |
Base
| Contract | Address |
|---|---|
| TokenJar | 0x9bD25e67bF390437C8fAF480AC735a27BcF6168c |
| Releaser (OptimismBridgedResourceFirepit) | 0xFf77c0ED0B6b13A20446969107E5867abc46f53a |
| V3OpenFeeAdapter | 0xaBEA76658b205696d49B5F91b2a03536cB8A3bE1 |
| UniswapV3Factory | 0x33128a8fC17869897dcE68Ed026d694621f6FDfD |
| UniswapV2Factory | 0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6 |
Celo
| Contract | Address |
|---|---|
| CrossChainAccount | 0x044aAF330d7fD6AE683EEc5c1C1d1fFf5196B6b7 |
| UniswapV3Factory | 0xAfE208a311B21f13EF87E33A90049fC17A7acDEc |
| UniswapV2Factory | 0x114A43DF6C5f54EBB8A9d70Cd1951D3dD68004c7 |
This is the first proposal to use the new governance process approved in UNIfication. The new process only applies to fee parameter updates, where proposals can bypass the RFC stage and go directly to a five-day Snapshot followed by an onchain vote. This allows for faster updates to protocol fees, while retaining the security of onchain governance.
Snapshot vote here.
Since UNIfication went live in late December we have been monitoring protocol fees, which were rolled out gradually to ensure protocol health. This started with v2 and select v3 pools on Ethereum mainnet. This rollout has gone well, with market-adjusted TVL up on Ethereum mainnet since December. The burn system is working as expected, permissionlessly converting fees in many different tokens into UNI burns.
Now, we propose to:
Expand protocol fees to L2s and burn UNI on mainnet
This proposal introduces v2 and v3 protocol fees on eight chains. Fees on each chain will be routed to the TokenJar on that respective chain.
UNI burned on L2s doesn't stay on L2s - it is bridged back to mainnet and sent to 0xdead. This uses the same infrastructure used for burning Unichain sequencer fees (OptimismBridgedResourceFirepit for OP Stack chains, and ArbitrumBridgedResourceFirepit for Arbitrum).
Enable fees on all v3 pools
The current v3FeeAdapter manages protocol fees pool by pool and governance maintains a list of individual pools and their fee levels. Today, those pools account for a significant majority of v3 volume on Ethereum mainnet.
v3OpenFeeAdapter replaces this with a tier-based system. Protocol fees are set uniformly across all pools sharing the same LP fee tier. For example, all 1bps LP fee pools could have protocol fees set to 25%. Any pool automatically gets the default protocol fee for its tier, no governance action is needed. This means if this proposal passes, protocol fees will be active on every v3 pool. Governance retains the ability to override fees on individual pools.
Please note that because of GovernorBravo’s limit of 10 actions per proposal, there will be two separate onchain votes posted in parallel. One proposal will include the change to mainnet’s fee controller and turn on fees on Base, OP Mainnet, and Arbitrum, the other will turn on fees on Celo, Soneium, Worldchain, X Layer, and Zora.