WIP: Chain138 deployment scripts, flash receivers, HYBX OMNL recovery
This commit is contained in:
74
script/DeployCWReserveSettlementStack.s.sol
Normal file
74
script/DeployCWReserveSettlementStack.s.sol
Normal file
@@ -0,0 +1,74 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {Script, console} from "forge-std/Script.sol";
|
||||
import {CWNavOracle} from "../contracts/cw-settlement/CWNavOracle.sol";
|
||||
import {CWRedemptionQueue} from "../contracts/cw-settlement/CWRedemptionQueue.sol";
|
||||
import {CWStabilityFund} from "../contracts/cw-settlement/CWStabilityFund.sol";
|
||||
import {CWBuybackExecutor} from "../contracts/cw-settlement/CWBuybackExecutor.sol";
|
||||
import {CWProtocolTreasury} from "../contracts/cw-settlement/CWProtocolTreasury.sol";
|
||||
import {CWReserveVerifier} from "../contracts/bridge/integration/CWReserveVerifier.sol";
|
||||
|
||||
interface ICWMultiTokenBridgeL1Admin {
|
||||
function setReserveVerifier(address newVerifier) external;
|
||||
}
|
||||
|
||||
/**
|
||||
* @title DeployCWReserveSettlementStack
|
||||
* @notice Deploy NAV oracle, redemption queue, stability fund, buyback, treasury, and reserve verifier on Chain 138.
|
||||
*
|
||||
* Env:
|
||||
* PRIVATE_KEY, RPC_URL_138
|
||||
* CW_L1_BRIDGE (default 0x152ed3e9912161b76bdfd368d0c84b7c31c10de7)
|
||||
* CW_RESERVE_SYSTEM (default 0x607e97cD626f209facfE48c1464815DDE15B5093)
|
||||
* CW_CANONICAL_USDT / CW_CANONICAL_USDC
|
||||
* CW_ATTACH_VERIFIER_TO_L1=1
|
||||
*/
|
||||
contract DeployCWReserveSettlementStack is Script {
|
||||
function run() external {
|
||||
uint256 privateKey = vm.envUint("PRIVATE_KEY");
|
||||
address admin = vm.addr(privateKey);
|
||||
|
||||
address l1Bridge = vm.envOr("CW_L1_BRIDGE", address(0x152eD3e9912161b76BDFd368D0C84B7C31C10dE7));
|
||||
address reserveSystem = vm.envOr("CW_RESERVE_SYSTEM", address(0x607e97cD626f209facfE48c1464815DDE15B5093));
|
||||
address canonicalUSDT = vm.envOr("CW_CANONICAL_USDT", address(0x93E66202A11B1772E55407B32B44e5Cd8eda7f22));
|
||||
address canonicalUSDC = vm.envOr("CW_CANONICAL_USDC", address(0xf22258f57794CC8E06237084b353Ab30fFfa640b));
|
||||
bool attachVerifier = vm.envOr("CW_ATTACH_VERIFIER_TO_L1", uint256(0)) == 1;
|
||||
bool skipVerifierDeploy = vm.envOr("CW_SKIP_RESERVE_VERIFIER", uint256(1)) == 1;
|
||||
|
||||
vm.startBroadcast(privateKey);
|
||||
|
||||
address verifierAddr;
|
||||
if (skipVerifierDeploy) {
|
||||
verifierAddr = address(0);
|
||||
} else {
|
||||
CWReserveVerifier verifier = new CWReserveVerifier(admin, l1Bridge, address(0), reserveSystem);
|
||||
verifierAddr = address(verifier);
|
||||
if (attachVerifier) {
|
||||
ICWMultiTokenBridgeL1Admin(l1Bridge).setReserveVerifier(verifierAddr);
|
||||
}
|
||||
verifier.configureToken(canonicalUSDT, address(0), false, false, false);
|
||||
verifier.configureToken(canonicalUSDC, address(0), false, false, false);
|
||||
}
|
||||
|
||||
CWNavOracle navOracle = new CWNavOracle(admin, l1Bridge, reserveSystem);
|
||||
CWRedemptionQueue redemptionQueue = new CWRedemptionQueue(admin);
|
||||
CWStabilityFund stabilityFund = new CWStabilityFund(admin);
|
||||
CWProtocolTreasury treasury = new CWProtocolTreasury(admin, address(0));
|
||||
CWBuybackExecutor buyback = new CWBuybackExecutor(admin, verifierAddr, address(treasury));
|
||||
|
||||
treasury.setBuybackExecutor(address(buyback));
|
||||
|
||||
navOracle.configureToken(canonicalUSDT, address(0));
|
||||
navOracle.configureToken(canonicalUSDC, address(0));
|
||||
|
||||
vm.stopBroadcast();
|
||||
|
||||
console.log("CWReserveVerifier:", verifierAddr);
|
||||
console.log("CWNavOracle:", address(navOracle));
|
||||
console.log("CWRedemptionQueue:", address(redemptionQueue));
|
||||
console.log("CWStabilityFund:", address(stabilityFund));
|
||||
console.log("CWProtocolTreasury:", address(treasury));
|
||||
console.log("CWBuybackExecutor:", address(buyback));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user