Add proxy contract for TST

This commit is contained in:
stubbsta 2025-08-13 11:00:45 +02:00
parent 900d4f95e0
commit f58a2c349f
No known key found for this signature in database

View File

@ -0,0 +1,41 @@
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.19 <0.9.0;
import { BaseScript } from "./Base.s.sol";
import { TestStableToken } from "../test/TestStableToken.sol";
import {
TransparentUpgradeableProxy,
ITransparentUpgradeableProxy
} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
import { ProxyAdmin } from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
contract DeployTokenWithProxy is BaseScript {
function run() public broadcast returns (address proxy, address implementation, address admin) {
// Deploy the initial implementation
implementation = address(new TestStableToken());
// Deploy proxy admin
admin = address(new ProxyAdmin());
// Deploy the proxy with empty initialization data
proxy = address(new TransparentUpgradeableProxy(implementation, admin, ""));
return (proxy, implementation, admin);
}
}
contract UpdateTokenImplementation is BaseScript {
function run(address proxyAddress, address proxyAdminAddress) public broadcast returns (address newImplementation) {
// Deploy new implementation
newImplementation = address(new TestStableToken());
// Upgrade via ProxyAdmin
ProxyAdmin(proxyAdminAddress).upgradeAndCall(
ITransparentUpgradeableProxy(proxyAddress),
newImplementation,
""
);
return newImplementation;
}
}