mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
updated anchor contract, added deployer
This commit is contained in:
parent
f29afb1b47
commit
4f0e5ac2dd
|
@ -1,14 +1,33 @@
|
||||||
|
// SPDX-License-Identifier: agpl-3.0
|
||||||
pragma solidity 0.6.12;
|
pragma solidity 0.6.12;
|
||||||
|
|
||||||
contract AaveOracle {
|
contract OracleAnchor {
|
||||||
event AssetSourceUpdated(address indexed asset, address indexed source);
|
event AssetSourceUpdated(address indexed token, address indexed aggregator);
|
||||||
|
event ChainlinkAggregatorUpdated(address indexed asset, address indexed source);
|
||||||
event OracleSystemMigrated();
|
event OracleSystemMigrated();
|
||||||
|
|
||||||
constructor(address[] calldata assets, address[] calldata sources) public {
|
constructor(
|
||||||
require(assets.length == sources.length, 'INCONSISTENT_PARAMS_LENGTH');
|
address[] memory aaveOracleAssets, // token assets that are complex
|
||||||
|
address[] memory aaveOracleSources, // custom oracles for complex tokens
|
||||||
|
address[] memory aggregatorAssets, // assets directly related to chainlink
|
||||||
|
address[] memory aggregatorSources // chainlink aggregator contract
|
||||||
|
) public {
|
||||||
|
require(
|
||||||
|
aaveOracleAssets.length == aaveOracleSources.length,
|
||||||
|
'INCONSISTENT_AAVEORACLE_PARAMS_LENGTH'
|
||||||
|
);
|
||||||
|
require(
|
||||||
|
aggregatorAssets.length == aggregatorSources.length,
|
||||||
|
'INCONSISTENT_CHAINLINKAGGREGATOR_PARAMS_LENGTH'
|
||||||
|
);
|
||||||
emit OracleSystemMigrated();
|
emit OracleSystemMigrated();
|
||||||
for (uint256 i = 0; i < assets.length; i++) {
|
|
||||||
emit AssetSourceUpdated(assets[i], sources[i]);
|
for (uint256 i = 0; i < aaveOracleAssets.length; i++) {
|
||||||
|
emit AssetSourceUpdated(aaveOracleAssets[i], aaveOracleSources[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint256 i = 0; i < aggregatorAssets.length; i++) {
|
||||||
|
emit ChainlinkAggregatorUpdated(aggregatorAssets[i], aggregatorSources[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,8 @@
|
||||||
"dev:UniswapLiquiditySwapAdapter": "hardhat --network kovan deploy-UniswapLiquiditySwapAdapter --provider 0x88757f2f99175387aB4C6a4b3067c77A695b0349 --router 0xfcd87315f0e4067070ade8682fcdbc3006631441 --weth 0xd0a1e359811322d97991e03f863a0c30c2cf029c",
|
"dev:UniswapLiquiditySwapAdapter": "hardhat --network kovan deploy-UniswapLiquiditySwapAdapter --provider 0x88757f2f99175387aB4C6a4b3067c77A695b0349 --router 0xfcd87315f0e4067070ade8682fcdbc3006631441 --weth 0xd0a1e359811322d97991e03f863a0c30c2cf029c",
|
||||||
"main:deployUniswapRepayAdapter": "hardhat --network main deploy-UniswapRepayAdapter --provider 0xB53C1a33016B2DC2fF3653530bfF1848a515c8c5 --router 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D --weth 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
"main:deployUniswapRepayAdapter": "hardhat --network main deploy-UniswapRepayAdapter --provider 0xB53C1a33016B2DC2fF3653530bfF1848a515c8c5 --router 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D --weth 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
||||||
"main:UniswapLiquiditySwapAdapter": "hardhat --network main deploy-UniswapLiquiditySwapAdapter --provider 0xB53C1a33016B2DC2fF3653530bfF1848a515c8c5 --router 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D --weth 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
"main:UniswapLiquiditySwapAdapter": "hardhat --network main deploy-UniswapLiquiditySwapAdapter --provider 0xB53C1a33016B2DC2fF3653530bfF1848a515c8c5 --router 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D --weth 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
||||||
|
"dev:deployOracleAnchor": "hardhat --network kovan deploy-OracleAnchor",
|
||||||
|
"main:OracleAnchor": "hardhat --network main deploy-OracleAnchor",
|
||||||
"kovan:verify": "npm run hardhat:kovan verify:general -- --all --pool Aave",
|
"kovan:verify": "npm run hardhat:kovan verify:general -- --all --pool Aave",
|
||||||
"ropsten:verify": "npm run hardhat:ropsten verify:general -- --all --pool Aave",
|
"ropsten:verify": "npm run hardhat:ropsten verify:general -- --all --pool Aave",
|
||||||
"mainnet:verify": "npm run hardhat:main verify:general -- --all --pool Aave",
|
"mainnet:verify": "npm run hardhat:main verify:general -- --all --pool Aave",
|
||||||
|
|
145
tasks/deployments/deploy-OracleAnchor.ts
Normal file
145
tasks/deployments/deploy-OracleAnchor.ts
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
import { task } from 'hardhat/config';
|
||||||
|
|
||||||
|
import { OracleAnchorFactory } from '../../types';
|
||||||
|
import { verifyContract } from '../../helpers/etherscan-verification';
|
||||||
|
import { EthereumNetwork } from '../../helpers/types';
|
||||||
|
|
||||||
|
task(`deploy-OracleAnchor`, `Deploys the OracleAnchor contract`)
|
||||||
|
.addFlag('verify', 'Verify OracleAnchor contract via Etherscan API.')
|
||||||
|
.setAction(async ({ verify }, localBRE) => {
|
||||||
|
await localBRE.run('set-DRE');
|
||||||
|
|
||||||
|
if (!localBRE.network.config.chainId) {
|
||||||
|
throw new Error('INVALID_CHAIN_ID');
|
||||||
|
}
|
||||||
|
|
||||||
|
const aaveOracleAssets = {
|
||||||
|
[EthereumNetwork.main]: [
|
||||||
|
'0x056fd409e1d7a124bd7017459dfea2f387b6d5cd', // GUSD
|
||||||
|
'0x8798249c2e607446efb7ad49ec89dd1865ff4272', // XSUSHI
|
||||||
|
],
|
||||||
|
[EthereumNetwork.kovan]: [],
|
||||||
|
}; // token assets that are complex
|
||||||
|
const aaveOracleSources = {
|
||||||
|
[EthereumNetwork.main]: [
|
||||||
|
'0xec6f4cd64d28ef32507e2dc399948aae9bbedd7e', // GUSD
|
||||||
|
'0x9b26214bec078e68a394aaebfbfff406ce14893f', // XSUSHI
|
||||||
|
],
|
||||||
|
[EthereumNetwork.kovan]: [],
|
||||||
|
}; // custom oracles for complex tokens
|
||||||
|
const aggregatorAssets = {
|
||||||
|
[EthereumNetwork.main]: [
|
||||||
|
'0x0000000000085d4780b73119b644ae5ecd22b376', // TUSD
|
||||||
|
'0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e', // YFI
|
||||||
|
'0x0d8775f648430679a709e98d2b0cb6250d2887ef', // BAT
|
||||||
|
'0x0f5d2fb29fb7d3cfee444a200298f468908cc942', // MANA
|
||||||
|
'0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', // UNI
|
||||||
|
'0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', // WBTC
|
||||||
|
'0x408e41876cccdc0f92210600ef50372656052a38', // REN
|
||||||
|
'0x4fabb145d64652a948d72533023f6e7a623c7c53', // BUSD
|
||||||
|
'0x514910771af9ca656af840dff83e8264ecf986ca', // LINK
|
||||||
|
'0x57ab1ec28d129707052df4df418d58a2d46d5f51', // SUSD
|
||||||
|
'0x6b175474e89094c44da98b954eedeac495271d0f', // DAI
|
||||||
|
'0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', // AAVE
|
||||||
|
'0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2', // MKR
|
||||||
|
'0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC
|
||||||
|
'0xba100000625a3754423978a60c9317c58a424e3d', // BAL
|
||||||
|
'0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', // SNX
|
||||||
|
'0xd533a949740bb3306d119cc777fa900ba034cd52', // CRV
|
||||||
|
'0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT
|
||||||
|
'0xdd974d5c2e2928dea5f71b9825b8b646686bd200', // KNC
|
||||||
|
'0xe41d2489571d322189246dafa5ebde1f4699f498', // ZRX
|
||||||
|
'0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c', // ENJ
|
||||||
|
'0x10f7fc1f91ba351f9c629c5947ad69bd03c05b96', // USD => USD_MOCK_ADDRESS
|
||||||
|
'0x6b3595068778dd592e39a122f4f5a5cf09c90fe2', // SUSHI
|
||||||
|
],
|
||||||
|
[EthereumNetwork.kovan]: [
|
||||||
|
'0x016750ac630f711882812f24dba6c95b9d35856d', // TUSD
|
||||||
|
'0xb7c325266ec274feb1354021d27fa3e3379d840d', // YFI
|
||||||
|
'0x2d12186fbb9f9a8c28b3ffdd4c42920f8539d738', // BAT
|
||||||
|
'0x738dc6380157429e957d223e6333dc385c85fec7', // MANA
|
||||||
|
'0x075a36ba8846c6b6f53644fdd3bf17e5151789dc', // UNI
|
||||||
|
'0xd1b98b6607330172f1d991521145a22bce793277', // WBTC
|
||||||
|
'0x5eebf65a6746eed38042353ba84c8e37ed58ac6f', // REN
|
||||||
|
'0x4c6e1efc12fdfd568186b7baec0a43fffb4bcccf', // BUSD
|
||||||
|
'0xad5ce863ae3e4e9394ab43d4ba0d80f419f61789', // LINK
|
||||||
|
'0x99b267b9d96616f906d53c26decf3c5672401282', // SUSD
|
||||||
|
'0xff795577d9ac8bd7d90ee22b6c1703490b6512fd', // DAI
|
||||||
|
'0xb597cd8d3217ea6477232f9217fa70837ff667af', // AAVE
|
||||||
|
'0x61e4cae3da7fd189e52a4879c7b8067d7c2cc0fa', // MKR
|
||||||
|
'0xe22da380ee6b445bb8273c81944adeb6e8450422', // USDC
|
||||||
|
'0x7fdb81b0b8a010dd4ffc57c3fecbf145ba8bd947', // SNX
|
||||||
|
'0x13512979ade267ab5100878e2e0f485b568328a4', // USDT
|
||||||
|
'0x3f80c39c0b96a0945f9f0e9f55d8a8891c5671a8', // KNC
|
||||||
|
'0xd0d76886cf8d952ca26177eb7cfdf83bad08c00c', // ZRX
|
||||||
|
'0xc64f90cd7b564d3ab580eb20a102a8238e218be2', // ENJ
|
||||||
|
'0x10f7fc1f91ba351f9c629c5947ad69bd03c05b96', // USD => USD_MOCK_ADDRESS
|
||||||
|
],
|
||||||
|
}; // assets directly related to chainlink
|
||||||
|
const aggregatorSources = {
|
||||||
|
[EthereumNetwork.main]: [
|
||||||
|
'0x0c632ec5982e3a8dc116a02eba7a419efec170b1', //TUSD
|
||||||
|
'0x4a03707a1bfefc2836a69b1a6a6bd752270041a9', // YFI
|
||||||
|
'0x3146392934da3ae09447cd7fe4061d8aa96b50ae', // BAT
|
||||||
|
'0x3162c2de0c254b97d869a070929b518b5b9b56b3', // MANA
|
||||||
|
'0x5977d45ba0a1ffc3740506d07f5693bbc45df3c7', // UNI
|
||||||
|
'0xbd72da70007e47aaf1bbd84918675392cf6885f7', // WBTC
|
||||||
|
'0x1a53bf1bfffb7a2b33e1931d33423c7c94f675ee', // REN
|
||||||
|
'0x661be809784e094ea70f980939cf3f09337a3178', // BUSD
|
||||||
|
'0x7e6c635d6a53b5033d1b0cee84eccea9096859e4', // LINK
|
||||||
|
'0x060f728deb96875f992c97414eff2b3ef6c58ec7', // SUSD
|
||||||
|
'0xd866a07dea5ee3c093e21d33660b5579c21f140b', // DAI
|
||||||
|
'0x42f3b59f72772eb5794b04d2d85afac0d30a5683', // AAVE
|
||||||
|
'0x204a6fe11de66aa463879f47f3533dd87d47020d', // MKR
|
||||||
|
'0x00d02526ca08488342ab634de3b2d0050ecc7f60', // USDC
|
||||||
|
'0x4f5e9704b1d7cc032553f63471d96fcb63ff2bc3', // BAL => different contract than others
|
||||||
|
'0xbafe3cb0e563e914806a99d547bdbf2cfcf5fdf6', // SNX => same
|
||||||
|
'0x7f67ca2ce5299a67acd83d52a064c5b8e41ddb80', // CRV => same
|
||||||
|
'0x1058a82c25f55ab8ab0ce717f3e6e164e80f1a0b', // USDT
|
||||||
|
'0x075fe11b3dd9c605f7fd09ff9310e3e37baabc9e', // KNC
|
||||||
|
'0xe03b49682965a1eb5230d41f96e10896dc563f0d', // ZRX
|
||||||
|
'0x20aff4833e5d261bb34bc3980d88ad17a3fe90dc', // ENJ
|
||||||
|
'0x00c7A37B03690fb9f41b5C5AF8131735C7275446', // USD
|
||||||
|
'0x00377d6c82df8f63163ff828760b2a5d935734cf', // SUSHI
|
||||||
|
],
|
||||||
|
[EthereumNetwork.kovan]: [
|
||||||
|
'0x5d233bc41d345646f855502892eb11173f4b807b', //TUSD
|
||||||
|
'0xe45f3ed2218e7e411bf8dfde66069e57f46b26ef', // YFI
|
||||||
|
'0x7eeffd6a9d145f558b793f3aa65141bcd0c86312', // BAT
|
||||||
|
'0x3e360e4db87a34738fa9d4ac819f208d8275a66b', // MANA
|
||||||
|
'0x8d592e53fb1243657a51e531bfc30a3617a4173e', // UNI
|
||||||
|
'0x222d3bd9bc8aef87afa9c8e4c7468da3f2c7130d', // WBTC
|
||||||
|
'0x0fd41f0160c3567ae149b1564c080df208cba3b9', // REN
|
||||||
|
'0x361e36e9d6f47f8312e9709312e088304b013d8b', // BUSD
|
||||||
|
'0xb44aa3a6fc6419fac0a4fb9b9b8bfd69939503ff', // LINK
|
||||||
|
'0x55dca5e95d271f2d074a5e6cf4bf95b7db80d67d', // SUSD
|
||||||
|
'0x30fde1d82a4e58e579a64dbbcd8d4650805cf3c8', // DAI
|
||||||
|
'0xde222c97adb2bb443c381edf4bb3f5bccd533808', // AAVE
|
||||||
|
'0x0df8bbcd897fef6717d1cc44ac45cf2dd6e290bc', // MKR
|
||||||
|
'0xdcfc14bc921e189497d4e63f4de1b418b521b1c4', // USDC
|
||||||
|
'0x28a0fba7b73679d052c9b66bf4c83f6df7c349ce', // SNX => same
|
||||||
|
'0xccc6f61b7ad1ea539705ed4237a85e23277eb341', // USDT
|
||||||
|
'0x64e8b221bd554fe995c2fcf2490a3b979fe14776', // KNC
|
||||||
|
'0xf8e4d2a782dbe31a7f8db2c2bc5b3645338321e9', // ZRX
|
||||||
|
'0xf0e696e4b8b8d571c139e82a8a874022713fde52', // ENJ
|
||||||
|
'0x10b3c106c4ed7D22B0e7Abe5Dc43BdFA970a153c', // USD
|
||||||
|
],
|
||||||
|
}; // chainlink aggregator contract
|
||||||
|
|
||||||
|
console.log(`\n- OracleAnchor deployment`);
|
||||||
|
|
||||||
|
console.log(`\tDeploying OracleAnchor implementation ...`);
|
||||||
|
const oracleAnchor = await new OracleAnchorFactory(
|
||||||
|
await localBRE.ethers.provider.getSigner()
|
||||||
|
).deploy(
|
||||||
|
aaveOracleAssets[localBRE.network.name],
|
||||||
|
aaveOracleSources[localBRE.network.name],
|
||||||
|
aggregatorAssets[localBRE.network.name],
|
||||||
|
aggregatorSources[localBRE.network.name]
|
||||||
|
);
|
||||||
|
await oracleAnchor.deployTransaction.wait();
|
||||||
|
console.log('oracleAnchor.address', oracleAnchor.address);
|
||||||
|
await verifyContract(oracleAnchor.address, []);
|
||||||
|
|
||||||
|
console.log(`\tFinished OracleAnchor deployment`);
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user