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 anima token and refactor factory scripts #49

Merged
merged 15 commits into from
Jul 24, 2024
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import "../factories/mainchain/factory-maptoken-mainchain-sepolia.s.sol";
import "./base-maptoken.s.sol";
import "@ronin/contracts/libraries/Ballot.sol";
import { console2 } from "forge-std/console2.sol";
import { StdStyle } from "forge-std/StdStyle.sol";
import { MainchainBridgeAdminUtils } from "test/helpers/MainchainBridgeAdminUtils.t.sol";
import { SignatureConsumer } from "@ronin/contracts/interfaces/consumers/SignatureConsumer.sol";
import { Proposal } from "@ronin/contracts/libraries/Proposal.sol";
import { MainchainBridgeManager } from "@ronin/contracts/mainchain/MainchainBridgeManager.sol";

contract Migration__20242606_MapTokenAnimaMainchain is Base__MapToken, Factory__MapTokensMainchainSepolia {
MainchainBridgeAdminUtils _mainchainProposalUtils;

function _initCaller() internal override(Base__MapToken, Factory__MapTokensMainchain) returns (address) {
return Base__MapToken._initCaller();
}

function _initTokenList() internal override(Base__MapToken, Factory__MapTokensMainchain) returns (uint256 totalToken, MapTokenInfo[] memory infos) {
return Base__MapToken._initTokenList();
}

function _initGovernors() internal override(Base__MapToken, Factory__MapTokensMainchainSepolia) returns (address[] memory) {
return Base__MapToken._initGovernors();
}

function _initGovernorPKs() internal override(Base__MapToken, Factory__MapTokensMainchainSepolia) returns (uint256[] memory) {
return Base__MapToken._initGovernorPKs();
}

function run() public override {
super.run();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import { console2 } from "forge-std/console2.sol";
import "../factories/roninchain/factory-maptoken-ronin-testnet.s.sol";
import "./base-maptoken.s.sol";
import { Proposal } from "@ronin/contracts/libraries/Proposal.sol";

contract Migration__20242606_MapTokenAnimaRoninTestnet is Base__MapToken, Factory__MapTokensRonin_Testnet {
function _initCaller() internal override(Base__MapToken, Factory__MapTokensRoninchain) returns (address) {
return Base__MapToken._initCaller();
}

function _initTokenList() internal override(Base__MapToken, Factory__MapTokensRoninchain) returns (uint256 totalToken, MapTokenInfo[] memory infos) {
return Base__MapToken._initTokenList();
}

function _initGovernors() internal override(Base__MapToken, Factory__MapTokensRonin_Testnet) returns (address[] memory) {
return Base__MapToken._initGovernors();
}

function run() public override {
super.run();
}
}
29 changes: 29 additions & 0 deletions script/20240626-maptoken-anima/base-maptoken.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import "forge-std/console2.sol";

import "./caller-configs.s.sol";
import "./maptoken-anima-configs.s.sol";
import "./governors-configs.s.sol";

contract Base__MapToken is Migration__Caller_Config, Migration__MapToken_Anima_Config, Migration__Governors_Config {
function _initCaller() internal virtual returns (address) {
return SM_GOVERNOR;
}

function _initGovernors() internal virtual returns (address[] memory) {
return governors;
}

function _initGovernorPKs() internal virtual returns (uint256[] memory) {
return governorPks;
}

function _initTokenList() internal virtual returns (uint256 totalToken, MapTokenInfo[] memory infos) {
totalToken = 1;

infos = new MapTokenInfo[](totalToken);
infos[0] = _animaInfo;
}
}
6 changes: 6 additions & 0 deletions script/20240626-maptoken-anima/caller-configs.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

contract Migration__Caller_Config {
address internal SM_GOVERNOR = 0xd24D87DDc1917165435b306aAC68D99e0F49A3Fa; // TODO: replace by address of the SV governor
}
20 changes: 20 additions & 0 deletions script/20240626-maptoken-anima/governors-configs.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

contract Migration__Governors_Config {
address[] internal governors = new address[](4);
uint256[] internal governorPks = new uint256[](4);

constructor() {
// TODO: replace by address of the testnet governors
governors[3] = 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266;
governors[2] = 0x90F79bf6EB2c4f870365E785982E1f101E93b906;
governors[0] = 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC;
governors[1] = 0x70997970C51812dc3A010C7d01b50e0d17dc79C8;
// TODO: replace by private key of the testnet governors
governorPks[3] = 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80;
governorPks[2] = 0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6;
governorPks[0] = 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a;
governorPks[1] = 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d;
}
}
18 changes: 18 additions & 0 deletions script/20240626-maptoken-anima/maptoken-anima-configs.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import { MapTokenInfo } from "../libraries/MapTokenInfo.sol";

contract Migration__MapToken_Anima_Config {
MapTokenInfo _animaInfo;

constructor() {
_animaInfo.roninToken = address(0x9F6a5cDc477e9f667d60424bFdb4E82089d9d72c);
_animaInfo.mainchainToken = address(0xEd52E203D2D44FAaEA0D9fB6A40220A63c743c80);
_animaInfo.minThreshold = 100 ether;
_animaInfo.highTierThreshold = 20_000_000 ether;
_animaInfo.lockedThreshold = 100_000_000 ether;
_animaInfo.dailyWithdrawalLimit = 50_000_000 ether;
_animaInfo.unlockFeePercentages = 10; // 0.001%. Max percentage is 100_0000, so 10 is 0.001% (`10 / 1e6 = 0.001 * 100`)
}
}
95 changes: 0 additions & 95 deletions script/factories/factory-maptoken-mainchain.s.sol

This file was deleted.

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

import { LibCompanionNetwork } from "script/shared/libraries/LibCompanionNetwork.sol";
import { Network, TNetwork } from "../../utils/Network.sol";
import { LibProposal } from "script/shared/libraries/LibProposal.sol";
import { Proposal } from "@ronin/contracts/libraries/Proposal.sol";
import { Contract } from "../../utils/Contract.sol";
import { MainchainBridgeManager } from "@ronin/contracts/mainchain/MainchainBridgeManager.sol";
import "./factory-maptoken-mainchain.s.sol";

abstract contract Factory__MapTokensMainchainEthereum is Factory__MapTokensMainchain {
using LibCompanionNetwork for *;

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

_roninBridgeManager = RoninBridgeManager(config.getAddressFromCurrentNetwork(Contract.RoninBridgeManager.key()));
_mainchainGatewayV3 = config.getAddress(network().companionNetwork(), Contract.MainchainGatewayV3.key());
_mainchainBridgeManager = config.getAddress(network().companionNetwork(), Contract.MainchainBridgeManager.key());

_governor = _initCaller();
}

function run() public virtual override {
Proposal.ProposalDetail memory proposal = _createAndVerifyProposal(block.chainid, 0);
tringuyenskymavis marked this conversation as resolved.
Show resolved Hide resolved
_propose(proposal);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import { LibCompanionNetwork } from "script/shared/libraries/LibCompanionNetwork.sol";
import { Network, TNetwork } from "../../utils/Network.sol";
import { console2 } from "forge-std/console2.sol";
import { LibProposal } from "script/shared/libraries/LibProposal.sol";
import { Proposal } from "@ronin/contracts/libraries/Proposal.sol";
import { Contract } from "../../utils/Contract.sol";
import { MainchainBridgeManager } from "@ronin/contracts/mainchain/MainchainBridgeManager.sol";
import "./factory-maptoken-mainchain.s.sol";

abstract contract Factory__MapTokensMainchainSepolia is Factory__MapTokensMainchain {
using LibCompanionNetwork for *;
tringuyenskymavis marked this conversation as resolved.
Show resolved Hide resolved

function setUp() public override {
super.setUp();
_mainchainGatewayV3 = config.getAddressFromCurrentNetwork(Contract.MainchainGatewayV3.key());
_mainchainBridgeManager = config.getAddressFromCurrentNetwork(Contract.MainchainBridgeManager.key());
}

function _initGovernorPKs() internal virtual returns (uint256[] memory);
function _initGovernors() internal virtual returns (address[] memory);

function run() public virtual override {
address[] memory governorsM = _initGovernors();
uint256[] memory governorsPksM = _initGovernorPKs();
tringuyenskymavis marked this conversation as resolved.
Show resolved Hide resolved

for (uint256 i; i < governorsM.length; ++i) {
_governors.push(governorsM[i]);
_governorPKs.push(governorsPksM[i]);
}
_cheatStorage(_governors);

uint256 chainId = block.chainid;
uint256 nonce = MainchainBridgeManager(_mainchainBridgeManager).round(chainId) + 1;
Proposal.ProposalDetail memory proposal = _createAndVerifyProposal(chainId, nonce);
_relayProposal(proposal);
}
}
Loading
Loading