Files
smom-dbis-138/script/DeployCCIPLogger.s.sol
2026-03-02 12:14:09 -08:00

51 lines
2.2 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {Script, console} from "forge-std/Script.sol";
import {CCIPLogger} from "../contracts/ccip-integration/CCIPLogger.sol";
/**
* @title DeployCCIPLogger
* @notice Deploy CCIPLogger to any chain (Mainnet, BSC, Polygon, Gnosis, Cronos)
* @dev Set CCIP_ROUTER, CHAIN138_SELECTOR (or chain-specific), AUTHORIZED_SIGNER in .env
*/
contract DeployCCIPLogger is Script {
function run() external {
uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
address deployer = vm.addr(deployerPrivateKey);
address router = vm.envOr("CCIP_ROUTER", vm.envOr("CCIP_ETH_ROUTER", address(0)));
if (router == address(0)) {
// Chain-specific fallbacks
if (block.chainid == 25) router = vm.envOr("CCIP_CRONOS_ROUTER", address(0xE26B0A098D861d5C7d9434aD471c0572Ca6EAa67));
if (block.chainid == 1) router = vm.envOr("CCIP_ETH_ROUTER", address(0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D));
}
require(router != address(0), "CCIP_ROUTER or CCIP_ETH_ROUTER required");
address authorizedSigner = vm.envOr("AUTHORIZED_SIGNER", address(0));
uint64 sourceChainSelector = uint64(vm.envOr("CHAIN138_SELECTOR", uint256(0x8a))); // 138
console.log("Deploying CCIPLogger...");
console.log(" Chain ID:", block.chainid);
console.log(" Router:", router);
console.log(" Source Chain Selector:", sourceChainSelector);
vm.startBroadcast(deployerPrivateKey);
CCIPLogger logger = new CCIPLogger(router, authorizedSigner, sourceChainSelector);
vm.stopBroadcast();
console.log("CCIPLogger deployed:", address(logger));
console.log("Add to .env: CCIP_LOGGER_%s=%s", _chainName(), address(logger));
}
function _chainName() internal view returns (string memory) {
if (block.chainid == 1) return "MAINNET";
if (block.chainid == 25) return "CRONOS";
if (block.chainid == 56) return "BSC";
if (block.chainid == 137) return "POLYGON";
if (block.chainid == 100) return "GNOSIS";
if (block.chainid == 138) return "CHAIN138";
return "ADDRESS";
}
}