58 lines
2.5 KiB
Solidity
58 lines
2.5 KiB
Solidity
|
|
// SPDX-License-Identifier: MIT
|
||
|
|
pragma solidity ^0.8.19;
|
||
|
|
|
||
|
|
import {Script, console2} from "forge-std/Script.sol";
|
||
|
|
import "../../../contracts/bridge/trustless/integration/Stabilizer.sol";
|
||
|
|
import "../../../contracts/bridge/trustless/integration/StablecoinPegManager.sol";
|
||
|
|
import "../../../contracts/bridge/trustless/integration/CommodityPegManager.sol";
|
||
|
|
|
||
|
|
/// @notice Deploy peg managers + Stabilizer on Chain 138 (Defi Oracle Meta).
|
||
|
|
/// @dev Requires PRIVATE_KEY, RESERVE_SYSTEM, PRIVATE_POOL_REGISTRY; optional STABILIZER_ADMIN, XAU peg asset.
|
||
|
|
contract DeployChain138StabilizerStack is Script {
|
||
|
|
function run() external {
|
||
|
|
require(block.chainid == 138, "chain138 only");
|
||
|
|
|
||
|
|
uint256 pk = vm.envUint("PRIVATE_KEY");
|
||
|
|
address deployer = vm.addr(pk);
|
||
|
|
address admin = vm.envOr("STABILIZER_ADMIN", deployer);
|
||
|
|
address reserveSystem = vm.envAddress("RESERVE_SYSTEM");
|
||
|
|
address privatePoolRegistry = vm.envAddress("PRIVATE_POOL_REGISTRY");
|
||
|
|
|
||
|
|
vm.startBroadcast(pk);
|
||
|
|
|
||
|
|
StablecoinPegManager stablecoinPeg = new StablecoinPegManager(reserveSystem);
|
||
|
|
CommodityPegManager commodityPeg = new CommodityPegManager(reserveSystem);
|
||
|
|
|
||
|
|
address cUsdc = vm.envOr("COMPLIANT_USDC_ADDRESS", vm.envOr("CUSDC_ADDRESS_138", address(0)));
|
||
|
|
address cUsdt = vm.envOr("COMPLIANT_USDT_ADDRESS", vm.envOr("CUSDT_ADDRESS_138", address(0)));
|
||
|
|
address weth = vm.envOr("WETH9", address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2));
|
||
|
|
address xau = vm.envOr("XAU_ADDRESS_138", vm.envOr("cXAUC_ADDRESS_138", address(0x290E52a8819A4fbD0714E517225429aA2B70EC6b)));
|
||
|
|
|
||
|
|
if (cUsdc != address(0)) {
|
||
|
|
stablecoinPeg.registerUSDStablecoin(cUsdc);
|
||
|
|
}
|
||
|
|
if (cUsdt != address(0)) {
|
||
|
|
stablecoinPeg.registerUSDStablecoin(cUsdt);
|
||
|
|
}
|
||
|
|
stablecoinPeg.registerWETH(weth);
|
||
|
|
|
||
|
|
if (xau != address(0)) {
|
||
|
|
commodityPeg.setXAUAddress(xau);
|
||
|
|
commodityPeg.registerCommodity(xau, "XAU", 1e18);
|
||
|
|
}
|
||
|
|
|
||
|
|
Stabilizer stabilizer = new Stabilizer(admin, privatePoolRegistry);
|
||
|
|
stabilizer.setStablecoinPegSource(address(stablecoinPeg), cUsdc != address(0) ? cUsdc : cUsdt);
|
||
|
|
if (xau != address(0)) {
|
||
|
|
stabilizer.setCommodityPegSource(address(commodityPeg), xau);
|
||
|
|
}
|
||
|
|
|
||
|
|
vm.stopBroadcast();
|
||
|
|
|
||
|
|
console2.log("StablecoinPegManager", address(stablecoinPeg));
|
||
|
|
console2.log("CommodityPegManager", address(commodityPeg));
|
||
|
|
console2.log("Stabilizer", address(stabilizer));
|
||
|
|
console2.log("admin", admin);
|
||
|
|
}
|
||
|
|
}
|