@@ -5,26 +5,22 @@ import {Script} from "forge-std/Script.sol";
55import {console2 as console} from "forge-std/console2.sol " ;
66import {stdJson} from "forge-std/StdJson.sol " ;
77
8+ import {TransparentUpgradeableProxy, ProxyAdmin} from "@oz/contracts/proxy/transparent/TransparentUpgradeableProxy.sol " ;
89import {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
1714struct 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>
2824contract 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 ) {
0 commit comments