Redirect Arbitrum and Base L2 fees to the Curve DAO treasury

Summary:

This proposal redirects Curve’s L2 fees to the Curve DAO treasury on mainnet (0x6508eF65b0Bd57eaBD0f1D52685A70433B2d290B) by repointing the fee-burning hooks on the chains that run the newly deployed CowSwap burner infrastructure (Arbitrum, Base) and have a substantial amount of unburnt/unclaimed fees. If approved, directing those fees to the treasury can be reversed by the DAO via a vote at any time.

A substantial amount of fee revenue is currently stranded, both as unburnt fee tokens on the old receivers and as already-burned crvUSD on the L2 FeeCollectors. Values verified on 2026-06-17:

Chain Description Value State
Arbitrum old fee receiver 0xd4F94D0aaa640BBb72b5EEc2D85F6D114D81a88E ~$320k unburnt fee tokens (USDC, USDai, tBTC, WETH)
Arbitrum FeeCollector 0x68E7F1e30E0BC195B19C0441Cdb34c0eD513F8Dd ~$156k already burned into crvUSD
Base old fee receiver 0xe8269B33E47761f552E1a3070119560d5fa8bBD6 ~$268k unburnt fee tokens (USDC, WETH, cbBTC)
Base FeeCollector 0x56Ba5C600db7524c5Ec253567f8821AaadfCdbEA ~$0.8k burned into crvUSD

That is roughly $476k of fee revenue on Arbitrum and $268k on Base.

The proposal also updates the AMM factory fee receivers on Arbitrum and Base to the new FeeCollectors which are using CowSwap burner infrastructure, so pool admin fees on those chains frequently enter the burner infrastructure and are bridged to mainnet. Updating the factory fee receivers routes the unburnt amounts into the burner infrastructure, where they are converted to crvUSD over the coming weekly cycles and bridged to the treasury.

Motivation:

Curve’s L2 fee infrastructure was mostly scattered and inconsistent across chains and required setting manual routes to burn the tokens, meaning fees were not frequently burnt and bridged to mainnet and instead accumulated. While they accumulate, the DAO carries the price risk of the unburnt assets and mostly had to rely on liquidity on Curve itself to burn them, which matters for execution quality. By expanding the CowSwap burner fee infrastructure already used on mainnet to these L2s, fee burning and bridging to mainnet will happen on a weekly basis with tight execution by solvers tapping into the chain’s global liquidity.

This is an optionality-preserving change, not a directional one: it does not decide what the DAO does with the fees, only where they are gathered. Once in the treasury, the funds could be put to work to earn yield (for example via scrvUSD) or distributed onward to veCRV, but that decision is left entirely to the DAO. Nothing is locked or spent, and the routing can be reversed by a follow-up vote at any time.

For context, the DAO treasury currently holds only around $150k, almost entirely crvUSD, so recurring L2 fee revenue would add to it meaningfully over time. These fees are also relevant to ongoing DAO efforts: the sDOLA borrower remediation is being funded through a dedicated donation gauge, whose proposal notes that L2 admin fees could supplement the remediation.

Fee infrastructure deployments:

Chain FeeCollector Hooker CowSwap Burner crvUSD
Ethereum 0xa2Bcd1a4Efbd04B63cd03f5aFf2561106ebCCE00 0x9A9DF35cd8E88565694CA6AD5093c236C7f6f69D 0xC0fC3dDfec95ca45A0D2393F518D3EA1ccF44f8b 0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E
Arbitrum 0x68E7F1e30E0BC195B19C0441Cdb34c0eD513F8Dd 0x7DFA49E4F5A6dEB21B1964Bf520Eeaaf1D965c24 0xd48503022B2fBBa4ADF5A78F56B988Be57d84C91 0x498Bf2B1e120FeD3ad3D42EA2165E9b73f99C1e5
Base 0x56Ba5C600db7524c5Ec253567f8821AaadfCdbEA 0x7150ba598bA7341b7232AD6A13Fd90D759407cC8 0x9c0f9f476b50CF07e704c070366C1aDBF39F264E 0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93

Current hooks and epoch status:

Chain FORWARD epoch Hook target (bridge wrapper) Hook call Current receiver
Ethereum live 0x22530D384cd9915e096ead2Db7F82EE81f8eB468 distribute_fees() n/a
Arbitrum killed none set n/a n/a
Base killed 0x2Fb9ef510f1c52fdfDf84dfa8EEa72E431B7651D bridge(...) mainnet FeeCollector

On Arbitrum and Base the FORWARD epoch is currently killed, so burned crvUSD is stranded on the FeeCollector rather than being forwarded. Re-enabling FORWARD on those two chains is part of this proposal.

Current fee receivers (AMM factories) and target:

The stableswap, twocrypto, and tricrypto factories on each chain share the same fee_receiver. On Arbitrum and Base they still point at older receivers, so those pool fees bypass the current burner infrastructure; they should be updated to the chain’s FeeCollector.

Chain Current factory fee_receiver Change to (new FeeCollector) Action
Arbitrum 0xd4F94D0aaa640BBb72b5EEc2D85F6D114D81a88E (legacy receiver) 0x68E7F1e30E0BC195B19C0441Cdb34c0eD513F8Dd update
Base 0xe8269B33E47761f552E1a3070119560d5fa8bBD6 (previous FeeCollector) 0x56Ba5C600db7524c5Ec253567f8821AaadfCdbEA update

Proposal:

Set the Hooker hooks on Arbitrum and Base to bridge collected crvUSD to the DAO treasury on mainnet, and re-enable the FORWARD epoch on both chains where it is currently disabled. Once the vote passes and executes, fees that are burned into crvUSD on these chains bridge to the treasury each weekly cycle, including the crvUSD already accumulated on each L2 FeeCollector. This applies to all future fees as well: they keep flowing to the treasury indefinitely until the DAO changes the routing with a follow-up vote. Bridged fees arrive on mainnet after each chain’s native L2 to L1 finalization window (roughly 7 days on both Arbitrum and Base), so they reach the treasury with a delay rather than instantly.

A later OWNERSHIP vote can repoint the hooks back to e.g. the mainnet FeeCollector, restoring the prior behaviour. Because the change only sets the bridge destination, the DAO retains full control and can revert it at any later date.

Additionally, update the stableswap, twocrypto, and tricrypto factory fee_receivers on Arbitrum and Base to the chain’s FeeCollector (see the table above), so pool admin fees on those chains enter the newly deployed burner infrastructure.

Scope:

  • This proposal addresses Arbitrum and Base, where the unburnt fees have accumulated. The same burner infrastructure also exists on Gnosis, which already routes normally to its FeeCollector and is left unchanged.
  • Other L2s are not wired into this infrastructure at all, so this captures part of total L2 fee revenue, not all of it.

Specification:

The vote is created through the OWNERSHIP DAO (agent 0x40907540d8a6C65c637785e8f8B742ae6b0b9968) and relayed to Arbitrum and Base via the xgov broadcaster. The relayed messages are executed by each chain’s ownership agent (Arbitrum 0x452030a5D962d37D97A9D65487663cD5fd9C2B32, Base 0x2c163fe0f079d138b9c04f780d735289344C8B80). Per chain: unkill the FORWARD epoch, set the bridge hook to the treasury, and update the three factory fee receivers to the FeeCollector.

Arbitrum:

Call via agent (0x452030a5D962d37D97A9D65487663cD5fd9C2B32):
 β”œβ”€ To: 0x68E7F1e30E0BC195B19C0441Cdb34c0eD513F8Dd   (FeeCollector)
 β”œβ”€ Function: set_killed((address,uint256)[])
 └─ Inputs: [[['0x0000000000000000000000000000000000000000', 0]]]

Call via agent (0x452030a5D962d37D97A9D65487663cD5fd9C2B32):
 β”œβ”€ To: 0x7DFA49E4F5A6dEB21B1964Bf520Eeaaf1D965c24   (Hooker)
 β”œβ”€ Function: set_hooks((address,bytes,(uint256,(uint64,uint64,uint64),uint256,uint256,bool),bool)[])
 └─ Inputs: [[['0x8a5a5299f35614ac558aa290c2d5856edec1b5ad', '0xe5361522000000000000000000000000498bf2b1e120fed3ad3d42ea2165e9b73f99c1e50000000000000000000000006508ef65b0bd57eabd0f1d52685a70433b2d290bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000056bc75e2d63100000', [0, [0, 0, 0], 0, 0, False], True]]]

Call via agent (0x452030a5D962d37D97A9D65487663cD5fd9C2B32):
 β”œβ”€ To: 0x9AF14D26075f142eb3F292D5065EB3faa646167b   (stableswap factory)
 β”œβ”€ Function: set_fee_receiver(address,address)
 └─ Inputs: ['0x0000000000000000000000000000000000000000', '0x68E7F1e30E0BC195B19C0441Cdb34c0eD513F8Dd']

Call via agent (0x452030a5D962d37D97A9D65487663cD5fd9C2B32):
 β”œβ”€ To: 0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F   (twocrypto factory)
 β”œβ”€ Function: set_fee_receiver(address)
 └─ Inputs: ['0x68E7F1e30E0BC195B19C0441Cdb34c0eD513F8Dd']

Call via agent (0x452030a5D962d37D97A9D65487663cD5fd9C2B32):
 β”œβ”€ To: 0xbC0797015fcFc47d9C1856639CaE50D0e69FbEE8   (tricrypto factory)
 β”œβ”€ Function: set_fee_receiver(address)
 └─ Inputs: ['0x68E7F1e30E0BC195B19C0441Cdb34c0eD513F8Dd']

Base:

Call via agent (0x2c163fe0f079d138b9c04f780d735289344C8B80):
 β”œβ”€ To: 0x56Ba5C600db7524c5Ec253567f8821AaadfCdbEA   (FeeCollector)
 β”œβ”€ Function: set_killed((address,uint256)[])
 └─ Inputs: [[['0x0000000000000000000000000000000000000000', 0]]]

Call via agent (0x2c163fe0f079d138b9c04f780d735289344C8B80):
 β”œβ”€ To: 0x7150ba598bA7341b7232AD6A13Fd90D759407cC8   (Hooker)
 β”œβ”€ Function: set_hooks((address,bytes,(uint256,(uint64,uint64,uint64),uint256,uint256,bool),bool)[])
 └─ Inputs: [[['0x2Fb9ef510f1c52fdfDf84dfa8EEa72E431B7651D', '0xe5361522000000000000000000000000417ac0e078398c154edfadd9ef675d30be60af930000000000000000000000006508ef65b0bd57eabd0f1d52685a70433b2d290bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000056bc75e2d63100000', [0, [0, 0, 0], 0, 0, False], True]]]

Call via agent (0x2c163fe0f079d138b9c04f780d735289344C8B80):
 β”œβ”€ To: 0xd2002373543Ce3527023C75e7518C274A51ce712   (stableswap factory)
 β”œβ”€ Function: set_fee_receiver(address,address)
 └─ Inputs: ['0x0000000000000000000000000000000000000000', '0x56Ba5C600db7524c5Ec253567f8821AaadfCdbEA']

Call via agent (0x2c163fe0f079d138b9c04f780d735289344C8B80):
 β”œβ”€ To: 0xc9Fe0C63Af9A39402e8a5514f9c43Af0322b665F   (twocrypto factory)
 β”œβ”€ Function: set_fee_receiver(address)
 └─ Inputs: ['0x56Ba5C600db7524c5Ec253567f8821AaadfCdbEA']

Call via agent (0x2c163fe0f079d138b9c04f780d735289344C8B80):
 β”œβ”€ To: 0xA5961898870943c68037F6848d2D866Ed2016bcB   (tricrypto factory)
 β”œβ”€ Function: set_fee_receiver(address)
 └─ Inputs: ['0x56Ba5C600db7524c5Ec253567f8821AaadfCdbEA']
3 Likes

This vote is live here:

Note that this vote only includes l2 fee direct and does not change fee receivers just yet.