Skip to content

Commit

Permalink
feat(script): add portal uggrade script
Browse files Browse the repository at this point in the history
  • Loading branch information
PierrickGT committed Oct 10, 2024
1 parent e82ed1e commit d6ad736
Show file tree
Hide file tree
Showing 6 changed files with 109 additions and 6 deletions.
12 changes: 12 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,18 @@ upgrade-transceiver-dev-base-sepolia:
upgrade-transceiver-dev-optimism-sepolia:
FOUNDRY_PROFILE=production forge script script/upgrade/dev/UpgradeWormholeTransceiverDev.s.sol:UpgradeWormholeTransceiverDev --private-key $(DEV_PRIVATE_KEY) --rpc-url $(OPTIMISM_SEPOLIA_RPC_URL) --skip test --broadcast --slow -v

upgrade-portal-local:
FOUNDRY_PROFILE=production forge script script/upgrade/dev/UpgradePortalDev.s.sol:UpgradePortalDev --private-key $(DEV_PRIVATE_KEY) --rpc-url localhost --skip test --broadcast -v

upgrade-portal-dev-sepolia:
FOUNDRY_PROFILE=production forge script script/upgrade/dev/UpgradePortalDev.s.sol:UpgradePortalDev --private-key $(DEV_PRIVATE_KEY) --rpc-url $(SEPOLIA_RPC_URL) --skip test --broadcast --slow -v

upgrade-portal-dev-base-sepolia:
FOUNDRY_PROFILE=production forge script script/upgrade/dev/UpgradePortalDev.s.sol:UpgradePortalDev --private-key $(DEV_PRIVATE_KEY) --rpc-url $(BASE_SEPOLIA_RPC_URL) --skip test --broadcast --slow -v

upgrade-portal-dev-optimism-sepolia:
FOUNDRY_PROFILE=production forge script script/upgrade/dev/UpgradePortalDev.s.sol:UpgradePortalDev --private-key $(DEV_PRIVATE_KEY) --rpc-url $(OPTIMISM_SEPOLIA_RPC_URL) --skip test --broadcast --slow -v

# Run slither
slither :; FOUNDRY_PROFILE=production forge build --build-info --skip '*/test/**' --skip '*/script/**' --force && slither --compile-force-framework foundry --ignore-compile --sarif results.sarif --config-file slither.config.json .

Expand Down
6 changes: 6 additions & 0 deletions script/deploy/interfaces/ICreateXLike.sol
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ interface ICreateXLike {
uint256 initCallAmount;
}

/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
/* CREATE */
/*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

function computeCreateAddress(address deployer, uint256 nonce) external view returns (address computedAddress);

/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
/* CREATE3 */
/*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
Expand Down
4 changes: 4 additions & 0 deletions script/helpers/Utils.sol
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,10 @@ contract Utils {
}
}

function _getCreateAddress(address deployer_, uint256 nonce_) internal view virtual returns (address) {
return ICreateXLike(_CREATE_X_FACTORY).computeCreateAddress(deployer_, nonce_);
}

function _getCreate3Address(address deployer_, bytes32 salt_) internal view virtual returns (address) {
return ICreateXLike(_CREATE_X_FACTORY).computeCreate3Address(_computeGuardedSalt(deployer_, salt_));
}
Expand Down
36 changes: 33 additions & 3 deletions script/upgrade/UpgradeBase.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,24 @@ pragma solidity 0.8.26;
import { Script, console2 } from "../../lib/forge-std/src/Script.sol";

import { ITransceiver } from "../../lib/example-native-token-transfers/evm/src/interfaces/ITransceiver.sol";
import { IManagerBase } from "../../lib/example-native-token-transfers/evm/src/interfaces/IManagerBase.sol";
import {
WormholeTransceiver
} from "../../lib/example-native-token-transfers/evm/src/Transceiver/WormholeTransceiver/WormholeTransceiver.sol";

import { HubPortal } from "../../src/HubPortal.sol";
import { SpokePortal } from "../../src/SpokePortal.sol";

import { Utils } from "../helpers/Utils.sol";

contract UpgradeBase is Script, Utils {
struct UpgradeParams {
struct PortalUpgradeParams {
address mToken;
address registrar;
uint16 wormholeChainId;
}

struct WormholeTransceiverUpgradeParams {
uint16 wormholeChainId;
address wormholeCoreBridge;
address wormholeRelayerAddr;
Expand All @@ -21,7 +31,7 @@ contract UpgradeBase is Script, Utils {
uint256 gasLimit;
}

function _upgradeWormholeTransceiver(address deployer_, UpgradeParams memory params_) internal {
function _upgradeWormholeTransceiver(address deployer_, WormholeTransceiverUpgradeParams memory params_) internal {
WormholeTransceiver implementation_ = new WormholeTransceiver(
_getCreate3Address(deployer_, _computeSalt(deployer_, "Portal")),
params_.wormholeCoreBridge,
Expand All @@ -31,10 +41,30 @@ contract UpgradeBase is Script, Utils {
params_.gasLimit
);

console2.log("WormholeTransceiver Implementation deployed at: ", address(implementation_));
console2.log("WormholeTransceiver implementation deployed at: ", address(implementation_));

ITransceiver(_getCreate3Address(deployer_, _computeSalt(deployer_, "WormholeTransceiver"))).upgrade(
address(implementation_)
);
}

function _upgradeHubPortal(address deployer_, PortalUpgradeParams memory params_) internal {
HubPortal implementation_ = new HubPortal(params_.mToken, params_.registrar, params_.wormholeChainId);

console2.log("HubPortal implementation deployed at: ", address(implementation_));

IManagerBase(_getCreate3Address(deployer_, _computeSalt(deployer_, "Portal"))).upgrade(
address(implementation_)
);
}

function _upgradeSpokePortal(address deployer_, PortalUpgradeParams memory params_) internal {
SpokePortal implementation_ = new SpokePortal(params_.mToken, params_.registrar, params_.wormholeChainId);

console2.log("SpokePortal implementation deployed at: ", address(implementation_));

IManagerBase(_getCreate3Address(deployer_, _computeSalt(deployer_, "Portal"))).upgrade(
address(implementation_)
);
}
}
51 changes: 51 additions & 0 deletions script/upgrade/dev/UpgradePortalDev.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.26;

import { UpgradeBase } from "../UpgradeBase.sol";

contract UpgradePortalDev is UpgradeBase {
function run() public {
address deployer_ = vm.rememberKey(vm.envUint("DEV_PRIVATE_KEY"));

if (block.chainid == _SEPOLIA_CHAIN_ID) {
vm.startBroadcast();

_upgradeHubPortal(
deployer_,
PortalUpgradeParams({
mToken: _SEPOLIA_M_TOKEN,
registrar: _SEPOLIA_REGISTRAR,
wormholeChainId: _SEPOLIA_WORMHOLE_CHAIN_ID
})
);

vm.stopBroadcast();
} else if (block.chainid == _BASE_SEPOLIA_CHAIN_ID) {
vm.startBroadcast();
_upgradeSpokePortal(
deployer_,
PortalUpgradeParams({
mToken: _getCreateAddress(deployer_, _SPOKE_M_TOKEN_NONCE),
registrar: _getCreateAddress(deployer_, _SPOKE_REGISTRAR_NONCE),
wormholeChainId: _BASE_SEPOLIA_WORMHOLE_CHAIN_ID
})
);

vm.stopBroadcast();
} else if (block.chainid == _OPTIMISM_SEPOLIA_CHAIN_ID) {
vm.startBroadcast();

_upgradeSpokePortal(
deployer_,
PortalUpgradeParams({
mToken: _getCreateAddress(deployer_, _SPOKE_M_TOKEN_NONCE),
registrar: _getCreateAddress(deployer_, _SPOKE_REGISTRAR_NONCE),
wormholeChainId: _OPTIMISM_SEPOLIA_WORMHOLE_CHAIN_ID
})
);

vm.stopBroadcast();
}
}
}
6 changes: 3 additions & 3 deletions script/upgrade/dev/UpgradeWormholeTransceiverDev.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ contract UpgradeWormholeTransceiverDev is UpgradeBase {

_upgradeWormholeTransceiver(
deployer_,
UpgradeParams({
WormholeTransceiverUpgradeParams({
wormholeChainId: _SEPOLIA_WORMHOLE_CHAIN_ID,
wormholeCoreBridge: _SEPOLIA_WORMHOLE_CORE_BRIDGE,
wormholeRelayerAddr: _SEPOLIA_WORMHOLE_RELAYER,
Expand All @@ -29,7 +29,7 @@ contract UpgradeWormholeTransceiverDev is UpgradeBase {

_upgradeWormholeTransceiver(
deployer_,
UpgradeParams({
WormholeTransceiverUpgradeParams({
wormholeChainId: _BASE_SEPOLIA_WORMHOLE_CHAIN_ID,
wormholeCoreBridge: _BASE_SEPOLIA_WORMHOLE_CORE_BRIDGE,
wormholeRelayerAddr: _BASE_SEPOLIA_WORMHOLE_RELAYER,
Expand All @@ -45,7 +45,7 @@ contract UpgradeWormholeTransceiverDev is UpgradeBase {

_upgradeWormholeTransceiver(
deployer_,
UpgradeParams({
WormholeTransceiverUpgradeParams({
wormholeChainId: _OPTIMISM_SEPOLIA_WORMHOLE_CHAIN_ID,
wormholeCoreBridge: _OPTIMISM_SEPOLIA_WORMHOLE_CORE_BRIDGE,
wormholeRelayerAddr: _OPTIMISM_SEPOLIA_WORMHOLE_RELAYER,
Expand Down

0 comments on commit d6ad736

Please sign in to comment.