|
| 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