Skip to content

Commit 002c898

Browse files
committed
execution script
1 parent 5b0f67b commit 002c898

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
## These env vars are used for ExecuteNitroContracts2Point1Point2UpgradeScript
2+
3+
UPGRADE_ACTION_ADDRESS=
4+
INBOX_ADDRESS=
5+
PROXY_ADMIN_ADDRESS=
6+
PARENT_UPGRADE_EXECUTOR_ADDRESS=
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
pragma solidity 0.8.16;
3+
4+
import "forge-std/Script.sol";
5+
import {
6+
NitroContracts2Point1Point2UpgradeAction,
7+
ProxyAdmin
8+
} from "../../../../contracts/parent-chain/contract-upgrades/NitroContracts2Point1Point2UpgradeAction.sol";
9+
import {IInboxBase} from "@arbitrum/nitro-contracts-1.2.1/src/bridge/IInboxBase.sol";
10+
import {IERC20Bridge} from "@arbitrum/nitro-contracts-2.1.2/src/bridge/IERC20Bridge.sol";
11+
import {IUpgradeExecutor} from "@offchainlabs/upgrade-executor/src/IUpgradeExecutor.sol";
12+
13+
/**
14+
* @title ExecuteNitroContracts1Point2Point1UpgradeScript
15+
* @notice This script executes nitro contracts 2.1.0 upgrade through UpgradeExecutor
16+
*/
17+
contract ExecuteNitroContracts2Point1Point2UpgradeScript is Script {
18+
function run() public {
19+
20+
NitroContracts2Point1Point2UpgradeAction upgradeAction =
21+
NitroContracts2Point1Point2UpgradeAction(vm.envAddress("UPGRADE_ACTION_ADDRESS"));
22+
23+
IInboxBase inbox = IInboxBase(vm.envAddress("INBOX_ADDRESS"));
24+
25+
address bridge = address(inbox.bridge());
26+
27+
vm.startBroadcast();
28+
29+
// prepare upgrade calldata
30+
ProxyAdmin proxyAdmin = ProxyAdmin(vm.envAddress("PROXY_ADMIN_ADDRESS"));
31+
bytes memory upgradeCalldata =
32+
abi.encodeCall(NitroContracts2Point1Point2UpgradeAction.perform, (bridge, proxyAdmin));
33+
34+
// execute the upgrade
35+
// action checks prerequisites, and script will fail if the action reverts
36+
IUpgradeExecutor executor = IUpgradeExecutor(vm.envAddress("PARENT_UPGRADE_EXECUTOR_ADDRESS"));
37+
executor.execute(address(upgradeAction), upgradeCalldata);
38+
39+
// sanity check, full checks are done on-chain by the upgrade action
40+
require(IERC20Bridge(bridge).nativeTokenDecimals() == 18, "Unexpected native token decimals");
41+
42+
vm.stopBroadcast();
43+
}
44+
}

0 commit comments

Comments
 (0)