Skip to content

Commit

Permalink
chore: add migration artifact and deployment script
Browse files Browse the repository at this point in the history
  • Loading branch information
TuDo1403 committed Feb 11, 2025
1 parent d1cd018 commit 754f614
Show file tree
Hide file tree
Showing 11 changed files with 2,630 additions and 8 deletions.

Large diffs are not rendered by default.

746 changes: 746 additions & 0 deletions deployments/ronin-mainnet/LegacyTokenMigratorLogic.json

Large diffs are not rendered by default.

139 changes: 139 additions & 0 deletions deployments/ronin-mainnet/LegacyTokenMigratorProxy.json

Large diffs are not rendered by default.

1,056 changes: 1,056 additions & 0 deletions deployments/ronin-mainnet/WBTCLogic.json

Large diffs are not rendered by default.

139 changes: 139 additions & 0 deletions deployments/ronin-mainnet/WBTCProxy.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ ffi = true
solc = '0.8.27'
extra_output = ["devdoc", "userdoc", "storagelayout"]
fs_permissions = [{ access = "read-write", path = "./" }]
evm_version = 'shanghai'
evm_version = 'london'
verbosity = 4
use_literal_content = true
unchecked_cheatcode_artifacts = true
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import { WBTC, WBTCDeploy } from "script/contracts/WBTCDeploy.s.sol";
import { LegacyTokenMigrator, LegacyTokenMigratorDeploy } from "script/contracts/LegacyTokenMigratorDeploy.s.sol";
import { Migration } from "script/Migration.s.sol";
import { Contract } from "script/utils/Contract.sol";

contract Migration__20252101_DeployWBTCAndLegacyMigrator is Migration {
function run() public virtual {
address prvWBTC = loadContract(Contract.WBTC.key());

WBTC newBTC = new WBTCDeploy().run();
LegacyTokenMigrator migrator = new LegacyTokenMigratorDeploy().run();

address admin = 0x9D05D1F5b0424F8fDE534BC196FFB6Dd211D902a; // Multisig Address
address[] memory legacyTokens = new address[](1);
legacyTokens[0] = prvWBTC;
address[] memory newTokens = new address[](1);
newTokens[0] = address(newBTC);

vm.broadcast(sender());
migrator.initialize(admin, legacyTokens, newTokens);
}
}
1 change: 1 addition & 0 deletions script/GeneralConfig.sol
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ contract GeneralConfig is BaseGeneralConfig, Utils {
_mapContractName(Contract.WBTC);
_mapContractName(Contract.PostChecker);
_mapContractName(Contract.WETH);
_mapContractName(Contract.LegacyTokenMigrator);

_contractNameMap[Contract.AXS.key()] = "MockERC20";
_contractNameMap[Contract.SLP.key()] = "MockSLP";
Expand Down
17 changes: 17 additions & 0 deletions script/contracts/LegacyTokenMigratorDeploy.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import { LegacyTokenMigrator } from "src/ronin/migration/LegacyTokenMigrator.sol";
import { Contract } from "../utils/Contract.sol";
import { Migration } from "../Migration.s.sol";

contract LegacyTokenMigratorDeploy is Migration {
function run() public virtual returns (LegacyTokenMigrator instance) {
instance = LegacyTokenMigrator(_deployProxy(Contract.LegacyTokenMigrator.key()));
}

function _getProxyAdmin() internal virtual override returns (address payable) {
// ronin-mainnet: SC Multisig
return payable(0x9D05D1F5b0424F8fDE534BC196FFB6Dd211D902a);
}
}
20 changes: 14 additions & 6 deletions script/contracts/WBTCDeploy.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,26 @@ import { WBTC } from "@ronin/contracts/tokens/erc20/WBTC.sol";
import { Contract } from "../utils/Contract.sol";
import { Migration } from "../Migration.s.sol";

import { BridgeSlashDeploy } from "./BridgeSlashDeploy.s.sol";

contract WBTCDeploy is Migration {
function _defaultArguments() internal virtual override returns (bytes memory) {
address gateway = loadContract(Contract.RoninGatewayV3.key());
address pauseEnforcer = loadContract(Contract.RoninPauseEnforcer.key());
address admin = 0x9D05D1F5b0424F8fDE534BC196FFB6Dd211D902a;
address minter = admin;
address pauser = admin;
address burner = admin;

return abi.encodeCall(WBTC.initialize, (admin, minter, burner, pauser));
}

return abi.encode(gateway, pauseEnforcer);
function _getProxyAdmin() internal virtual override returns (address payable) {
// ronin-mainnet: SC Multisig
return payable(0x9D05D1F5b0424F8fDE534BC196FFB6Dd211D902a);
}

function run() public virtual returns (WBTC instance) {
instance = WBTC(_deployImmutable(Contract.WBTC.key()));
instance = WBTC(_deployProxy(Contract.WBTC.key()));

assertEq(instance.decimals(), 8, "WBTC: invalid decimals");
assertEq(instance.symbol(), "WBTC", "WBTC: invalid symbol");
assertEq(instance.name(), "Wrapped Bitcoin", "WBTC: invalid name");
}
}
4 changes: 3 additions & 1 deletion script/utils/Contract.sol
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ enum Contract {
MainchainBridgeManager,
MainchainWethUnwrapper,
MainchainGatewayBatcher,
PostChecker
PostChecker,
LegacyTokenMigrator
}

using { key, name } for Contract global;
Expand Down Expand Up @@ -58,6 +59,7 @@ function name(Contract contractEnum) pure returns (string memory) {
if (contractEnum == Contract.MainchainGatewayBatcher) return "MainchainGatewayBatcher";
if (contractEnum == Contract.MainchainBridgeManager) return "MainchainBridgeManager";
if (contractEnum == Contract.MainchainWethUnwrapper) return "WethUnwrapper";
if (contractEnum == Contract.LegacyTokenMigrator) return "LegacyTokenMigrator";

if (contractEnum == Contract.PostChecker) return "PostChecker";

Expand Down

0 comments on commit 754f614

Please sign in to comment.