From 2212928c184626e1ee569565e8f5ef169057fdd5 Mon Sep 17 00:00:00 2001 From: voith Date: Tue, 29 Apr 2025 21:36:57 +0530 Subject: [PATCH] added ccip deployment scripts --- .../arbitrum/009_governance_ccip_receiver.ts | 53 +++++++++++++++++++ deploy/mainnet/006_governance_ccip_relay.ts | 29 ++++++++++ 2 files changed, 82 insertions(+) create mode 100644 deploy/arbitrum/009_governance_ccip_receiver.ts create mode 100644 deploy/mainnet/006_governance_ccip_relay.ts diff --git a/deploy/arbitrum/009_governance_ccip_receiver.ts b/deploy/arbitrum/009_governance_ccip_receiver.ts new file mode 100644 index 00000000..b3405442 --- /dev/null +++ b/deploy/arbitrum/009_governance_ccip_receiver.ts @@ -0,0 +1,53 @@ +import hre, { deployments, hardhatArguments } from "hardhat"; + +module.exports = async ({ getNamedAccounts, deployments }: any) => { + if (hardhatArguments.network !== "arbitrum") + return; + + const { deployIfDifferent, log } = deployments; + const { deployer } = await getNamedAccounts(); + + const arbitrumCCIPChainSelector = 4949039107694359620; + const baseCCIPChainSelector = 15971525489660198786; + + const arbitrumReceiver = null; // fill this address with GovernanceCCIPReceiver deployed on arbitrum + const baseReceiver = null; // fill this address with GovernanceCCIPReceiver deployed on base + + if (arbitrumReceiver === null || baseReceiver === null ) { + console.log("set arbitrumReceiver and baseReceiver"); + return; + } + + const arbitrumCCIProuter = "0x141fa059441E0ca23ce184B6A78bafD2A517DdE8"; + const mainnetGovernanceCCIPRelay = null; // precompute mainnet GovernanceCCIPRelay using: https://github.com/cryptexfinance/contracts/blob/3e2266c02177b77694ea33f7267a8ebeeeb9282e/test/ccip/GovernanceCCIPIntegrationTest.t.sol#L91-L94 + const owner = null; // set an address that can pause ArbitrumGovernanceCCIPReceiver + + if(mainnetSender === null) { + console.log("set mainnetGovernanceCCIPRelay"); + return; + } + + if(owner === null) { + console.log("set owner"); + return; + } + + const governanceCCIPReceiver = await deployments.deploy("ArbitrumGovernanceCCIPReceiver", { + contract: "GovernanceCCIPReceiver", + from: deployer, + skipIfAlreadyDeployed: true, + log: true, + args: [ + arbitrumCCIProuter, + mainnetGovernanceCCIPRelay, + owner + ], + }); + console.log( + `ArbitrumGovernanceCCIPReceiver deployed at ${governanceCCIPReceiver.address} for + ${governanceCCIPReceiver.receipt?.gasUsed}` + ); + +} + +module.exports.tags = ["ArbitrumGovernanceCCIPReceiver"] diff --git a/deploy/mainnet/006_governance_ccip_relay.ts b/deploy/mainnet/006_governance_ccip_relay.ts new file mode 100644 index 00000000..b527d1be --- /dev/null +++ b/deploy/mainnet/006_governance_ccip_relay.ts @@ -0,0 +1,29 @@ +import hre, { deployments, hardhatArguments } from "hardhat"; + +module.exports = async ({ getNamedAccounts, deployments }: any) => { + if (hardhatArguments.network !== "mainnet") + return; + + const { deployIfDifferent, log } = deployments; + const { deployer } = await getNamedAccounts(); + + + const governanceCCIPRelay = await deployments.deploy("GovernanceCCIPRelay", { + from: deployer, + skipIfAlreadyDeployed: true, + log: true, + args: [ + timelockAddress, + ccipMainnetRouter, + destinationChainSelectors, + destinationReceivers + ], + }); + console.log( + `GovernanceCCIPRelay deployed at ${governanceCCIPRelay.address} for + ${governanceCCIPRelay.receipt?.gasUsed}` + ); + +} + +module.exports.tags = ["GovernanceCCIPRelay"]