Skip to content

Commit 9d110b0

Browse files
committed
feat: upgrade and use local oz
1 parent 6a657f3 commit 9d110b0

File tree

6 files changed

+33
-36
lines changed

6 files changed

+33
-36
lines changed

contracts/foundry.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ libs = ['node_modules', 'foundry-lib']
1111
bytecode_hash = "none"
1212
ffi = false
1313
allow_internal_expect_revert = true
14-
1514
# default is zero, using a non-zero amount enables us to test e.g. billing based on gas prices.
1615
gas_price = 1
1716
block_timestamp = 1234567890

contracts/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@
125125
"@changesets/cli": "~2.27.7",
126126
"@eth-optimism/contracts": "0.6.0",
127127
"@matterlabs/hardhat-zksync-verify": "^1.6.0",
128-
"@openzeppelin/contracts": "4.9.3",
129-
"@openzeppelin/contracts-upgradeable": "4.9.3",
128+
"@openzeppelin/contracts": "5.1.0",
129+
"@openzeppelin/contracts-upgradeable": "5.1.0",
130130
"@scroll-tech/contracts": "0.1.0",
131131
"@zksync/contracts": "git+https://github.com/matter-labs/era-contracts.git#446d391d34bdb48255d5f8fef8a8248925fc98b9",
132132
"semver": "^7.6.3"

contracts/pnpm-lock.yaml

Lines changed: 14 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/remappings.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
forge-std/=src/v0.8/vendor/forge-std/src/
22

3-
@openzeppelin/=node_modules/@openzeppelin/
3+
@oz/=node_modules/@openzeppelin/
44
@arbitrum/=node_modules/@arbitrum/
55
hardhat/=node_modules/hardhat/
66
@eth-optimism/=node_modules/@eth-optimism/
77
@scroll-tech/=node_modules/@scroll-tech/
88
@zksync/=node_modules/@zksync/
99

1010
@aave/=foundry-lib/gho-core/lib/aave-token/
11+
@openzeppelin/=foundry-lib/gho-core/lib/openzeppelin-contracts/
1112
@aave-gho-core/=foundry-lib/gho-core/src/contracts/
1213
@aave/core-v3/=foundry-lib/gho-core/lib/aave-v3-core/
1314
@aave/periphery-v3/=foundry-lib/gho-core/lib/aave-v3-periphery/

contracts/script/DeployUpgradableBurnMintTokenPool.s.sol

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,22 @@ import {Script} from "forge-std/Script.sol";
55
import {console2 as console} from "forge-std/console2.sol";
66
import {stdJson} from "forge-std/StdJson.sol";
77

8+
import {TransparentUpgradeableProxy, ProxyAdmin} from "@oz/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
89
import {UpgradeableBurnMintTokenPool} from "./../src/v0.8/ccip/pools/GHO/UpgradeableBurnMintTokenPool.sol";
9-
import {ITypeAndVersion} from "./../src/v0.8/shared/interfaces/ITypeAndVersion.sol";
10-
import {ITransparentProxyFactory} from "solidity-utils/contracts/transparent-proxy/interfaces/ITransparentProxyFactory.sol";
11-
import {IERC20Metadata} from "solidity-utils/contracts/oz-common/interfaces/IERC20Metadata.sol";
1210

13-
interface IProxyAdmin {
14-
function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
15-
}
11+
import {IERC20Metadata} from "solidity-utils/contracts/oz-common/interfaces/IERC20Metadata.sol";
12+
import {ITypeAndVersion} from "./../src/v0.8/shared/interfaces/ITypeAndVersion.sol";
1613

1714
struct Config {
1815
address GHO_TOKEN;
1916
address OWNER;
20-
address PROXY_FACTORY;
2117
address RMN_PROXY;
2218
address ROUTER;
2319
}
2420

2521
/// @notice Deploys UpgradeableBurnMintTokenPool behind a transparent upgradable proxy for GHO.
2622
/// Pre-requisite: add parameters to config.json, the with key as `chainId` of the target network.
27-
/// Usage: forge script DeployUpgradableBurnMintTokenPool --rpc-url <RPC_URL> --private-key <PRIVATE_KEY> --broadcast --verify --etherscan-api-key <ETHERSCAN_API_KEY>
23+
/// Usage: FOUNDRY_PROFILE=ccip forge script DeployUpgradableBurnMintTokenPool --rpc-url <RPC_URL> --private-key <PRIVATE_KEY> --broadcast --verify --etherscan-api-key <ETHERSCAN_API_KEY>
2824
contract DeployUpgradableBurnMintTokenPool is Script {
2925
using stdJson for string;
3026

@@ -39,15 +35,17 @@ contract DeployUpgradableBurnMintTokenPool is Script {
3935
address tokenPool = address(
4036
new UpgradeableBurnMintTokenPool(config.GHO_TOKEN, TOKEN_DECIMALS, config.RMN_PROXY, ALLOW_LIST_ENABLED)
4137
);
42-
address tokenPoolProxy = ITransparentProxyFactory(config.PROXY_FACTORY).create(
43-
tokenPool,
44-
config.OWNER,
45-
abi.encodeCall(UpgradeableBurnMintTokenPool.initialize, (config.OWNER, ALLOW_LIST, config.ROUTER))
38+
address tokenPoolProxy = address(
39+
new TransparentUpgradeableProxy({
40+
_logic: tokenPool,
41+
initialOwner: config.OWNER,
42+
_data: abi.encodeCall(UpgradeableBurnMintTokenPool.initialize, (config.OWNER, ALLOW_LIST, config.ROUTER))
43+
})
4644
);
4745
vm.stopBroadcast();
4846

49-
console.log("tokenPoolProxy: ", tokenPoolProxy);
50-
console.log("tokenPool: ", tokenPool);
47+
console.log("tokenPoolProxy ", tokenPoolProxy);
48+
console.log("tokenPoolImplementation ", tokenPool);
5149

5250
_validateProxyAdminVersion(tokenPoolProxy);
5351
}
@@ -59,7 +57,6 @@ contract DeployUpgradableBurnMintTokenPool is Script {
5957

6058
function _validate(Config memory config) internal view returns (Config memory) {
6159
require(address(config.OWNER) != address(0), "InvalidOwner");
62-
require(address(config.PROXY_FACTORY) != address(0), "InvalidProxyFactory");
6360
require(_cmp(IERC20Metadata(config.GHO_TOKEN).name(), "Gho Token"), "InvalidToken");
6461
require(_cmp(IERC20Metadata(config.GHO_TOKEN).symbol(), "GHO"), "InvalidToken");
6562
require(_cmp(ITypeAndVersion(config.RMN_PROXY).typeAndVersion(), "ARMProxy 1.0.0"), "InvalidRmnProxy");
@@ -68,14 +65,12 @@ contract DeployUpgradableBurnMintTokenPool is Script {
6865
}
6966

7067
function _validateProxyAdminVersion(address proxy) internal view {
71-
IProxyAdmin proxyAdmin = _getProxyAdmin(proxy);
72-
require(address(proxyAdmin) != address(0), "InvalidProxyAdmin");
73-
require(_cmp(proxyAdmin.UPGRADE_INTERFACE_VERSION(), "5.0.0"), "InvalidProxyAdminVersion");
68+
require(_cmp(_getProxyAdmin(proxy).UPGRADE_INTERFACE_VERSION(), "5.0.0"), "InvalidProxyAdminVersion");
7469
}
7570

76-
function _getProxyAdmin(address proxy) internal view returns (IProxyAdmin) {
71+
function _getProxyAdmin(address proxy) internal view returns (ProxyAdmin) {
7772
bytes32 slot = bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1);
78-
return IProxyAdmin(address(uint160(uint256(vm.load(proxy, slot)))));
73+
return ProxyAdmin(address(uint160(uint256(vm.load(proxy, slot)))));
7974
}
8075

8176
function _cmp(string memory a, string memory b) internal pure returns (bool) {

contracts/script/config.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@
22
"42161": {
33
"GHO_TOKEN": "0x7dfF72693f6A4149b17e7C6314655f6A9F7c8B33",
44
"OWNER": "0xFF1137243698CaA18EE364Cc966CF0e02A4e6327",
5-
"PROXY_FACTORY": "0xEB0682d148e874553008730f0686ea89db7DA412",
65
"RMN_PROXY": "0xC311a21e6fEf769344EB1515588B9d535662a145",
76
"ROUTER": "0x141fa059441E0ca23ce184B6A78bafD2A517DdE8"
87
},
98
"8453": {
109
"GHO_TOKEN": "0x6Bb7a212910682DCFdbd5BCBb3e28FB4E8da10Ee",
1110
"OWNER": "0x9390B1735def18560c509E2d0bc090E9d6BA257a",
12-
"PROXY_FACTORY": "0xEB0682d148e874553008730f0686ea89db7DA412",
1311
"RMN_PROXY": "0xC842c69d54F83170C42C4d556B4F6B2ca53Dd3E8",
1412
"ROUTER": "0x881e3A65B4d4a04dD529061dd0071cf975F58bCD"
1513
}

0 commit comments

Comments
 (0)