From 8d58b5e47524254c93fd6797df260796f5b0bb9b Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Fri, 9 Jun 2023 13:16:19 -0700 Subject: [PATCH 1/4] proxy upgrade scripts --- packages/protocol/package.json | 3 +- .../upgrade/UpgradeAddressManager.s.sol | 39 +++++++++++++++++++ .../script/upgrade/UpgradeBridge.s.sol | 38 ++++++++++++++++++ .../script/upgrade/UpgradeSignalService.sol | 39 +++++++++++++++++++ .../script/upgrade/UpgradeTaikoL1.s.sol | 38 ++++++++++++++++++ .../script/upgrade/UpgradeTaikoL2.s.sol | 38 ++++++++++++++++++ .../script/upgrade/UpgradeTaikoToken.s.sol | 39 +++++++++++++++++++ .../script/upgrade/UpgradeTokenVault.s.sol | 39 +++++++++++++++++++ packages/protocol/script/upgrade_to.sh | 11 ++++++ 9 files changed, 283 insertions(+), 1 deletion(-) create mode 100644 packages/protocol/script/upgrade/UpgradeAddressManager.s.sol create mode 100644 packages/protocol/script/upgrade/UpgradeBridge.s.sol create mode 100644 packages/protocol/script/upgrade/UpgradeSignalService.sol create mode 100644 packages/protocol/script/upgrade/UpgradeTaikoL1.s.sol create mode 100644 packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol create mode 100644 packages/protocol/script/upgrade/UpgradeTaikoToken.s.sol create mode 100644 packages/protocol/script/upgrade/UpgradeTokenVault.s.sol create mode 100755 packages/protocol/script/upgrade_to.sh diff --git a/packages/protocol/package.json b/packages/protocol/package.json index eec3c18ed3..3cfb8ca4e0 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -20,7 +20,8 @@ "snapshot": "forge snapshot --match-path test/**/*.t.sol", "test": "forge test -vvv --gas-report --fuzz-seed $(date +%s) --match-path test/**/*.t.sol", "test:coverage": "forge coverage --report lcov", - "test:genesis": "./test/genesis/generate_genesis.test.sh" + "test:genesis": "./test/genesis/generate_genesis.test.sh", + "upgrade": "./script/upgrade_to.sh" }, "keywords": [ "ZKP", diff --git a/packages/protocol/script/upgrade/UpgradeAddressManager.s.sol b/packages/protocol/script/upgrade/UpgradeAddressManager.s.sol new file mode 100644 index 0000000000..752095a1e7 --- /dev/null +++ b/packages/protocol/script/upgrade/UpgradeAddressManager.s.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.18; + +import "forge-std/Script.sol"; +import "forge-std/console2.sol"; +import + "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; +import "../../contracts/common/AddressManager.sol"; + +contract UpgradeAddressManager is Script { + using SafeCastUpgradeable for uint256; + + uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); + + function run() external { + require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); + require(proxyAddress != address(0), "PROXY_ADDRESS not set"); + + vm.startBroadcast(deployerPrivateKey); + + TransparentUpgradeableProxy proxy = + TransparentUpgradeableProxy(payable(proxyAddress)); + + AddressManager newAddressManager = new ProxiedAddressManager(); + proxy.upgradeTo(address(newAddressManager)); + console2.log( + "proxy upgraded AddressManager implementation to", + address(newAddressManager) + ); + } +} diff --git a/packages/protocol/script/upgrade/UpgradeBridge.s.sol b/packages/protocol/script/upgrade/UpgradeBridge.s.sol new file mode 100644 index 0000000000..4f8461e5ba --- /dev/null +++ b/packages/protocol/script/upgrade/UpgradeBridge.s.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.18; + +import "forge-std/Script.sol"; +import "forge-std/console2.sol"; +import + "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; +import "../../contracts/bridge/Bridge.sol"; + +contract UpgradeBridge is Script { + using SafeCastUpgradeable for uint256; + + uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); + + function run() external { + require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); + require(proxyAddress != address(0), "PROXY_ADDRESS not set"); + + vm.startBroadcast(deployerPrivateKey); + + TransparentUpgradeableProxy proxy = + TransparentUpgradeableProxy(payable(proxyAddress)); + + Bridge newBridge = new ProxiedBridge(); + proxy.upgradeTo(address(newBridge)); + console2.log( + "proxy upgraded bridge implementation to", address(newBridge) + ); + } +} diff --git a/packages/protocol/script/upgrade/UpgradeSignalService.sol b/packages/protocol/script/upgrade/UpgradeSignalService.sol new file mode 100644 index 0000000000..e8fd24391e --- /dev/null +++ b/packages/protocol/script/upgrade/UpgradeSignalService.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.18; + +import "forge-std/Script.sol"; +import "forge-std/console2.sol"; +import + "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; +import "../../contracts/signal/SignalService.sol"; + +contract UpgradeSignalService is Script { + using SafeCastUpgradeable for uint256; + + uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); + + function run() external { + require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); + require(proxyAddress != address(0), "PROXY_ADDRESS not set"); + + vm.startBroadcast(deployerPrivateKey); + + TransparentUpgradeableProxy proxy = + TransparentUpgradeableProxy(payable(proxyAddress)); + + SignalService newSignalService = new ProxiedSignalService(); + proxy.upgradeTo(address(newSignalService)); + console2.log( + "proxy upgraded SignalService implementation to", + address(newSignalService) + ); + } +} diff --git a/packages/protocol/script/upgrade/UpgradeTaikoL1.s.sol b/packages/protocol/script/upgrade/UpgradeTaikoL1.s.sol new file mode 100644 index 0000000000..9f985dbf85 --- /dev/null +++ b/packages/protocol/script/upgrade/UpgradeTaikoL1.s.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.18; + +import "forge-std/Script.sol"; +import "forge-std/console2.sol"; +import + "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; +import "../../contracts/L1/TaikoL1.sol"; + +contract UpgradeTaikoL1 is Script { + using SafeCastUpgradeable for uint256; + + uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); + + function run() external { + require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); + require(proxyAddress != address(0), "PROXY_ADDRESS not set"); + + vm.startBroadcast(deployerPrivateKey); + + TransparentUpgradeableProxy proxy = + TransparentUpgradeableProxy(payable(proxyAddress)); + + TaikoL1 newTaikoL1 = new ProxiedTaikoL1(); + proxy.upgradeTo(address(newTaikoL1)); + console2.log( + "proxy upgraded taiko L1 implementation to", address(newTaikoL1) + ); + } +} diff --git a/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol b/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol new file mode 100644 index 0000000000..ad8814b62a --- /dev/null +++ b/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.18; + +import "forge-std/Script.sol"; +import "forge-std/console2.sol"; +import + "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; +import "../../contracts/L2/TaikoL2.sol"; + +contract UpgradeTaikoL2 is Script { + using SafeCastUpgradeable for uint256; + + uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); + + function run() external { + require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); + require(proxyAddress != address(0), "PROXY_ADDRESS not set"); + + vm.startBroadcast(deployerPrivateKey); + + TransparentUpgradeableProxy proxy = + TransparentUpgradeableProxy(payable(proxyAddress)); + + TaikoL2 newTaikoL2 = new ProxiedTaikoL2(); + proxy.upgradeTo(address(newTaikoL2)); + console2.log( + "proxy upgraded TaikoL2 implementation to", address(newTaikoL2) + ); + } +} diff --git a/packages/protocol/script/upgrade/UpgradeTaikoToken.s.sol b/packages/protocol/script/upgrade/UpgradeTaikoToken.s.sol new file mode 100644 index 0000000000..647e89ece1 --- /dev/null +++ b/packages/protocol/script/upgrade/UpgradeTaikoToken.s.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.18; + +import "forge-std/Script.sol"; +import "forge-std/console2.sol"; +import + "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; +import "../../contracts/L1/TaikoToken.sol"; + +contract UpgradeTaikoToken is Script { + using SafeCastUpgradeable for uint256; + + uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); + + function run() external { + require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); + require(proxyAddress != address(0), "PROXY_ADDRESS not set"); + + vm.startBroadcast(deployerPrivateKey); + + TransparentUpgradeableProxy proxy = + TransparentUpgradeableProxy(payable(proxyAddress)); + + TaikoToken newTaikoToken = new ProxiedTaikoToken(); + proxy.upgradeTo(address(newTaikoToken)); + console2.log( + "proxy upgraded TaikoToken implementation to", + address(newTaikoToken) + ); + } +} diff --git a/packages/protocol/script/upgrade/UpgradeTokenVault.s.sol b/packages/protocol/script/upgrade/UpgradeTokenVault.s.sol new file mode 100644 index 0000000000..ab76e7f5d4 --- /dev/null +++ b/packages/protocol/script/upgrade/UpgradeTokenVault.s.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.18; + +import "forge-std/Script.sol"; +import "forge-std/console2.sol"; +import + "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; +import "../../contracts/bridge/TokenVault.sol"; + +contract UpgradeTokenVault is Script { + using SafeCastUpgradeable for uint256; + + uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); + + function run() external { + require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); + require(proxyAddress != address(0), "PROXY_ADDRESS not set"); + + vm.startBroadcast(deployerPrivateKey); + + TransparentUpgradeableProxy proxy = + TransparentUpgradeableProxy(payable(proxyAddress)); + + TokenVault newTokenVault = new ProxiedTokenVault(); + proxy.upgradeTo(address(newTokenVault)); + console2.log( + "proxy upgraded TokenVault implementation to", + address(newTokenVault) + ); + } +} diff --git a/packages/protocol/script/upgrade_to.sh b/packages/protocol/script/upgrade_to.sh new file mode 100755 index 0000000000..2aaf5c0d90 --- /dev/null +++ b/packages/protocol/script/upgrade_to.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +# This script is only used by `pnpm deploy:foundry`. +set -e +: "${FORK_URL:=http://localhost:8545}" + +forge script script/upgrade/Upgrade$CONTRACT.s.sol:Upgrade$CONTRACT \ + --fork-url $FORK_URL \ + --broadcast \ + --ffi \ + -vvvv \ No newline at end of file From cb9a816c58ab4a9cf7cd943563b0394b43bc945c Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Fri, 9 Jun 2023 13:35:19 -0700 Subject: [PATCH 2/4] comment --- packages/protocol/script/upgrade_to.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/protocol/script/upgrade_to.sh b/packages/protocol/script/upgrade_to.sh index 2aaf5c0d90..9f68e09dce 100755 --- a/packages/protocol/script/upgrade_to.sh +++ b/packages/protocol/script/upgrade_to.sh @@ -1,6 +1,5 @@ #!/bin/sh -# This script is only used by `pnpm deploy:foundry`. set -e : "${FORK_URL:=http://localhost:8545}" From ccf6a35195d219b88751e16bbd6f2aafd30c6684 Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Fri, 9 Jun 2023 13:40:56 -0700 Subject: [PATCH 3/4] refactor --- .../upgrade/UpgradeAddressManager.s.sol | 18 ++--------- .../script/upgrade/UpgradeBridge.s.sol | 20 +++---------- .../script/upgrade/UpgradeScript.s.sol | 30 +++++++++++++++++++ .../script/upgrade/UpgradeSignalService.sol | 18 ++--------- .../script/upgrade/UpgradeTaikoL1.s.sol | 18 ++--------- .../script/upgrade/UpgradeTaikoL2.s.sol | 18 ++--------- .../script/upgrade/UpgradeTaikoToken.s.sol | 18 ++--------- .../script/upgrade/UpgradeTokenVault.s.sol | 18 ++--------- 8 files changed, 52 insertions(+), 106 deletions(-) create mode 100644 packages/protocol/script/upgrade/UpgradeScript.s.sol diff --git a/packages/protocol/script/upgrade/UpgradeAddressManager.s.sol b/packages/protocol/script/upgrade/UpgradeAddressManager.s.sol index 752095a1e7..438b2bf523 100644 --- a/packages/protocol/script/upgrade/UpgradeAddressManager.s.sol +++ b/packages/protocol/script/upgrade/UpgradeAddressManager.s.sol @@ -12,23 +12,11 @@ import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; import "../../contracts/common/AddressManager.sol"; +import "./UpgradeScript.s.sol"; -contract UpgradeAddressManager is Script { - using SafeCastUpgradeable for uint256; - - uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); - - address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); - +contract UpgradeAddressManager is UpgradeScript { function run() external { - require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); - require(proxyAddress != address(0), "PROXY_ADDRESS not set"); - - vm.startBroadcast(deployerPrivateKey); - - TransparentUpgradeableProxy proxy = - TransparentUpgradeableProxy(payable(proxyAddress)); - + setUp(); AddressManager newAddressManager = new ProxiedAddressManager(); proxy.upgradeTo(address(newAddressManager)); console2.log( diff --git a/packages/protocol/script/upgrade/UpgradeBridge.s.sol b/packages/protocol/script/upgrade/UpgradeBridge.s.sol index 4f8461e5ba..3955520575 100644 --- a/packages/protocol/script/upgrade/UpgradeBridge.s.sol +++ b/packages/protocol/script/upgrade/UpgradeBridge.s.sol @@ -12,27 +12,15 @@ import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; import "../../contracts/bridge/Bridge.sol"; +import "./UpgradeScript.s.sol"; -contract UpgradeBridge is Script { - using SafeCastUpgradeable for uint256; - - uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); - - address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); - +contract UpgradeBridge is UpgradeScript { function run() external { - require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); - require(proxyAddress != address(0), "PROXY_ADDRESS not set"); - - vm.startBroadcast(deployerPrivateKey); - - TransparentUpgradeableProxy proxy = - TransparentUpgradeableProxy(payable(proxyAddress)); - + setUp(); Bridge newBridge = new ProxiedBridge(); proxy.upgradeTo(address(newBridge)); console2.log( - "proxy upgraded bridge implementation to", address(newBridge) + "proxy upgraded Bridge implementation to", address(newBridge) ); } } diff --git a/packages/protocol/script/upgrade/UpgradeScript.s.sol b/packages/protocol/script/upgrade/UpgradeScript.s.sol new file mode 100644 index 0000000000..0fd150c820 --- /dev/null +++ b/packages/protocol/script/upgrade/UpgradeScript.s.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.18; + +import "forge-std/Script.sol"; +import "forge-std/console2.sol"; +import + "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; + +contract UpgradeScript is Script { + uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); + + TransparentUpgradeableProxy proxy; + + function setUp() internal { + require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); + require(proxyAddress != address(0), "PROXY_ADDRESS not set"); + + vm.startBroadcast(deployerPrivateKey); + + proxy = TransparentUpgradeableProxy(payable(proxyAddress)); + } +} diff --git a/packages/protocol/script/upgrade/UpgradeSignalService.sol b/packages/protocol/script/upgrade/UpgradeSignalService.sol index e8fd24391e..35006d4bab 100644 --- a/packages/protocol/script/upgrade/UpgradeSignalService.sol +++ b/packages/protocol/script/upgrade/UpgradeSignalService.sol @@ -12,23 +12,11 @@ import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; import "../../contracts/signal/SignalService.sol"; +import "./UpgradeScript.s.sol"; -contract UpgradeSignalService is Script { - using SafeCastUpgradeable for uint256; - - uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); - - address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); - +contract UpgradeSignalService is UpgradeScript { function run() external { - require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); - require(proxyAddress != address(0), "PROXY_ADDRESS not set"); - - vm.startBroadcast(deployerPrivateKey); - - TransparentUpgradeableProxy proxy = - TransparentUpgradeableProxy(payable(proxyAddress)); - + setUp(); SignalService newSignalService = new ProxiedSignalService(); proxy.upgradeTo(address(newSignalService)); console2.log( diff --git a/packages/protocol/script/upgrade/UpgradeTaikoL1.s.sol b/packages/protocol/script/upgrade/UpgradeTaikoL1.s.sol index 9f985dbf85..4e80d6b983 100644 --- a/packages/protocol/script/upgrade/UpgradeTaikoL1.s.sol +++ b/packages/protocol/script/upgrade/UpgradeTaikoL1.s.sol @@ -12,23 +12,11 @@ import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; import "../../contracts/L1/TaikoL1.sol"; +import "./UpgradeScript.s.sol"; -contract UpgradeTaikoL1 is Script { - using SafeCastUpgradeable for uint256; - - uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); - - address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); - +contract UpgradeTaikoL1 is UpgradeScript { function run() external { - require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); - require(proxyAddress != address(0), "PROXY_ADDRESS not set"); - - vm.startBroadcast(deployerPrivateKey); - - TransparentUpgradeableProxy proxy = - TransparentUpgradeableProxy(payable(proxyAddress)); - + setUp(); TaikoL1 newTaikoL1 = new ProxiedTaikoL1(); proxy.upgradeTo(address(newTaikoL1)); console2.log( diff --git a/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol b/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol index ad8814b62a..05952ca1ec 100644 --- a/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol +++ b/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol @@ -12,23 +12,11 @@ import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; import "../../contracts/L2/TaikoL2.sol"; +import "./UpgradeScript.s.sol"; -contract UpgradeTaikoL2 is Script { - using SafeCastUpgradeable for uint256; - - uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); - - address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); - +contract UpgradeTaikoL2 is UpgradeScript { function run() external { - require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); - require(proxyAddress != address(0), "PROXY_ADDRESS not set"); - - vm.startBroadcast(deployerPrivateKey); - - TransparentUpgradeableProxy proxy = - TransparentUpgradeableProxy(payable(proxyAddress)); - + setUp(); TaikoL2 newTaikoL2 = new ProxiedTaikoL2(); proxy.upgradeTo(address(newTaikoL2)); console2.log( diff --git a/packages/protocol/script/upgrade/UpgradeTaikoToken.s.sol b/packages/protocol/script/upgrade/UpgradeTaikoToken.s.sol index 647e89ece1..b3e0af761a 100644 --- a/packages/protocol/script/upgrade/UpgradeTaikoToken.s.sol +++ b/packages/protocol/script/upgrade/UpgradeTaikoToken.s.sol @@ -12,23 +12,11 @@ import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; import "../../contracts/L1/TaikoToken.sol"; +import "./UpgradeScript.s.sol"; -contract UpgradeTaikoToken is Script { - using SafeCastUpgradeable for uint256; - - uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); - - address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); - +contract UpgradeTaikoToken is UpgradeScript { function run() external { - require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); - require(proxyAddress != address(0), "PROXY_ADDRESS not set"); - - vm.startBroadcast(deployerPrivateKey); - - TransparentUpgradeableProxy proxy = - TransparentUpgradeableProxy(payable(proxyAddress)); - + setUp(); TaikoToken newTaikoToken = new ProxiedTaikoToken(); proxy.upgradeTo(address(newTaikoToken)); console2.log( diff --git a/packages/protocol/script/upgrade/UpgradeTokenVault.s.sol b/packages/protocol/script/upgrade/UpgradeTokenVault.s.sol index ab76e7f5d4..7cb215afd9 100644 --- a/packages/protocol/script/upgrade/UpgradeTokenVault.s.sol +++ b/packages/protocol/script/upgrade/UpgradeTokenVault.s.sol @@ -12,23 +12,11 @@ import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; import "../../contracts/bridge/TokenVault.sol"; +import "./UpgradeScript.s.sol"; -contract UpgradeTokenVault is Script { - using SafeCastUpgradeable for uint256; - - uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); - - address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); - +contract UpgradeTokenVault is UpgradeScript { function run() external { - require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); - require(proxyAddress != address(0), "PROXY_ADDRESS not set"); - - vm.startBroadcast(deployerPrivateKey); - - TransparentUpgradeableProxy proxy = - TransparentUpgradeableProxy(payable(proxyAddress)); - + setUp(); TokenVault newTokenVault = new ProxiedTokenVault(); proxy.upgradeTo(address(newTokenVault)); console2.log( From 167c92de1304aa14531f723ac741fc8128cffc35 Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Sat, 10 Jun 2023 12:14:01 -0700 Subject: [PATCH 4/4] user modifier --- packages/protocol/script/upgrade/UpgradeAddressManager.s.sol | 3 +-- packages/protocol/script/upgrade/UpgradeBridge.s.sol | 3 +-- packages/protocol/script/upgrade/UpgradeScript.s.sol | 5 ++++- packages/protocol/script/upgrade/UpgradeSignalService.sol | 3 +-- packages/protocol/script/upgrade/UpgradeTaikoL1.s.sol | 3 +-- packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol | 3 +-- packages/protocol/script/upgrade/UpgradeTaikoToken.s.sol | 3 +-- packages/protocol/script/upgrade/UpgradeTokenVault.s.sol | 3 +-- 8 files changed, 11 insertions(+), 15 deletions(-) diff --git a/packages/protocol/script/upgrade/UpgradeAddressManager.s.sol b/packages/protocol/script/upgrade/UpgradeAddressManager.s.sol index 438b2bf523..426bcbb52b 100644 --- a/packages/protocol/script/upgrade/UpgradeAddressManager.s.sol +++ b/packages/protocol/script/upgrade/UpgradeAddressManager.s.sol @@ -15,8 +15,7 @@ import "../../contracts/common/AddressManager.sol"; import "./UpgradeScript.s.sol"; contract UpgradeAddressManager is UpgradeScript { - function run() external { - setUp(); + function run() external setUp { AddressManager newAddressManager = new ProxiedAddressManager(); proxy.upgradeTo(address(newAddressManager)); console2.log( diff --git a/packages/protocol/script/upgrade/UpgradeBridge.s.sol b/packages/protocol/script/upgrade/UpgradeBridge.s.sol index 3955520575..fd52329292 100644 --- a/packages/protocol/script/upgrade/UpgradeBridge.s.sol +++ b/packages/protocol/script/upgrade/UpgradeBridge.s.sol @@ -15,8 +15,7 @@ import "../../contracts/bridge/Bridge.sol"; import "./UpgradeScript.s.sol"; contract UpgradeBridge is UpgradeScript { - function run() external { - setUp(); + function run() external setUp { Bridge newBridge = new ProxiedBridge(); proxy.upgradeTo(address(newBridge)); console2.log( diff --git a/packages/protocol/script/upgrade/UpgradeScript.s.sol b/packages/protocol/script/upgrade/UpgradeScript.s.sol index 0fd150c820..1b0f414182 100644 --- a/packages/protocol/script/upgrade/UpgradeScript.s.sol +++ b/packages/protocol/script/upgrade/UpgradeScript.s.sol @@ -19,12 +19,15 @@ contract UpgradeScript is Script { TransparentUpgradeableProxy proxy; - function setUp() internal { + modifier setUp() { require(deployerPrivateKey != 0, "PRIVATE_KEY not set"); require(proxyAddress != address(0), "PROXY_ADDRESS not set"); vm.startBroadcast(deployerPrivateKey); proxy = TransparentUpgradeableProxy(payable(proxyAddress)); + _; + + vm.stopBroadcast(); } } diff --git a/packages/protocol/script/upgrade/UpgradeSignalService.sol b/packages/protocol/script/upgrade/UpgradeSignalService.sol index 35006d4bab..64da9258e4 100644 --- a/packages/protocol/script/upgrade/UpgradeSignalService.sol +++ b/packages/protocol/script/upgrade/UpgradeSignalService.sol @@ -15,8 +15,7 @@ import "../../contracts/signal/SignalService.sol"; import "./UpgradeScript.s.sol"; contract UpgradeSignalService is UpgradeScript { - function run() external { - setUp(); + function run() external setUp { SignalService newSignalService = new ProxiedSignalService(); proxy.upgradeTo(address(newSignalService)); console2.log( diff --git a/packages/protocol/script/upgrade/UpgradeTaikoL1.s.sol b/packages/protocol/script/upgrade/UpgradeTaikoL1.s.sol index 4e80d6b983..8379996c2a 100644 --- a/packages/protocol/script/upgrade/UpgradeTaikoL1.s.sol +++ b/packages/protocol/script/upgrade/UpgradeTaikoL1.s.sol @@ -15,8 +15,7 @@ import "../../contracts/L1/TaikoL1.sol"; import "./UpgradeScript.s.sol"; contract UpgradeTaikoL1 is UpgradeScript { - function run() external { - setUp(); + function run() external setUp { TaikoL1 newTaikoL1 = new ProxiedTaikoL1(); proxy.upgradeTo(address(newTaikoL1)); console2.log( diff --git a/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol b/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol index 05952ca1ec..85c042eda7 100644 --- a/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol +++ b/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol @@ -15,8 +15,7 @@ import "../../contracts/L2/TaikoL2.sol"; import "./UpgradeScript.s.sol"; contract UpgradeTaikoL2 is UpgradeScript { - function run() external { - setUp(); + function run() external setUp { TaikoL2 newTaikoL2 = new ProxiedTaikoL2(); proxy.upgradeTo(address(newTaikoL2)); console2.log( diff --git a/packages/protocol/script/upgrade/UpgradeTaikoToken.s.sol b/packages/protocol/script/upgrade/UpgradeTaikoToken.s.sol index b3e0af761a..4d4104b5b3 100644 --- a/packages/protocol/script/upgrade/UpgradeTaikoToken.s.sol +++ b/packages/protocol/script/upgrade/UpgradeTaikoToken.s.sol @@ -15,8 +15,7 @@ import "../../contracts/L1/TaikoToken.sol"; import "./UpgradeScript.s.sol"; contract UpgradeTaikoToken is UpgradeScript { - function run() external { - setUp(); + function run() external setUp { TaikoToken newTaikoToken = new ProxiedTaikoToken(); proxy.upgradeTo(address(newTaikoToken)); console2.log( diff --git a/packages/protocol/script/upgrade/UpgradeTokenVault.s.sol b/packages/protocol/script/upgrade/UpgradeTokenVault.s.sol index 7cb215afd9..b0dc597cbf 100644 --- a/packages/protocol/script/upgrade/UpgradeTokenVault.s.sol +++ b/packages/protocol/script/upgrade/UpgradeTokenVault.s.sol @@ -15,8 +15,7 @@ import "../../contracts/bridge/TokenVault.sol"; import "./UpgradeScript.s.sol"; contract UpgradeTokenVault is UpgradeScript { - function run() external { - setUp(); + function run() external setUp { TokenVault newTokenVault = new ProxiedTokenVault(); proxy.upgradeTo(address(newTokenVault)); console2.log(