From 9f1fe5a193b52899316bc51b5efdea7817bc1ba6 Mon Sep 17 00:00:00 2001 From: Zaki Manian Date: Mon, 17 Jun 2024 15:50:24 +0100 Subject: [PATCH 1/5] Update script for the ETHX price feed --- .../production/switchETHXPriceFeed.s.sol | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 script/Mainnet/production/switchETHXPriceFeed.s.sol diff --git a/script/Mainnet/production/switchETHXPriceFeed.s.sol b/script/Mainnet/production/switchETHXPriceFeed.s.sol new file mode 100644 index 000000000..4f062406d --- /dev/null +++ b/script/Mainnet/production/switchETHXPriceFeed.s.sol @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.21; + +import { Math } from "src/utils/Math.sol"; +import { Deployer } from "src/Deployer.sol"; +import { ERC4626 } from "@solmate/mixins/ERC4626.sol"; +import { ERC20 } from "@solmate/tokens/ERC20.sol"; +import { Registry } from "src/Registry.sol"; +import { PriceRouter } from "src/modules/price-router/PriceRouter.sol"; +import { IChainlinkAggregator } from "src/interfaces/external/IChainlinkAggregator.sol"; +import { ERC20Adaptor } from "src/modules/adaptors/ERC20Adaptor.sol"; + +import { MainnetAddresses } from "test/resources/MainnetAddresses.sol"; + +import "forge-std/Script.sol"; + +/** + * @dev Run + * `source .env && forge script script/Mainnet/production/Gnosis8.s.sol:Gnosis8Script --rpc-url $MAINNET_RPC_URL --sender $MULTI_SIG --with-gas-price 25000000000` + */ +contract swithEthXPriceFeed is Script, MainnetAddresses { + + address public sommDev = 0x552acA1343A6383aF32ce1B7c7B1b47959F7ad90; + + Deployer public deployer = Deployer(deployerAddress); + + Registry public registry = Registry(0xEED68C267E9313a6ED6ee08de08c9F68dee44476); + PriceRouter public priceRouter = PriceRouter(0xA1A0bc3D59e4ee5840c9530e49Bdc2d1f88AaF92); + + + uint8 public constant CHAINLINK_DERIVATIVE = 1; + uint8 public constant TWAP_DERIVATIVE = 2; + uint8 public constant EXTENSION_DERIVATIVE = 3; + + function run() external { + + uint256 price = uint256(IChainlinkAggregator(WETH_USD_FEED).latestAnswer()); + settings = PriceRouter.AssetSettings(CHAINLINK_DERIVATIVE, ETHX_USD_FEED); + PriceRouter.ChainlinkDerivativeStorage memory stor; + + vm.startBroadcast(); + + priceRouter.startEditAsset(ETHX, settings, abi.encode(stor)); + + vm.stopBroadcast();} + +} From d5ba508c4bec17bb687de66a1a7ffc4d924eee44 Mon Sep 17 00:00:00 2001 From: Zaki Manian Date: Tue, 18 Jun 2024 03:21:28 +0100 Subject: [PATCH 2/5] Address some comments --- script/Mainnet/production/switchETHXPriceFeed.s.sol | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/script/Mainnet/production/switchETHXPriceFeed.s.sol b/script/Mainnet/production/switchETHXPriceFeed.s.sol index 4f062406d..49f19119d 100644 --- a/script/Mainnet/production/switchETHXPriceFeed.s.sol +++ b/script/Mainnet/production/switchETHXPriceFeed.s.sol @@ -16,13 +16,10 @@ import "forge-std/Script.sol"; /** * @dev Run - * `source .env && forge script script/Mainnet/production/Gnosis8.s.sol:Gnosis8Script --rpc-url $MAINNET_RPC_URL --sender $MULTI_SIG --with-gas-price 25000000000` + * `source .env && forge script script/Mainnet/production/switchETHXPriceFeed.s.sol:swithEthXPriceFeed --rpc-url $MAINNET_RPC_URL --sender $MULTI_SIG --with-gas-price 25000000000` */ contract swithEthXPriceFeed is Script, MainnetAddresses { - address public sommDev = 0x552acA1343A6383aF32ce1B7c7B1b47959F7ad90; - - Deployer public deployer = Deployer(deployerAddress); Registry public registry = Registry(0xEED68C267E9313a6ED6ee08de08c9F68dee44476); PriceRouter public priceRouter = PriceRouter(0xA1A0bc3D59e4ee5840c9530e49Bdc2d1f88AaF92); @@ -34,14 +31,17 @@ contract swithEthXPriceFeed is Script, MainnetAddresses { function run() external { - uint256 price = uint256(IChainlinkAggregator(WETH_USD_FEED).latestAnswer()); + //Start EDIT asset + settings = PriceRouter.AssetSettings(CHAINLINK_DERIVATIVE, ETHX_USD_FEED); PriceRouter.ChainlinkDerivativeStorage memory stor; + stor.inETH = true; vm.startBroadcast(); priceRouter.startEditAsset(ETHX, settings, abi.encode(stor)); - vm.stopBroadcast();} + vm.stopBroadcast(); + } } From 5e8caf86ff16b2f846a782f6a4cf1ca7826cde92 Mon Sep 17 00:00:00 2001 From: Zaki Manian Date: Tue, 18 Jun 2024 03:50:40 +0100 Subject: [PATCH 3/5] Clean up price feed --- script/Mainnet/production/switchETHXPriceFeed.s.sol | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/script/Mainnet/production/switchETHXPriceFeed.s.sol b/script/Mainnet/production/switchETHXPriceFeed.s.sol index 49f19119d..2cbe13459 100644 --- a/script/Mainnet/production/switchETHXPriceFeed.s.sol +++ b/script/Mainnet/production/switchETHXPriceFeed.s.sol @@ -33,7 +33,10 @@ contract swithEthXPriceFeed is Script, MainnetAddresses { //Start EDIT asset - settings = PriceRouter.AssetSettings(CHAINLINK_DERIVATIVE, ETHX_USD_FEED); + PriceRouter.AssetSettings memory settings; + + + settings = PriceRouter.AssetSettings(CHAINLINK_DERIVATIVE, ETHX_ETH_FEED); PriceRouter.ChainlinkDerivativeStorage memory stor; stor.inETH = true; From 416c415ab1c4023e8950c438cb277218cd4f9c58 Mon Sep 17 00:00:00 2001 From: Zaki Manian Date: Thu, 27 Jun 2024 18:07:55 +0100 Subject: [PATCH 4/5] Work in progress of part2 --- .../switchETHXPriceFeed.part2.s.sol | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 script/Mainnet/production/switchETHXPriceFeed.part2.s.sol diff --git a/script/Mainnet/production/switchETHXPriceFeed.part2.s.sol b/script/Mainnet/production/switchETHXPriceFeed.part2.s.sol new file mode 100644 index 000000000..dc0c80fbf --- /dev/null +++ b/script/Mainnet/production/switchETHXPriceFeed.part2.s.sol @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.21; + +import { Math } from "src/utils/Math.sol"; +import { Deployer } from "src/Deployer.sol"; +import { ERC4626 } from "@solmate/mixins/ERC4626.sol"; +import { ERC20 } from "@solmate/tokens/ERC20.sol"; +import { Registry } from "src/Registry.sol"; +import { PriceRouter } from "src/modules/price-router/PriceRouter.sol"; +import { IChainlinkAggregator } from "src/interfaces/external/IChainlinkAggregator.sol"; +import { ERC20Adaptor } from "src/modules/adaptors/ERC20Adaptor.sol"; + +import { MainnetAddresses } from "test/resources/MainnetAddresses.sol"; + +import "forge-std/Script.sol"; + +/** + * @dev Run + * `source .env && forge script script/Mainnet/production/switchETHXPriceFeed.part2.s.sol:switchEthXPriceFeed --rpc-url $MAINNET_RPC_URL --sender $MULTI_SIG --with-gas-price 25000000000` + */ +contract switchEthXPriceFeed is Script, MainnetAddresses { + + + Registry public registry = Registry(0xEED68C267E9313a6ED6ee08de08c9F68dee44476); + PriceRouter public priceRouter = PriceRouter(0xA1A0bc3D59e4ee5840c9530e49Bdc2d1f88AaF92); + + + uint8 public constant CHAINLINK_DERIVATIVE = 1; + uint8 public constant TWAP_DERIVATIVE = 2; + uint8 public constant EXTENSION_DERIVATIVE = 3; + + function run() external { + + //Complete EDIT asset + + uint256 price = uint256(IChainlinkAggregator(ETHX_ETH_FEED).latestAnswer()); + + + PriceRouter.AssetSettings memory settings; + + + settings = PriceRouter.AssetSettings(CHAINLINK_DERIVATIVE, ETHX_ETH_FEED); + PriceRouter.ChainlinkDerivativeStorage memory stor; + stor.inETH = true; + + vm.startBroadcast(); + + priceRouter.completeEditAsset(ETHX, settings, abi.encode(stor), price); + + vm.stopBroadcast(); + } + +} From 4541c1cc6c6fa6e1eb424cf19d71f499e5fa2d9b Mon Sep 17 00:00:00 2001 From: Zaki Manian Date: Thu, 27 Jun 2024 21:46:42 +0100 Subject: [PATCH 5/5] Fix the price computation --- script/Mainnet/production/switchETHXPriceFeed.part2.s.sol | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/script/Mainnet/production/switchETHXPriceFeed.part2.s.sol b/script/Mainnet/production/switchETHXPriceFeed.part2.s.sol index dc0c80fbf..97a60be6e 100644 --- a/script/Mainnet/production/switchETHXPriceFeed.part2.s.sol +++ b/script/Mainnet/production/switchETHXPriceFeed.part2.s.sol @@ -33,8 +33,11 @@ contract switchEthXPriceFeed is Script, MainnetAddresses { //Complete EDIT asset - uint256 price = uint256(IChainlinkAggregator(ETHX_ETH_FEED).latestAnswer()); + uint256 ethx_price = uint256(IChainlinkAggregator(ETHX_ETH_FEED).latestAnswer()); + uint256 eth_price = uint256(IChainlinkAggregator(WETH_USD_FEED).latestAnswer()); + + uint256 price = ethx_price * eth_price/1e18; PriceRouter.AssetSettings memory settings;