Skip to content

Commit

Permalink
Merge pull request #21 from ronin-chain/feat/reduce-size-bridge-manager
Browse files Browse the repository at this point in the history
feat(BridgeManager): reduce size Ronin bridge manager
  • Loading branch information
nxqbao authored Apr 8, 2024
2 parents 320eb89 + 6317005 commit a06e829
Show file tree
Hide file tree
Showing 45 changed files with 452 additions and 680 deletions.
10 changes: 6 additions & 4 deletions foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@ optimizer = true
optimizer_runs = 200
ffi = true

libs = [
'lib',
'node_modules/hardhat',
]
libs = ['lib', 'node_modules/hardhat']

# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options

Expand All @@ -17,13 +14,18 @@ extra_output = ["devdoc", "userdoc", "storagelayout"]
fs_permissions = [{ access = "read-write", path = "./" }]
evm_version = 'istanbul'
verbosity = 4
use_literal_content = true

[profile.ronin]
evm_version = 'istanbul'

[profile.ethereum]
evm_version = 'shanghai'

[profile.ronin.ronin_bridge_manager]
evm_version = 'istanbul'
optimizer_runs = 1

[fmt]
line_length = 160
tab_width = 2
Expand Down
9 changes: 3 additions & 6 deletions script/20231218-maptoken/20231218-maptoken-mainchain.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,7 @@ contract Migration__20231215_MapTokenMainchain is BridgeMigration {
super.setUp();

_roninBridgeManager = RoninBridgeManager(_config.getAddressFromCurrentNetwork(Contract.RoninBridgeManager.key()));
_mainchainGatewayV3 = _config.getAddress(
_config.getCompanionNetwork(_config.getNetworkByChainId(block.chainid)).key(), Contract.MainchainGatewayV3.key()
);
_mainchainGatewayV3 = _config.getAddress(_config.getCompanionNetwork(_config.getNetworkByChainId(block.chainid)).key(), Contract.MainchainGatewayV3.key());
}

function run() public {
Expand Down Expand Up @@ -64,8 +62,7 @@ contract Migration__20231215_MapTokenMainchain is BridgeMigration {
// uint256[][4] calldata _thresholds
// )

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

uint256 expiredTime = block.timestamp + 10 days;
Expand All @@ -83,6 +80,6 @@ contract Migration__20231215_MapTokenMainchain is BridgeMigration {
uint256 chainId = _config.getCompanionNetwork(_config.getNetworkByChainId(block.chainid)).chainId();

vm.broadcast(sender());
_roninBridgeManager.propose(chainId, expiredTime, address(0), false, targets, values, calldatas, gasAmounts);
_roninBridgeManager.propose(chainId, expiredTime, address(0), targets, values, calldatas, gasAmounts);
}
}
5 changes: 2 additions & 3 deletions script/20231218-maptoken/20231218-maptoken-roninchain.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,7 @@ contract Migration__20231215_MapTokenRoninchain is BridgeMigration {
// uint256[] calldata chainIds,
// Token.Standard[] calldata _standards
// )
bytes memory innerData =
abi.encodeCall(IRoninGatewayV3.mapTokens, (roninTokens, mainchainTokens, chainIds, standards));
bytes memory innerData = abi.encodeCall(IRoninGatewayV3.mapTokens, (roninTokens, mainchainTokens, chainIds, standards));
bytes memory proxyData = abi.encodeWithSignature("functionDelegateCall(bytes)", innerData);

uint256 expiredTime = block.timestamp + 10 days;
Expand All @@ -58,6 +57,6 @@ contract Migration__20231215_MapTokenRoninchain is BridgeMigration {
_verifyRoninProposalGasAmount(targets, values, calldatas, gasAmounts);

vm.broadcast(sender());
_roninBridgeManager.propose(block.chainid, expiredTime, address(0), false, targets, values, calldatas, gasAmounts);
_roninBridgeManager.propose(block.chainid, expiredTime, address(0), targets, values, calldatas, gasAmounts);
}
}
49 changes: 10 additions & 39 deletions script/20240115-mappixeltoken/20240115-maptoken-mainchain.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,9 @@ contract Migration__MapTokenMainchain is BridgeMigration {
super.setUp();

_roninBridgeManager = RoninBridgeManager(_config.getAddressFromCurrentNetwork(Contract.RoninBridgeManager.key()));
_mainchainGatewayV3 = _config.getAddress(
_config.getCompanionNetwork(_config.getNetworkByChainId(block.chainid)).key(),
Contract.MainchainGatewayV3.key()
);
_mainchainBridgeManager = _config.getAddress(
_config.getCompanionNetwork(_config.getNetworkByChainId(block.chainid)).key(),
Contract.MainchainBridgeManager.key()
);
_mainchainGatewayV3 = _config.getAddress(_config.getCompanionNetwork(_config.getNetworkByChainId(block.chainid)).key(), Contract.MainchainGatewayV3.key());
_mainchainBridgeManager =
_config.getAddress(_config.getCompanionNetwork(_config.getNetworkByChainId(block.chainid)).key(), Contract.MainchainBridgeManager.key());
}

function _mapFarmlandToken() internal pure returns (bytes memory) {
Expand All @@ -68,11 +63,7 @@ contract Migration__MapTokenMainchain is BridgeMigration {
// Token.Standard[] calldata _standards
// )

bytes memory innerData = abi.encodeCall(IMainchainGatewayV3.mapTokens, (
mainchainTokens,
roninTokens,
standards
));
bytes memory innerData = abi.encodeCall(IMainchainGatewayV3.mapTokens, (mainchainTokens, roninTokens, standards));
return abi.encodeWithSignature("functionDelegateCall(bytes)", innerData);
}

Expand Down Expand Up @@ -106,25 +97,18 @@ contract Migration__MapTokenMainchain is BridgeMigration {
// uint256[][4] calldata _thresholds
// )

bytes memory innerData = abi.encodeCall(IMainchainGatewayV3.mapTokensAndThresholds, (
mainchainTokens,
roninTokens,
standards,
thresholds
));
bytes memory innerData = abi.encodeCall(IMainchainGatewayV3.mapTokensAndThresholds, (mainchainTokens, roninTokens, standards, thresholds));
return abi.encodeWithSignature("functionDelegateCall(bytes)", innerData);
}

function _removeAxieChatGovernorAddress() pure internal returns (bytes memory) {
function _removeAxieChatGovernorAddress() internal pure returns (bytes memory) {
address[] memory bridgeOperator = new address[](1);
bridgeOperator[0] = _axieChatBridgeOperator;

return abi.encodeCall(IBridgeManager.removeBridgeOperators, (
bridgeOperator
));
return abi.encodeCall(IBridgeManager.removeBridgeOperators, (bridgeOperator));
}

function _addAxieChatGovernorAddress() pure internal returns (bytes memory) {
function _addAxieChatGovernorAddress() internal pure returns (bytes memory) {
uint96[] memory voteWeight = new uint96[](1);
address[] memory governor = new address[](1);
address[] memory bridgeOperator = new address[](1);
Expand All @@ -133,11 +117,7 @@ contract Migration__MapTokenMainchain is BridgeMigration {
governor[0] = _axieChatGovernor;
bridgeOperator[0] = _axieChatBridgeOperator;

return abi.encodeCall(IBridgeManager.addBridgeOperators, (
voteWeight,
governor,
bridgeOperator
));
return abi.encodeCall(IBridgeManager.addBridgeOperators, (voteWeight, governor, bridgeOperator));
}

function run() public {
Expand Down Expand Up @@ -172,15 +152,6 @@ contract Migration__MapTokenMainchain is BridgeMigration {
uint256 chainId = _config.getCompanionNetwork(_config.getNetworkByChainId(block.chainid)).chainId();

vm.broadcast(sender());
_roninBridgeManager.propose(
chainId,
expiredTime,
address(0),
false,
targets,
values,
calldatas,
gasAmounts
);
_roninBridgeManager.propose(chainId, expiredTime, address(0), targets, values, calldatas, gasAmounts);
}
}
32 changes: 6 additions & 26 deletions script/20240115-mappixeltoken/20240115-maptoken-roninchain.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -59,29 +59,22 @@ contract Migration__MapTokenRoninchain is BridgeMigration {
// Token.Standard[] calldata _standards
// )

bytes memory innerData = abi.encodeCall(IRoninGatewayV3.mapTokens, (
roninTokens,
mainchainTokens,
chainIds,
standards
));
bytes memory innerData = abi.encodeCall(IRoninGatewayV3.mapTokens, (roninTokens, mainchainTokens, chainIds, standards));
return abi.encodeWithSignature("functionDelegateCall(bytes)", innerData);
}

function _removeAxieChatGovernorAddress() pure internal returns (bytes memory) {
function _removeAxieChatGovernorAddress() internal pure returns (bytes memory) {
address[] memory bridgeOperator = new address[](1);
bridgeOperator[0] = _axieChatBridgeOperator;

// function removeBridgeOperators(
// address[] calldata bridgeOperators
// )

return abi.encodeCall(IBridgeManager.removeBridgeOperators, (
bridgeOperator
));
return abi.encodeCall(IBridgeManager.removeBridgeOperators, (bridgeOperator));
}

function _addAxieChatGovernorAddress() pure internal returns (bytes memory) {
function _addAxieChatGovernorAddress() internal pure returns (bytes memory) {
uint96[] memory voteWeight = new uint96[](1);
address[] memory governor = new address[](1);
address[] memory bridgeOperator = new address[](1);
Expand All @@ -96,11 +89,7 @@ contract Migration__MapTokenRoninchain is BridgeMigration {
// address[] calldata bridgeOperators
// )

return abi.encodeCall(IBridgeManager.addBridgeOperators, (
voteWeight,
governor,
bridgeOperator
));
return abi.encodeCall(IBridgeManager.addBridgeOperators, (voteWeight, governor, bridgeOperator));
}

function run() public {
Expand Down Expand Up @@ -128,15 +117,6 @@ contract Migration__MapTokenRoninchain is BridgeMigration {
_verifyRoninProposalGasAmount(targets, values, calldatas, gasAmounts);

vm.broadcast(sender());
_roninBridgeManager.propose(
block.chainid,
expiredTime,
address(0),
false,
targets,
values,
calldatas,
gasAmounts
);
_roninBridgeManager.propose(block.chainid, expiredTime, address(0), targets, values, calldatas, gasAmounts);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,9 @@ contract Migration__20240131_MapTokenPixelMainchain is BridgeMigration, Migratio
super.setUp();

_roninBridgeManager = RoninBridgeManager(_config.getAddressFromCurrentNetwork(Contract.RoninBridgeManager.key()));
_mainchainGatewayV3 = _config.getAddress(
_config.getCompanionNetwork(_config.getNetworkByChainId(block.chainid)).key(),
Contract.MainchainGatewayV3.key()
);
_mainchainBridgeManager = _config.getAddress(
_config.getCompanionNetwork(_config.getNetworkByChainId(block.chainid)).key(),
Contract.MainchainBridgeManager.key()
);
_mainchainGatewayV3 = _config.getAddress(_config.getCompanionNetwork(_config.getNetworkByChainId(block.chainid)).key(), Contract.MainchainGatewayV3.key());
_mainchainBridgeManager =
_config.getAddress(_config.getCompanionNetwork(_config.getNetworkByChainId(block.chainid)).key(), Contract.MainchainBridgeManager.key());
}

function run() public {
Expand Down Expand Up @@ -73,12 +68,7 @@ contract Migration__20240131_MapTokenPixelMainchain is BridgeMigration, Migratio
// uint256[][4] calldata _thresholds
// )

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

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

Expand All @@ -99,11 +89,7 @@ contract Migration__20240131_MapTokenPixelMainchain is BridgeMigration, Migratio
// Token.Standard[] calldata _standards
// ) external;

innerData = abi.encodeCall(IMainchainGatewayV3.mapTokens, (
mainchainTokens,
roninTokens,
standards
));
innerData = abi.encodeCall(IMainchainGatewayV3.mapTokens, (mainchainTokens, roninTokens, standards));

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

Expand All @@ -130,15 +116,6 @@ contract Migration__20240131_MapTokenPixelMainchain is BridgeMigration, Migratio
uint256 chainId = _config.getCompanionNetwork(_config.getNetworkByChainId(block.chainid)).chainId();

vm.broadcast(_governor);
_roninBridgeManager.propose(
chainId,
expiredTime,
address(0),
false,
targets,
values,
calldatas,
gasAmounts
);
_roninBridgeManager.propose(chainId, expiredTime, address(0), targets, values, calldatas, gasAmounts);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,7 @@ contract Migration__20240131_MapTokenPixelRoninchain is BridgeMigration, Migrati
// uint256[] calldata chainIds,
// Token.Standard[] calldata _standards
// )
bytes memory innerData = abi.encodeCall(IRoninGatewayV3.mapTokens, (
roninTokens,
mainchainTokens,
chainIds,
standards
));
bytes memory innerData = abi.encodeCall(IRoninGatewayV3.mapTokens, (roninTokens, mainchainTokens, chainIds, standards));
bytes memory proxyData = abi.encodeWithSignature("functionDelegateCall(bytes)", innerData);

targets[0] = _roninGatewayV3;
Expand All @@ -101,10 +96,7 @@ contract Migration__20240131_MapTokenPixelRoninchain is BridgeMigration, Migrati
mainchainTokensToSetMinThreshold[1] = _aggMainchainToken;
minThresholds[1] = _aggMinThreshold;

innerData = abi.encodeCall(MinimumWithdrawal.setMinimumThresholds, (
mainchainTokensToSetMinThreshold,
minThresholds
));
innerData = abi.encodeCall(MinimumWithdrawal.setMinimumThresholds, (mainchainTokensToSetMinThreshold, minThresholds));
proxyData = abi.encodeWithSignature("functionDelegateCall(bytes)", innerData);

targets[1] = _roninGatewayV3;
Expand All @@ -128,15 +120,6 @@ contract Migration__20240131_MapTokenPixelRoninchain is BridgeMigration, Migrati
_verifyRoninProposalGasAmount(targets, values, calldatas, gasAmounts);

vm.broadcast(_governor);
_roninBridgeManager.propose(
block.chainid,
expiredTime,
address(0),
false,
targets,
values,
calldatas,
gasAmounts
);
_roninBridgeManager.propose(block.chainid, expiredTime, address(0), targets, values, calldatas, gasAmounts);
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import {console2} from "forge-std/console2.sol";
import {StdStyle} from "forge-std/StdStyle.sol";
import {BaseMigration} from "foundry-deployment-kit/BaseMigration.s.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 {Token} from "@ronin/contracts/libraries/Token.sol";
import {Contract} from "../utils/Contract.sol";
import {BridgeMigration} from "../BridgeMigration.sol";
import {Network} from "../utils/Network.sol";
import {DefaultNetwork} from "foundry-deployment-kit/utils/DefaultNetwork.sol";
import {Contract} from "../utils/Contract.sol";
import {IGeneralConfigExtended} from "../IGeneralConfigExtended.sol";
import { console2 } from "forge-std/console2.sol";
import { StdStyle } from "forge-std/StdStyle.sol";
import { BaseMigration } from "foundry-deployment-kit/BaseMigration.s.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 { Token } from "@ronin/contracts/libraries/Token.sol";
import { Contract } from "../utils/Contract.sol";
import { BridgeMigration } from "../BridgeMigration.sol";
import { Network } from "../utils/Network.sol";
import { DefaultNetwork } from "foundry-deployment-kit/utils/DefaultNetwork.sol";
import { Contract } from "../utils/Contract.sol";
import { IGeneralConfigExtended } from "../IGeneralConfigExtended.sol";

import "./maptoken-banana-configs.s.sol";
import "./maptoken-genkai-configs.s.sol";
Expand Down Expand Up @@ -146,7 +146,7 @@ contract Migration__20240206_MapTokenBananaMainchain is

console2.log("Nonce:", vm.getNonce(_governor));
vm.broadcast(_governor);
_roninBridgeManager.propose(chainId, expiredTime, address(0), false, targets, values, calldatas, gasAmounts);
_roninBridgeManager.propose(chainId, expiredTime, address(0), targets, values, calldatas, gasAmounts);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ contract Migration__20240206_MapTokenBananaRoninChain is

console2.log("Nonce:", vm.getNonce(_governor));
vm.broadcast(_governor);
_roninBridgeManager.propose(block.chainid, expiredTime, address(0), false, targets, values, calldatas, gasAmounts);
_roninBridgeManager.propose(block.chainid, expiredTime, address(0), targets, values, calldatas, gasAmounts);

// ============= LOCAL SIMULATION ==================
_cheatWeightOperator(_governor);
Expand Down
1 change: 1 addition & 0 deletions script/GeneralConfig.sol
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ contract GeneralConfig is BaseGeneralConfig, Utils {
_mapContractName(Contract.MainchainGatewayV3);
_mapContractName(Contract.MainchainBridgeManager);
_mapContractName(Contract.MockERC721);
_mapContractName(Contract.RoninBridgeManagerConstructor);

_contractNameMap[Contract.WETH.key()] = "MockWrappedToken";
_contractNameMap[Contract.WRON.key()] = "MockWrappedToken";
Expand Down
Loading

0 comments on commit a06e829

Please sign in to comment.