From b47fcb1cdf5b0f892f6033217bb6bde1d278d89a Mon Sep 17 00:00:00 2001 From: Flocqst Date: Tue, 19 Nov 2024 18:52:52 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Upgrade=20deploy=20script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/Upgrade.s.sol | 51 +++++++++++++++++++ scripts/UpgradeRewardEscrowV2.s.sol | 42 --------------- .../utils/parameters/OptimismParameters.sol | 12 +++++ 3 files changed, 63 insertions(+), 42 deletions(-) create mode 100644 scripts/Upgrade.s.sol delete mode 100644 scripts/UpgradeRewardEscrowV2.s.sol create mode 100644 scripts/utils/parameters/OptimismParameters.sol diff --git a/scripts/Upgrade.s.sol b/scripts/Upgrade.s.sol new file mode 100644 index 000000000..bad4a6264 --- /dev/null +++ b/scripts/Upgrade.s.sol @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.19; + +import {Script, console} from "forge-std/Script.sol"; +import {RewardEscrowV2} from "../contracts/RewardEscrowV2.sol"; +import {StakingRewardsV2} from "../contracts/StakingRewardsV2.sol"; +import {OptimismParameters} from "scripts/utils/parameters/OptimismParameters.sol"; + +/// @dev steps to upgrade RewardEscrowV2 on Optimism: +/// (1) ensure the .env file contains the following variables: +/// - DEPLOYER_PRIVATE_KEY - the private key of the deployer +/// - ETHERSCAN_API_KEY - the API key of the Optimism Etherscan account (a normal etherscan API key will not work) +/// - ARCHIVE_NODE_URL_L2 - the archive node URL of the Optimism network +/// (2) load the variables in the .env file via `source .env` +/// (3) run `forge script scripts/Upgrade.s.sol:UpgradeRewardEscrowV2 --rpc-url $ARCHIVE_NODE_URL_L2 --etherscan-api-key $ETHERSCAN_API_KEY --broadcast --verify -vvvv`` +/// (4) Call upgradeTo() on the proxy with the new implementation address +contract UpgradeRewardEscrowV2 is Script, OptimismParameters { + function run() public { + uint256 deployerPrivateKey = vm.envUint("DEPLOYER_PRIVATE_KEY"); + vm.startBroadcast(deployerPrivateKey); + + RewardEscrowV2 rewardEscrowImplementation = new RewardEscrowV2(KWENTA_TOKEN, STAKING_REWARDS_NOTIFIER); + + vm.stopBroadcast(); + } +} + + +/// @dev steps to upgrade StakingRewardsV2 on Optimism: +/// (1) ensure the .env file contains the following variables: +/// - DEPLOYER_PRIVATE_KEY - the private key of the deployer +/// - ETHERSCAN_API_KEY - the API key of the Optimism Etherscan account (a normal etherscan API key will not work) +/// - ARCHIVE_NODE_URL_L2 - the archive node URL of the Optimism network +/// (2) load the variables in the .env file via `source .env` +/// (3) run `forge script scripts/Upgrade.s.sol:UpgradeStakingRewardsV2 --rpc-url $ARCHIVE_NODE_URL_L2 --etherscan-api-key $ETHERSCAN_API_KEY --broadcast --verify -vvvv`` +/// (4) Call upgradeTo() on the proxy with the new implementation address +contract UpgradeStakingRewardsV2 is Script, OptimismParameters { + function run() public { + uint256 deployerPrivateKey = vm.envUint("DEPLOYER_PRIVATE_KEY"); + vm.startBroadcast(deployerPrivateKey); + + StakingRewardsV2 stakingRewardsV2Implementation = new StakingRewardsV2( + KWENTA_TOKEN, + USDC_TOKEN, + REWARD_ESCROW_V2, + STAKING_REWARDS_NOTIFIER + ); + + vm.stopBroadcast(); + } +} diff --git a/scripts/UpgradeRewardEscrowV2.s.sol b/scripts/UpgradeRewardEscrowV2.s.sol deleted file mode 100644 index bc18c4fc9..000000000 --- a/scripts/UpgradeRewardEscrowV2.s.sol +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later -pragma solidity 0.8.19; - -import {Script, console} from "forge-std/Script.sol"; -import "../test/foundry/utils/Constants.t.sol"; - -/// @dev steps to deploy, setup and verify on Optimism: -/// (1) ensure the .env file contains the following variables: -/// - DEPLOYER_PRIVATE_KEY - the private key of the deployer -/// - ETHERSCAN_API_KEY - the API key of the Optimism Etherscan account (a normal etherscan API key will not work) -/// - ARCHIVE_NODE_URL_L2 - the archive node URL of the Optimism network -/// (2) load the variables in the .env file via `source .env` -/// (3) run `forge script scripts/UpgradeRewardEscrowV2.s.sol:UpgradeRewardEscrowV2 --rpc-url $ARCHIVE_NODE_URL_L2 --broadcast --verify -vvvv` -contract UpgradeRewardEscrowV2 is Script { - function run() public { - uint256 deployerPrivateKey = vm.envUint("DEPLOYER_PRIVATE_KEY"); - vm.startBroadcast(deployerPrivateKey); - address deployer = vm.addr(deployerPrivateKey); - - rewardEscrowV2Implementation = - address(new RewardEscrowV2(OPTIMISM_KWENTA_TOKEN, OPTIMISM_STAKING_REWARDS_NOTIFIER); - rewardEscrowV2 = RewardEscrowV2( - address( - new ERC1967Proxy( - rewardEscrowV2Implementation, - abi.encodeWithSignature( - "initialize(address)", - deployer - ) - ) - ) - ); - - console.log( - "Deployed RewardEscrowV2 Implementation at %s", rewardEscrowV2Implementation - ) - - console.log("Deployed RewardEscrowV2 Proxy at %s", address(rewardEscrowV2)); - - vm.stopBroadcast(); - } -} \ No newline at end of file diff --git a/scripts/utils/parameters/OptimismParameters.sol b/scripts/utils/parameters/OptimismParameters.sol new file mode 100644 index 000000000..c35c7eb90 --- /dev/null +++ b/scripts/utils/parameters/OptimismParameters.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.19; + +contract OptimismParameters { + address public constant KWENTA_TOKEN = 0x920Cf626a271321C151D027030D5d08aF699456b; + + address public constant STAKING_REWARDS_NOTIFIER = 0xb176DaD2916db0905cd2D65ed54FDC3a878aFFe4; + + address public constant REWARD_ESCROW_V2 = 0xb2a20fCdc506a685122847b21E34536359E94C56; + + address public constant USDC_TOKEN = 0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85; +}