This proposal is part of the protocol fee rollout, following proposals #93, #94, #95, #96, #99, and #100. 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 last year, the rollout has extended to eleven additional chains: Arbitrum, Base, OP Mainnet, Worldchain, X Layer, Soneium, Zora, Celo, BNB Chain, Polygon, and Robinhood Chain. 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.
Arc is a Layer 1 built by Circle for the world’s financial markets, real-time money movement, and agentic economic activity, with mainnet going live September 16, 2026. Uniswap was live on Arc from launch, with v2, v3, v4, and UniswapX all deployed.
This proposal:
- Extends the infrastructure for collecting and burning protocol fees to Arc
- Enables v2, v3, and v4 protocol fees on Arc
Implementation Details
Governance path. Cross-chain governance messages are sent from the protocol’s Timelock to the UniswapWormholeMessageSender on Ethereum and executed on Arc by UniswapWormholeReceiver. As is the case on Polygon and BNB Chain, the UniswapWormholeMessageReceiver holds the feeToSetter role on the Uniswapv2Factory and the owner role on Uniswapv3Factory and v4’s PoolManager prior to turning on fees.
Burn path. UNI on Arc is a synthetic token under Wormhole’s Native Token Transfer system (NTT). This is a ‘lock, mint, and burn’ system where canonical UNI is locked on Ethereum so a synthetic UNI can be minted on a foreign chain using Wormhole’s NTT infrastructure. More details can be found in the spec here.
Protocol fees generated on Arc burn UNI on mainnet using the Tokenjar and Releaser smart contracts. As on other chains, a searcher pays synthetic UNI on Arc to claim the TokenJar’s accumulated fees. The releaser, WormholeReleaser, sends that synthetic UNI to be burned by the NttManager on Arc, which emits a Wormhole message. The message is forwarded to the NttManager on Ethereum, which sends the corresponding canonical UNI to the burn address. This is the same releaser and the same path already in production on Polygon and BNB Chain.
The AMM and governance message passing contracts have been deployed and are detailed in the table below. The protocol fee infrastructure contracts will be deployed in the coming days and added to the table before the onchain vote goes live.
Implementation details for the v4 fee system are in the v4 fee activation temp check. v2 and v3 protocol fee levels are the same as on all other chains where fees are live. See a breakdown here.
Proposal Spec
If passed, the Arc Fee Activation proposal will execute two sets of calls on Ethereum.
The first registers Arc with the existing mainnet NTT system, setting Arc’s WormholeTransceiver and NttManager as peers of their Ethereum counterparts. On Polygon and BNB Chain this step was permissionless, because the mainnet NTT contracts were being deployed at the same time and had not yet been handed to the Timelock. Those contracts now exist and are governance owned, so registering a new chain against them requires an onchain vote.
WORMHOLE_TRANSCEIVER.setWormholePeer(ARC_WORMHOLE_CHAIN_ID, ARC_WORMHOLE_TRANSCEIVER)
NTT_MANAGER.setPeer(ARC_WORMHOLE_CHAIN_ID, ARC_NTT_MANAGER, 18, 0)
Note that WORMHOLE_CHAIN_ID is a parameter specific to Wormhole, not to be confused with EVM Chain IDs. More details here.
The second call sends the fee activation calls to Arc:
WORMHOLE_SENDER.sendMessage(targets, values, datas, UNISWAP_WORMHOLE_RECEIVER, ARC_WORMHOLE_CHAIN_ID)
encoding:
V2_FACTORY.setFeeTo(TOKEN_JAR)
V3_FACTORY.setOwner(V3_OPEN_FEE_ADAPTER)
V4_POOL_MANAGER.setProtocolFeeController(V4_FEE_ADAPTER)
Once executed on Arc, these set the fee collector of UniswapV2Factory to TokenJar, transfer ownership of UniswapV3Factory to V3OpenFeeAdapter, and set the v4 PoolManager’s protocol fee controller to V4FeeAdapter.
RELEVANT ADDRESSES:
| Name | Network | Address | Description |
|---|---|---|---|
| V2_FACTORY | Arc | 0x89e5DB8B5aA49aA85AC63f691524311AEB649eba | Uniswap V2 Factory |
| V3_FACTORY | Arc | 0xf0db7b58379503491d857dB50AC9ece64c653918 | Uniswap V3 Factory |
| V4_POOL_MANAGER | Arc | 0x8366a39CC670B4001A1121B8F6A443A643e40951 | Uniswap V4 Pool Manager |
| UNISWAP_WORMHOLE_RECEIVER | Arc | 0xbCA30b5429935205037069cF5b8A165F55d05a75 | Governance owned Wormhole receiver |
| TOKEN_JAR | Arc | TBD | Fee Collector |
| V3_OPEN_FEE_ADAPTER | Arc | TBD | Uniswap V3 Fee Adapter |
| V4_FEE_ADAPTER | Arc | TBD | Uniswap V4 Fee Adapter |
| V4_FEE_POLICY | Arc | TBD | Uniswap V4 Fee Policy |
| RELEASER | Arc | TBD | WormholeReleaser |
| NTT_MANAGER | Arc | TBD | Wormhole NTT Manager |
| WORMHOLE_TRANSCEIVER | Arc | TBD | Wormhole Transceiver |
| SYNTHETIC_NTT_UNI | Arc | TBD | Synthetic UNI |
| WORMHOLE_SENDER | Ethereum | 0xf5F4496219F31CDCBa6130B5402873624585615a | Wormhole Sender |
| NTT_MANAGER | Ethereum | 0x6569925Aac77D6B8Bb085F31F9828ff80D5a0c44 | Wormhole NTT Manager |
| WORMHOLE_TRANSCEIVER | Ethereum | 0x7597C40Fd3df66b750C14ad4D90524e247499011 | Wormhole Transceiver |
Next Steps / Timeline
- Snapshot: Sep 18-23, 2026
- Onchain vote: Following successful Snapshot