From 20b14043c4e662ffff19847468a35ee994ec9650 Mon Sep 17 00:00:00 2001 From: Daniel Goldman Date: Tue, 9 Jul 2024 13:11:24 -0400 Subject: [PATCH 01/15] ArbOS30 AIP: add AIPNovaFeeRoutingAction (#230) * add AIPNovaFeeRoutingAction * add novaToL1Router address * AIPNovaFeeRoutingAction test and new balance requirement (#279) * add fork test * gas snapshot * update router --------- Co-authored-by: Henry <11198460+godzillaba@users.noreply.github.com> --- .gas-snapshot | 3 +- .../AIPs/AIPNovaFeeRoutingAction.sol | 140 ++++++++++++++++++ .../gov-actions/AIPNovaFeeRoutingAction.t.sol | 61 ++++++++ 3 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol create mode 100644 test/gov-actions/AIPNovaFeeRoutingAction.t.sol diff --git a/.gas-snapshot b/.gas-snapshot index 1158508a6..ffe0bbe90 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,4 +1,5 @@ AIP1Point2ActionTest:testAction() (gas: 629328) +AIPNovaFeeRoutingActionTest:testAction() (gas: 3074) ArbitrumDAOConstitutionTest:testConstructor() (gas: 259383) ArbitrumDAOConstitutionTest:testMonOwnerCannotSetHash() (gas: 262836) ArbitrumDAOConstitutionTest:testOwnerCanSetHash() (gas: 261148) @@ -143,7 +144,7 @@ SecurityCouncilMemberElectionGovernorTest:testOnlyNomineeElectionGovernorCanProp SecurityCouncilMemberElectionGovernorTest:testProperInitialization() (gas: 49388) SecurityCouncilMemberElectionGovernorTest:testProposeReverts() (gas: 32916) SecurityCouncilMemberElectionGovernorTest:testRelay() (gas: 42229) -SecurityCouncilMemberElectionGovernorTest:testSelectTopNominees(uint256) (runs: 256, μ: 339956, ~: 339703) +SecurityCouncilMemberElectionGovernorTest:testSelectTopNominees(uint256) (runs: 256, μ: 339646, ~: 339587) SecurityCouncilMemberElectionGovernorTest:testSelectTopNomineesFails() (gas: 273335) SecurityCouncilMemberElectionGovernorTest:testSetFullWeightDuration() (gas: 34951) SecurityCouncilMemberElectionGovernorTest:testVotesToWeight() (gas: 152898) diff --git a/src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol b/src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol new file mode 100644 index 000000000..35ff9d4e5 --- /dev/null +++ b/src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol @@ -0,0 +1,140 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.16; + +import "@openzeppelin/contracts/utils/Address.sol"; + +interface IRewardDistributor { + function distributeAndUpdateRecipients( + address[] memory currentRecipients, + uint256[] memory currentWeights, + address[] memory newRecipients, + uint256[] memory newWeights + ) external; + + function currentRecipientGroup() external view returns (bytes32); + function currentRecipientWeights() external view returns (bytes32); +} + +/// @notice Governance action to be deployed on Nova. Updates all l1 timelock alias recipients in all fee distribution +/// contracts to the nova-to-l1 router address; preserves all other recipients and all weights. +/// Note that the Nova L1 Base fee distributor is not updated since the timelock alias is not a recipient. +contract AIPNovaFeeRoutingAction { + address public immutable l1GovTimelockAlias = 0xf7951D92B0C345144506576eC13Ecf5103aC905a; + uint256 public immutable fullWeight = 10_000; + + address public immutable novaL1SurplusFeeDistr = 0x509386DbF5C0BE6fd68Df97A05fdB375136c32De; + + address public immutable novaL2SurplusFeeDistr = 0x3B68a689c929327224dBfCe31C1bf72Ffd2559Ce; + + address public immutable novaL2BaseFeeDistr = 0x9fCB6F75D99029f28F6F4a1d277bae49c5CAC79f; + uint256 public immutable novaL2BaseWeight0 = 8000; + uint256 public immutable novaL2BaseWeight1 = 375; + uint256 public immutable novaL2BaseWeight2 = 373; + uint256 public immutable novaL2BaseWeight3 = 373; + uint256 public immutable novaL2BaseWeight4 = 373; + uint256 public immutable novaL2BaseWeight5 = 373; + uint256 public immutable novaL2BaseWeight6 = 133; + + // novaL2BaseRecipient0 is the gov timelock alias + address public immutable novaL2BaseRecipient1 = 0xD0749b3e537Ed52DE4e6a3Ae1eB6fc26059d0895; + address public immutable novaL2BaseRecipient2 = 0x41C327d5fc9e29680CcD45e5E52446E0DB3DAdFd; + address public immutable novaL2BaseRecipient3 = 0x02C2599aa929e2509741b44F3a13029745aB1AB2; + address public immutable novaL2BaseRecipient4 = 0xA221f29236996BDEfA5C585acdD407Ec84D78447; + address public immutable novaL2BaseRecipient5 = 0x0fB1f1a31429F1A90a19Ab5486a6DFb384179641; + address public immutable novaL2BaseRecipient6 = 0xb814441ed86e98e8B83d31eEC095e4a5A36Fc3c2; + + address public immutable novaToL1Router = 0xd9a2e0E5d7509F0BF1B2d33884F8C1b4D4490879; + + error NotAContract(address addr); + + constructor() { + // sanity check: + if (!Address.isContract(novaToL1Router)) { + revert NotAContract(novaToL1Router); + } + } + + function perform() external { + // upgrade executor should have at least 3 * fullWeight ETH to fund the distributors + // we need each of the reward distributors to have at least fullWeight in balance + // otherwise we may get NoFundsToDistribute() errors + require(address(this).balance >= 3 * fullWeight, "AIPNovaFeeRoutingAction: insufficient balance"); + _fundDistributor(novaL1SurplusFeeDistr); + _fundDistributor(novaL2SurplusFeeDistr); + _fundDistributor(novaL2BaseFeeDistr); + + // L1 surplus: replace only recipient (timelock alias) with the router + address[] memory currentNovaL1SurplusRecipients = new address[](1); + currentNovaL1SurplusRecipients[0] = l1GovTimelockAlias; + + uint256[] memory currentNovaL1SurplusWeights = new uint256[](1); + currentNovaL1SurplusWeights[0] = fullWeight; + + address[] memory newL1SurplusRecipients = new address[](1); + newL1SurplusRecipients[0] = novaToL1Router; + + // preserve current weights, update recipients + IRewardDistributor(novaL1SurplusFeeDistr).distributeAndUpdateRecipients({ + currentRecipients: currentNovaL1SurplusRecipients, + currentWeights: currentNovaL1SurplusWeights, + newRecipients: newL1SurplusRecipients, + newWeights: currentNovaL1SurplusWeights + }); + + // L2 surplus: replace only recipient (timelock alias) with the router + address[] memory currentNovaL2SurplusRecipients = new address[](1); + currentNovaL2SurplusRecipients[0] = l1GovTimelockAlias; + + uint256[] memory novaL2SurplusWeights = new uint256[](1); + novaL2SurplusWeights[0] = fullWeight; + + address[] memory newL2SurplusRecipients = new address[](1); + newL2SurplusRecipients[0] = novaToL1Router; + + // preserve current weights, update recipients + IRewardDistributor(novaL2SurplusFeeDistr).distributeAndUpdateRecipients({ + currentRecipients: currentNovaL2SurplusRecipients, + currentWeights: novaL2SurplusWeights, + newRecipients: newL2SurplusRecipients, + newWeights: novaL2SurplusWeights + }); + + // L2 base: replace first recipient (timelock alias) with router; keep other recipients the same. + address[] memory currentNovaL2BaseRecipients = new address[](7); + currentNovaL2BaseRecipients[0] = l1GovTimelockAlias; + currentNovaL2BaseRecipients[1] = novaL2BaseRecipient1; + currentNovaL2BaseRecipients[2] = novaL2BaseRecipient2; + currentNovaL2BaseRecipients[3] = novaL2BaseRecipient3; + currentNovaL2BaseRecipients[4] = novaL2BaseRecipient4; + currentNovaL2BaseRecipients[5] = novaL2BaseRecipient5; + currentNovaL2BaseRecipients[6] = novaL2BaseRecipient6; + + address[] memory newNovaL2BaseRecipients = new address[](7); + newNovaL2BaseRecipients[0] = novaToL1Router; + for (uint256 i = 1; i < currentNovaL2BaseRecipients.length; i++) { + newNovaL2BaseRecipients[i] = currentNovaL2BaseRecipients[i]; + } + + uint256[] memory currentNovaL2BaseWeights = new uint256[](7); + currentNovaL2BaseWeights[0] = novaL2BaseWeight0; + currentNovaL2BaseWeights[1] = novaL2BaseWeight1; + currentNovaL2BaseWeights[2] = novaL2BaseWeight2; + currentNovaL2BaseWeights[3] = novaL2BaseWeight3; + currentNovaL2BaseWeights[4] = novaL2BaseWeight4; + currentNovaL2BaseWeights[5] = novaL2BaseWeight5; + currentNovaL2BaseWeights[6] = novaL2BaseWeight6; + + // preserve current weights, update recipients + IRewardDistributor(novaL2BaseFeeDistr).distributeAndUpdateRecipients({ + currentRecipients: currentNovaL2BaseRecipients, + currentWeights: currentNovaL2BaseWeights, + newRecipients: newNovaL2BaseRecipients, + newWeights: currentNovaL2BaseWeights + }); + } + + function _fundDistributor(address recipient) internal { + (bool b, ) = recipient.call{value: fullWeight}(""); + require(b, "AIPNovaFeeRoutingAction: funding failed"); + } +} diff --git a/test/gov-actions/AIPNovaFeeRoutingAction.t.sol b/test/gov-actions/AIPNovaFeeRoutingAction.t.sol new file mode 100644 index 000000000..93b79753d --- /dev/null +++ b/test/gov-actions/AIPNovaFeeRoutingAction.t.sol @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.16; + +// this test is meant to be run with a nova fork url + +import "forge-std/Test.sol"; + +import "../../src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol"; +import "../../src/UpgradeExecutor.sol"; + +contract AIPNovaFeeRoutingActionTest is Test { + UpgradeExecutor constant upExec = UpgradeExecutor(0x86a02dD71363c440b21F4c0E5B2Ad01Ffe1A7482); + + function testAction() public { + if (!isFork()) { + return; + } + + AIPNovaFeeRoutingAction action = new AIPNovaFeeRoutingAction(); + + // before we run the action, we need to make sure the upgrade executor has at least this much ETH + vm.deal(address(upExec), 3*action.fullWeight()); + + vm.prank(0xf7951D92B0C345144506576eC13Ecf5103aC905a); + upExec.execute(address(action), abi.encodeWithSignature("perform()")); + + // make sure the new recipients are set + + address[1] memory expectedL1SurplusRecipients = [0xd9a2e0E5d7509F0BF1B2d33884F8C1b4D4490879]; + uint256[1] memory expectedL1SurplusWeights = [uint(10_000)]; + + assertEq(IRewardDistributor(action.novaL1SurplusFeeDistr()).currentRecipientGroup(), keccak256(abi.encodePacked(expectedL1SurplusRecipients))); + assertEq(IRewardDistributor(action.novaL1SurplusFeeDistr()).currentRecipientWeights(), keccak256(abi.encodePacked(expectedL1SurplusWeights))); + assertEq(IRewardDistributor(action.novaL2SurplusFeeDistr()).currentRecipientGroup(), keccak256(abi.encodePacked(expectedL1SurplusRecipients))); + assertEq(IRewardDistributor(action.novaL2SurplusFeeDistr()).currentRecipientWeights(), keccak256(abi.encodePacked(expectedL1SurplusWeights))); + + + address[7] memory expectedBaseFeeRecipients = [ + 0xd9a2e0E5d7509F0BF1B2d33884F8C1b4D4490879, // nova to l1 router + 0xD0749b3e537Ed52DE4e6a3Ae1eB6fc26059d0895, // rest are same as current + 0x41C327d5fc9e29680CcD45e5E52446E0DB3DAdFd, + 0x02C2599aa929e2509741b44F3a13029745aB1AB2, + 0xA221f29236996BDEfA5C585acdD407Ec84D78447, + 0x0fB1f1a31429F1A90a19Ab5486a6DFb384179641, + 0xb814441ed86e98e8B83d31eEC095e4a5A36Fc3c2 + ]; + + uint256[7] memory expectedBaseFeeWeights = [ + uint256(8000), + uint256(375), + uint256(373), + uint256(373), + uint256(373), + uint256(373), + uint256(133) + ]; + + assertEq(IRewardDistributor(action.novaL2BaseFeeDistr()).currentRecipientGroup(), keccak256(abi.encodePacked(expectedBaseFeeRecipients))); + assertEq(IRewardDistributor(action.novaL2BaseFeeDistr()).currentRecipientWeights(), keccak256(abi.encodePacked(expectedBaseFeeWeights))); + } +} \ No newline at end of file From 8ef80911567cacb3b9b7e0a6e460259f64574c83 Mon Sep 17 00:00:00 2001 From: Daniel Goldman Date: Tue, 9 Jul 2024 13:11:45 -0400 Subject: [PATCH 02/15] stylus upgrade actions (#276) * stylus upgrade actions * verify isCacheManager; setWasmModuleRoot last * Updated AIPArbOS30UpgradeChallengeManagerAction to have public condroot and perform function typo --------- Co-authored-by: Chris Buckland --- ...OneAIPArbOS30AddWasmCacheManagerAction.sol | 14 +++ ...IPArbOS30UpgradeChallengeManagerAction.sol | 24 +++++ ...ovaAIPArbOS30AddWasmCacheManagerAction.sol | 14 +++ ...IPArbOS30UpgradeChallengeManagerAction.sol | 22 +++++ .../AIPArbOS30/SetArbOS30VersionAction.sol | 10 ++ .../AIPArbOS30AddWasmCacheManagerAction.sol | 56 +++++++++++ ...IPArbOS30UpgradeChallengeManagerAction.sol | 98 +++++++++++++++++++ 7 files changed, 238 insertions(+) create mode 100644 src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30AddWasmCacheManagerAction.sol create mode 100644 src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30UpgradeChallengeManagerAction.sol create mode 100644 src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30AddWasmCacheManagerAction.sol create mode 100644 src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30UpgradeChallengeManagerAction.sol create mode 100644 src/gov-action-contracts/AIPs/AIPArbOS30/SetArbOS30VersionAction.sol create mode 100644 src/gov-action-contracts/AIPs/AIPArbOS30/parent_contracts/AIPArbOS30AddWasmCacheManagerAction.sol create mode 100644 src/gov-action-contracts/AIPs/AIPArbOS30/parent_contracts/AIPArbOS30UpgradeChallengeManagerAction.sol diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30AddWasmCacheManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30AddWasmCacheManagerAction.sol new file mode 100644 index 000000000..f10737040 --- /dev/null +++ b/src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30AddWasmCacheManagerAction.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.16; + +import "./parent_contracts/AIPArbOS30AddWasmCacheManagerAction.sol"; + +/// @notice for deloployment on Arb One +contract ArbOneAIPArbOS30AddWasmCacheManagerAction is AIPArbOS30AddWasmCacheManagerAction { + constructor() + AIPArbOS30AddWasmCacheManagerAction( + address(0), // wasm cache manager TODO + 30 // target arb os version + ) + {} +} diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30UpgradeChallengeManagerAction.sol new file mode 100644 index 000000000..d201ef6bf --- /dev/null +++ b/src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30UpgradeChallengeManagerAction.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.16; + +import "./parent_contracts/AIPArbOS30UpgradeChallengeManagerAction.sol"; +import "@arbitrum/nitro-contracts/src/osp/IOneStepProofEntry.sol"; +import "../../address-registries/L1AddressRegistry.sol"; +import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; + +/// @notice for deloployment on L1 Ethereum +contract ArbOneAIPArbOS30UpgradeChallengeManagerAction is + AIPArbOS30UpgradeChallengeManagerAction +{ + constructor() + AIPArbOS30UpgradeChallengeManagerAction( + L1AddressRegistry(0xd514C2b3aaBDBfa10800B9C96dc1eB25427520A0), // l1 address registry + bytes32(0), // wasm module root TODO + ProxyAdmin(0x554723262467F125Ac9e1cDFa9Ce15cc53822dbD), // l1 core proxy admin + address(0), // challenge manager impl TODO + IOneStepProofEntry(address(0)), // new osp TODO) + bytes32(0), // cond root TODO + IOneStepProofEntry(address(0)) // cond osp TODO + ) + {} +} diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30AddWasmCacheManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30AddWasmCacheManagerAction.sol new file mode 100644 index 000000000..323355345 --- /dev/null +++ b/src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30AddWasmCacheManagerAction.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.16; + +import "./parent_contracts/AIPArbOS30AddWasmCacheManagerAction.sol"; + +/// @notice for deplpoyment on Nova +contract NovaAIPArbOS30AddWasmCacheManagerAction is AIPArbOS30AddWasmCacheManagerAction { + constructor() + AIPArbOS30AddWasmCacheManagerAction( + address(0), // wasm cache manager TODO + 30 // target arb os version + ) + {} +} diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30UpgradeChallengeManagerAction.sol new file mode 100644 index 000000000..35e4ae221 --- /dev/null +++ b/src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30UpgradeChallengeManagerAction.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.16; + +import "./parent_contracts/AIPArbOS30UpgradeChallengeManagerAction.sol"; +import "@arbitrum/nitro-contracts/src/osp/IOneStepProofEntry.sol"; +import "../../address-registries/L1AddressRegistry.sol"; +import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; + +/// @notice for deloployment on L1 Ethereum +contract NovaAIPArbOS30UpgradeChallengeManagerAction is AIPArbOS30UpgradeChallengeManagerAction { + constructor() + AIPArbOS30UpgradeChallengeManagerAction( + L1AddressRegistry(0x2F06643fc2CC18585Ae790b546388F0DE4Ec6635), // l1 address registry + bytes32(0), // wasm module root TODO + ProxyAdmin(0x71D78dC7cCC0e037e12de1E50f5470903ce37148), // l1 core proxy admin + address(0), // challenge manager impl TODO + IOneStepProofEntry(address(0)), // new osp TODO) + bytes32(0), // cond root TODO + IOneStepProofEntry(address(0)) // cond osp TODO + ) + {} +} diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/SetArbOS30VersionAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS30/SetArbOS30VersionAction.sol new file mode 100644 index 000000000..ffd5f204b --- /dev/null +++ b/src/gov-action-contracts/AIPs/AIPArbOS30/SetArbOS30VersionAction.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.16; + +import "../../arbos-upgrade/UpgradeArbOSVersionAction.sol"; + +/// @notice Sets the ArbOS version to 30. To be run on an arbitrum chain +/// @dev Identical copies of this contract to be deployed on Arb One and Nova for ArbOS30 upgrades +contract SetArbOS30VersionAction is UpgradeArbOSVersionAction { + constructor() UpgradeArbOSVersionAction(uint64(30), 0 /*TODO*/ ) {} +} diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/parent_contracts/AIPArbOS30AddWasmCacheManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS30/parent_contracts/AIPArbOS30AddWasmCacheManagerAction.sol new file mode 100644 index 000000000..f429f81ba --- /dev/null +++ b/src/gov-action-contracts/AIPs/AIPArbOS30/parent_contracts/AIPArbOS30AddWasmCacheManagerAction.sol @@ -0,0 +1,56 @@ + // SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.16; + +import "@arbitrum/nitro-contracts/src/precompiles/ArbSys.sol"; + +// ArbOwner interface will include addWasmCacheManager as of stylus upgrade +interface IUpdatedArbOwner { + function addWasmCacheManager(address manager) external; +} + +// ArbWasmCache precompile interface +interface IArbWasmCache { + /// @notice See if the user is a cache manager. + function isCacheManager(address manager) external view returns (bool); +} + +// @notice For deployment on an Arbitrum chain; +// adds wasm cache manager only when the stylus ArbOS upgrade activates. +// Should be called via retryable ticket so that if executed before the ArbOS upgrade, +// it reverts can be retried until the target ArbOS version number is active. +contract AIPArbOS30AddWasmCacheManagerAction { + // wasm cache manager to add + address public immutable wasmCachemanager; + + // ArbOS version; use value as it's set and commonly used, NOT the value returned by + // ArbSys, which adds 55. E.g., the value here should be 30, not 85 + uint256 public immutable targetArbOSVersion; + + constructor(address _wasmCachemanager, uint256 _targetArbOSVersion) { + wasmCachemanager = _wasmCachemanager; + targetArbOSVersion = _targetArbOSVersion; + } + + function perform() external { + // getter returns a value offset by 55: https://github.com/OffchainLabs/nitro/blob/a20a1c70cc11ac52c7cfe6a20f00c880c2009a8f/precompiles/ArbSys.go#L64 + uint256 currentArbOsVersion = + ArbSys(0x0000000000000000000000000000000000000064).arbOSVersion() - 55; + // revert if target arbos version not reached; since this is executed by a retryable, can be re-executed until target version is reached + require( + targetArbOSVersion == currentArbOsVersion, + "AIPArbOS30AddWasmCacheManagerAction: ArbOS version" + ); + + IUpdatedArbOwner(0x0000000000000000000000000000000000000070).addWasmCacheManager( + wasmCachemanager + ); + + // verify: + require( + IArbWasmCache(0x0000000000000000000000000000000000000072).isCacheManager( + wasmCachemanager + ), + "AIPArbOS30AddWasmCacheManagerAction: is cache manager" + ); + } +} diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/parent_contracts/AIPArbOS30UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS30/parent_contracts/AIPArbOS30UpgradeChallengeManagerAction.sol new file mode 100644 index 000000000..bb51ea623 --- /dev/null +++ b/src/gov-action-contracts/AIPs/AIPArbOS30/parent_contracts/AIPArbOS30UpgradeChallengeManagerAction.sol @@ -0,0 +1,98 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.16; + +import "@arbitrum/nitro-contracts/src/precompiles/ArbSys.sol"; +import "@arbitrum/nitro-contracts/src/osp/IOneStepProofEntry.sol"; +import "@openzeppelin/contracts/utils/Address.sol"; +import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; +import "../../../address-registries/L1AddressRegistry.sol"; + +interface IChallengeManagerUpgradeInit { + // TODO + function postUpgradeInit(IOneStepProofEntry osp_, bytes32 condRoot, IOneStepProofEntry condOsp) + external; + function osp() external returns (address); +} + +// @notice set wasm module root and upgrade challenge manager for stylus ArbOS upgrade +contract AIPArbOS30UpgradeChallengeManagerAction { + L1AddressRegistry public immutable l1AddressRegistry; + bytes32 public immutable newWasmModuleRoot; + ProxyAdmin public immutable govProxyAdmin; + address public immutable newChallengeManagerImpl; + IOneStepProofEntry public immutable osp; + bytes32 public immutable condRoot; + IOneStepProofEntry public immutable condOsp; + + constructor( + L1AddressRegistry _l1AddressRegistry, + bytes32 _newWasmModuleRoot, + ProxyAdmin _govProxyAdmin, + address _newChallengeManagerImpl, + IOneStepProofEntry _osp, + bytes32 _condRoot, + IOneStepProofEntry _condOsp + ) { + require( + Address.isContract(address(_l1AddressRegistry)), + "AIPArbOS30UpgradeChallengeManagerAction: l1AddressRegistry is not a contract" + ); + require( + Address.isContract(address(_govProxyAdmin)), + "AIPArbOS30UpgradeChallengeManagerAction: _govProxyAdmin is not a contract" + ); + require( + Address.isContract(_newChallengeManagerImpl), + "AIPArbOS30UpgradeChallengeManagerAction: _newChallengeManagerImpl is not a contract" + ); + + require( + Address.isContract(address(_osp)), + "AIPArbOS30UpgradeChallengeManagerAction: _osp is not a contract" + ); + + require( + Address.isContract(address(_condOsp)), + "AIPArbOS30UpgradeChallengeManagerAction: _condOsp is not a contract" + ); + l1AddressRegistry = _l1AddressRegistry; + newWasmModuleRoot = _newWasmModuleRoot; + govProxyAdmin = _govProxyAdmin; + newChallengeManagerImpl = _newChallengeManagerImpl; + osp = _osp; + condRoot = _condRoot; + condOsp = _condOsp; + } + + function perform() external { + // set the new challenge manager impl + TransparentUpgradeableProxy challengeManager = TransparentUpgradeableProxy( + payable(address(l1AddressRegistry.rollup().challengeManager())) + ); + govProxyAdmin.upgradeAndCall( + challengeManager, + newChallengeManagerImpl, + abi.encodeCall(IChallengeManagerUpgradeInit.postUpgradeInit, (osp, condRoot, condOsp)) + ); + + // verify + require( + govProxyAdmin.getProxyImplementation(challengeManager) == newChallengeManagerImpl, + "AIPArbOS30UpgradeChallengeManagerAction: new challenge manager implementation set" + ); + require( + IChallengeManagerUpgradeInit(address(challengeManager)).osp() == address(osp), + "AIPArbOS30UpgradeChallengeManagerAction: new OSP not set" + ); + + // set new wasm module root + IRollupCore rollup = l1AddressRegistry.rollup(); + IRollupAdmin(address(rollup)).setWasmModuleRoot(newWasmModuleRoot); + + // verify: + require( + rollup.wasmModuleRoot() == newWasmModuleRoot, + "AIPArbOS30UpgradeChallengeManagerAction: wasm module root not set" + ); + } +} From bc994607facb9240bced111096ea3d11911ebb86 Mon Sep 17 00:00:00 2001 From: gzeon Date: Thu, 11 Jul 2024 00:05:57 +0800 Subject: [PATCH 03/15] chore: cache manager addresses --- .../AIPArbOS30/ArbOneAIPArbOS30AddWasmCacheManagerAction.sol | 2 +- .../AIPs/AIPArbOS30/NovaAIPArbOS30AddWasmCacheManagerAction.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30AddWasmCacheManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30AddWasmCacheManagerAction.sol index f10737040..27de5b2ae 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30AddWasmCacheManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30AddWasmCacheManagerAction.sol @@ -7,7 +7,7 @@ import "./parent_contracts/AIPArbOS30AddWasmCacheManagerAction.sol"; contract ArbOneAIPArbOS30AddWasmCacheManagerAction is AIPArbOS30AddWasmCacheManagerAction { constructor() AIPArbOS30AddWasmCacheManagerAction( - address(0), // wasm cache manager TODO + 0x51dEDBD2f190E0696AFbEE5E60bFdE96d86464ec, // wasm cache manager 30 // target arb os version ) {} diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30AddWasmCacheManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30AddWasmCacheManagerAction.sol index 323355345..a60a1a1da 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30AddWasmCacheManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30AddWasmCacheManagerAction.sol @@ -7,7 +7,7 @@ import "./parent_contracts/AIPArbOS30AddWasmCacheManagerAction.sol"; contract NovaAIPArbOS30AddWasmCacheManagerAction is AIPArbOS30AddWasmCacheManagerAction { constructor() AIPArbOS30AddWasmCacheManagerAction( - address(0), // wasm cache manager TODO + 0x20586F83bF11a7cee0A550C53B9DC9A5887de1b7, // wasm cache manager 30 // target arb os version ) {} From 54a8f71bbe7f612cf4ae973b51fa5ac775dc4d88 Mon Sep 17 00:00:00 2001 From: gzeon Date: Thu, 11 Jul 2024 00:09:54 +0800 Subject: [PATCH 04/15] chore: rename to arbos31 --- .../AIPArbOS30/SetArbOS30VersionAction.sol | 10 ---------- ...OneAIPArbOS31AddWasmCacheManagerAction.sol} | 8 ++++---- ...IPArbOS31UpgradeChallengeManagerAction.sol} | 8 ++++---- ...ovaAIPArbOS31AddWasmCacheManagerAction.sol} | 8 ++++---- ...IPArbOS31UpgradeChallengeManagerAction.sol} | 6 +++--- .../AIPArbOS31/SetArbOS31VersionAction.sol | 10 ++++++++++ .../AIPArbOS31AddWasmCacheManagerAction.sol} | 8 ++++---- ...IPArbOS31UpgradeChallengeManagerAction.sol} | 18 +++++++++--------- 8 files changed, 38 insertions(+), 38 deletions(-) delete mode 100644 src/gov-action-contracts/AIPs/AIPArbOS30/SetArbOS30VersionAction.sol rename src/gov-action-contracts/AIPs/{AIPArbOS30/ArbOneAIPArbOS30AddWasmCacheManagerAction.sol => AIPArbOS31/ArbOneAIPArbOS31AddWasmCacheManagerAction.sol} (54%) rename src/gov-action-contracts/AIPs/{AIPArbOS30/ArbOneAIPArbOS30UpgradeChallengeManagerAction.sol => AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol} (78%) rename src/gov-action-contracts/AIPs/{AIPArbOS30/NovaAIPArbOS30AddWasmCacheManagerAction.sol => AIPArbOS31/NovaAIPArbOS31AddWasmCacheManagerAction.sol} (53%) rename src/gov-action-contracts/AIPs/{AIPArbOS30/NovaAIPArbOS30UpgradeChallengeManagerAction.sol => AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol} (79%) create mode 100644 src/gov-action-contracts/AIPs/AIPArbOS31/SetArbOS31VersionAction.sol rename src/gov-action-contracts/AIPs/{AIPArbOS30/parent_contracts/AIPArbOS30AddWasmCacheManagerAction.sol => AIPArbOS31/parent_contracts/AIPArbOS31AddWasmCacheManagerAction.sol} (89%) rename src/gov-action-contracts/AIPs/{AIPArbOS30/parent_contracts/AIPArbOS30UpgradeChallengeManagerAction.sol => AIPArbOS31/parent_contracts/AIPArbOS31UpgradeChallengeManagerAction.sol} (84%) diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/SetArbOS30VersionAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS30/SetArbOS30VersionAction.sol deleted file mode 100644 index ffd5f204b..000000000 --- a/src/gov-action-contracts/AIPs/AIPArbOS30/SetArbOS30VersionAction.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.16; - -import "../../arbos-upgrade/UpgradeArbOSVersionAction.sol"; - -/// @notice Sets the ArbOS version to 30. To be run on an arbitrum chain -/// @dev Identical copies of this contract to be deployed on Arb One and Nova for ArbOS30 upgrades -contract SetArbOS30VersionAction is UpgradeArbOSVersionAction { - constructor() UpgradeArbOSVersionAction(uint64(30), 0 /*TODO*/ ) {} -} diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30AddWasmCacheManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31AddWasmCacheManagerAction.sol similarity index 54% rename from src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30AddWasmCacheManagerAction.sol rename to src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31AddWasmCacheManagerAction.sol index 27de5b2ae..0c6459dcc 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30AddWasmCacheManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31AddWasmCacheManagerAction.sol @@ -1,14 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.16; -import "./parent_contracts/AIPArbOS30AddWasmCacheManagerAction.sol"; +import "./parent_contracts/AIPArbOS31AddWasmCacheManagerAction.sol"; /// @notice for deloployment on Arb One -contract ArbOneAIPArbOS30AddWasmCacheManagerAction is AIPArbOS30AddWasmCacheManagerAction { +contract ArbOneAIPArbOS31AddWasmCacheManagerAction is AIPArbOS31AddWasmCacheManagerAction { constructor() - AIPArbOS30AddWasmCacheManagerAction( + AIPArbOS31AddWasmCacheManagerAction( 0x51dEDBD2f190E0696AFbEE5E60bFdE96d86464ec, // wasm cache manager - 30 // target arb os version + 31 // target arb os version ) {} } diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol similarity index 78% rename from src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30UpgradeChallengeManagerAction.sol rename to src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol index d201ef6bf..3f0aba598 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS30/ArbOneAIPArbOS30UpgradeChallengeManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol @@ -1,17 +1,17 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.16; -import "./parent_contracts/AIPArbOS30UpgradeChallengeManagerAction.sol"; +import "./parent_contracts/AIPArbOS31UpgradeChallengeManagerAction.sol"; import "@arbitrum/nitro-contracts/src/osp/IOneStepProofEntry.sol"; import "../../address-registries/L1AddressRegistry.sol"; import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; /// @notice for deloployment on L1 Ethereum -contract ArbOneAIPArbOS30UpgradeChallengeManagerAction is - AIPArbOS30UpgradeChallengeManagerAction +contract ArbOneAIPArbOS31UpgradeChallengeManagerAction is + AIPArbOS31UpgradeChallengeManagerAction { constructor() - AIPArbOS30UpgradeChallengeManagerAction( + AIPArbOS31UpgradeChallengeManagerAction( L1AddressRegistry(0xd514C2b3aaBDBfa10800B9C96dc1eB25427520A0), // l1 address registry bytes32(0), // wasm module root TODO ProxyAdmin(0x554723262467F125Ac9e1cDFa9Ce15cc53822dbD), // l1 core proxy admin diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30AddWasmCacheManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31AddWasmCacheManagerAction.sol similarity index 53% rename from src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30AddWasmCacheManagerAction.sol rename to src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31AddWasmCacheManagerAction.sol index a60a1a1da..094b24d15 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30AddWasmCacheManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31AddWasmCacheManagerAction.sol @@ -1,14 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.16; -import "./parent_contracts/AIPArbOS30AddWasmCacheManagerAction.sol"; +import "./parent_contracts/AIPArbOS31AddWasmCacheManagerAction.sol"; /// @notice for deplpoyment on Nova -contract NovaAIPArbOS30AddWasmCacheManagerAction is AIPArbOS30AddWasmCacheManagerAction { +contract NovaAIPArbOS31AddWasmCacheManagerAction is AIPArbOS31AddWasmCacheManagerAction { constructor() - AIPArbOS30AddWasmCacheManagerAction( + AIPArbOS31AddWasmCacheManagerAction( 0x20586F83bF11a7cee0A550C53B9DC9A5887de1b7, // wasm cache manager - 30 // target arb os version + 31 // target arb os version ) {} } diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol similarity index 79% rename from src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30UpgradeChallengeManagerAction.sol rename to src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol index 35e4ae221..27c1f6e84 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS30/NovaAIPArbOS30UpgradeChallengeManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol @@ -1,15 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.16; -import "./parent_contracts/AIPArbOS30UpgradeChallengeManagerAction.sol"; +import "./parent_contracts/AIPArbOS31UpgradeChallengeManagerAction.sol"; import "@arbitrum/nitro-contracts/src/osp/IOneStepProofEntry.sol"; import "../../address-registries/L1AddressRegistry.sol"; import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; /// @notice for deloployment on L1 Ethereum -contract NovaAIPArbOS30UpgradeChallengeManagerAction is AIPArbOS30UpgradeChallengeManagerAction { +contract NovaAIPArbOS31UpgradeChallengeManagerAction is AIPArbOS31UpgradeChallengeManagerAction { constructor() - AIPArbOS30UpgradeChallengeManagerAction( + AIPArbOS31UpgradeChallengeManagerAction( L1AddressRegistry(0x2F06643fc2CC18585Ae790b546388F0DE4Ec6635), // l1 address registry bytes32(0), // wasm module root TODO ProxyAdmin(0x71D78dC7cCC0e037e12de1E50f5470903ce37148), // l1 core proxy admin diff --git a/src/gov-action-contracts/AIPs/AIPArbOS31/SetArbOS31VersionAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/SetArbOS31VersionAction.sol new file mode 100644 index 000000000..a43fee86c --- /dev/null +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/SetArbOS31VersionAction.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.16; + +import "../../arbos-upgrade/UpgradeArbOSVersionAction.sol"; + +/// @notice Sets the ArbOS version to 31. To be run on an arbitrum chain +/// @dev Identical copies of this contract to be deployed on Arb One and Nova for ArbOS31 upgrades +contract SetArbOS31VersionAction is UpgradeArbOSVersionAction { + constructor() UpgradeArbOSVersionAction(uint64(31), 0 /*TODO*/ ) {} +} diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/parent_contracts/AIPArbOS30AddWasmCacheManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/parent_contracts/AIPArbOS31AddWasmCacheManagerAction.sol similarity index 89% rename from src/gov-action-contracts/AIPs/AIPArbOS30/parent_contracts/AIPArbOS30AddWasmCacheManagerAction.sol rename to src/gov-action-contracts/AIPs/AIPArbOS31/parent_contracts/AIPArbOS31AddWasmCacheManagerAction.sol index f429f81ba..93182a53c 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS30/parent_contracts/AIPArbOS30AddWasmCacheManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/parent_contracts/AIPArbOS31AddWasmCacheManagerAction.sol @@ -18,12 +18,12 @@ interface IArbWasmCache { // adds wasm cache manager only when the stylus ArbOS upgrade activates. // Should be called via retryable ticket so that if executed before the ArbOS upgrade, // it reverts can be retried until the target ArbOS version number is active. -contract AIPArbOS30AddWasmCacheManagerAction { +contract AIPArbOS31AddWasmCacheManagerAction { // wasm cache manager to add address public immutable wasmCachemanager; // ArbOS version; use value as it's set and commonly used, NOT the value returned by - // ArbSys, which adds 55. E.g., the value here should be 30, not 85 + // ArbSys, which adds 55. E.g., the value here should be 31, not 85 uint256 public immutable targetArbOSVersion; constructor(address _wasmCachemanager, uint256 _targetArbOSVersion) { @@ -38,7 +38,7 @@ contract AIPArbOS30AddWasmCacheManagerAction { // revert if target arbos version not reached; since this is executed by a retryable, can be re-executed until target version is reached require( targetArbOSVersion == currentArbOsVersion, - "AIPArbOS30AddWasmCacheManagerAction: ArbOS version" + "AIPArbOS31AddWasmCacheManagerAction: ArbOS version" ); IUpdatedArbOwner(0x0000000000000000000000000000000000000070).addWasmCacheManager( @@ -50,7 +50,7 @@ contract AIPArbOS30AddWasmCacheManagerAction { IArbWasmCache(0x0000000000000000000000000000000000000072).isCacheManager( wasmCachemanager ), - "AIPArbOS30AddWasmCacheManagerAction: is cache manager" + "AIPArbOS31AddWasmCacheManagerAction: is cache manager" ); } } diff --git a/src/gov-action-contracts/AIPs/AIPArbOS30/parent_contracts/AIPArbOS30UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/parent_contracts/AIPArbOS31UpgradeChallengeManagerAction.sol similarity index 84% rename from src/gov-action-contracts/AIPs/AIPArbOS30/parent_contracts/AIPArbOS30UpgradeChallengeManagerAction.sol rename to src/gov-action-contracts/AIPs/AIPArbOS31/parent_contracts/AIPArbOS31UpgradeChallengeManagerAction.sol index bb51ea623..33fd9b1ba 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS30/parent_contracts/AIPArbOS30UpgradeChallengeManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/parent_contracts/AIPArbOS31UpgradeChallengeManagerAction.sol @@ -15,7 +15,7 @@ interface IChallengeManagerUpgradeInit { } // @notice set wasm module root and upgrade challenge manager for stylus ArbOS upgrade -contract AIPArbOS30UpgradeChallengeManagerAction { +contract AIPArbOS31UpgradeChallengeManagerAction { L1AddressRegistry public immutable l1AddressRegistry; bytes32 public immutable newWasmModuleRoot; ProxyAdmin public immutable govProxyAdmin; @@ -35,25 +35,25 @@ contract AIPArbOS30UpgradeChallengeManagerAction { ) { require( Address.isContract(address(_l1AddressRegistry)), - "AIPArbOS30UpgradeChallengeManagerAction: l1AddressRegistry is not a contract" + "AIPArbOS31UpgradeChallengeManagerAction: l1AddressRegistry is not a contract" ); require( Address.isContract(address(_govProxyAdmin)), - "AIPArbOS30UpgradeChallengeManagerAction: _govProxyAdmin is not a contract" + "AIPArbOS31UpgradeChallengeManagerAction: _govProxyAdmin is not a contract" ); require( Address.isContract(_newChallengeManagerImpl), - "AIPArbOS30UpgradeChallengeManagerAction: _newChallengeManagerImpl is not a contract" + "AIPArbOS31UpgradeChallengeManagerAction: _newChallengeManagerImpl is not a contract" ); require( Address.isContract(address(_osp)), - "AIPArbOS30UpgradeChallengeManagerAction: _osp is not a contract" + "AIPArbOS31UpgradeChallengeManagerAction: _osp is not a contract" ); require( Address.isContract(address(_condOsp)), - "AIPArbOS30UpgradeChallengeManagerAction: _condOsp is not a contract" + "AIPArbOS31UpgradeChallengeManagerAction: _condOsp is not a contract" ); l1AddressRegistry = _l1AddressRegistry; newWasmModuleRoot = _newWasmModuleRoot; @@ -78,11 +78,11 @@ contract AIPArbOS30UpgradeChallengeManagerAction { // verify require( govProxyAdmin.getProxyImplementation(challengeManager) == newChallengeManagerImpl, - "AIPArbOS30UpgradeChallengeManagerAction: new challenge manager implementation set" + "AIPArbOS31UpgradeChallengeManagerAction: new challenge manager implementation set" ); require( IChallengeManagerUpgradeInit(address(challengeManager)).osp() == address(osp), - "AIPArbOS30UpgradeChallengeManagerAction: new OSP not set" + "AIPArbOS31UpgradeChallengeManagerAction: new OSP not set" ); // set new wasm module root @@ -92,7 +92,7 @@ contract AIPArbOS30UpgradeChallengeManagerAction { // verify: require( rollup.wasmModuleRoot() == newWasmModuleRoot, - "AIPArbOS30UpgradeChallengeManagerAction: wasm module root not set" + "AIPArbOS31UpgradeChallengeManagerAction: wasm module root not set" ); } } From 28e44823adf1ff67043640f83083d60291baf3ca Mon Sep 17 00:00:00 2001 From: gzeon Date: Thu, 11 Jul 2024 00:29:39 +0800 Subject: [PATCH 05/15] feat: set cond root to current 0x8b10 --- .../ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol | 2 +- .../AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol index 3f0aba598..017be25b2 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol @@ -17,7 +17,7 @@ contract ArbOneAIPArbOS31UpgradeChallengeManagerAction is ProxyAdmin(0x554723262467F125Ac9e1cDFa9Ce15cc53822dbD), // l1 core proxy admin address(0), // challenge manager impl TODO IOneStepProofEntry(address(0)), // new osp TODO) - bytes32(0), // cond root TODO + 0x8b104a2e80ac6165dc58b9048de12f301d70b02a0ab51396c22b4b4b802a16a4, // cond root IOneStepProofEntry(address(0)) // cond osp TODO ) {} diff --git a/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol index 27c1f6e84..310dc4262 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol @@ -15,7 +15,7 @@ contract NovaAIPArbOS31UpgradeChallengeManagerAction is AIPArbOS31UpgradeChallen ProxyAdmin(0x71D78dC7cCC0e037e12de1E50f5470903ce37148), // l1 core proxy admin address(0), // challenge manager impl TODO IOneStepProofEntry(address(0)), // new osp TODO) - bytes32(0), // cond root TODO + 0x8b104a2e80ac6165dc58b9048de12f301d70b02a0ab51396c22b4b4b802a16a4, // cond root IOneStepProofEntry(address(0)) // cond osp TODO ) {} From 853be2e805fa311ffb72e6eaefc3f82689a864b5 Mon Sep 17 00:00:00 2001 From: gzeon Date: Thu, 11 Jul 2024 00:30:41 +0800 Subject: [PATCH 06/15] chore: remove todo --- .../parent_contracts/AIPArbOS31UpgradeChallengeManagerAction.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gov-action-contracts/AIPs/AIPArbOS31/parent_contracts/AIPArbOS31UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/parent_contracts/AIPArbOS31UpgradeChallengeManagerAction.sol index 33fd9b1ba..90fe3254d 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS31/parent_contracts/AIPArbOS31UpgradeChallengeManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/parent_contracts/AIPArbOS31UpgradeChallengeManagerAction.sol @@ -8,7 +8,6 @@ import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; import "../../../address-registries/L1AddressRegistry.sol"; interface IChallengeManagerUpgradeInit { - // TODO function postUpgradeInit(IOneStepProofEntry osp_, bytes32 condRoot, IOneStepProofEntry condOsp) external; function osp() external returns (address); From 24d6491084c1948acff2e297a74c234bdaba156b Mon Sep 17 00:00:00 2001 From: gzeon Date: Thu, 11 Jul 2024 13:52:57 +0800 Subject: [PATCH 07/15] feat: update new and cond osp --- .../ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol | 4 ++-- .../NovaAIPArbOS31UpgradeChallengeManagerAction.sol | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol index 017be25b2..b2514ef6d 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol @@ -16,9 +16,9 @@ contract ArbOneAIPArbOS31UpgradeChallengeManagerAction is bytes32(0), // wasm module root TODO ProxyAdmin(0x554723262467F125Ac9e1cDFa9Ce15cc53822dbD), // l1 core proxy admin address(0), // challenge manager impl TODO - IOneStepProofEntry(address(0)), // new osp TODO) + IOneStepProofEntry(0xa328BAF257A937b7934429a5d8458d98693C6FC7), // new osp 0x8b104a2e80ac6165dc58b9048de12f301d70b02a0ab51396c22b4b4b802a16a4, // cond root - IOneStepProofEntry(address(0)) // cond osp TODO + IOneStepProofEntry(0x83fA8eD860514370fbcC5f04eA7969475F48CfEb) // cond osp ) {} } diff --git a/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol index 310dc4262..c640ab244 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol @@ -14,9 +14,9 @@ contract NovaAIPArbOS31UpgradeChallengeManagerAction is AIPArbOS31UpgradeChallen bytes32(0), // wasm module root TODO ProxyAdmin(0x71D78dC7cCC0e037e12de1E50f5470903ce37148), // l1 core proxy admin address(0), // challenge manager impl TODO - IOneStepProofEntry(address(0)), // new osp TODO) + IOneStepProofEntry(0xa328BAF257A937b7934429a5d8458d98693C6FC7), // new osp 0x8b104a2e80ac6165dc58b9048de12f301d70b02a0ab51396c22b4b4b802a16a4, // cond root - IOneStepProofEntry(address(0)) // cond osp TODO + IOneStepProofEntry(0x83fA8eD860514370fbcC5f04eA7969475F48CfEb) // cond osp ) {} } From f38b55f9c5f84208a4dddb8bbdad5151befe46a2 Mon Sep 17 00:00:00 2001 From: gzeon Date: Thu, 11 Jul 2024 13:53:21 +0800 Subject: [PATCH 08/15] feat: update challenge manager --- .../ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol | 2 +- .../AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol index b2514ef6d..8b627128e 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol @@ -15,7 +15,7 @@ contract ArbOneAIPArbOS31UpgradeChallengeManagerAction is L1AddressRegistry(0xd514C2b3aaBDBfa10800B9C96dc1eB25427520A0), // l1 address registry bytes32(0), // wasm module root TODO ProxyAdmin(0x554723262467F125Ac9e1cDFa9Ce15cc53822dbD), // l1 core proxy admin - address(0), // challenge manager impl TODO + 0x914B7b3053B35B84A24df08D7c9ceBCaEA4E2948, // challenge manager impl IOneStepProofEntry(0xa328BAF257A937b7934429a5d8458d98693C6FC7), // new osp 0x8b104a2e80ac6165dc58b9048de12f301d70b02a0ab51396c22b4b4b802a16a4, // cond root IOneStepProofEntry(0x83fA8eD860514370fbcC5f04eA7969475F48CfEb) // cond osp diff --git a/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol index c640ab244..67950a309 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol @@ -13,7 +13,7 @@ contract NovaAIPArbOS31UpgradeChallengeManagerAction is AIPArbOS31UpgradeChallen L1AddressRegistry(0x2F06643fc2CC18585Ae790b546388F0DE4Ec6635), // l1 address registry bytes32(0), // wasm module root TODO ProxyAdmin(0x71D78dC7cCC0e037e12de1E50f5470903ce37148), // l1 core proxy admin - address(0), // challenge manager impl TODO + 0x914B7b3053B35B84A24df08D7c9ceBCaEA4E2948, // challenge manager impl IOneStepProofEntry(0xa328BAF257A937b7934429a5d8458d98693C6FC7), // new osp 0x8b104a2e80ac6165dc58b9048de12f301d70b02a0ab51396c22b4b4b802a16a4, // cond root IOneStepProofEntry(0x83fA8eD860514370fbcC5f04eA7969475F48CfEb) // cond osp From 1e42f3b818a4da1ebc5ff665a2ec0a80c6bebb67 Mon Sep 17 00:00:00 2001 From: gzeon Date: Thu, 11 Jul 2024 13:58:19 +0800 Subject: [PATCH 09/15] feat: update v31 wasm root --- .../ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol | 2 +- .../AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol index 8b627128e..1356e18df 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/ArbOneAIPArbOS31UpgradeChallengeManagerAction.sol @@ -13,7 +13,7 @@ contract ArbOneAIPArbOS31UpgradeChallengeManagerAction is constructor() AIPArbOS31UpgradeChallengeManagerAction( L1AddressRegistry(0xd514C2b3aaBDBfa10800B9C96dc1eB25427520A0), // l1 address registry - bytes32(0), // wasm module root TODO + 0x260f5fa5c3176a856893642e149cf128b5a8de9f828afec8d11184415dd8dc69, // wasm module root ProxyAdmin(0x554723262467F125Ac9e1cDFa9Ce15cc53822dbD), // l1 core proxy admin 0x914B7b3053B35B84A24df08D7c9ceBCaEA4E2948, // challenge manager impl IOneStepProofEntry(0xa328BAF257A937b7934429a5d8458d98693C6FC7), // new osp diff --git a/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol index 67950a309..30e2c89ec 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/NovaAIPArbOS31UpgradeChallengeManagerAction.sol @@ -11,7 +11,7 @@ contract NovaAIPArbOS31UpgradeChallengeManagerAction is AIPArbOS31UpgradeChallen constructor() AIPArbOS31UpgradeChallengeManagerAction( L1AddressRegistry(0x2F06643fc2CC18585Ae790b546388F0DE4Ec6635), // l1 address registry - bytes32(0), // wasm module root TODO + 0x260f5fa5c3176a856893642e149cf128b5a8de9f828afec8d11184415dd8dc69, // wasm module root ProxyAdmin(0x71D78dC7cCC0e037e12de1E50f5470903ce37148), // l1 core proxy admin 0x914B7b3053B35B84A24df08D7c9ceBCaEA4E2948, // challenge manager impl IOneStepProofEntry(0xa328BAF257A937b7934429a5d8458d98693C6FC7), // new osp From 234553c7dc8bd7319b05074dc4105c3d170d3f50 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Fri, 12 Jul 2024 10:02:01 -0400 Subject: [PATCH 10/15] arbos31 proposal data --- scripts/proposals/ArbOS31AIP/ArbOS31AIP.json | 24 ++++++++++++++++++++ scripts/proposals/ArbOS31AIP/generate.bash | 24 ++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 scripts/proposals/ArbOS31AIP/ArbOS31AIP.json create mode 100755 scripts/proposals/ArbOS31AIP/generate.bash diff --git a/scripts/proposals/ArbOS31AIP/ArbOS31AIP.json b/scripts/proposals/ArbOS31AIP/ArbOS31AIP.json new file mode 100644 index 000000000..bdc84c788 --- /dev/null +++ b/scripts/proposals/ArbOS31AIP/ArbOS31AIP.json @@ -0,0 +1,24 @@ +{ + "actionChainIds": [ + 1, + 1, + 42161, + 42161, + 42170, + 42170, + 42170 + ], + "actionAddresses": [ + "0x19b715cF310C28C9020e53AAA11Ce9dF42E718b5", + "0x658AFc9d5Ec4476Fa6bb7033eA465F9901FBfF27", + "0x7ed9C3A779BE8b742AbFC17a2F15353ecBcE3e00", + "0xb040b105A4a0C7a9CC290164AcCBC32855368322", + "0x75C5a4532102DDFa44527B382990C384Ec1dD57D", + "0x61703Bf337341f2e09d96Dd6488c2907718A8E26", + "0xe99f07f5277Ee01f7f31D051927F5133878c61f4" + ], + "arbSysSendTxToL1Args": { + "l1Timelock": "0xE6841D92B0C345144506576eC13ECf5103aC7f49", + "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000000007a6688436833a75eb956d417dc7df7b79206d6c2f59dd04dcb205eed3a054f89000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000000000070000000000000000000000003fffbadaf827559da092217e474760e2b2c3cedd0000000000000000000000003fffbadaf827559da092217e474760e2b2c3cedd000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000008e000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000019b715cf310c28c9020e53aaa11ce9df42e718b500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000658afc9d5ec4476fa6bb7033ea465f9901fbff2700000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000007ed9c3a779be8b742abfc17a2f15353ecbce3e0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000b040b105a4a0c7a9cc290164accbc3285536832200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000075c5a4532102ddfa44527b382990c384ec1dd57d00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000061703bf337341f2e09d96dd6488c2907718a8e2600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000e99f07f5277ee01f7f31d051927f5133878c61f400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } +} \ No newline at end of file diff --git a/scripts/proposals/ArbOS31AIP/generate.bash b/scripts/proposals/ArbOS31AIP/generate.bash new file mode 100755 index 000000000..9d52cb3bb --- /dev/null +++ b/scripts/proposals/ArbOS31AIP/generate.bash @@ -0,0 +1,24 @@ +#!/bin/bash + +# SetArbOS31VersionAction contracts may be redeployed with nonzero delay + +# ArbOneAIPArbOS31UpgradeChallengeManagerAction: 0x19b715cF310C28C9020e53AAA11Ce9dF42E718b5 @ 1 +# NovaAIPArbOS31UpgradeChallengeManagerAction: 0x658AFc9d5Ec4476Fa6bb7033eA465F9901FBfF27 @ 1 + +# SetArbOS31VersionAction: 0x7ed9C3A779BE8b742AbFC17a2F15353ecBcE3e00 @ 42161 +# ArbOneAIPArbOS31AddWasmCacheManagerAction: 0xb040b105A4a0C7a9CC290164AcCBC32855368322 @ 42161 + +# SetArbOS31VersionAction: 0x75C5a4532102DDFa44527B382990C384Ec1dD57D @ 42170 +# NovaAIPArbOS31AddWasmCacheManagerAction: 0x61703Bf337341f2e09d96Dd6488c2907718A8E26 @ 42170 +# AIPNovaFeeRoutingAction: 0xe99f07f5277Ee01f7f31D051927F5133878c61f4 @ 42170 + +yarn gen:proposalData --govChainProviderRPC https://arb1.arbitrum.io/rpc \ + --actionChainIds \ + 1 1 \ + 42161 42161 \ + 42170 42170 42170 \ + --actionAddresses \ + 0x19b715cF310C28C9020e53AAA11Ce9dF42E718b5 0x658AFc9d5Ec4476Fa6bb7033eA465F9901FBfF27 \ + 0x7ed9C3A779BE8b742AbFC17a2F15353ecBcE3e00 0xb040b105A4a0C7a9CC290164AcCBC32855368322 \ + 0x75C5a4532102DDFa44527B382990C384Ec1dD57D 0x61703Bf337341f2e09d96Dd6488c2907718A8E26 0xe99f07f5277Ee01f7f31D051927F5133878c61f4 \ + --writeToJsonPath ./scripts/proposals/ArbOS31AIP/ArbOS31AIP.json \ No newline at end of file From 124694d83c24551c113f5f600382bba83edcd88b Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 16 Jul 2024 13:43:03 -0400 Subject: [PATCH 11/15] update router --- src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol b/src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol index 35ff9d4e5..24e51852a 100644 --- a/src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol +++ b/src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol @@ -43,7 +43,7 @@ contract AIPNovaFeeRoutingAction { address public immutable novaL2BaseRecipient5 = 0x0fB1f1a31429F1A90a19Ab5486a6DFb384179641; address public immutable novaL2BaseRecipient6 = 0xb814441ed86e98e8B83d31eEC095e4a5A36Fc3c2; - address public immutable novaToL1Router = 0xd9a2e0E5d7509F0BF1B2d33884F8C1b4D4490879; + address public immutable novaToL1Router = 0x36D0170D92F66e8949eB276C3AC4FEA64f83704d; error NotAContract(address addr); From 3b869dff6fd8ce33509873a5f33eadb160d4414d Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 16 Jul 2024 13:52:04 -0400 Subject: [PATCH 12/15] update propdata --- scripts/proposals/ArbOS31AIP/ArbOS31AIP.json | 4 ++-- scripts/proposals/ArbOS31AIP/generate.bash | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/proposals/ArbOS31AIP/ArbOS31AIP.json b/scripts/proposals/ArbOS31AIP/ArbOS31AIP.json index bdc84c788..bcc70256d 100644 --- a/scripts/proposals/ArbOS31AIP/ArbOS31AIP.json +++ b/scripts/proposals/ArbOS31AIP/ArbOS31AIP.json @@ -15,10 +15,10 @@ "0xb040b105A4a0C7a9CC290164AcCBC32855368322", "0x75C5a4532102DDFa44527B382990C384Ec1dD57D", "0x61703Bf337341f2e09d96Dd6488c2907718A8E26", - "0xe99f07f5277Ee01f7f31D051927F5133878c61f4" + "0x849E360a247132F961c9CBE95Ba39106c72e1268" ], "arbSysSendTxToL1Args": { "l1Timelock": "0xE6841D92B0C345144506576eC13ECf5103aC7f49", - "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000000007a6688436833a75eb956d417dc7df7b79206d6c2f59dd04dcb205eed3a054f89000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000000000070000000000000000000000003fffbadaf827559da092217e474760e2b2c3cedd0000000000000000000000003fffbadaf827559da092217e474760e2b2c3cedd000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000008e000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000019b715cf310c28c9020e53aaa11ce9df42e718b500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000658afc9d5ec4476fa6bb7033ea465f9901fbff2700000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000007ed9c3a779be8b742abfc17a2f15353ecbce3e0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000b040b105a4a0c7a9cc290164accbc3285536832200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000075c5a4532102ddfa44527b382990c384ec1dd57d00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000061703bf337341f2e09d96dd6488c2907718a8e2600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000e99f07f5277ee01f7f31d051927f5133878c61f400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000000e370f6762a3b8914584e4ab488d29c083c336e697db62d0c9efc5b227e11f9fe000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000000000070000000000000000000000003fffbadaf827559da092217e474760e2b2c3cedd0000000000000000000000003fffbadaf827559da092217e474760e2b2c3cedd000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000008e000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000019b715cf310c28c9020e53aaa11ce9df42e718b500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000658afc9d5ec4476fa6bb7033ea465f9901fbff2700000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000007ed9c3a779be8b742abfc17a2f15353ecbce3e0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000b040b105a4a0c7a9cc290164accbc3285536832200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000075c5a4532102ddfa44527b382990c384ec1dd57d00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000061703bf337341f2e09d96dd6488c2907718a8e2600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000849e360a247132f961c9cbe95ba39106c72e126800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" } } \ No newline at end of file diff --git a/scripts/proposals/ArbOS31AIP/generate.bash b/scripts/proposals/ArbOS31AIP/generate.bash index 9d52cb3bb..80794e7fe 100755 --- a/scripts/proposals/ArbOS31AIP/generate.bash +++ b/scripts/proposals/ArbOS31AIP/generate.bash @@ -10,7 +10,7 @@ # SetArbOS31VersionAction: 0x75C5a4532102DDFa44527B382990C384Ec1dD57D @ 42170 # NovaAIPArbOS31AddWasmCacheManagerAction: 0x61703Bf337341f2e09d96Dd6488c2907718A8E26 @ 42170 -# AIPNovaFeeRoutingAction: 0xe99f07f5277Ee01f7f31D051927F5133878c61f4 @ 42170 +# AIPNovaFeeRoutingAction: 0x849E360a247132F961c9CBE95Ba39106c72e1268 @ 42170 yarn gen:proposalData --govChainProviderRPC https://arb1.arbitrum.io/rpc \ --actionChainIds \ @@ -20,5 +20,5 @@ yarn gen:proposalData --govChainProviderRPC https://arb1.arbitrum.io/rpc \ --actionAddresses \ 0x19b715cF310C28C9020e53AAA11Ce9dF42E718b5 0x658AFc9d5Ec4476Fa6bb7033eA465F9901FBfF27 \ 0x7ed9C3A779BE8b742AbFC17a2F15353ecBcE3e00 0xb040b105A4a0C7a9CC290164AcCBC32855368322 \ - 0x75C5a4532102DDFa44527B382990C384Ec1dD57D 0x61703Bf337341f2e09d96Dd6488c2907718A8E26 0xe99f07f5277Ee01f7f31D051927F5133878c61f4 \ + 0x75C5a4532102DDFa44527B382990C384Ec1dD57D 0x61703Bf337341f2e09d96Dd6488c2907718A8E26 0x849E360a247132F961c9CBE95Ba39106c72e1268 \ --writeToJsonPath ./scripts/proposals/ArbOS31AIP/ArbOS31AIP.json \ No newline at end of file From 8e730975dbf4403a38dc0270fcc0c56bdee80c42 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 16 Jul 2024 14:02:17 -0400 Subject: [PATCH 13/15] update router (#300) --- src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol b/src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol index 35ff9d4e5..24e51852a 100644 --- a/src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol +++ b/src/gov-action-contracts/AIPs/AIPNovaFeeRoutingAction.sol @@ -43,7 +43,7 @@ contract AIPNovaFeeRoutingAction { address public immutable novaL2BaseRecipient5 = 0x0fB1f1a31429F1A90a19Ab5486a6DFb384179641; address public immutable novaL2BaseRecipient6 = 0xb814441ed86e98e8B83d31eEC095e4a5A36Fc3c2; - address public immutable novaToL1Router = 0xd9a2e0E5d7509F0BF1B2d33884F8C1b4D4490879; + address public immutable novaToL1Router = 0x36D0170D92F66e8949eB276C3AC4FEA64f83704d; error NotAContract(address addr); From 59a668c0e9ca57764a04cd88bae6b4d8f7180a76 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Wed, 24 Jul 2024 08:07:15 -0400 Subject: [PATCH 14/15] Arbos 31 timed upgrade action (#301) * feat: UpgradeArbOSVersionAtTimestampAction * upgrade at timestamp --------- Co-authored-by: gzeon --- .../AIPArbOS31/SetArbOS31VersionAction.sol | 6 ++--- .../UpgradeArbOSVersionAtTimestampAction.sol | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 src/gov-action-contracts/arbos-upgrade/UpgradeArbOSVersionAtTimestampAction.sol diff --git a/src/gov-action-contracts/AIPs/AIPArbOS31/SetArbOS31VersionAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/SetArbOS31VersionAction.sol index a43fee86c..cb97c2c2d 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS31/SetArbOS31VersionAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/SetArbOS31VersionAction.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.16; -import "../../arbos-upgrade/UpgradeArbOSVersionAction.sol"; +import "../../arbos-upgrade/UpgradeArbOSVersionAtTimestampAction.sol"; /// @notice Sets the ArbOS version to 31. To be run on an arbitrum chain /// @dev Identical copies of this contract to be deployed on Arb One and Nova for ArbOS31 upgrades -contract SetArbOS31VersionAction is UpgradeArbOSVersionAction { - constructor() UpgradeArbOSVersionAction(uint64(31), 0 /*TODO*/ ) {} +contract SetArbOS31VersionAction is UpgradeArbOSVersionAtTimestampAction { + constructor() UpgradeArbOSVersionAtTimestampAction(uint64(31), 1725382800) {} } diff --git a/src/gov-action-contracts/arbos-upgrade/UpgradeArbOSVersionAtTimestampAction.sol b/src/gov-action-contracts/arbos-upgrade/UpgradeArbOSVersionAtTimestampAction.sol new file mode 100644 index 000000000..8b71a6482 --- /dev/null +++ b/src/gov-action-contracts/arbos-upgrade/UpgradeArbOSVersionAtTimestampAction.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.16; + +import "@arbitrum/nitro-contracts/src/precompiles/ArbOwner.sol"; + +/// @notice should be included in an operation batch in the L1 timelock along with SetWasmModuleRootAction +contract UpgradeArbOSVersionAtTimestampAction { + uint64 public immutable newArbOSVersion; + uint64 public immutable upgradeTimestamp; + + constructor(uint64 _newArbOSVersion, uint64 _upgradeTimestamp) { + newArbOSVersion = _newArbOSVersion; + upgradeTimestamp = _upgradeTimestamp; + } + + function perform() external { + ArbOwner arbOwner = ArbOwner(0x0000000000000000000000000000000000000070); + arbOwner.scheduleArbOSUpgrade({ + newVersion: newArbOSVersion, + timestamp: upgradeTimestamp + }); + } +} From c8172a30a4d94021e7ea0c1f36187a3e0e1d14ac Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Wed, 24 Jul 2024 08:07:42 -0400 Subject: [PATCH 15/15] Arbos 30 timed upgrade propdata (#302) * feat: UpgradeArbOSVersionAtTimestampAction * update router (#300) * upgrade at timestamp * deploy new version actions --------- Co-authored-by: gzeon --- scripts/proposals/ArbOS31AIP/ArbOS31AIP.json | 6 ++--- scripts/proposals/ArbOS31AIP/generate.bash | 8 +++---- .../AIPArbOS31/SetArbOS31VersionAction.sol | 6 ++--- .../UpgradeArbOSVersionAtTimestampAction.sol | 23 +++++++++++++++++++ 4 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 src/gov-action-contracts/arbos-upgrade/UpgradeArbOSVersionAtTimestampAction.sol diff --git a/scripts/proposals/ArbOS31AIP/ArbOS31AIP.json b/scripts/proposals/ArbOS31AIP/ArbOS31AIP.json index bcc70256d..715551c60 100644 --- a/scripts/proposals/ArbOS31AIP/ArbOS31AIP.json +++ b/scripts/proposals/ArbOS31AIP/ArbOS31AIP.json @@ -11,14 +11,14 @@ "actionAddresses": [ "0x19b715cF310C28C9020e53AAA11Ce9dF42E718b5", "0x658AFc9d5Ec4476Fa6bb7033eA465F9901FBfF27", - "0x7ed9C3A779BE8b742AbFC17a2F15353ecBcE3e00", + "0xaF81C82Ec98f86D0017d78cD66F1026f1A5Cf1Db", "0xb040b105A4a0C7a9CC290164AcCBC32855368322", - "0x75C5a4532102DDFa44527B382990C384Ec1dD57D", + "0x6dD43360d2a69BB9FfFC5349F2511f2A3bCbC2da", "0x61703Bf337341f2e09d96Dd6488c2907718A8E26", "0x849E360a247132F961c9CBE95Ba39106c72e1268" ], "arbSysSendTxToL1Args": { "l1Timelock": "0xE6841D92B0C345144506576eC13ECf5103aC7f49", - "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000000e370f6762a3b8914584e4ab488d29c083c336e697db62d0c9efc5b227e11f9fe000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000000000070000000000000000000000003fffbadaf827559da092217e474760e2b2c3cedd0000000000000000000000003fffbadaf827559da092217e474760e2b2c3cedd000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000008e000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000019b715cf310c28c9020e53aaa11ce9df42e718b500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000658afc9d5ec4476fa6bb7033ea465f9901fbff2700000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000007ed9c3a779be8b742abfc17a2f15353ecbce3e0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000b040b105a4a0c7a9cc290164accbc3285536832200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000075c5a4532102ddfa44527b382990c384ec1dd57d00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000061703bf337341f2e09d96dd6488c2907718a8e2600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000849e360a247132f961c9cbe95ba39106c72e126800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000000e13fb8241eb0e976305ff5f40d43d783c08468da55f38eee093510e004f512aa000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000000000070000000000000000000000003fffbadaf827559da092217e474760e2b2c3cedd0000000000000000000000003fffbadaf827559da092217e474760e2b2c3cedd000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000008e000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000019b715cf310c28c9020e53aaa11ce9df42e718b500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000658afc9d5ec4476fa6bb7033ea465f9901fbff2700000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000af81c82ec98f86d0017d78cd66f1026f1a5cf1db00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000b040b105a4a0c7a9cc290164accbc3285536832200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000006dd43360d2a69bb9fffc5349f2511f2a3bcbc2da00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000061703bf337341f2e09d96dd6488c2907718a8e2600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c4448b71118c9071bcb9734a0eac55d18a15394900000000000000000000000086a02dd71363c440b21f4c0e5b2ad01ffe1a748200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000849e360a247132f961c9cbe95ba39106c72e126800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" } } \ No newline at end of file diff --git a/scripts/proposals/ArbOS31AIP/generate.bash b/scripts/proposals/ArbOS31AIP/generate.bash index 80794e7fe..36a35a6b4 100755 --- a/scripts/proposals/ArbOS31AIP/generate.bash +++ b/scripts/proposals/ArbOS31AIP/generate.bash @@ -5,10 +5,10 @@ # ArbOneAIPArbOS31UpgradeChallengeManagerAction: 0x19b715cF310C28C9020e53AAA11Ce9dF42E718b5 @ 1 # NovaAIPArbOS31UpgradeChallengeManagerAction: 0x658AFc9d5Ec4476Fa6bb7033eA465F9901FBfF27 @ 1 -# SetArbOS31VersionAction: 0x7ed9C3A779BE8b742AbFC17a2F15353ecBcE3e00 @ 42161 +# SetArbOS31VersionAction: 0xaF81C82Ec98f86D0017d78cD66F1026f1A5Cf1Db @ 42161 # ArbOneAIPArbOS31AddWasmCacheManagerAction: 0xb040b105A4a0C7a9CC290164AcCBC32855368322 @ 42161 -# SetArbOS31VersionAction: 0x75C5a4532102DDFa44527B382990C384Ec1dD57D @ 42170 +# SetArbOS31VersionAction: 0x6dD43360d2a69BB9FfFC5349F2511f2A3bCbC2da @ 42170 # NovaAIPArbOS31AddWasmCacheManagerAction: 0x61703Bf337341f2e09d96Dd6488c2907718A8E26 @ 42170 # AIPNovaFeeRoutingAction: 0x849E360a247132F961c9CBE95Ba39106c72e1268 @ 42170 @@ -19,6 +19,6 @@ yarn gen:proposalData --govChainProviderRPC https://arb1.arbitrum.io/rpc \ 42170 42170 42170 \ --actionAddresses \ 0x19b715cF310C28C9020e53AAA11Ce9dF42E718b5 0x658AFc9d5Ec4476Fa6bb7033eA465F9901FBfF27 \ - 0x7ed9C3A779BE8b742AbFC17a2F15353ecBcE3e00 0xb040b105A4a0C7a9CC290164AcCBC32855368322 \ - 0x75C5a4532102DDFa44527B382990C384Ec1dD57D 0x61703Bf337341f2e09d96Dd6488c2907718A8E26 0x849E360a247132F961c9CBE95Ba39106c72e1268 \ + 0xaF81C82Ec98f86D0017d78cD66F1026f1A5Cf1Db 0xb040b105A4a0C7a9CC290164AcCBC32855368322 \ + 0x6dD43360d2a69BB9FfFC5349F2511f2A3bCbC2da 0x61703Bf337341f2e09d96Dd6488c2907718A8E26 0x849E360a247132F961c9CBE95Ba39106c72e1268 \ --writeToJsonPath ./scripts/proposals/ArbOS31AIP/ArbOS31AIP.json \ No newline at end of file diff --git a/src/gov-action-contracts/AIPs/AIPArbOS31/SetArbOS31VersionAction.sol b/src/gov-action-contracts/AIPs/AIPArbOS31/SetArbOS31VersionAction.sol index a43fee86c..cb97c2c2d 100644 --- a/src/gov-action-contracts/AIPs/AIPArbOS31/SetArbOS31VersionAction.sol +++ b/src/gov-action-contracts/AIPs/AIPArbOS31/SetArbOS31VersionAction.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.16; -import "../../arbos-upgrade/UpgradeArbOSVersionAction.sol"; +import "../../arbos-upgrade/UpgradeArbOSVersionAtTimestampAction.sol"; /// @notice Sets the ArbOS version to 31. To be run on an arbitrum chain /// @dev Identical copies of this contract to be deployed on Arb One and Nova for ArbOS31 upgrades -contract SetArbOS31VersionAction is UpgradeArbOSVersionAction { - constructor() UpgradeArbOSVersionAction(uint64(31), 0 /*TODO*/ ) {} +contract SetArbOS31VersionAction is UpgradeArbOSVersionAtTimestampAction { + constructor() UpgradeArbOSVersionAtTimestampAction(uint64(31), 1725382800) {} } diff --git a/src/gov-action-contracts/arbos-upgrade/UpgradeArbOSVersionAtTimestampAction.sol b/src/gov-action-contracts/arbos-upgrade/UpgradeArbOSVersionAtTimestampAction.sol new file mode 100644 index 000000000..8b71a6482 --- /dev/null +++ b/src/gov-action-contracts/arbos-upgrade/UpgradeArbOSVersionAtTimestampAction.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.16; + +import "@arbitrum/nitro-contracts/src/precompiles/ArbOwner.sol"; + +/// @notice should be included in an operation batch in the L1 timelock along with SetWasmModuleRootAction +contract UpgradeArbOSVersionAtTimestampAction { + uint64 public immutable newArbOSVersion; + uint64 public immutable upgradeTimestamp; + + constructor(uint64 _newArbOSVersion, uint64 _upgradeTimestamp) { + newArbOSVersion = _newArbOSVersion; + upgradeTimestamp = _upgradeTimestamp; + } + + function perform() external { + ArbOwner arbOwner = ArbOwner(0x0000000000000000000000000000000000000070); + arbOwner.scheduleArbOSUpgrade({ + newVersion: newArbOSVersion, + timestamp: upgradeTimestamp + }); + } +}