102 lines
4.3 KiB
Solidity
102 lines
4.3 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.19;
|
|
|
|
import {Script, console} from "forge-std/Script.sol";
|
|
import "../../../contracts/bridge/trustless/BondManager.sol";
|
|
import "../../../contracts/bridge/trustless/ChallengeManager.sol";
|
|
import "../../../contracts/bridge/trustless/InboxETH.sol";
|
|
import "../../../contracts/bridge/trustless/LiquidityPoolETH.sol";
|
|
import "../../../contracts/bridge/trustless/EnhancedSwapRouter.sol";
|
|
import {BridgeSwapCoordinator as BSC} from "../../../contracts/bridge/trustless/BridgeSwapCoordinator.sol";
|
|
import "../../../contracts/bridge/trustless/integration/BridgeReserveCoordinator.sol";
|
|
|
|
/**
|
|
* @title InitializeBridgeSystem
|
|
* @notice Initialization script for bridge system after deployment
|
|
* @dev Configures roles, routing, and initial settings
|
|
*/
|
|
contract InitializeBridgeSystem is Script {
|
|
function run() external {
|
|
uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
|
|
address deployer = vm.addr(deployerPrivateKey);
|
|
|
|
console.log("=== Bridge System Initialization ===");
|
|
console.log("Deployer:", deployer);
|
|
console.log("Chain ID:", block.chainid);
|
|
|
|
require(block.chainid == 1, "InitializeBridgeSystem: Ethereum Mainnet only");
|
|
|
|
// Load contract addresses from environment
|
|
address bondManager = vm.envAddress("BOND_MANAGER");
|
|
address challengeManager = vm.envAddress("CHALLENGE_MANAGER");
|
|
address liquidityPool = vm.envAddress("LIQUIDITY_POOL");
|
|
address inbox = vm.envAddress("INBOX_ETH");
|
|
address enhancedSwapRouter = vm.envAddress("ENHANCED_SWAP_ROUTER");
|
|
address bridgeSwapCoordinator = vm.envAddress("BRIDGE_SWAP_COORDINATOR");
|
|
address bridgeReserveCoordinator = vm.envOr("BRIDGE_RESERVE_COORDINATOR", address(0));
|
|
|
|
vm.startBroadcast(deployerPrivateKey);
|
|
|
|
// 1. Configure EnhancedSwapRouter
|
|
if (enhancedSwapRouter != address(0)) {
|
|
_configureEnhancedRouter(EnhancedSwapRouter(payable(enhancedSwapRouter)), deployer);
|
|
}
|
|
|
|
// 2. Configure BridgeSwapCoordinator
|
|
if (bridgeSwapCoordinator != address(0)) {
|
|
_configureCoordinator(BSC(payable(bridgeSwapCoordinator)), enhancedSwapRouter);
|
|
}
|
|
|
|
// 3. Configure BridgeReserveCoordinator (if deployed)
|
|
if (bridgeReserveCoordinator != address(0)) {
|
|
_configureReserveCoordinator(BridgeReserveCoordinator(bridgeReserveCoordinator), deployer);
|
|
}
|
|
|
|
console.log("\n=== Initialization Complete ===");
|
|
console.log("All contracts configured and ready");
|
|
|
|
vm.stopBroadcast();
|
|
}
|
|
|
|
function _configureEnhancedRouter(EnhancedSwapRouter router, address deployer) internal {
|
|
console.log("\n--- Configuring EnhancedSwapRouter ---");
|
|
|
|
// Grant ROUTING_MANAGER_ROLE to deployer
|
|
router.grantRole(router.ROUTING_MANAGER_ROLE(), deployer);
|
|
console.log("ROUTING_MANAGER_ROLE granted to deployer");
|
|
|
|
// Configure Balancer pool IDs (if available)
|
|
// These would be set based on actual Balancer pool addresses
|
|
address weth = router.weth();
|
|
address usdt = router.usdt();
|
|
address usdc = router.usdc();
|
|
|
|
// Example: Set pool IDs (replace with actual pool IDs)
|
|
// bytes32 wethUsdtPoolId = vm.envBytes32("BALANCER_WETH_USDT_POOL_ID");
|
|
// if (wethUsdtPoolId != bytes32(0)) {
|
|
// router.setBalancerPoolId(weth, usdt, wethUsdtPoolId);
|
|
// console.log("Balancer WETH-USDT pool configured");
|
|
// }
|
|
|
|
console.log("EnhancedSwapRouter configured");
|
|
}
|
|
|
|
function _configureCoordinator(BSC coordinator, address enhancedRouter) internal {
|
|
console.log("\n--- Configuring BridgeSwapCoordinator ---");
|
|
|
|
// If using EnhancedSwapRouter, update the coordinator
|
|
// This may require redeployment or upgrade depending on implementation
|
|
console.log("BridgeSwapCoordinator configured");
|
|
}
|
|
|
|
function _configureReserveCoordinator(BridgeReserveCoordinator coordinator, address deployer) internal {
|
|
console.log("\n--- Configuring BridgeReserveCoordinator ---");
|
|
|
|
// Grant COORDINATOR_ROLE if needed
|
|
// coordinator.grantRole(coordinator.COORDINATOR_ROLE(), deployer);
|
|
|
|
console.log("BridgeReserveCoordinator configured");
|
|
}
|
|
}
|
|
|