Skip to content

Commit 53e43b3

Browse files
committed
feat(readme): explaining the oracle creation from the factory
1 parent d7a7bb5 commit 53e43b3

File tree

1 file changed

+75
-15
lines changed

1 file changed

+75
-15
lines changed

README.md

Lines changed: 75 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# Morpho Blue Oracles
22

3-
43
Morpho Blue Oracles are contracts that can be used as oracles for markets on [Morpho Blue](https://github.com/morpho-org/morpho-blue).
54
The oracles implement the `IOracle` interface defined in [`IOracle.sol`](https://github.com/morpho-org/morpho-blue/blob/main/src/interfaces/IOracle.sol#L9): they return the price of 1 asset of collateral token quoted in 1 asset of loan token.
65

7-
## ChainlinkOracle
6+
## MorphoChainlinkOracleV2
87

9-
The `ChainlinkOracle` is an oracle that uses Chainlink-compliant feeds to provide price data.
8+
The `MorphoChainlinkOracleV2` is an oracle that uses Chainlink-compliant feeds to provide price data.
109

1110
This oracle handles the following cases among others (let's say that our pair is A/B):
11+
1212
- A/B is a feed (typically, stETH/ETH).
1313
- B/A is a feed (typically, ETH/USDC).
1414
- A/C and B/C are feeds (typically, stETH/ETH and USDC/ETH).
@@ -18,6 +18,34 @@ This oracle handles the following cases among others (let's say that our pair is
1818
- A/C and C/B are feeds (typically, WBTC/BTC and BTC/ETH).
1919
- A'/C and B/C are feeds, and there is an exchange rate between A and A'. (typically A=sDAI and A'=DAI).
2020

21+
## WstETH/stETH Exchange Rate Adapter
22+
23+
A specific implementation, the WstEthStEthExchangeRateChainlinkAdapter, provides the exchange rate between wstETH and stETH using Chainlink. This adapter is designed for precise, decentralized price feeds on Ethereum, ensuring compatibility with the MorphoChainlinkOracleV2 for markets involving these assets.
24+
25+
Deployed on Ethereum Mainnet, this adapter can be found in Ethereum Mainnet at the address [0x905b7dAbCD3Ce6B792D874e303D336424Cdb1421](https://etherscan.io/address/0x905b7dabcd3ce6b792d874e303d336424cdb1421#code). It's recommended for use as a reliable price feed source in Morpho oracles.
26+
27+
## MorphoChainlinkOracleV2Factory
28+
29+
The `MorphoChainlinkOracleV2Factory` is a factory that deploys `MorphoChainlinkOracleV2` instances.
30+
31+
The factory facilitates the easy creation and indexing of MorphoChainlinkOracleV2 oracles. Developed by Morpho Labs, this factory contract streamlines the process of deploying new oracles, catering to various market pairs without the need for deploying individual contracts manually for each pair.
32+
33+
### Usage
34+
35+
The Ethereum Mainnet address of this factory is [0x3A7bB36Ee3f3eE32A60e9f2b33c1e5f2E83ad766](https://etherscan.io/address/0x3a7bb36ee3f3ee32a60e9f2b33c1e5f2e83ad766#code).
36+
37+
To create a new `MorphoChainlinkOracleV2` oracle using the factory, call the createMorphoChainlinkOracleV2 function with the following parameters:
38+
39+
- `baseVault`: The ERC4626 token vault for the base asset.
40+
- `baseVaultConversionSample`: A sample size for converting base vault units.
41+
- `baseFeed1`, `baseFeed2`: Chainlink-interface-compliant data feeds for the base asset.
42+
- `baseTokenDecimals`: Decimal precision of the base asset.
43+
- `quoteVault`: The ERC4626 token vault for the quote asset.
44+
- `quoteVaultConversionSample`: A sample size for converting quote vault units.
45+
- `quoteFeed1`, `quoteFeed2`: Chainlink-interface-compliant data feeds for the quote asset.
46+
- `quoteTokenDecimals`: Decimal precision of the quote asset.
47+
- `salt`: A unique identifier to create deterministic addresses for deployed oracles.
48+
2149
## Getting Started
2250

2351
Install dependencies: `forge install`
@@ -28,22 +56,54 @@ Run test: `forge test`
2856

2957
## Deploy an Oracle
3058

31-
For example, to deploy a `ChainlinkOracle` on the Ethereum mainnet for the sDAI/USDC market, run:
32-
33-
```bash
34-
forge create src/ChainlinkOracle.sol:ChainlinkOracle --constructor-args "0x83F20F44975D03b1b09e64809B757c47f942BEeA" "0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9" "0x0000000000000000000000000000000000000000" "0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6" "0x0000000000000000000000000000000000000000" "1000000000000000000" "18" "6" --rpc-url https://eth-mainnet.g.alchemy.com/v2/<alchemy-key> --from <deployer-address> --ledger
35-
``````
36-
37-
And for the rETH/WETH market, run:
38-
39-
```bash
40-
forge create src/ChainlinkOracle.sol:ChainlinkOracle --constructor-args "0x0000000000000000000000000000000000000000" "0x536218f9E9Eb48863970252233c8F271f554C2d0" "0x0000000000000000000000000000000000000000" "0x0000000000000000000000000000000000000000" "0x0000000000000000000000000000000000000000" "1" "18" "18" --rpc-url https://eth-mainnet.g.alchemy.com/v2/<alchemy-key> --from <deployer-address> --ledger
41-
```
59+
To deploy a `MorphoChainlinkOracleV2` on the Ethereum mainnet, use the `MorphoChainlinkOracleV2Factory` to create a new oracle.
60+
61+
Below are the arguments to fill for the creation of the WETH/USDT oracle:
62+
63+
- `baseVault`: 0x0000000000000000000000000000000000000000,
64+
- `baseVaultConversionSample`:1,
65+
- `baseFeed1`: 0x0000000000000000000000000000000000000000,
66+
- `baseFeed2`: 0x0000000000000000000000000000000000000000,
67+
- `baseTokenDecimals`:18,
68+
- `quoteVault`:0x0000000000000000000000000000000000000000,
69+
- `quoteVaultConversionSample`:1,
70+
- `quoteFeed1`: 0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46,
71+
- `quoteFeed2`: 0x0000000000000000000000000000000000000000,
72+
- `quoteTokenDecimals`:6,
73+
- `salt`: <user-defined value used to make the address unique>,
74+
75+
and for the sDAI/USDC oracle:
76+
77+
- `baseVault`: 0x83f20f44975d03b1b09e64809b757c47f942beea,
78+
- `baseVaultConversionSample`: 1e18,
79+
- `baseFeed1`: 0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9,
80+
- `baseFeed2`: 0x0000000000000000000000000000000000000000,
81+
- `baseTokenDecimals`: 18,
82+
- `quoteVault`: 0x0000000000000000000000000000000000000000,
83+
- `quoteVaultConversionSample`: 1,
84+
- `quoteFeed1`: 0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6,
85+
- `quoteFeed2`: 0x0000000000000000000000000000000000000000,
86+
- `quoteTokenDecimals`: 6,
87+
- `salt`: <user-defined value used to make the address unique>,
88+
89+
and for the wstETH/ETH oracle:
90+
91+
- `baseVault`:0x0000000000000000000000000000000000000000,
92+
- `baseVaultConversionSample`:1,
93+
- `baseFeed1`:0x905b7dAbCD3Ce6B792D874e303D336424Cdb1421,
94+
- `baseFeed2`:0x86392dC19c0b719886221c78AB11eb8Cf5c52812,
95+
- `baseTokenDecimals`:18,
96+
- `quoteVault`:0x0000000000000000000000000000000000000000,
97+
- `quoteVaultConversionSample`:1,
98+
- `quoteFeed1`:0x0000000000000000000000000000000000000000,
99+
- `quoteFeed2`:0x0000000000000000000000000000000000000000,
100+
- `quoteTokenDecimals`:18,
101+
- `salt`: <user-defined value used to make the address unique>,
42102

43103
## Audits
44104

45105
All audits are stored in the [audits](./audits/)' folder.
46106

47107
## License
48108

49-
Morpho Blue Oracles are licensed under `GPL-2.0-or-later`, see [`LICENSE`](./LICENSE).
109+
Morpho Blue Oracles are licensed under `GPL-2.0-or-later`, see [`LICENSE`](./LICENSE).

0 commit comments

Comments
 (0)