This proposal continues the protocol fee rollout, following proposals #92, #93, and #94. It uses the expedited governance process approved in UNIfication, where fee parameter update proposals can bypass the RFC stage and go directly to a five-day Snapshot followed by an onchain vote.
Since protocol fees went live on Ethereum mainnet in late December, the rollout has extended to nine additional chains (Arbitrum, Base, OP Mainnet, Soneium, X Layer, Worldchain, and Zora). The burn system is working as designed, with fees accumulating in TokenJars across chains. From there, searchers claim them in exchange for burning UNI by bridging it back to mainnet and sending it to the burn address.
This proposal:
- Extends the infrastructure for collecting and burning protocol fees to BNB Chain and Polygon
- Enables v2 and v3 protocol fees on these chains
- Completes Celo’s fee activation through a corrected cross-chain governance path, which was approved in a previous proposal but did not execute due to a configuration error
Implementation Details
Fees on each chain will be routed to the TokenJar on that respective chain. UNI burned on these chains is bridged back to Ethereum mainnet and sent to 0xdead.
Celo uses the same architecture as other OP-stack chains. On BNB and Polygon, we make use of Wormhole’s Native Token Transfer (NTT) mechanism for multichain token management. This post will be updated early the week of May 18, 2026 with links to the repository containing these contracts and a full description of our implementation.
Protocol fee levels are the same on all other chains where fees are live, see breakdown here.
Proposal Spec
If passed, this proposal will execute three actions: one each for Celo, BNB Chain, and Polygon. Each action contains multiple inner calls.
Celo
This action sets the fee collector of UniswapV2Factory to TokenJar, transfers ownership of UniswapV2Factory and PoolManager to Optimism CrossChainAccount, and transfers ownership of UniswapV3Factory to V3OpenFeeAdapter.
RELEVANT ADDRESSES:
| Name | Network | Address | Description |
|---|---|---|---|
| V2_FACTORY | Celo | 0x114A43DF6C5f54EBB8A9d70Cd1951D3dD68004c7 | Uniswap V2 Factory |
| V3_FACTORY | Celo | 0xAfE208a311B21f13EF87E33A90049fC17A7acDEc | Uniswap V3 Factory |
| V4_POOL_MANAGER | Celo | 0x288dc841A52FCA2707c6947B3A777c5E56cd87BC | Uniswap V4 Pool Manager |
| TOKEN_JAR | Celo | 0x190c22c5085640D1cB60CeC88a4F736Acb59bb6B | Fee Collector |
| V3_OPEN_FEE_ADAPTER | Celo | 0xB9952C01830306ea2fAAe1505f6539BD260Bfc48 | Uniswap V3 Fee Adapter |
| UNISWAP_WORMHOLE_MESSAGE_RECEIVER | Celo | 0x0Eb863541278308c3A64F8E908BC646e27BFD071 | Governance Owned Wormhole Receiver |
| CROSS_CHAIN_ACCOUNT | Celo | 0x044aAF330d7fD6AE683EEc5c1C1d1fFf5196B6b7 | Governance-owned OP Bridge Receiver |
| WORMHOLE_SENDER | Ethereum | 0xf5F4496219F31CDCBa6130B5402873624585615a | Wormhole Sender |
WORMHOLE_SENDER.sendMessage(targets, values, datas, UNISWAP_WORMHOLE_MESSAGE_RECEIVER, CELO_CHAIN_ID)
encodes:
V2_FACTORY.setFeeTo(TOKEN_JAR)
V2_FACTORY.setFeeToSetter(CROSS_CHAIN_ACCOUNT)
V3_FACTORY.setOwner(V3_OPEN_FEE_ADAPTER)
V4_POOL_MANAGER.transferOwnership(CROSS_CHAIN_ACCOUNT)
BNB Chain
This action sets the fee collector of UniswapV2Factory to TokenJar and transfers ownership of UniswapV3Factory to V3OpenFeeAdapter.
RELEVANT ADDRESSES:
| Name | Network | Address | Description |
|---|---|---|---|
| V2_FACTORY | BNB Chain | 0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6 | Uniswap V2 Factory |
| V3_FACTORY | BNB Chain | 0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F7 | Uniswap V3 Factory |
| UNISWAP_WORMHOLE_MESSAGE_RECEIVER | BNB Chain | 0x341c1511141022cf8eE20824Ae0fFA3491F1302b | Governance Owned Wormhole Receiver |
| TOKEN_JAR | BNB Chain | 0xc6Ae6373CEcc9e595A6C8b9fe581925a8c84f70A | Fee Collector |
| V3_OPEN_FEE_ADAPTER | BNB Chain | 0x3F07F08b45912dCd6691C5B9412975D5113B2910 | Uniswap V3 Fee Adapter |
| WORMHOLE_SENDER | Ethereum | 0xf5F4496219F31CDCBa6130B5402873624585615a | Wormhole Sender |
WORMHOLE_SENDER.sendMessage(targets, values, datas, UNISWAP_WORMHOLE_MESSAGE_RECEIVER, BNB_CHAIN_ID)
encodes:
V2_FACTORY.setFeeTo(TOKEN_JAR)
V3_FACTORY.setOwner(V3_OPEN_FEE_ADAPTER)
Polygon
This action sets the fee collector of UniswapV2Factory to TokenJar and transfers ownership of UniswapV3Factory to V3OpenFeeAdapter.
RELEVANT ADDRESSES:
| Name | Network | Address | Description |
|---|---|---|---|
| V2_FACTORY | Polygon | 0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C | Uniswap V2 Factory |
| V3_FACTORY | Polygon | 0x1F98431c8aD98523631AE4a59f267346ea31F984 | Uniswap V3 Factory |
| ETHEREUM_PROXY | Polygon | 0x8a1B966aC46F42275860f905dbC75EfBfDC12374 | Governance Owned FxChild Receiver |
| TOKEN_JAR | Polygon | 0xc6Ae6373CEcc9e595A6C8b9fe581925a8c84f70A | Fee Collector |
| V3_OPEN_FEE_ADAPTER | Polygon | 0x3F07F08b45912dCd6691C5B9412975D5113B2910 | Uniswap V3 Fee Adapter |
| POLYGON_FX_ROOT | Ethereum | 0xfe5e5D361b2ad62c541bAb87C45a0B9B018389a2 | Polygon’s Sender (on Ethereum) |
POLYGON_FX_ROOT.sendMessageToChild(ETHEREUM_PROXY, abi.encode(targets, datas, values))
encodes:
V2_FACTORY.setFeeTo(TOKEN_JAR)
V3_FACTORY.setOwner(V3_OPEN_FEE_ADAPTER)

