FinancialsVoteDocsDAO GraphExplore
← All proposals

    #98 # [RFC] Update Crosschain Governance Parameters for Avalanche, MegaETH, Soneium, and X Layer

    queued

    Description

    # [RFC] Update Crosschain Governance Parameters for Avalanche, MegaETH, Soneium, and X Layer
    

    Summary

    Secure crosschain messaging is an integral part of Uniswap's governance model. Governance votes like protocol fee adjustments are executed by UNI holders on Ethereum Mainnet and must subsequently be relayed to destination chains.

    This proposal updates Uniswap's crosschain governance system to accommodate the latest best practices. Specifically, we propose to:

    • Transition ownership of the Uniswap v2 and v4 contracts on Soneium and X Layer to CrossChainAccount contracts, which we consider to be the current best practice for executing messages from Ethereum Mainnet on the OP Stack

    • Migrate the entire messaging system for the Avalanche and MegaETH deployments from LayerZero v1 (part of which is being deprecated) to Wormhole

    Note that because Uniswap v3 on both Soneium and X Layer is owned by the v3OpenFeeAdapter, which is owned by the CrossChainAccount, we do not need to change the parameter on v3 on these chains.


    Specification

    Current Configuration - Avalanche and MegaETH

    Both chains currently use LayerZero v1 for governance messaging. The OmnichainProposalSender contract exists on Ethereum and sends messages to OmnichainGovernanceExecutor on remote chains. Additionally, there exists a second OmnichainGovernanceExecutor on MegaETH which owns the ProxyAdmin contract administering the PositionDescriptor periphery contract responsible for rendering LP positions as NFT's.

    | Contract | Chain | Address | | :---- | :---- | :---- | | OmnichainProposalSender | Ethereum | 0xeb0BCF27D1Fb4b25e708fBB815c421Aeb51eA9fc | | OmnichainGovernanceExecutor | Avalanche | 0xeb0BCF27D1Fb4b25e708fBB815c421Aeb51eA9fc | | OmnichainGovernanceExecutor | MegaETH | 0x8819b86ddF592c3aaAa6f9ec7cE1A0f99FC4322c | | OmnichainGovernanceExecutor | MegaETH | 0x51F9629C1e75aF07421E662DBEb2B7dc8deDefd9 |

    Proposed Configuration - Avalanche and MegaETH

    The LayerZero contracts are replaced with the Wormhole bridge infrastructure from uniswapfoundation/Uniswap-Wormhole-Bridge:

    UniswapWormholeSender (Ethereum): The existing sender contract already deployed on mainnet will be reused — no new deployment required.

    UniswapWormholeReceiver (Avalanche and MegaETH): Uniswap Labs has deployed new UniswapWormholeReceiver contracts on both chains. This proposal will authorize them as the trusted governance executors for each chain. Additionally, the ProxyAdmin owned by the second OmnichainGovernanceExecutor will be unified with under the authority of the UniswapWormholeReceiver on MegaETH.

    | Contract | Chain | Address | | :---- | :---- | :---- | | UniswapWormholeSender | Ethereum | 0xf5F4496219F31CDCBa6130B5402873624585615a | | UniswapWormholeReceiver | Avalanche | 0x47eB0Cf11a1626462Da3C830bCDe64c3F582B5a6 | | UniswapWormholeReceiver | MegaETH | 0xa107580F73BD797Bd8b87Ff24e98346D99F93DdB |

    For a detailed discussion of how Wormhole works, please see this report by the Uniswap Foundation's Bridge Assessment Committee.

    Current Configuration - Soneium and X Layer

    On both chains, the UniswapV2Factory's feeToSetter parameter and the v4 PoolManager's owner parameter are configured as the mainnet Timelock's alias address. | Account | Chain | Address | | :---- | :---- | :---- | | Alias Address | X Layer | 0x2BAD8182C09F50c8318d769245beA52C32Be46CD | | Alias Address | Soneium | 0x2BAD8182C09F50c8318d769245beA52C32Be46CD |

    Proposed Configuration - Soneium and X Layer

    This proposal will change those parameters to a CrossChainAccount contract deployed by Uniswap Labs. | Contract | Chain | Address | | :---- | :---- | :---- | | CrossChainAccount | X Layer | 0x044aAF330d7fD6AE683EEc5c1C1d1fFf5196B6b7 | | CrossChainAccount | Soneium | 0x044aAF330d7fD6AE683EEc5c1C1d1fFf5196B6b7 |

    Onchain Proposal Spec

    Pre-proposal (already completed by Uniswap Labs):

    • Deploy UniswapWormholeReceiver on Avalanche C-Chain, configured with the Wormhole Core Bridge address for Avalanche and the address of the existing UniswapWormholeSender.

    • Deploy UniswapWormholeReceiver on MegaETH, configured with the Wormhole Core Bridge address for MegaETH and the address of the existing UniswapWormholeSender.

    • Deploy CrossChainAccount contracts on Soneium and X Layer

    In this proposal (executed if the vote passes):

    Execute nine actions:

    1. (Ethereum) Set Layer Zero "trusted remote" to the OmnichainGovernanceExecutor on MegaETH

    2. (MegaETH) Transfer ownership of the protocol from OmnichainGovernanceExecutor to UniswapWormholeReceiver

    3. (Avalanche) Transfer ownership of the protocol from OmnichainGovernanceExecutor to UniswapWormholeReceiver

    4. (Soneium) Transfer V2 ownership from the aliased Timelock to CrossChainAccount

    5. (Soneium) Transfer V4 ownership from the aliased Timelock to CrossChainAccount

    6. (XLayer) Transfer V2 ownership from aliased Timelock to CrossChainAccount

    7. (XLayer) Transfer V4 ownership from the aliased Timelock to CrossChainAccount

    8. (Ethereum) Set Layer Zero "trusted remote" to the second OmnichainGovernanceExecutor on MegaETH

    9. (MegaETH) Transfer ProxyAdmin ownership from the second OmnichainGovernanceExecutor to UniswapWormholeReceiver

    Notable Implementation Details:

    Regarding MegaETH "trusted remote" configurations: The OmnichainProposalSender on Ethereum must be configured to send messages to the OmnichainGovernanceExecutor on MegaETH, but not the OmnichainGovernanceExecutor on Avalanche. This is due to our OmnichainProposalSender's configuration on initial deployment. The "trusted remote" is Layer Zero's means of defining which sender contracts may interact with which receiver contracts.

    Regarding ProxyAdmin: There exists two ProxyAdmin contracts per chain, one for the NonfungiblePositionDescriptor (V3 NFT renderer) and one for the PositionDescriptor (V4 NFT renderer). The ProxyAdmin of the V3 descriptor is owned a different OmnichainGovernanceExecutor than the OmnichainGovernanceExecutor which owns the rest of the protocol (including the V4 descriptor). We are transferring ownership of all of them to the same WormholeReceiver, which necessitates two separate "setTrustedRemote" actions (one for each governance executor) and two separate ownership transfer actions.

    Regarding CrossChainAccount: The low level OP-stack chain bridge uses OptimismPortal2. In short, OptimismPortal2's internal details means the protocol on Soneium and X Layer are owned by an "aliased" form of the Timelock address on Ethereum; this alias is derived from adding a standard offset to the Ethereum address. This is an unintuitive system and increases user-error in ownership transitions, so we are migrating to the higher level of abstraction defined by the CrosChainAccount system. This ensures the protocol on Soneium and X Layer are owned by a concrete contract with limits and authority checks from the messages bridged from Ethereum. We already use this system on other OP-stack chains, so this is to update more chains to use it as well.

    Next Steps / Timeline

    • RFC: Jun 26, 2026

    • Snapshot: ~1 week after RFC

    • Onchain vote: Following Snapshot, per standard governance cadence


    Supporting Documents

    • Uniswap Foundation Bridge Assessment Report

    • Uniswap-Wormhole-Bridge GitHub

    • LayerZero v1 deprecation announcement

    • Original Avalanche deployment proposal

    For51,519,808 100%
    Against0 0%
    Abstain4 0%
    Quorumreached

    Timeline

    1. Pending
    2. Active
       
      block 25,473,536 → 25,513,856
    3. Succeeded
       
    4. QueuedNow
       
    5. Executed

    Votes (191)

    0x11dA…ECdCFor · 15,003,219 UNI

    Addresses and claims checked, overal procedural requirement that we need to execute... +1

    0x465f…8aA3For · 14,986,062 UNI
    0x6d71…75C3For · 8,007,642 UNI
    0x4421…448DFor · 5,311,814 UNI
    0xA7F6…d555For · 2,891,294 UNI
    0x8d07…A265For · 2,301,740 UNI
    0x5C04…dC62For · 2,270,288 UNI
    0xB933…8Dd1For · 453,493 UNI
    0x3FB1…4C8AFor · 254,296 UNI
    0x8ABf…441aFor · 7,000 UNI
    0x6f9B…8A1dFor · 6,624 UNI
    0x1F3D…0591For · 5,833 UNI
    0xDbc8…4F28For · 5,407 UNI
    0xc5cb…3397For · 3,570 UNI
    0x12b3…0832For · 3,017 UNI
    0xE93D…E2b5For · 1,813 UNI
    0x1B68…eeaDFor · 1,208 UNI
    0xB792…89D7For · 1,040 UNI
    0x21b3…Fa75For · 1,023 UNI
    0xc554…7759For · 1,001 UNI
    0xbE4f…7f4cFor · 1,000 UNI
    0x4053…4f15For · 500 UNI
    0x1106…9FdaFor · 402 UNI
    0xE228…13b1For · 112 UNI
    0xa829…4153For · 79 UNI
    0x7065…dF2DFor · 59 UNI
    0x089A…2dFdFor · 51 UNI

    I support this proposal. Updating Uniswap's cross-chain governance infrastructure to current best practices improves long-term security, maintainability, and operational consistency. Migrating away from deprecated messaging systems while simplifying governance across supported networks is a prudent step for the protocol's continued expansion.

    0xF517…29e5For · 30 UNI
    0xFffd…bf5dFor · 20 UNI
    0x2F2F…f78AFor · 14 UNI
    0xe2bc…F6dbFor · 14 UNI
    0xE0E2…5724For · 13 UNI
    0x1A9a…2E4aFor · 10 UNI
    0x19f6…02ccFor · 10 UNI
    0x37B4…D54dFor · 9 UNI
    0xc82b…d5C4For · 8 UNI
    0x3DDC…05B0For · 8 UNI
    0xaD5d…EB18For · 8 UNI
    0x4Dd7…257DFor · 6 UNI
    0x0151…c3B9Abstain · 4 UNI
    0xAa30…2F53For · 3 UNI
    0x1962…9811For · 3 UNI
    0x870d…44D1For · 3 UNI
    0x87Ac…873FFor · 3 UNI
    0x0940…76cCFor · 3 UNI
    0x1056…8A26For · 2 UNI
    0xeF0e…29A2For · 2 UNI
    0x1729…b879For · 2 UNI
    0xEC66…Ae81For · 2 UNI
    0x53Da…c14BFor · 1 UNI

    Voting timeline

    Proposal actions

    Caller
    Timelock
    0x1a9C…35BC
    →
    setTrustedRemoteAddress→
    Omnichain Governance Proposal Sender
    0xeb0B…A9fc
    ▶remoteChainId, remoteAddress
    remoteChainIduint16
    398
    remoteAddressbytes
    0x8819b86ddf592c3aaaa6f9ec7ce1a0f99fc4322c
    execute· 0.0100 ETH→
    Omnichain Governance Proposal Sender
    0xeb0B…A9fc
    ▶remoteChainId, payload, adapterParams
    remoteChainIduint16
    398
    payloadbytes
    0x0000000000000000000000000000000000000000000000… (2,562 chars)
    0x0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000bf56488c857a881ae7e3bed27cf99c10a7ab7e500000000000000000000000003a5f0cd7d62452b7f899b2a5758bfa57be0de478000000000000000000000000acb7e78fa05d562e0a5d3089ec896d57d057d38e00000000000000000000000007e7c1ced961e2c11196751a1ac76e64b0e8b007000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000024a2e74af6000000000000000000000000a107580f73bd797bd8b87ff24e98346d99f93ddb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002413af4035000000000000000000000000a107580f73bd797bd8b87ff24e98346d99f93ddb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000a107580f73bd797bd8b87ff24e98346d99f93ddb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000a107580f73bd797bd8b87ff24e98346d99f93ddb00000000000000000000000000000000000000000000000000000000
    adapterParamsbytes
    0x000100000000000000000000000000000000000000000000000000000000002dc6c0
    execute· 0.0100 ETH→
    Omnichain Governance Proposal Sender
    0xeb0B…A9fc
    ▶remoteChainId, payload, adapterParams
    remoteChainIduint16
    106
    payloadbytes
    0x0000000000000000000000000000000000000000000000… (3,074 chars)
    0x000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000000050000000000000000000000009e5a52f57b3038f1b8eee45f28b3c1967e22799c000000000000000000000000740b1c1de25031c31ff4fc9a62f554a55cdc1bad00000000000000000000000006380c0e0912312b5150364b9dc4542ba0dbbc850000000000000000000000009ada7d7879214073f40183f3410f2b3f088c63810000000000000000000000009b0481d2a2912051f56dc0b806cafe6bde461c3d000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000024a2e74af600000000000000000000000047eb0cf11a1626462da3c830bcde64c3f582b5a600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002413af403500000000000000000000000047eb0cf11a1626462da3c830bcde64c3f582b5a6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f2fde38b00000000000000000000000047eb0cf11a1626462da3c830bcde64c3f582b5a6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f2fde38b00000000000000000000000047eb0cf11a1626462da3c830bcde64c3f582b5a6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f2fde38b00000000000000000000000047eb0cf11a1626462da3c830bcde64c3f582b5a600000000000000000000000000000000000000000000000000000000
    adapterParamsbytes
    0x000100000000000000000000000000000000000000000000000000000000002dc6c0
    depositTransaction→
    Optimism Portal
    0x88e5…AE92
    ⇢ impl
    OptimismPortal2
    0xe89F…D3C2
    ▶_value, _gasLimit, _isCreation
    _valueuint256
    0
    _gasLimituint64
    200000
    _isCreationbool
    false
    ↳setFeeToSetter→
    UniswapV2Factory
    0x97Fe…28CE
    _feeToSetter→
    CrossChainAccount
    0x044a…B6b7
    depositTransaction→
    Optimism Portal
    0x88e5…AE92
    ⇢ impl
    OptimismPortal2
    0xe89F…D3C2
    ▶_value, _gasLimit, _isCreation
    _valueuint256
    0
    _gasLimituint64
    200000
    _isCreationbool
    false
    ↳transferOwnership→
    PoolManager
    0x360E…FB32
    newOwner→
    CrossChainAccount
    0x044a…B6b7
    0xe9e05c42→
    Proxy
    0x6405…9993
    ⇢ impl
    OptimismPortal2
    0xa0fE…4033
    0xe9e05c42→
    Proxy
    0x6405…9993
    ⇢ impl
    OptimismPortal2
    0xa0fE…4033
    setTrustedRemoteAddress→
    Omnichain Governance Proposal Sender
    0xeb0B…A9fc
    ▶remoteChainId, remoteAddress
    remoteChainIduint16
    398
    remoteAddressbytes
    0x51f9629c1e75af07421e662dbeb2b7dc8dedefd9
    execute· 0.0100 ETH→
    Omnichain Governance Proposal Sender
    0xeb0B…A9fc
    ▶remoteChainId, payload, adapterParams
    remoteChainIduint16
    398
    payloadbytes
    0x0000000000000000000000000000000000000000000000… (1,026 chars)
    0x000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000dafbceb5ca32dc1dd27a413da361f32636694bc400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000a107580f73bd797bd8b87ff24e98346d99f93ddb00000000000000000000000000000000000000000000000000000000
    adapterParamsbytes
    0x000100000000000000000000000000000000000000000000000000000000002dc6c0
    ←Previous#97Next→