Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Script/map wbtc testnet #50

Open
wants to merge 27 commits into
base: release/v3.2.1
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
aa85ae1
script for mapping erc1155
nxqbao Jun 14, 2024
cebc4d9
feat: add batch function
nxqbao Jun 19, 2024
a5f83dc
chore: init script
nxqbao Jun 19, 2024
e35d1f3
fix: interface and script
nxqbao Jun 19, 2024
8c76b8f
fix: `++i`
nxqbao Jun 20, 2024
28215de
Merge pull request #41 from ronin-chain/feat/support-batch-in-gateway
nxqbao Jun 20, 2024
a7aed09
chore: add artifacts
nxqbao Jun 20, 2024
7392a29
Merge pull request #43 from ronin-chain/deploy/v3.2.2-testnet
nxqbao Jun 20, 2024
ef3ce20
Merge pull request #44 from ronin-chain/release/v3.2.2
nxqbao Jun 27, 2024
ff61949
script: mapping Anima token
tringuyenskymavis Jun 26, 2024
95b7461
script: add factory script for ronin-testnet
tringuyenskymavis Jun 26, 2024
c84234a
chore: refactor factory script
tringuyenskymavis Jun 27, 2024
09c5b1b
chore: refactor code
tringuyenskymavis Jun 28, 2024
ada6b24
chore: refactor factory and map anima token script
tringuyenskymavis Jul 1, 2024
6c27f97
script: refactor scripts
tringuyenskymavis Jul 1, 2024
a7a19f1
script: minor refactor
tringuyenskymavis Jul 2, 2024
015948b
chore: restructure factories scripts
tringuyenskymavis Jul 3, 2024
b5e07ce
chore: resolve Bao's comments
tringuyenskymavis Jul 5, 2024
29336af
script: map wbtc script
tringuyenskymavis Jul 9, 2024
8943532
chore: small fix
tringuyenskymavis Jul 9, 2024
5a965d6
script: fix duplicate code
tringuyenskymavis Jul 10, 2024
8f175c5
script: organize factories folder and add more simulation script
tringuyenskymavis Jul 23, 2024
6d50979
chore: rename func
tringuyenskymavis Jul 23, 2024
5812d3c
script: map wbtc testnet
tringuyenskymavis Jul 24, 2024
f5bb23e
script: update pk management logic
TuDo1403 Jul 24, 2024
03c8579
script: censore op ref
TuDo1403 Jul 24, 2024
bcdaf4e
script: fix wbtc thresholds
nxqbao Jul 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
184 changes: 117 additions & 67 deletions deployments/sepolia/MainchainGatewayV3Logic.json

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import "../factories/factory-maptoken-mainchain.s.sol";
import "../factories/mainchain/factory-maptoken-mainchain-ethereum.s.sol";
import "./base-maptoken.s.sol";

contract Migration__20240308_MapTokenAperiosMainchain is Base__MapToken, Factory__MapTokensMainchain {
contract Migration__20240308_MapTokenAperiosMainchain is Base__MapToken, Factory__MapTokensMainchain_Ethereum {
function _initCaller() internal override(Base__MapToken, Factory__MapTokensMainchain) returns (address) {
return Base__MapToken._initCaller();
}
Expand All @@ -15,6 +15,6 @@ contract Migration__20240308_MapTokenAperiosMainchain is Base__MapToken, Factory

function run() public override {
console2.log("nonce", vm.getNonce(SM_GOVERNOR)); // Log nonce for workaround of nonce increase when switch network
super.run();
Factory__MapTokensMainchain_Ethereum.run();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
pragma solidity ^0.8.19;

import { console2 } from "forge-std/console2.sol";
import "../factories/factory-maptoken-roninchain.s.sol";
import "../factories/roninchain/factory-maptoken-ronin-mainnet.s.sol";
import "./base-maptoken.s.sol";

contract Migration__20240308_MapTokenAperiosRoninchain is Base__MapToken, Factory__MapTokensRoninchain {
contract Migration__20240308_MapTokenAperiosRoninchain is Base__MapToken, Factory__MapTokensRonin_Mainnet {
function _initCaller() internal override(Base__MapToken, Factory__MapTokensRoninchain) returns (address) {
return Base__MapToken._initCaller();
}
Expand All @@ -16,6 +16,6 @@ contract Migration__20240308_MapTokenAperiosRoninchain is Base__MapToken, Factor

function run() public override {
console2.log("nonce", vm.getNonce(SM_GOVERNOR)); // Log nonce for workaround of nonce increase when switch network
super.run();
Factory__MapTokensRonin_Mainnet.run();
}
}
2 changes: 1 addition & 1 deletion script/20240308-maptoken-aperios/caller-configs.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
pragma solidity ^0.8.19;

contract Migration__Caller_Config {
address internal SM_GOVERNOR = 0xe880802580a1fbdeF67ACe39D1B21c5b2C74f059; // TODO: replace by address of the SV governor
address internal SM_GOVERNOR = 0xd24D87DDc1917165435b306aAC68D99e0F49A3Fa; // TODO: replace by address of the SV governor
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@
pragma solidity ^0.8.19;

import { MapTokenInfo } from "../libraries/MapTokenInfo.sol";
import { LibTokenInfo, TokenStandard } from "@ronin/contracts/libraries/LibTokenInfo.sol";

contract Migration__MapToken_Aperios_Config {
MapTokenInfo _aperiosInfo;

constructor() {
_aperiosInfo.roninToken = address(0x7894b3088d069E70895EFfA4e8f7D2c243Fd04C1);
_aperiosInfo.mainchainToken = address(0x95b4B8CaD3567B5d7EF7399C2aE1d7070692aB0D);
_aperiosInfo.standard = TokenStandard.ERC20;
_aperiosInfo.minThreshold = 10 ether;
_aperiosInfo.highTierThreshold = 10_000_000 ether;
_aperiosInfo.lockedThreshold = 40_000_000 ether;
Expand Down
2 changes: 2 additions & 0 deletions script/20240308-maptoken-aperios/maptoken-ygg-configs.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@
pragma solidity ^0.8.19;

import { MapTokenInfo } from "../libraries/MapTokenInfo.sol";
import { LibTokenInfo, TokenStandard } from "@ronin/contracts/libraries/LibTokenInfo.sol";

contract Migration__MapToken_Ygg_Config {
MapTokenInfo _yggInfo;

constructor() {
_yggInfo.roninToken = address(0x1c306872bC82525d72Bf3562E8F0aA3f8F26e857);
_yggInfo.mainchainToken = address(0x25f8087EAD173b73D6e8B84329989A8eEA16CF73);
_yggInfo.standard = TokenStandard.ERC20;
_yggInfo.minThreshold = 20 ether;
_yggInfo.highTierThreshold = 1_000_000 ether;
_yggInfo.lockedThreshold = 2_000_000 ether;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import { console2 } from "forge-std/console2.sol";
import { StdStyle } from "forge-std/StdStyle.sol";
import { RoninBridgeManager } from "@ronin/contracts/ronin/gateway/RoninBridgeManager.sol";
import { IMainchainGatewayV3 } from "@ronin/contracts/interfaces/IMainchainGatewayV3.sol";
import { GlobalProposal } from "@ronin/contracts/libraries/GlobalProposal.sol";
import { LibTokenInfo, TokenStandard } from "@ronin/contracts/libraries/LibTokenInfo.sol";
import { Contract } from "../utils/Contract.sol";
import { Network } from "../utils/Network.sol";
import { Contract } from "../utils/Contract.sol";
import "@ronin/contracts/mainchain/MainchainBridgeManager.sol";
import { IRoninGatewayV3 } from "@ronin/contracts/interfaces/IRoninGatewayV3.sol";
import "@ronin/contracts/libraries/Proposal.sol";
import "@ronin/contracts/libraries/Ballot.sol";

import { MockUSDC } from "@ronin/contracts/mocks/token/MockUSDC.sol";
import { USDCDeploy } from "@ronin/script/contracts/token/USDCDeploy.s.sol";
import { MainchainBridgeAdminUtils } from "test/helpers/MainchainBridgeAdminUtils.t.sol";

import "../Migration.s.sol";

contract Migration__20240613_MapERC1155SepoliaRoninchain is Migration {
RoninBridgeManager internal _roninBridgeManager;
IRoninGatewayV3 internal _roninGatewayV3;

MainchainBridgeAdminUtils _mainchainProposalUtils;

function setUp() public override {
super.setUp();

_roninBridgeManager = RoninBridgeManager(0x8AaAD4782890eb879A0fC132A6AdF9E5eE708faF);
_roninGatewayV3 = IRoninGatewayV3(0xCee681C9108c42C710c6A8A949307D5F13C9F3ca);
}

function run() public {
address[] memory mainchainTokens = new address[](1);
address[] memory roninTokens = new address[](1);
TokenStandard[] memory standards = new TokenStandard[](1);
uint256[] memory chainIds = new uint256[](1);
uint256[][4] memory thresholds;
thresholds[0] = new uint256[](1);
thresholds[1] = new uint256[](1);
thresholds[2] = new uint256[](1);
thresholds[3] = new uint256[](1);

uint256 expiredTime = block.timestamp + 10 days;
address[] memory targets = new address[](1);
uint256[] memory values = new uint256[](1);
bytes[] memory calldatas = new bytes[](1);
uint256[] memory gasAmounts = new uint256[](1);

mainchainTokens[0] = address(0xFBb71EEE2B420ea88e663B91722b41966E1C5F17);
roninTokens[0] = address(0xDBB04B4BdBb385EB14cb3ea3C7B1FCcA55ea9160);
standards[0] = TokenStandard.ERC1155;
chainIds[0] = 11155111;

// ================ USDC ERC-20 ======================
// function mapTokens(
// address[] calldata _roninTokens,
// address[] calldata _mainchainTokens,
// uint256[] calldata chainIds,
// TokenStandard[] calldata _standards
// )
bytes memory innerData = abi.encodeCall(IRoninGatewayV3.mapTokens, (roninTokens, mainchainTokens, chainIds, standards));
bytes memory proxyData = abi.encodeWithSignature("functionDelegateCall(bytes)", innerData);

targets[0] = address(_roninGatewayV3);
values[0] = 0;
calldatas[0] = proxyData;
gasAmounts[0] = 1_000_000;

// ================ VERIFY AND EXECUTE PROPOSAL ===============

address[] memory governors = new address[](4);
governors[3] = 0xd24D87DDc1917165435b306aAC68D99e0F49A3Fa;
governors[2] = 0xb033ba62EC622dC54D0ABFE0254e79692147CA26;
governors[0] = 0x087D08e3ba42e64E3948962dd1371F906D1278b9;
governors[1] = 0x52ec2e6BBcE45AfFF8955Da6410bb13812F4289F;

vm.broadcast(governors[0]);
_roninBridgeManager.proposeProposalForCurrentNetwork(expiredTime, address(0), targets, values, calldatas, gasAmounts, Ballot.VoteType.For);

uint nonce = 1;
for (uint i = 1; i <= 2; ++i) {
vm.broadcast(governors[i]);
_roninBridgeManager.castProposalVoteForCurrentNetwork(Proposal.ProposalDetail({
nonce: nonce,
chainId: 2021,
expiryTimestamp: expiredTime,
executor: address(0),
targets: targets,
values: values,
calldatas: calldatas,
gasAmounts: gasAmounts
}), Ballot.VoteType.For);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import { console2 } from "forge-std/console2.sol";
import { StdStyle } from "forge-std/StdStyle.sol";
import { RoninBridgeManager } from "@ronin/contracts/ronin/gateway/RoninBridgeManager.sol";
import { IMainchainGatewayV3 } from "@ronin/contracts/interfaces/IMainchainGatewayV3.sol";
import { GlobalProposal } from "@ronin/contracts/libraries/GlobalProposal.sol";
import { LibTokenInfo, TokenStandard } from "@ronin/contracts/libraries/LibTokenInfo.sol";
import { Contract } from "../utils/Contract.sol";
import { Network } from "../utils/Network.sol";
import { Contract } from "../utils/Contract.sol";
import "@ronin/contracts/mainchain/MainchainBridgeManager.sol";
import "@ronin/contracts/mainchain/MainchainGatewayV3.sol";
import "@ronin/contracts/libraries/Proposal.sol";
import "@ronin/contracts/libraries/Ballot.sol";

import { MockUSDC } from "@ronin/contracts/mocks/token/MockUSDC.sol";
import { USDCDeploy } from "@ronin/script/contracts/token/USDCDeploy.s.sol";
import { MainchainBridgeAdminUtils } from "test/helpers/MainchainBridgeAdminUtils.t.sol";

import "../Migration.s.sol";

contract Migration__20240613_MapERC1155SepoliaMainchain is Migration {
address internal _mainchainPauseEnforcer;
address internal _mainchainGatewayV3;
address internal _mainchainBridgeManager;

MainchainBridgeAdminUtils _mainchainProposalUtils;

function setUp() public override {
super.setUp();

_mainchainPauseEnforcer = 0x61eC0ebf966AE84C414BDA715E17CeF657e039DF;
_mainchainGatewayV3 = 0x06855f31dF1d3D25cE486CF09dB49bDa535D2a9e;
_mainchainBridgeManager = 0x603075B625cc2cf69FbB3546C6acC2451FE792AF;
}

function run() public {
address[] memory mainchainTokens = new address[](1);
address[] memory roninTokens = new address[](1);
TokenStandard[] memory standards = new TokenStandard[](1);
uint256[][4] memory thresholds;
thresholds[0] = new uint256[](1);
thresholds[1] = new uint256[](1);
thresholds[2] = new uint256[](1);
thresholds[3] = new uint256[](1);

uint256 expiredTime = block.timestamp + 10 days;
address[] memory targets = new address[](1);
uint256[] memory values = new uint256[](1);
bytes[] memory calldatas = new bytes[](1);
uint256[] memory gasAmounts = new uint256[](1);

// ================ USDC ERC-20 ======================

mainchainTokens[0] = address(0xFBb71EEE2B420ea88e663B91722b41966E1C5F17);
roninTokens[0] = address(0xDBB04B4BdBb385EB14cb3ea3C7B1FCcA55ea9160);
standards[0] = TokenStandard.ERC1155;
thresholds[0][0] = 0;
thresholds[1][0] = 0;
thresholds[2][0] = 0;
thresholds[3][0] = 0;

bytes memory innerData = abi.encodeCall(IMainchainGatewayV3.mapTokensAndThresholds, (mainchainTokens, roninTokens, standards, thresholds));

vm.prank(_mainchainBridgeManager);
address(_mainchainGatewayV3).call(abi.encodeWithSignature("functionDelegateCall(bytes)", innerData));

// return;

bytes memory proxyData = abi.encodeWithSignature("functionDelegateCall(bytes)", innerData);

targets[0] = _mainchainGatewayV3;
values[0] = 0;
calldatas[0] = proxyData;
gasAmounts[0] = 1_000_000;

// ================ VERIFY AND EXECUTE PROPOSAL ===============

uint256[] memory governorPKs = new uint256[](4);
governorPKs[3] = 0x00;
governorPKs[2] = 0x00;
governorPKs[0] = 0x00;
governorPKs[1] = 0x00;

address[] memory governors = new address[](4);
governors[3] = 0xd24D87DDc1917165435b306aAC68D99e0F49A3Fa;
governors[2] = 0xb033ba62EC622dC54D0ABFE0254e79692147CA26;
governors[0] = 0x087D08e3ba42e64E3948962dd1371F906D1278b9;
governors[1] = 0x52ec2e6BBcE45AfFF8955Da6410bb13812F4289F;

_mainchainProposalUtils = new MainchainBridgeAdminUtils(2021, governorPKs, MainchainBridgeManager(_mainchainBridgeManager), governors[0]);

Proposal.ProposalDetail memory proposal = Proposal.ProposalDetail({
nonce: MainchainBridgeManager(_mainchainBridgeManager).round(11155111) + 1,
chainId: block.chainid,
expiryTimestamp: expiredTime,
executor: address(0),
targets: targets,
values: values,
calldatas: calldatas,
gasAmounts: gasAmounts
});

Ballot.VoteType[] memory supports_ = new Ballot.VoteType[](4);
supports_[0] = Ballot.VoteType.For;
supports_[1] = Ballot.VoteType.For;
supports_[2] = Ballot.VoteType.For;
supports_[3] = Ballot.VoteType.For;

SignatureConsumer.Signature[] memory signatures = _mainchainProposalUtils.generateSignatures(proposal, governorPKs);

vm.broadcast(governors[0]);
// 2_000_000 to assure tx.gasleft is bigger than the gas of the proposal.
MainchainBridgeManager(_mainchainBridgeManager).relayProposal{gas: 2_000_000}(proposal, supports_, signatures);
}
}
13 changes: 13 additions & 0 deletions script/20240619-upgrade-sepolia/20240619-operators-key.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

contract Migration__20240619_GovernorsKey {
function _loadGovernorPKs() internal pure returns (uint256[] memory res) {
res = new uint256[](4);

res[0] = 0x00;
res[1] = 0x00;
res[2] = 0x00;
res[3] = 0x00;
}
}
Loading