FinancialsVoteDocsDAO GraphExplore
← All proposals
    ←Previous#28#30Next→

    #29 Fix the Cross Chain Messaging Bridge on Arbitrum

    executed

    Payment Status

    Description

    Fix the Cross Chain Messaging Bridge on Arbitrum

    Background:

    On Ethereum, Uniswap Labs governance consists of a suite of smart contracts. However, in addition to its original deployment on Ethereum L1 mainnet, Uniswap contracts are also deployed on four additional domains - Polygon, Optimism, Celo, and Arbitrum.

    Uniswap deployments on these domains do not have native access to the on-chain governance system, nor the UNI tokens which grant voting power in this system on Ethereum mainnet; in order for the existing Uniswap governance system to execute proposals governing these deployments, there must be some method of passing governance decisions from Ethereum mainnet to other domains.

    Presently, this method has been implemented differently for each of the four chains. The system governing Optimism and Polygon follow similar design principles, and should be functional for passing proposals.

    The system governing the Arbitrum deployment was mis-configured due to a mis-communication between developers, and will require more involved intervention to repair.

    Problem:

    Arbitrum was initially going to allow L1 addresses to pass calls directly to L2 with msg.sender preserved. After realizing security issues with this approach, Arbitrum team instead shifted their approach to use aliasing (this method transforms L1 addresses to be a different address when represented on an L2):

    Uniswap Labs was not made aware of this change in approach before deploying on Arbitrum. The Uniswap Factory was deployed with the owner set to the same, unaliased address of the L1 Uniswap Timelock contract. To verify, see: owner address https://arbiscan.io/address/0x1a9c8182c09f50c8318d769245bea52c32be35bc set at https://arbiscan.io/address/0x1F98431c8aD98523631AE4a59f267346ea31F984#readContract This address on Arbitrum is an EOA (not a contract) which nobody has the private key to control The governance deployer key on Arbitrum has burned the nonce that could deploy a contract to this address, verifiable here: https://arbiscan.io/address/0x41653c7d61609d856f29355e404f310ec4142cfb Therefore, nobody can execute governance proposals on Arbitrum in the current state

    Solution:

    To fix the cross chain messaging bridge, Arbitrum proposes the following:

    1. Final governance vote kicks off (after Temperature and Consensus checks pass).
    2. Before the vote passes, Arbitrum will add a temporary exception to disable address-aliasing for messages from the L1 TimeLock contract, 0x1a9c8182c09f50c8318d769245bea52c32be35bc. Arbitrum will notify the Uniswap community via the Uniswap governance forum once this is done.
    3. Once the final on-chain governance vote passes, the Uniswap governance contract will send a cross-chain message from the L1 Timelock contract to call setOwner on the L2 Uniswap factory, setting the owner to the L1 Timelock’s address alias, 0x2BAD8182C09F50c8318d769245beA52C32Be46CD.
    • <em>This is the L1 Timelock address + the alias offset: 0x1a9c8182c09f50c8318d769245bea52c32be35bc + 0x111 1000000000000000000000000000000001111 as described further at https://developer.offchainlabs.com/arbos/l1-to-l2-messaging#address-aliasing</em>
    1. We will be able to see when this is completed on-chain. Arbitrum will re-enable aliasing for the L1 Timelock contract address. Once this is complete, cross-chain governance between Uniswap and Arbitrum will be fully functional.

    Conclusion

    Uniswap is currently the leading decentralized exchange by TVL on Arbitrum, and if this proposal passes the temperature check and continues along the governance process, it will strengthen the current relationship between the two projects.

    Link to snapshot: https://snapshot.org/#/uniswap/proposal/0x31c3409c09f5561d6aff1e0adeee6c83a5e73768a5d5c3e01b2a48a3894eda54

    For55,568,689 100%
    Against36 0%
    Abstain11 0%
    Quorumreached

    Timeline

    1. Pending
    2. Active
       
      block 16,213,190 → 16,253,510
    3. Succeeded
       
    4. Queued
       
    5. Executed
       

    Votes (1,821)

    0xA2BF…D1d1For · 7,900,003 UNI
    0x683a…6C02For · 7,500,862 UNI
    0x8962…d429For · 7,032,866 UNI
    0xa6e8…Eef6For · 4,918,754 UNI
    0xb55a…42b1For · 4,807,946 UNI
    0xB062…9108For · 3,789,221 UNI
    0x8d07…A265For · 3,301,168 UNI
    0x067b…4A76For · 3,100,045 UNI
    0x0703…961bFor · 3,000,106 UNI
    0x553F…2Ac2For · 2,500,013 UNI
    0xed11…bb04For · 2,500,005 UNI
    0x7AE1…E585For · 2,500,000 UNI
    0x212B…6DB5For · 2,500,000 UNI
    0xA7F6…d555For · 200,609 UNI
    0x48A9…FeB7For · 2,771 UNI
    0x30FE…8cb0For · 1,346 UNI
    0x3ff5…f11FFor · 1,082 UNI
    0xCF7e…5515For · 614 UNI
    0x7Eaf…3555For · 505 UNI
    0x6316…5901For · 500 UNI
    0x1320…D517For · 424 UNI
    0xD105…95b2For · 408 UNI
    0x1106…9FdaFor · 401 UNI
    0xe8Bb…8CE9For · 400 UNI
    0x0841…0918For · 359 UNI
    0x3c00…8Cb5For · 309 UNI
    0xF96a…f2F5For · 272 UNI
    0x4029…7E3FFor · 245 UNI
    0x9D32…2462For · 200 UNI
    0x614A…c021For · 200 UNI
    0x6f2b…aa85For · 199 UNI
    0xCeA3…2b17For · 125 UNI
    0xc233…0916For · 117 UNI
    0xC208…dbc9For · 116 UNI
    0x784c…E741For · 109 UNI
    0xED4A…150dFor · 106 UNI
    0xEE69…8a72For · 105 UNI
    0xC7B4…2c91For · 104 UNI
    0x3AE5…Bf14For · 102 UNI
    0xD589…5685For · 100 UNI
    0x814e…6C5DFor · 100 UNI
    0xFf9F…d7ddFor · 100 UNI
    0xDF46…49cAFor · 100 UNI
    0x69da…1232For · 100 UNI
    0x6268…bcE4For · 84 UNI
    0x11ac…Cb98For · 71 UNI
    0x3BC7…fa01For · 66 UNI
    0x93E4…1Bf0For · 62 UNI
    0xDB8C…4196For · 57 UNI
    0xf614…A116For · 53 UNI

    Voting timeline

    Proposal actions

    Caller
    Timelock
    0x1a9C…35BC
    →
    uniswapCreateRetryableTicket· 0.0002 ETH→
    Delayed Inbox
    0x4Dbd…AB3f
    ⇢ impl
    Inbox
    0x5aED…FE94
    to→
    UniswapV3Factory
    0x1F98…F984
    excessFeeRefundAddress→
    Timelock
    0x1a9C…35BC
    callValueRefundAddress→
    Timelock
    0x1a9C…35BC
    ▶l2CallValue, maxSubmissionCost, gasLimit, maxFeePerGas, data
    l2CallValueuint256
    0
    maxSubmissionCostuint256
    161600000000000
    gasLimituint256
    42750
    maxFeePerGasuint256
    1000000000
    databytes
    0x13af40350000000000000000000000002bad8182c09f50c8318d769245bea52c32be46cd