Skip to content

Commit

Permalink
Merge pull request #123 from axieinfinity/implement-feature/upgrade-p…
Browse files Browse the repository at this point in the history
…roxy/support-upgrade-with-logic-constructor-param

feat(upgrade-proxy): implement `support-upgrade-with-logic-constructor-param`
  • Loading branch information
huyhuynh3103 committed Mar 4, 2024
2 parents 868ea89 + 208e16b commit a692077
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions script/BaseMigration.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,8 @@ abstract contract BaseMigration is ScriptExtended {
string memory contractName = CONFIG.getContractName(contractType);

address logic = _deployLogic(contractType, argsLogicConstructor);
string memory proxyAbsolutePath = "./out/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json";
string memory proxyAbsolutePath =
"./out/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json";
uint256 proxyNonce = vm.getNonce(sender());
address proxyAdmin = _getProxyAdmin();
assertTrue(proxyAdmin != address(0x0), "BaseMigration: Null ProxyAdmin");
Expand Down Expand Up @@ -201,13 +202,17 @@ abstract contract BaseMigration is ScriptExtended {
proxy = _upgradeProxy(contractType, arguments());
}

function _upgradeProxy(TContract contractType, bytes memory args)
function _upgradeProxy(TContract contractType, bytes memory args) internal virtual returns (address payable proxy) {
proxy = _upgradeProxy(contractType, args, EMPTY_ARGS);
}

function _upgradeProxy(TContract contractType, bytes memory args, bytes memory argsLogicConstructor)
internal
virtual
logFn(string.concat("_upgradeProxy ", TContract.unwrap(contractType).unpackOne()))
returns (address payable proxy)
{
address logic = _deployLogic(contractType);
address logic = _deployLogic(contractType, argsLogicConstructor);
proxy = CONFIG.getAddress(network(), contractType);
_upgradeRaw(proxy.getProxyAdmin(), proxy, logic, args);
}
Expand Down Expand Up @@ -252,7 +257,7 @@ abstract contract BaseMigration is ScriptExtended {
}

function _upgradeRaw(address proxyAdmin, address payable proxy, address logic, bytes memory args) internal virtual {
if (logic.codehash == payable(proxyAdmin).getProxyImplementation({ nullCheck: true }).codehash) {
if (logic.codehash == payable(proxy).getProxyImplementation({ nullCheck: true }).codehash) {
console.log("BaseMigration: Logic is already upgraded!".yellow());
return;
}
Expand Down

0 comments on commit a692077

Please sign in to comment.