- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control. - Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities. - Created .gitmodules to include OpenZeppelin contracts as a submodule. - Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment. - Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks. - Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring. - Created scripts for resource import and usage validation across non-US regions. - Added tests for CCIP error handling and integration to ensure robust functionality. - Included various new files and directories for the orchestration portal and deployment scripts.
112 lines
4.3 KiB
Solidity
112 lines
4.3 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.19;
|
|
|
|
import {Script, console} from "forge-std/Script.sol";
|
|
import {WETH} from "../contracts/tokens/WETH.sol";
|
|
import {WETH10} from "../contracts/tokens/WETH10.sol";
|
|
import {CCIPWETH9Bridge} from "../contracts/ccip/CCIPWETH9Bridge.sol";
|
|
import {CCIPWETH10Bridge} from "../contracts/ccip/CCIPWETH10Bridge.sol";
|
|
|
|
/**
|
|
* @title Deploy WETH9, WETH10, and CCIP Bridges
|
|
* @notice Complete deployment script for WETH contracts with CCIP cross-chain support
|
|
*/
|
|
contract DeployWETHWithCCIP is Script {
|
|
struct DeploymentConfig {
|
|
address ccipRouter;
|
|
address feeToken; // LINK token
|
|
bool deployWETH9;
|
|
bool deployWETH10;
|
|
bool deployBridges;
|
|
}
|
|
|
|
function run() external {
|
|
uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
|
|
address deployer = vm.addr(deployerPrivateKey);
|
|
|
|
// Get configuration from environment
|
|
DeploymentConfig memory config = DeploymentConfig({
|
|
ccipRouter: vm.envAddress("CCIP_ROUTER"),
|
|
feeToken: vm.envAddress("CCIP_FEE_TOKEN"),
|
|
deployWETH9: vm.envBool("DEPLOY_WETH9"),
|
|
deployWETH10: vm.envBool("DEPLOY_WETH10"),
|
|
deployBridges: vm.envBool("DEPLOY_BRIDGES")
|
|
});
|
|
|
|
console.log("=== WETH with CCIP Deployment ===");
|
|
console.log("Deployer:", deployer);
|
|
console.log("CCIP Router:", config.ccipRouter);
|
|
console.log("Fee Token (LINK):", config.feeToken);
|
|
console.log("Deploy WETH9:", config.deployWETH9);
|
|
console.log("Deploy WETH10:", config.deployWETH10);
|
|
console.log("Deploy Bridges:", config.deployBridges);
|
|
|
|
vm.startBroadcast(deployerPrivateKey);
|
|
|
|
address weth9Address = address(0);
|
|
address weth10Address = address(0);
|
|
address weth9BridgeAddress = address(0);
|
|
address weth10BridgeAddress = address(0);
|
|
|
|
// Deploy WETH9
|
|
if (config.deployWETH9) {
|
|
console.log("\n--- Deploying WETH9 ---");
|
|
WETH weth9 = new WETH();
|
|
weth9Address = address(weth9);
|
|
console.log("WETH9 deployed at:", weth9Address);
|
|
console.log("WETH9 name:", weth9.name());
|
|
console.log("WETH9 symbol:", weth9.symbol());
|
|
}
|
|
|
|
// Deploy WETH10
|
|
if (config.deployWETH10) {
|
|
console.log("\n--- Deploying WETH10 ---");
|
|
WETH10 weth10 = new WETH10();
|
|
weth10Address = address(weth10);
|
|
console.log("WETH10 deployed at:", weth10Address);
|
|
console.log("WETH10 name:", weth10.name());
|
|
console.log("WETH10 symbol:", weth10.symbol());
|
|
console.log("WETH10 decimals:", weth10.decimals());
|
|
}
|
|
|
|
// Deploy Bridges
|
|
if (config.deployBridges) {
|
|
// Use deployed addresses or environment variables
|
|
address weth9 = config.deployWETH9 ? weth9Address : vm.envAddress("WETH9_ADDRESS");
|
|
address weth10 = config.deployWETH10 ? weth10Address : vm.envAddress("WETH10_ADDRESS");
|
|
|
|
require(weth9 != address(0), "WETH9 address required");
|
|
require(weth10 != address(0), "WETH10 address required");
|
|
|
|
// Deploy WETH9 Bridge
|
|
console.log("\n--- Deploying CCIPWETH9Bridge ---");
|
|
CCIPWETH9Bridge weth9Bridge = new CCIPWETH9Bridge(
|
|
config.ccipRouter,
|
|
weth9,
|
|
config.feeToken
|
|
);
|
|
weth9BridgeAddress = address(weth9Bridge);
|
|
console.log("CCIPWETH9Bridge deployed at:", weth9BridgeAddress);
|
|
|
|
// Deploy WETH10 Bridge
|
|
console.log("\n--- Deploying CCIPWETH10Bridge ---");
|
|
CCIPWETH10Bridge weth10Bridge = new CCIPWETH10Bridge(
|
|
config.ccipRouter,
|
|
weth10,
|
|
config.feeToken
|
|
);
|
|
weth10BridgeAddress = address(weth10Bridge);
|
|
console.log("CCIPWETH10Bridge deployed at:", weth10BridgeAddress);
|
|
}
|
|
|
|
console.log("\n=== Deployment Summary ===");
|
|
console.log("WETH9:", weth9Address);
|
|
console.log("WETH10:", weth10Address);
|
|
console.log("CCIPWETH9Bridge:", weth9BridgeAddress);
|
|
console.log("CCIPWETH10Bridge:", weth10BridgeAddress);
|
|
|
|
vm.stopBroadcast();
|
|
}
|
|
}
|
|
|