[Temp Check] Protocol Fee Expansion: Arc

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