Skip to content

Commit

Permalink
deployed new market on Morpho
Browse files Browse the repository at this point in the history
  • Loading branch information
GuillaumeNervoXS committed Apr 19, 2024
1 parent d71af18 commit e8b3698
Show file tree
Hide file tree
Showing 12 changed files with 12,205 additions and 37 deletions.
2,392 changes: 2,392 additions & 0 deletions broadcast/CreateHypothecatedMorphoMarkets.s.sol/1/run-1713517360.json

Large diffs are not rendered by default.

1,380 changes: 1,380 additions & 0 deletions broadcast/CreateHypothecatedMorphoMarkets.s.sol/1/run-1713517433.json

Large diffs are not rendered by default.

2,392 changes: 2,392 additions & 0 deletions broadcast/CreateHypothecatedMorphoMarkets.s.sol/1/run-1713517538.json

Large diffs are not rendered by default.

2,392 changes: 2,392 additions & 0 deletions broadcast/CreateHypothecatedMorphoMarkets.s.sol/1/run-1713518247.json

Large diffs are not rendered by default.

1,684 changes: 1,684 additions & 0 deletions broadcast/CreateHypothecatedMorphoMarkets.s.sol/1/run-1713518603.json

Large diffs are not rendered by default.

447 changes: 447 additions & 0 deletions broadcast/CreateHypothecatedMorphoMarkets.s.sol/1/run-1713518790.json

Large diffs are not rendered by default.

574 changes: 574 additions & 0 deletions broadcast/CreateHypothecatedMorphoMarkets.s.sol/1/run-1713519438.json

Large diffs are not rendered by default.

453 changes: 453 additions & 0 deletions broadcast/CreateHypothecatedMorphoMarkets.s.sol/1/run-1713521216.json

Large diffs are not rendered by default.

453 changes: 453 additions & 0 deletions broadcast/CreateHypothecatedMorphoMarkets.s.sol/1/run-latest.json

Large diffs are not rendered by default.

10 changes: 2 additions & 8 deletions contracts/interfaces/external/morpho/IMorpho.sol
Original file line number Diff line number Diff line change
@@ -1,15 +1,9 @@
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;

type Id is bytes32;
import { MarketParams } from "morpho-blue/libraries/MarketParamsLib.sol";

struct MarketParams {
address loanToken;
address collateralToken;
address oracle;
address irm;
uint256 lltv;
}
type Id is bytes32;

/// @dev Warning: For `feeRecipient`, `supplyShares` does not contain the accrued shares since the last interest
/// accrual.
Expand Down
2 changes: 1 addition & 1 deletion scripts/foundry/mainnet/MainnetConstants.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ contract MainnetConstants is CommonUtils {
uint256 constant LLTV_62 = 0.625 ether;

uint256 BASE_SUPPLY_ETH_AMOUNT = 0.01 ether;
uint256 BASE_SUPPLY_USD_AMOUNT = 12 ether;
uint256 BASE_SUPPLY_USD_AMOUNT = 11.70 ether;
uint256 BASE_BORROW_USD_AMOUNT = 1 ether;

function deployUpgradeable(address implementation, bytes memory data) public returns (address) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ pragma solidity ^0.8.12;

import "forge-std/Script.sol";
import { console } from "forge-std/console.sol";
import { IMorpho, MarketParams } from "../../../../contracts/interfaces/external/morpho/IMorpho.sol";
import { IMorpho } from "../../../../contracts/interfaces/external/morpho/IMorpho.sol";
import { IMorphoChainlinkOracleV2Factory, IMorphoOracle } from "../../../../contracts/interfaces/external/morpho/IMorphoChainlinkOracleV2.sol";
import "../MainnetConstants.s.sol";
import { StdCheats, StdAssertions } from "forge-std/Test.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { Id, MarketParams, MarketParamsLib } from "morpho-blue/libraries/MarketParamsLib.sol";

// Before running this script, ensure that the deployer has the necessary balance in all tokens to seed the markets
contract CreateHypothecatedMorphoMarkets is Script, MainnetConstants, StdCheats, StdAssertions {
Expand All @@ -32,11 +33,11 @@ contract CreateHypothecatedMorphoMarkets is Script, MainnetConstants, StdCheats,
bytes32 salt;
string memory marketName;

/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SETUP PT WEETH
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/

{
marketName = "PTweETH";
uint256 baseSupplyAmount = BASE_SUPPLY_ETH_AMOUNT;
bytes32 salt;
Expand Down Expand Up @@ -72,25 +73,27 @@ contract CreateHypothecatedMorphoMarkets is Script, MainnetConstants, StdCheats,

{
/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
GTETH PRIME
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
GTETH PRIME
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/

marketName = "gtETH";
uint256 baseSupplyAmount = BASE_SUPPLY_ETH_AMOUNT;
oracle = IMorphoChainlinkOracleV2Factory(MORPHO_ORACLE_FACTORY).createMorphoChainlinkOracleV2(
address(GTETHPRIME),
1 ether,
CHAINLINK_ETH_USD_ORACLE,
address(0),
18,
address(0),
1,
address(0),
address(0),
18,
salt
);
// oracle = IMorphoChainlinkOracleV2Factory(MORPHO_ORACLE_FACTORY).createMorphoChainlinkOracleV2(
// address(GTETHPRIME),
// 1 ether,
// CHAINLINK_ETH_USD_ORACLE,
// address(0),
// 18,
// address(0),
// 1,
// address(0),
// address(0),
// 18,
// salt
// );
oracle = 0xe4CCAA1849e9058f77f555C0FCcA4925Efd37d8E;
uint256 price = IMorphoOracle(oracle).price();
console.log(price);
assertApproxEqRel(price, 3100 * 10 ** 36, 0.02 ether);
params.collateralToken = GTETHPRIME;
params.irm = IRM_MODEL;
Expand All @@ -107,8 +110,8 @@ contract CreateHypothecatedMorphoMarkets is Script, MainnetConstants, StdCheats,

{
/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
RE7ETH
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
RE7ETH
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/

marketName = "RE7 ETH";
uint256 baseSupplyAmount = BASE_SUPPLY_ETH_AMOUNT;
Expand All @@ -126,7 +129,8 @@ contract CreateHypothecatedMorphoMarkets is Script, MainnetConstants, StdCheats,
salt
);
uint256 price = IMorphoOracle(oracle).price();
assertApproxEqRel(price, 3100 * 10 ** 36, 0.02 ether);
console.log(price);
assertApproxEqRel(price, 3170 * 10 ** 36, 0.02 ether);
params.collateralToken = RE7ETH;
params.irm = IRM_MODEL;
params.lltv = LLTV_86;
Expand All @@ -142,8 +146,8 @@ contract CreateHypothecatedMorphoMarkets is Script, MainnetConstants, StdCheats,

{
/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
GTUSDCPRIME
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
GTUSDCPRIME
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/

marketName = "gtUSDC";
uint256 baseSupplyAmount = BASE_SUPPLY_USD_AMOUNT;
Expand All @@ -160,15 +164,18 @@ contract CreateHypothecatedMorphoMarkets is Script, MainnetConstants, StdCheats,
18,
salt
);
oracle = 0x3B8c4A340336941524DE276FF730b3Be71157B55;
uint256 price = IMorphoOracle(oracle).price();
console.log(price);
assertApproxEqRel(price, 1 * 10 ** 36, 0.01 ether);
params.collateralToken = GTUSDCPRIME;
params.lltv = LLTV_77;
params.lltv = LLTV_86;
params.irm = IRM_MODEL;
params.oracle = oracle;
params.loanToken = USDA;
_logMarket(params, marketName);
IMorpho(MORPHO_BLUE).createMarket(params);
IERC20(params.loanToken).approve(MORPHO_BLUE, BASE_BORROW_USD_AMOUNT);
IMorpho(MORPHO_BLUE).supply(params, BASE_BORROW_USD_AMOUNT, 0, deployer, emptyData);
IERC20(params.collateralToken).approve(MORPHO_BLUE, baseSupplyAmount);
IMorpho(MORPHO_BLUE).supplyCollateral(params, baseSupplyAmount, deployer, emptyData);
Expand All @@ -177,8 +184,8 @@ contract CreateHypothecatedMorphoMarkets is Script, MainnetConstants, StdCheats,

{
/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
RE7USDT
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
RE7USDT
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/

marketName = "RE7 USDT";
uint256 baseSupplyAmount = BASE_SUPPLY_USD_AMOUNT;
Expand All @@ -196,17 +203,17 @@ contract CreateHypothecatedMorphoMarkets is Script, MainnetConstants, StdCheats,
salt
);
uint256 price = IMorphoOracle(oracle).price();
assertApproxEqRel(price, 1 * 10 ** 36, 0.01 ether);
assertApproxEqRel(price, 1 * 10 ** 36, 0.03 ether);
params.collateralToken = RE7USDT;
params.lltv = LLTV_91;
params.irm = IRM_MODEL;
params.oracle = oracle;
params.loanToken = USDA;
_logMarket(params, marketName);
IMorpho(MORPHO_BLUE).createMarket(params);
IERC20(params.loanToken).approve(MORPHO_BLUE, BASE_BORROW_USD_AMOUNT);
IMorpho(MORPHO_BLUE).supply(params, BASE_BORROW_USD_AMOUNT, 0, deployer, emptyData);
IERC20(params.collateralToken).approve(MORPHO_BLUE, baseSupplyAmount);
console.log(IERC20(params.collateralToken).balanceOf(deployer));
IMorpho(MORPHO_BLUE).supplyCollateral(params, baseSupplyAmount, deployer, emptyData);
IMorpho(MORPHO_BLUE).borrow(params, BASE_BORROW_USD_AMOUNT, 0, deployer, deployer);
}
Expand Down

0 comments on commit e8b3698

Please sign in to comment.