Optimism Multisig
Overview
function name() public pure override returns (string memory) { return "OPTIMISM_MULTISIG_MOCK"; }function description() public pure override returns (string memory) { return "Mock proposal that upgrades the L1 NFT Bridge"; }function deploy() public override { if (!addresses.isAddressSet("OPTIMISM_L1_NFT_BRIDGE_IMPLEMENTATION")) { address l1NFTBridgeImplementation = address(new MockUpgrade()); addresses.addAddress( "OPTIMISM_L1_NFT_BRIDGE_IMPLEMENTATION", l1NFTBridgeImplementation, true ); } }function build() public override buildModifier(addresses.getAddress("OPTIMISM_MULTISIG")) { /// STATICCALL -- not recorded for the run stage IProxyAdmin proxy = IProxyAdmin( addresses.getAddress("OPTIMISM_PROXY_ADMIN") ); /// CALLS -- mutative and recorded proxy.upgrade( addresses.getAddress("OPTIMISM_L1_NFT_BRIDGE_PROXY"), addresses.getAddress("OPTIMISM_L1_NFT_BRIDGE_IMPLEMENTATION") ); }function run() public override { // Create and select mainnet fork for proposal execution. primaryForkId = vm.createFork("mainnet"); vm.selectFork(primaryForkId); uint256[] memory chainIds = new uint256[](1); chainIds[0] = 1; // Set the addresses object by reading addresses from the JSON file. setAddresses( new Addresses( vm.envOr("ADDRESSES_PATH", string("./addresses")), chainIds ) ); // Call the run function of parent contract 'Proposal.sol'. super.run(); }function simulate() public override { // get multisig address address multisig = addresses.getAddress("OPTIMISM_MULTISIG"); // simulate all actions in 'build' functions through multisig _simulateActions(multisig); }function validate() public override { // get proxy address IProxy proxy = IProxy( addresses.getAddress("OPTIMISM_L1_NFT_BRIDGE_PROXY") ); // implementation() caller must be the owner vm.startPrank(addresses.getAddress("OPTIMISM_PROXY_ADMIN")); // ensure implementation is upgraded require( proxy.implementation() == addresses.getAddress("OPTIMISM_L1_NFT_BRIDGE_IMPLEMENTATION"), "Proxy implementation not set" ); vm.stopPrank(); }
Running the Proposal
Last updated