From 5b37d241817541bd43d2e6144372988cfeafa646 Mon Sep 17 00:00:00 2001 From: Mark Tyneway Date: Tue, 26 Sep 2023 13:20:52 -0700 Subject: [PATCH] op-chain-ops: clean up `op-upgrade` Now `op-upgrade` can work when there is not a chain config present for a specific chain. It will reuse the on chain values if there is not a deploy config present. The deploy config values should be kept up to date with what is on chain, meaning that we should not do one off upgrades that do not read in the deploy config as input. Chain state should be modified only by reading in deploy config. Example tx generated that upgrades op-goerli, base-goerli and zora-goerli: ```json { "version": "", "chainId": null, "createdAt": 0, "meta": { "createdFromSafeAddress": "", "createdFromOwnerAddress": "", "name": "", "description": "" }, "transactions": [ { "to": "0x01d3670863c3F4b24D7b107900f0b75d4BbC6e0d", "value": "0", "data": "0x9623609d0000000000000000000000005086d1eef304eb5284a0f6720f79403b4e9be294000000000000000000000000f4d5682da3ad1820ea83e1cee5fd92a3a7babc30000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000005b47e1a08ea6d985d6649300584e6722ec4b1383", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x0000000000000000000000005b47e1a08ea6d985d6649300584e6722ec4b1383", "_implementation": "0xf4d5682dA3ad1820ea83E1cEE5Fd92a3A7BabC30", "_proxy": "0x5086d1eEF304eb5284A0f6720f79403b4e9bE294" } }, { "to": "0x01d3670863c3F4b24D7b107900f0b75d4BbC6e0d", "value": "0", "data": "0x9623609d0000000000000000000000008dd330dde8d9898d43b4dc840da27a07df91b3c90000000000000000000000008add7fb53a242e827373519d260ee3b8f7612ba1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000005086d1eef304eb5284a0f6720f79403b4e9be294", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x0000000000000000000000005086d1eef304eb5284a0f6720f79403b4e9be294", "_implementation": "0x8ADd7FB53A242e827373519d260EE3B8F7612Ba1", "_proxy": "0x8DD330DdE8D9898d43b4dc840Da27A07dF91b3c9" } }, { "to": "0x01d3670863c3F4b24D7b107900f0b75d4BbC6e0d", "value": "0", "data": "0x9623609d000000000000000000000000636af16bf2f682dd3109e60102b8e1a089fedaa80000000000000000000000009c540e769b9453d174edb683a90d9170e6559f16000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000005086d1eef304eb5284a0f6720f79403b4e9be294", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x0000000000000000000000005086d1eef304eb5284a0f6720f79403b4e9be294", "_implementation": "0x9c540e769B9453d174EdB683a90D9170e6559F16", "_proxy": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" } }, { "to": "0x01d3670863c3F4b24D7b107900f0b75d4BbC6e0d", "value": "0", "data": "0x9623609d000000000000000000000000e6dfba0953616bacab0c9a8ecb3a9bba77fc15c00000000000000000000000007a811c9862ab54e677eeda7e6f075ac86a1f551e0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000003df8280000000000000000000000000000000000000000000000000000000063c05ab400000000000000000000000002b1786a85ec3f71fbbba46507780db7cf9014f6000000000000000000000000bc1233d0c3e6b5d53ab455cf65a6623f6dcd7e4f", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x00000000000000000000000000000000000000000000000000000000003df8280000000000000000000000000000000000000000000000000000000063c05ab400000000000000000000000002b1786a85ec3f71fbbba46507780db7cf9014f6000000000000000000000000bc1233d0c3e6b5d53ab455cf65a6623f6dcd7e4f", "_implementation": "0x7a811C9862ab54E677EEdA7e6F075aC86a1f551e", "_proxy": "0xE6Dfba0953616Bacab0c9A8ecb3a9BBa77FC15c0" } }, { "to": "0x01d3670863c3F4b24D7b107900f0b75d4BbC6e0d", "value": "0", "data": "0x9623609d000000000000000000000000883dcf8b05364083d849d8bd226bc8cb4c42f9c5000000000000000000000000135b9097a0e1e56190251c62f111b676fb4ec49400000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000636af16bf2f682dd3109e60102b8e1a089fedaa8", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x000000000000000000000000636af16bf2f682dd3109e60102b8e1a089fedaa8", "_implementation": "0x135B9097A0e1e56190251c62f111B676Fb4Ec494", "_proxy": "0x883dcF8B05364083D849D8bD226bC8Cb4c42F9C5" } }, { "to": "0x01d3670863c3F4b24D7b107900f0b75d4BbC6e0d", "value": "0", "data": "0x9623609d0000000000000000000000005b47e1a08ea6d985d6649300584e6722ec4b13830000000000000000000000008cfa294bd0c6f63cd65d492bdb754eacf684d87100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000e6dfba0953616bacab0c9a8ecb3a9bba77fc15c0000000000000000000000000bc1233d0c3e6b5d53ab455cf65a6623f6dcd7e4f000000000000000000000000ae851f927ee40de99aabb7461c00f9622ab91d600000000000000000000000000000000000000000000000000000000000000000", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x000000000000000000000000e6dfba0953616bacab0c9a8ecb3a9bba77fc15c0000000000000000000000000bc1233d0c3e6b5d53ab455cf65a6623f6dcd7e4f000000000000000000000000ae851f927ee40de99aabb7461c00f9622ab91d600000000000000000000000000000000000000000000000000000000000000000", "_implementation": "0x8Cfa294bD0c6F63cD65d492bdB754eAcf684D871", "_proxy": "0x5b47E1A08Ea6d985D6649300584e6722Ec4B1383" } }, { "to": "0x01d3670863c3F4b24D7b107900f0b75d4BbC6e0d", "value": "0", "data": "0x9623609d000000000000000000000000ae851f927ee40de99aabb7461c00f9622ab91d6000000000000000000000000009323d05868393c7eba8190bac173f843b82030a00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000280000000000000000000000000bc1233d0c3e6b5d53ab455cf65a6623f6dcd7e4f000000000000000000000000000000000000000000000000000000000000083400000000000000000000000000000000000000000000000000000000000f42400000000000000000000000007431310e026b69bfc676c0013e12a1a11411eec90000000000000000000000000000000000000000000000000000000002faf080000000000000000000000000715b7219d986641df9efd9c7ef01218d528e19ec0000000000000000000000000000000000000000000000000000000001312d00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000007ea6b6000000000000000000000000ff000000000000000000000000000000000004200000000000000000000000005086d1eef304eb5284a0f6720f79403b4e9be2940000000000000000000000008dd330dde8d9898d43b4dc840da27a07df91b3c9000000000000000000000000636af16bf2f682dd3109e60102b8e1a089fedaa8000000000000000000000000e6dfba0953616bacab0c9a8ecb3a9bba77fc15c00000000000000000000000005b47e1a08ea6d985d6649300584e6722ec4b1383000000000000000000000000883dcf8b05364083d849d8bd226bc8cb4c42f9c5", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x000000000000000000000000bc1233d0c3e6b5d53ab455cf65a6623f6dcd7e4f000000000000000000000000000000000000000000000000000000000000083400000000000000000000000000000000000000000000000000000000000f42400000000000000000000000007431310e026b69bfc676c0013e12a1a11411eec90000000000000000000000000000000000000000000000000000000002faf080000000000000000000000000715b7219d986641df9efd9c7ef01218d528e19ec0000000000000000000000000000000000000000000000000000000001312d00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000007ea6b6000000000000000000000000ff000000000000000000000000000000000004200000000000000000000000005086d1eef304eb5284a0f6720f79403b4e9be2940000000000000000000000008dd330dde8d9898d43b4dc840da27a07df91b3c9000000000000000000000000636af16bf2f682dd3109e60102b8e1a089fedaa8000000000000000000000000e6dfba0953616bacab0c9a8ecb3a9bba77fc15c00000000000000000000000005b47e1a08ea6d985d6649300584e6722ec4b1383000000000000000000000000883dcf8b05364083d849d8bd226bc8cb4c42f9c5", "_implementation": "0x09323D05868393c7EBa8190BAc173f843b82030a", "_proxy": "0xAe851f927Ee40dE99aaBb7461C00f9622ab91d60" } }, { "to": "0x6Cce41f8C6AABf78E1DA6caF8f78B14946dF6FcF", "value": "0", "data": "0x9623609d000000000000000000000000d87342e16352d33170557a7da1e5fb966a60fafc000000000000000000000000f4d5682da3ad1820ea83e1cee5fd92a3a7babc3000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000db9f51790365e7dc196e7d072728df39be958ace", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x000000000000000000000000db9f51790365e7dc196e7d072728df39be958ace", "_implementation": "0xf4d5682dA3ad1820ea83E1cEE5Fd92a3A7BabC30", "_proxy": "0xD87342e16352D33170557A7dA1e5fB966a60FafC" } }, { "to": "0x6Cce41f8C6AABf78E1DA6caF8f78B14946dF6FcF", "value": "0", "data": "0x9623609d00000000000000000000000057c1c6b596ce90c0e010c358dd4aa052404bb70f0000000000000000000000008add7fb53a242e827373519d260ee3b8f7612ba100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000d87342e16352d33170557a7da1e5fb966a60fafc", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x000000000000000000000000d87342e16352d33170557a7da1e5fb966a60fafc", "_implementation": "0x8ADd7FB53A242e827373519d260EE3B8F7612Ba1", "_proxy": "0x57C1C6b596ce90C0e010c358DD4Aa052404bB70F" } }, { "to": "0x6Cce41f8C6AABf78E1DA6caF8f78B14946dF6FcF", "value": "0", "data": "0x9623609d0000000000000000000000007cc09ac2452d6555d5e0c213ab9e2d44efbfc9560000000000000000000000009c540e769b9453d174edb683a90d9170e6559f1600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000d87342e16352d33170557a7da1e5fb966a60fafc", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x000000000000000000000000d87342e16352d33170557a7da1e5fb966a60fafc", "_implementation": "0x9c540e769B9453d174EdB683a90D9170e6559F16", "_proxy": "0x7CC09AC2452D6555d5e0C213Ab9E2d44eFbFc956" } }, { "to": "0x6Cce41f8C6AABf78E1DA6caF8f78B14946dF6FcF", "value": "0", "data": "0x9623609d000000000000000000000000dd292c9eed00f6a32ff5245d0bcd7f2a15f24e000000000000000000000000007a811c9862ab54e677eeda7e6f075ac86a1f551e0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a98b585654fc03e2fea3fab56e1c851e4f5c2b54000000000000000000000000fbafdf2c3762b571310e3a726a6cd4443e6ff3da", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a98b585654fc03e2fea3fab56e1c851e4f5c2b54000000000000000000000000fbafdf2c3762b571310e3a726a6cd4443e6ff3da", "_implementation": "0x7a811C9862ab54E677EEdA7e6F075aC86a1f551e", "_proxy": "0xdD292C9eEd00f6A32Ff5245d0BCd7f2a15f24e00" } }, { "to": "0x6Cce41f8C6AABf78E1DA6caF8f78B14946dF6FcF", "value": "0", "data": "0x9623609d00000000000000000000000069e16c9e03d7def18a5d88e3c5c2e037946346ef000000000000000000000000135b9097a0e1e56190251c62f111b676fb4ec494000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000007cc09ac2452d6555d5e0c213ab9e2d44efbfc956", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x0000000000000000000000007cc09ac2452d6555d5e0c213ab9e2d44efbfc956", "_implementation": "0x135B9097A0e1e56190251c62f111B676Fb4Ec494", "_proxy": "0x69E16C9e03d7Def18A5d88e3c5c2e037946346eF" } }, { "to": "0x6Cce41f8C6AABf78E1DA6caF8f78B14946dF6FcF", "value": "0", "data": "0x9623609d000000000000000000000000db9f51790365e7dc196e7d072728df39be958ace0000000000000000000000008cfa294bd0c6f63cd65d492bdb754eacf684d87100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000dd292c9eed00f6a32ff5245d0bcd7f2a15f24e0000000000000000000000000045effbd799ab49122eeeab75b78d9c56a187f9a7000000000000000000000000f66c9a5e4fe1a8a9bc44a4af80505a4c3620ee640000000000000000000000000000000000000000000000000000000000000000", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x000000000000000000000000dd292c9eed00f6a32ff5245d0bcd7f2a15f24e0000000000000000000000000045effbd799ab49122eeeab75b78d9c56a187f9a7000000000000000000000000f66c9a5e4fe1a8a9bc44a4af80505a4c3620ee640000000000000000000000000000000000000000000000000000000000000000", "_implementation": "0x8Cfa294bD0c6F63cD65d492bdB754eAcf684D871", "_proxy": "0xDb9F51790365e7dc196e7D072728df39Be958ACe" } }, { "to": "0x6Cce41f8C6AABf78E1DA6caF8f78B14946dF6FcF", "value": "0", "data": "0x9623609d000000000000000000000000f66c9a5e4fe1a8a9bc44a4af80505a4c3620ee6400000000000000000000000009323d05868393c7eba8190bac173f843b82030a0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000028000000000000000000000000023ba22dd7923f3a3f2495bb32a6f3c9b9cd1ec6c000000000000000000000000000000000000000000000000000000000000083400000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000427c9a666d3b27873111ce3894712bf64c6343a00000000000000000000000000000000000000000000000000000000001c9c380000000000000000000000000c890c7cbf8400aa9a2c908ab3caacd97e0018d850000000000000000000000000000000000000000000000000000000001312d00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf628e24ac574866d3d0a7cfe4e9da7278b7ef13000000000000000000000000d87342e16352d33170557a7da1e5fb966a60fafc00000000000000000000000057c1c6b596ce90c0e010c358dd4aa052404bb70f0000000000000000000000007cc09ac2452d6555d5e0c213ab9e2d44efbfc956000000000000000000000000dd292c9eed00f6a32ff5245d0bcd7f2a15f24e00000000000000000000000000db9f51790365e7dc196e7d072728df39be958ace00000000000000000000000069e16c9e03d7def18a5d88e3c5c2e037946346ef", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x00000000000000000000000023ba22dd7923f3a3f2495bb32a6f3c9b9cd1ec6c000000000000000000000000000000000000000000000000000000000000083400000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000427c9a666d3b27873111ce3894712bf64c6343a00000000000000000000000000000000000000000000000000000000001c9c380000000000000000000000000c890c7cbf8400aa9a2c908ab3caacd97e0018d850000000000000000000000000000000000000000000000000000000001312d00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf628e24ac574866d3d0a7cfe4e9da7278b7ef13000000000000000000000000d87342e16352d33170557a7da1e5fb966a60fafc00000000000000000000000057c1c6b596ce90c0e010c358dd4aa052404bb70f0000000000000000000000007cc09ac2452d6555d5e0c213ab9e2d44efbfc956000000000000000000000000dd292c9eed00f6a32ff5245d0bcd7f2a15f24e00000000000000000000000000db9f51790365e7dc196e7d072728df39be958ace00000000000000000000000069e16c9e03d7def18a5d88e3c5c2e037946346ef", "_implementation": "0x09323D05868393c7EBa8190BAc173f843b82030a", "_proxy": "0xF66C9A5E4fE1A8a9bc44a4aF80505a4C3620Ee64" } }, { "to": "0xbc0Fc544736b7d610D9b05F31B182C8154BEf336", "value": "0", "data": "0x9623609d0000000000000000000000008e5693140ea606bceb98761d9beb1bc87383706d000000000000000000000000f4d5682da3ad1820ea83e1cee5fd92a3a7babc3000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000e93c8cd0d409341205a592f8c4ac1a5fe5585cfa", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x000000000000000000000000e93c8cd0d409341205a592f8c4ac1a5fe5585cfa", "_implementation": "0xf4d5682dA3ad1820ea83E1cEE5Fd92a3A7BabC30", "_proxy": "0x8e5693140eA606bcEB98761d9beB1BC87383706D" } }, { "to": "0xbc0Fc544736b7d610D9b05F31B182C8154BEf336", "value": "0", "data": "0x9623609d0000000000000000000000005e0c967457347d5175bf82e8cccc6480fcd7e5680000000000000000000000008add7fb53a242e827373519d260ee3b8f7612ba1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000008e5693140ea606bceb98761d9beb1bc87383706d", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x0000000000000000000000008e5693140ea606bceb98761d9beb1bc87383706d", "_implementation": "0x8ADd7FB53A242e827373519d260EE3B8F7612Ba1", "_proxy": "0x5E0c967457347D5175bF82E8CCCC6480FCD7e568" } }, { "to": "0xbc0Fc544736b7d610D9b05F31B182C8154BEf336", "value": "0", "data": "0x9623609d000000000000000000000000fa6d8ee5be770f84fc001d098c4bd604fe01284a0000000000000000000000009c540e769b9453d174edb683a90d9170e6559f16000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000008e5693140ea606bceb98761d9beb1bc87383706d", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x0000000000000000000000008e5693140ea606bceb98761d9beb1bc87383706d", "_implementation": "0x9c540e769B9453d174EdB683a90D9170e6559F16", "_proxy": "0xfA6D8Ee5BE770F84FC001D098C4bD604Fe01284a" } }, { "to": "0xbc0Fc544736b7d610D9b05F31B182C8154BEf336", "value": "0", "data": "0x9623609d0000000000000000000000002a35891ff30313ccfa6ce88dcf3858bb075a22980000000000000000000000007a811c9862ab54e677eeda7e6f075ac86a1f551e0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063d96d100000000000000000000000004f28beb40635093b72def43d0ad801cdd8e0e6fe000000000000000000000000f30b40411c4d76228092e7ecdc1593c996b13d22", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063d96d100000000000000000000000004f28beb40635093b72def43d0ad801cdd8e0e6fe000000000000000000000000f30b40411c4d76228092e7ecdc1593c996b13d22", "_implementation": "0x7a811C9862ab54E677EEdA7e6F075aC86a1f551e", "_proxy": "0x2A35891ff30313CcFa6CE88dcf3858bb075A2298" } }, { "to": "0xbc0Fc544736b7d610D9b05F31B182C8154BEf336", "value": "0", "data": "0x9623609d000000000000000000000000a88530e2dd811363ca3ef479dbab3c0bf73d90b1000000000000000000000000135b9097a0e1e56190251c62f111b676fb4ec49400000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000fa6d8ee5be770f84fc001d098c4bd604fe01284a", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x000000000000000000000000fa6d8ee5be770f84fc001d098c4bd604fe01284a", "_implementation": "0x135B9097A0e1e56190251c62f111B676Fb4Ec494", "_proxy": "0xa88530E2DD811363cA3Ef479dBab3C0BF73d90b1" } }, { "to": "0xbc0Fc544736b7d610D9b05F31B182C8154BEf336", "value": "0", "data": "0x9623609d000000000000000000000000e93c8cd0d409341205a592f8c4ac1a5fe5585cfa0000000000000000000000008cfa294bd0c6f63cd65d492bdb754eacf684d871000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000800000000000000000000000002a35891ff30313ccfa6ce88dcf3858bb075a22980000000000000000000000004c35ca57616e0d5fd808574772f632d8da4eadca000000000000000000000000b15eea247ece011c68a614e4a77ad648ff495bc10000000000000000000000000000000000000000000000000000000000000000", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x0000000000000000000000002a35891ff30313ccfa6ce88dcf3858bb075a22980000000000000000000000004c35ca57616e0d5fd808574772f632d8da4eadca000000000000000000000000b15eea247ece011c68a614e4a77ad648ff495bc10000000000000000000000000000000000000000000000000000000000000000", "_implementation": "0x8Cfa294bD0c6F63cD65d492bdB754eAcf684D871", "_proxy": "0xe93c8cD0D409341205A592f8c4Ac1A5fe5585cfA" } }, { "to": "0xbc0Fc544736b7d610D9b05F31B182C8154BEf336", "value": "0", "data": "0x9623609d000000000000000000000000b15eea247ece011c68a614e4a77ad648ff495bc100000000000000000000000009323d05868393c7eba8190bac173f843b82030a000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000002800000000000000000000000004c35ca57616e0d5fd808574772f632d8da4eadca000000000000000000000000000000000000000000000000000000000000083400000000000000000000000000000000000000000000000000000000000f424000000000000000000000000073b4168cc87f35cc239200a20eb841cded23493b00000000000000000000000000000000000000000000000000000000017d784000000000000000000000000032a4e99a72c11e9dd3dc159909a2d7bd86c1bc510000000000000000000000000000000000000000000000000000000001312d00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084531000000000000000000000000000000000000000000000000000000000008e5693140ea606bceb98761d9beb1bc87383706d0000000000000000000000005e0c967457347d5175bf82e8cccc6480fcd7e568000000000000000000000000fa6d8ee5be770f84fc001d098c4bd604fe01284a0000000000000000000000002a35891ff30313ccfa6ce88dcf3858bb075a2298000000000000000000000000e93c8cd0d409341205a592f8c4ac1a5fe5585cfa000000000000000000000000a88530e2dd811363ca3ef479dbab3c0bf73d90b1", "contractMethod": { "inputs": [ { "internalType": "address", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "upgradeAndCall", "payable": false }, "contractInputsValues": { "_data": "0x0000000000000000000000004c35ca57616e0d5fd808574772f632d8da4eadca000000000000000000000000000000000000000000000000000000000000083400000000000000000000000000000000000000000000000000000000000f424000000000000000000000000073b4168cc87f35cc239200a20eb841cded23493b00000000000000000000000000000000000000000000000000000000017d784000000000000000000000000032a4e99a72c11e9dd3dc159909a2d7bd86c1bc510000000000000000000000000000000000000000000000000000000001312d00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084531000000000000000000000000000000000000000000000000000000000008e5693140ea606bceb98761d9beb1bc87383706d0000000000000000000000005e0c967457347d5175bf82e8cccc6480fcd7e568000000000000000000000000fa6d8ee5be770f84fc001d098c4bd604fe01284a0000000000000000000000002a35891ff30313ccfa6ce88dcf3858bb075a2298000000000000000000000000e93c8cd0d409341205a592f8c4ac1a5fe5585cfa000000000000000000000000a88530e2dd811363ca3ef479dbab3c0bf73d90b1", "_implementation": "0x09323D05868393c7EBa8190BAc173f843b82030a", "_proxy": "0xb15eea247eCE011C68a614e4a77AD648ff495bc1" } } ] } ``` --- op-chain-ops/cmd/op-upgrade/main.go | 14 +- op-chain-ops/upgrades/l1.go | 172 ++++++++++++++---- .../deploy-config/zora-goerli.json | 2 +- 3 files changed, 140 insertions(+), 48 deletions(-) diff --git a/op-chain-ops/cmd/op-upgrade/main.go b/op-chain-ops/cmd/op-upgrade/main.go index 743510047397..443ae9440a2e 100644 --- a/op-chain-ops/cmd/op-upgrade/main.go +++ b/op-chain-ops/cmd/op-upgrade/main.go @@ -99,15 +99,10 @@ func entrypoint(ctx *cli.Context) error { batch := safe.Batch{} for _, chainConfig := range targets { - name, err := toDeployConfigName(chainConfig) - if err != nil { - log.Warn("Skipping unsupported network", "name", chainConfig.Name) - continue - } - + name, _ := toDeployConfigName(chainConfig) config, err := genesis.NewDeployConfigWithNetwork(name, deployConfig) if err != nil { - return err + log.Warn("Cannot find deploy config for network", "name", chainConfig.Name, "deploy-config-name", name, "path", deployConfig) } clients, err := clients.NewClients(ctx.String("l1-rpc-url"), chainConfig.PublicRPC) @@ -168,7 +163,7 @@ func entrypoint(ctx *cli.Context) error { return fmt.Errorf("error checking L1: %w", err) } - if err := upgrades.L1(&batch, list, *addresses, config, chainConfig); err != nil { + if err := upgrades.L1(&batch, list, *addresses, config, chainConfig, clients.L1Client); err != nil { return err } } @@ -207,6 +202,9 @@ func toDeployConfigName(cfg *superchain.ChainConfig) (string, error) { if cfg.Name == "OP-Mainnet" { return "mainnet", nil } + if cfg.Name == "Zora Goerli" { + return "zora-goerli", nil + } return "", fmt.Errorf("unsupported chain name %s", cfg.Name) } diff --git a/op-chain-ops/upgrades/l1.go b/op-chain-ops/upgrades/l1.go index 354e15636ef3..d740323d4445 100644 --- a/op-chain-ops/upgrades/l1.go +++ b/op-chain-ops/upgrades/l1.go @@ -4,6 +4,7 @@ import ( "fmt" "math/big" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum-optimism/optimism/op-bindings/bindings" @@ -14,33 +15,33 @@ import ( ) // L1 will add calls for upgrading each of the L1 contracts. -func L1(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig) error { - if err := L1CrossDomainMessenger(batch, implementations, list, config, chainConfig); err != nil { - return err +func L1(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig, backend bind.ContractBackend) error { + if err := L1CrossDomainMessenger(batch, implementations, list, config, chainConfig, backend); err != nil { + return fmt.Errorf("upgrading L1CrossDomainMessenger: %w", err) } - if err := L1ERC721Bridge(batch, implementations, list, config, chainConfig); err != nil { - return err + if err := L1ERC721Bridge(batch, implementations, list, config, chainConfig, backend); err != nil { + return fmt.Errorf("upgrading L1ERC721Bridge: %w", err) } - if err := L1StandardBridge(batch, implementations, list, config, chainConfig); err != nil { - return err + if err := L1StandardBridge(batch, implementations, list, config, chainConfig, backend); err != nil { + return fmt.Errorf("upgrading L1StandardBridge: %w", err) } - if err := L2OutputOracle(batch, implementations, list, config, chainConfig); err != nil { - return err + if err := L2OutputOracle(batch, implementations, list, config, chainConfig, backend); err != nil { + return fmt.Errorf("upgrading L2OutputOracle: %w", err) } - if err := OptimismMintableERC20Factory(batch, implementations, list, config, chainConfig); err != nil { - return err + if err := OptimismMintableERC20Factory(batch, implementations, list, config, chainConfig, backend); err != nil { + return fmt.Errorf("upgrading OptimismMintableERC20Factory: %w", err) } - if err := OptimismPortal(batch, implementations, list, config, chainConfig); err != nil { - return err + if err := OptimismPortal(batch, implementations, list, config, chainConfig, backend); err != nil { + return fmt.Errorf("upgrading OptimismPortal: %w", err) } - if err := SystemConfig(batch, implementations, list, config, chainConfig); err != nil { - return err + if err := SystemConfig(batch, implementations, list, config, chainConfig, backend); err != nil { + return fmt.Errorf("upgrading SystemConfig: %w", err) } return nil } // L1CrossDomainMessenger will add a call to the batch that upgrades the L1CrossDomainMessenger. -func L1CrossDomainMessenger(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig) error { +func L1CrossDomainMessenger(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig, backend bind.ContractBackend) error { proxyAdminABI, err := bindings.ProxyAdminMetaData.GetAbi() if err != nil { return err @@ -79,7 +80,7 @@ func L1CrossDomainMessenger(batch *safe.Batch, implementations superchain.Implem } // L1ERC721Bridge will add a call to the batch that upgrades the L1ERC721Bridge. -func L1ERC721Bridge(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig) error { +func L1ERC721Bridge(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig, backend bind.ContractBackend) error { proxyAdminABI, err := bindings.ProxyAdminMetaData.GetAbi() if err != nil { return err @@ -118,7 +119,7 @@ func L1ERC721Bridge(batch *safe.Batch, implementations superchain.Implementation } // L1StandardBridge will add a call to the batch that upgrades the L1StandardBridge. -func L1StandardBridge(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig) error { +func L1StandardBridge(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig, backend bind.ContractBackend) error { proxyAdminABI, err := bindings.ProxyAdminMetaData.GetAbi() if err != nil { return err @@ -157,7 +158,7 @@ func L1StandardBridge(batch *safe.Batch, implementations superchain.Implementati } // L2OutputOracle will add a call to the batch that upgrades the L2OutputOracle. -func L2OutputOracle(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig) error { +func L2OutputOracle(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig, backend bind.ContractBackend) error { proxyAdminABI, err := bindings.ProxyAdminMetaData.GetAbi() if err != nil { return err @@ -173,17 +174,47 @@ func L2OutputOracle(batch *safe.Batch, implementations superchain.Implementation return fmt.Errorf("no initialize method") } - l2OutputOracleStartingBlockNumber := new(big.Int).SetUint64(config.L2OutputOracleStartingBlockNumber) - if config.L2OutputOracleStartingTimestamp < 0 { - return fmt.Errorf("L2OutputOracleStartingBlockNumber must be concrete") + var l2OutputOracleStartingBlockNumber, l2OutputOracleStartingTimestamp *big.Int + var l2OutputOracleProposer, l2OutputOracleChallenger common.Address + if config != nil { + l2OutputOracleStartingBlockNumber = new(big.Int).SetUint64(config.L2OutputOracleStartingBlockNumber) + if config.L2OutputOracleStartingTimestamp < 0 { + return fmt.Errorf("L2OutputOracleStartingTimestamp must be concrete") + } + l2OutputOracleStartingTimestamp = new(big.Int).SetInt64(int64(config.L2OutputOracleStartingTimestamp)) + l2OutputOracleProposer = config.L2OutputOracleProposer + l2OutputOracleChallenger = config.L2OutputOracleChallenger + } else { + l2OutputOracle, err := bindings.NewL2OutputOracleCaller(common.HexToAddress(list.L2OutputOracleProxy.String()), backend) + if err != nil { + return err + } + l2OutputOracleStartingBlockNumber, err = l2OutputOracle.StartingBlockNumber(&bind.CallOpts{}) + if err != nil { + return err + } + + l2OutputOracleStartingTimestamp, err = l2OutputOracle.StartingTimestamp(&bind.CallOpts{}) + if err != nil { + return err + } + + l2OutputOracleProposer, err = l2OutputOracle.PROPOSER(&bind.CallOpts{}) + if err != nil { + return err + } + + l2OutputOracleChallenger, err = l2OutputOracle.CHALLENGER(&bind.CallOpts{}) + if err != nil { + return err + } } - l2OutputOraclesStartingTimestamp := new(big.Int).SetInt64(int64(config.L2OutputOracleStartingTimestamp)) calldata, err := initialize.Inputs.PackValues([]any{ l2OutputOracleStartingBlockNumber, - l2OutputOraclesStartingTimestamp, - config.L2OutputOracleProposer, - config.L2OutputOracleChallenger, + l2OutputOracleStartingTimestamp, + l2OutputOracleProposer, + l2OutputOracleChallenger, }) if err != nil { return err @@ -205,7 +236,7 @@ func L2OutputOracle(batch *safe.Batch, implementations superchain.Implementation } // OptimismMintableERC20Factory will add a call to the batch that upgrades the OptimismMintableERC20Factory. -func OptimismMintableERC20Factory(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig) error { +func OptimismMintableERC20Factory(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig, backend bind.ContractBackend) error { proxyAdminABI, err := bindings.ProxyAdminMetaData.GetAbi() if err != nil { return err @@ -244,7 +275,7 @@ func OptimismMintableERC20Factory(batch *safe.Batch, implementations superchain. } // OptimismPortal will add a call to the batch that upgrades the OptimismPortal. -func OptimismPortal(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig) error { +func OptimismPortal(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig, backend bind.ContractBackend) error { proxyAdminABI, err := bindings.ProxyAdminMetaData.GetAbi() if err != nil { return err @@ -260,9 +291,24 @@ func OptimismPortal(batch *safe.Batch, implementations superchain.Implementation return fmt.Errorf("no initialize method") } + var portalGuardian common.Address + if config != nil { + portalGuardian = config.PortalGuardian + } else { + optimismPortal, err := bindings.NewOptimismPortalCaller(common.HexToAddress(list.OptimismPortalProxy.String()), backend) + if err != nil { + return err + } + guardian, err := optimismPortal.GUARDIAN(&bind.CallOpts{}) + if err != nil { + return err + } + portalGuardian = guardian + } + calldata, err := initialize.Inputs.PackValues([]any{ common.HexToAddress(list.L2OutputOracleProxy.String()), - config.PortalGuardian, + portalGuardian, common.HexToAddress(chainConfig.SystemConfigAddr.String()), false, }) @@ -286,7 +332,7 @@ func OptimismPortal(batch *safe.Batch, implementations superchain.Implementation } // SystemConfig will add a call to the batch that upgrades the SystemConfig. -func SystemConfig(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig) error { +func SystemConfig(batch *safe.Batch, implementations superchain.ImplementationList, list superchain.AddressList, config *genesis.DeployConfig, chainConfig *superchain.ChainConfig, backend bind.ContractBackend) error { proxyAdminABI, err := bindings.ProxyAdminMetaData.GetAbi() if err != nil { return err @@ -302,11 +348,60 @@ func SystemConfig(batch *safe.Batch, implementations superchain.ImplementationLi return fmt.Errorf("no initialize method") } - gasPriceOracleOverhead := new(big.Int).SetUint64(config.GasPriceOracleOverhead) - gasPriceOracleScalar := new(big.Int).SetUint64(config.GasPriceOracleScalar) - batcherHash := common.BytesToHash(config.BatchSenderAddress.Bytes()) - l2GenesisBlockGasLimit := uint64(config.L2GenesisBlockGasLimit) - startBlock := new(big.Int).SetUint64(config.SystemConfigStartBlock) + var gasPriceOracleOverhead, gasPriceOracleScalar, startBlock *big.Int + var batcherHash common.Hash + var batchInboxAddress, p2pSequencerAddress, finalSystemOwner common.Address + var l2GenesisBlockGasLimit uint64 + + if config != nil { + gasPriceOracleOverhead = new(big.Int).SetUint64(config.GasPriceOracleOverhead) + gasPriceOracleScalar = new(big.Int).SetUint64(config.GasPriceOracleScalar) + batcherHash = common.BytesToHash(config.BatchSenderAddress.Bytes()) + l2GenesisBlockGasLimit = uint64(config.L2GenesisBlockGasLimit) + startBlock = new(big.Int).SetUint64(config.SystemConfigStartBlock) + batchInboxAddress = config.BatchInboxAddress + p2pSequencerAddress = config.P2PSequencerAddress + finalSystemOwner = config.FinalSystemOwner + } else { + systemConfig, err := bindings.NewSystemConfigCaller(common.HexToAddress(chainConfig.SystemConfigAddr.String()), backend) + if err != nil { + return err + } + gasPriceOracleOverhead, err = systemConfig.Overhead(&bind.CallOpts{}) + if err != nil { + return err + } + gasPriceOracleScalar, err = systemConfig.Scalar(&bind.CallOpts{}) + if err != nil { + return err + } + batcherHash, err = systemConfig.BatcherHash(&bind.CallOpts{}) + if err != nil { + return err + } + l2GenesisBlockGasLimit, err = systemConfig.GasLimit(&bind.CallOpts{}) + if err != nil { + return err + } + // StartBlock is a new property, we want to explicitly set it to 0 if there is an error fetching it + startBlock, err = systemConfig.StartBlock(&bind.CallOpts{}) + if err != nil { + startBlock = big.NewInt(0) + } + // BatchInboxAddress is a new property, we want to set it to the offchain value if there is an error fetching it + batchInboxAddress, err = systemConfig.BatchInbox(&bind.CallOpts{}) + if err != nil { + batchInboxAddress = common.HexToAddress(chainConfig.BatchInboxAddr.String()) + } + p2pSequencerAddress, err = systemConfig.UnsafeBlockSigner(&bind.CallOpts{}) + if err != nil { + return err + } + finalSystemOwner, err = systemConfig.Owner(&bind.CallOpts{}) + if err != nil { + return err + } + } addresses := bindings.SystemConfigAddresses{ L1CrossDomainMessenger: common.HexToAddress(list.L1CrossDomainMessengerProxy.String()), @@ -317,17 +412,16 @@ func SystemConfig(batch *safe.Batch, implementations superchain.ImplementationLi OptimismMintableERC20Factory: common.HexToAddress(list.OptimismMintableERC20FactoryProxy.String()), } - // This is more complex calldata, err := initialize.Inputs.PackValues([]any{ - config.FinalSystemOwner, + finalSystemOwner, gasPriceOracleOverhead, gasPriceOracleScalar, batcherHash, l2GenesisBlockGasLimit, - config.P2PSequencerAddress, + p2pSequencerAddress, genesis.DefaultResourceConfig, startBlock, - config.BatchInboxAddress, + batchInboxAddress, addresses, }) if err != nil { diff --git a/packages/contracts-bedrock/deploy-config/zora-goerli.json b/packages/contracts-bedrock/deploy-config/zora-goerli.json index 8fa00b47eabf..280d63f17726 100644 --- a/packages/contracts-bedrock/deploy-config/zora-goerli.json +++ b/packages/contracts-bedrock/deploy-config/zora-goerli.json @@ -22,7 +22,7 @@ "l2GenesisRegolithTimeOffset": "0x0", "portalGuardian": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", "l2OutputOracleSubmissionInterval": 180, - "l2OutputOracleStartingTimestamp": -1, + "l2OutputOracleStartingTimestamp": 0, "l2OutputOracleProposer": "0xa98B585654fC03E2fEa3FAB56E1C851E4f5c2B54", "l2GenesisBlockGasLimit": "0x1c9c380", "fundDevAccounts": false,