diff --git a/.openzeppelin/mainnet.json b/.openzeppelin/mainnet.json index bab7dc5..ab2f8f6 100644 --- a/.openzeppelin/mainnet.json +++ b/.openzeppelin/mainnet.json @@ -2270,6 +2270,194 @@ } } }, + "920e9b751c828694e14025da5b633f87908f9ca0a8f5e4db882e7b6b0d21789f": { + "address": "0xb0ea26B10F623742833D54A08Cbd547c1B71d126", + "txHash": "0xdd353068cacc66e8c70ffcd7241e0713253dd84e770fe0d58f71a3f74083f78d", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_balances", + "offset": 0, + "slot": "51", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC20Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:40" + }, + { + "label": "_allowances", + "offset": 0, + "slot": "52", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "contract": "ERC20Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:42" + }, + { + "label": "_totalSupply", + "offset": 0, + "slot": "53", + "type": "t_uint256", + "contract": "ERC20Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:44" + }, + { + "label": "_name", + "offset": 0, + "slot": "54", + "type": "t_string_storage", + "contract": "ERC20Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:46" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "55", + "type": "t_string_storage", + "contract": "ERC20Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:47" + }, + { + "label": "__gap", + "offset": 0, + "slot": "56", + "type": "t_array(t_uint256)45_storage", + "contract": "ERC20Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:376" + }, + { + "label": "_paused", + "offset": 0, + "slot": "101", + "type": "t_bool", + "contract": "PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:29" + }, + { + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage", + "contract": "PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:116" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC20PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PausableUpgradeable.sol:48" + }, + { + "label": "accessControl", + "offset": 0, + "slot": "201", + "type": "t_contract(MidasAccessControl)3365", + "contract": "WithMidasAccessControl", + "src": "contracts/access/WithMidasAccessControl.sol:24" + }, + { + "label": "metadata", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_bytes32,t_bytes_storage)", + "contract": "mTBILL", + "src": "contracts/mTBILL.sol:18" + }, + { + "label": "__gap", + "offset": 0, + "slot": "203", + "type": "t_array(t_uint256)50_storage", + "contract": "mTBILL", + "src": "contracts/mTBILL.sol:23" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)45_storage": { + "label": "uint256[45]", + "numberOfBytes": "1440" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_bytes_storage": { + "label": "bytes", + "numberOfBytes": "32" + }, + "t_contract(MidasAccessControl)3365": { + "label": "contract MidasAccessControl", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_bytes_storage)": { + "label": "mapping(bytes32 => bytes)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, "200b0cfc6a47ae0df16a6a270b186187fd3a3968019f3afe8081918e63a74332": { "address": "0x0d84eC93E9A734184c7f59F61342F432444EFc1B", "txHash": "0x83c8b10cf2287a110ee6b251b68ec0a386dffb97f68a2eb9236c0fee9ac3aa15", @@ -6041,5 +6229,4 @@ } } } - -} +} \ No newline at end of file diff --git a/scripts/morpho_deploy.ts b/scripts/morpho_deploy.ts new file mode 100644 index 0000000..902713e --- /dev/null +++ b/scripts/morpho_deploy.ts @@ -0,0 +1,47 @@ + +import { Contract } from 'ethers'; +import hre from 'hardhat'; + +const abiFactory = [{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"address","name":"oracle","type":"address"}],"name":"CreateMorphoChainlinkOracleV2","type":"event"},{"inputs":[{"internalType":"contract IERC4626","name":"baseVault","type":"address"},{"internalType":"uint256","name":"baseVaultConversionSample","type":"uint256"},{"internalType":"contract AggregatorV3Interface","name":"baseFeed1","type":"address"},{"internalType":"contract AggregatorV3Interface","name":"baseFeed2","type":"address"},{"internalType":"uint256","name":"baseTokenDecimals","type":"uint256"},{"internalType":"contract IERC4626","name":"quoteVault","type":"address"},{"internalType":"uint256","name":"quoteVaultConversionSample","type":"uint256"},{"internalType":"contract AggregatorV3Interface","name":"quoteFeed1","type":"address"},{"internalType":"contract AggregatorV3Interface","name":"quoteFeed2","type":"address"},{"internalType":"uint256","name":"quoteTokenDecimals","type":"uint256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"createMorphoChainlinkOracleV2","outputs":[{"internalType":"contract MorphoChainlinkOracleV2","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMorphoChainlinkOracleV2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]; +const abiOracle = [{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]; + +const main = async () =>{ + const { deployer } = await hre.getNamedAccounts(); + const owner = await hre.ethers.getSigner(deployer); + + const factory = new Contract('0x3a7bb36ee3f3ee32a60e9f2b33c1e5f2e83ad766', abiFactory, owner); + + const addr = await factory.callStatic.createMorphoChainlinkOracleV2( + "0x0000000000000000000000000000000000000000", + "1", + "0x056339c044055819e8db84e71f5f2e1f536b2e5b", + "0x0000000000000000000000000000000000000000", + "18", + "0x0000000000000000000000000000000000000000", + "1", + "0x8fffffd4afb6115b954bd326cbe7b4ba576818f6", + "0x0000000000000000000000000000000000000000", + "6", + "0xc44e0411adc60a41b539c9d5af52e11913491958c68a326bc48fd0c444bb2618" + ) + await (await factory.createMorphoChainlinkOracleV2( + "0x0000000000000000000000000000000000000000", + "1", + "0x056339c044055819e8db84e71f5f2e1f536b2e5b", + "0x0000000000000000000000000000000000000000", + "18", + "0x0000000000000000000000000000000000000000", + "1", + "0x8fffffd4afb6115b954bd326cbe7b4ba576818f6", + "0x0000000000000000000000000000000000000000", + "6", + "0xc44e0411adc60a41b539c9d5af52e11913491958c68a326bc48fd0c444bb2618" +)).wait() + +const oracle= new Contract(addr, abiOracle, owner); + +console.log((await oracle.price()).toString()) +} + + +main(); \ No newline at end of file