mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
Merge remote-tracking branch 'oldfork/light-implementation' into lp-market
This commit is contained in:
commit
f590040c60
|
@ -386,7 +386,6 @@ abstract contract BaseUniswapAdapter is FlashLoanReceiverBase, IBaseUniswapAdapt
|
|||
}
|
||||
|
||||
uint256 bestAmountOut;
|
||||
|
||||
try UNISWAP_ROUTER.getAmountsOut(finalAmountIn, simplePath) returns (
|
||||
uint256[] memory resultAmounts
|
||||
) {
|
||||
|
|
10
gas-tracker.ts
Normal file
10
gas-tracker.ts
Normal file
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @dev This is a simple script that keeps track of gas spent during deployment.
|
||||
*/
|
||||
import { BigNumber } from 'ethers';
|
||||
|
||||
export var totalGas:BigNumber = BigNumber.from(0);
|
||||
|
||||
export function addGas(amount: BigNumber) {
|
||||
totalGas = totalGas.add(amount);
|
||||
}
|
|
@ -8,6 +8,7 @@ import {
|
|||
} from './types';
|
||||
import { getParamPerPool } from './contracts-helpers';
|
||||
import AaveConfig from '../markets/aave';
|
||||
import UniswapConfig from '../markets/uniswap';
|
||||
import { CommonsConfig } from '../markets/aave/commons';
|
||||
import { DRE, filterMapBy } from './misc-utils';
|
||||
import { tEthereumAddress } from './types';
|
||||
|
@ -24,6 +25,8 @@ export const loadPoolConfig = (configName: ConfigNames): PoolConfiguration => {
|
|||
switch (configName) {
|
||||
case ConfigNames.Aave:
|
||||
return AaveConfig;
|
||||
case ConfigNames.Uniswap:
|
||||
return UniswapConfig;
|
||||
case ConfigNames.Commons:
|
||||
return CommonsConfig;
|
||||
default:
|
||||
|
@ -41,6 +44,9 @@ export const getReservesConfigByPool = (pool: AavePools): iMultiPoolsAssets<IRes
|
|||
[AavePools.proto]: {
|
||||
...AaveConfig.ReservesConfig,
|
||||
},
|
||||
[AavePools.uniswap]: {
|
||||
...UniswapConfig.ReservesConfig,
|
||||
},
|
||||
},
|
||||
pool
|
||||
);
|
||||
|
|
|
@ -11,7 +11,6 @@ import {
|
|||
PoolConfiguration,
|
||||
eEthereumNetwork,
|
||||
} from './types';
|
||||
|
||||
import { MintableERC20 } from '../types/MintableERC20';
|
||||
import { MockContract } from 'ethereum-waffle';
|
||||
import { getReservesConfigByPool } from './configuration';
|
||||
|
@ -69,6 +68,7 @@ const readArtifact = async (id: string) => {
|
|||
}
|
||||
return (DRE as HardhatRuntimeEnvironment).artifacts.readArtifact(id);
|
||||
};
|
||||
|
||||
export const deployLendingPoolAddressesProvider = async (marketId: string, verify?: boolean) =>
|
||||
withSaveAndVerify(
|
||||
await new LendingPoolAddressesProviderFactory(await getFirstSigner()).deploy(marketId),
|
||||
|
@ -302,78 +302,111 @@ export const deployDefaultReserveInterestRateStrategy = async (
|
|||
export const deployStableDebtToken = async (
|
||||
args: [tEthereumAddress, tEthereumAddress, string, string, tEthereumAddress],
|
||||
verify: boolean
|
||||
) =>
|
||||
withSaveAndVerify(
|
||||
await new StableDebtTokenFactory(await getFirstSigner()).deploy(...args),
|
||||
) => {
|
||||
const instance = await withSaveAndVerify(
|
||||
await new StableDebtTokenFactory(await getFirstSigner()).deploy(),
|
||||
eContractid.StableDebtToken,
|
||||
args,
|
||||
[],
|
||||
verify
|
||||
);
|
||||
|
||||
await instance.initialize(
|
||||
args[0],
|
||||
args[1],
|
||||
args[2],
|
||||
"18",
|
||||
args[3],
|
||||
args[4]
|
||||
);
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
||||
export const deployVariableDebtToken = async (
|
||||
args: [tEthereumAddress, tEthereumAddress, string, string, tEthereumAddress],
|
||||
verify: boolean
|
||||
) =>
|
||||
withSaveAndVerify(
|
||||
await new VariableDebtTokenFactory(await getFirstSigner()).deploy(...args),
|
||||
) => {
|
||||
const instance = await withSaveAndVerify(
|
||||
await new VariableDebtTokenFactory(await getFirstSigner()).deploy(),
|
||||
eContractid.VariableDebtToken,
|
||||
args,
|
||||
[],
|
||||
verify
|
||||
);
|
||||
|
||||
await instance.initialize(
|
||||
args[0],
|
||||
args[1],
|
||||
args[2],
|
||||
"18",
|
||||
args[3],
|
||||
args[4]
|
||||
);
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
||||
export const deployGenericAToken = async (
|
||||
[poolAddress, underlyingAssetAddress, treasuryAddress, name, symbol, incentivesController]: [
|
||||
[poolAddress, underlyingAssetAddress, treasuryAddress, incentivesController, name, symbol]: [
|
||||
tEthereumAddress,
|
||||
tEthereumAddress,
|
||||
tEthereumAddress,
|
||||
tEthereumAddress,
|
||||
string,
|
||||
string,
|
||||
tEthereumAddress
|
||||
string
|
||||
],
|
||||
verify: boolean
|
||||
) => {
|
||||
const args: [
|
||||
tEthereumAddress,
|
||||
tEthereumAddress,
|
||||
string,
|
||||
string,
|
||||
tEthereumAddress,
|
||||
tEthereumAddress
|
||||
] = [poolAddress, underlyingAssetAddress, treasuryAddress, name, symbol, incentivesController];
|
||||
return withSaveAndVerify(
|
||||
await new ATokenFactory(await getFirstSigner()).deploy(...args),
|
||||
const instance = await withSaveAndVerify(
|
||||
await new ATokenFactory(await getFirstSigner()).deploy(),
|
||||
eContractid.AToken,
|
||||
args,
|
||||
[],
|
||||
verify
|
||||
);
|
||||
|
||||
await instance.initialize(
|
||||
poolAddress,
|
||||
treasuryAddress,
|
||||
underlyingAssetAddress,
|
||||
incentivesController,
|
||||
"18",
|
||||
name,
|
||||
symbol
|
||||
);
|
||||
|
||||
return instance;
|
||||
};
|
||||
|
||||
export const deployDelegationAwareAToken = async (
|
||||
[poolAddress, underlyingAssetAddress, treasuryAddress, name, symbol, incentivesController]: [
|
||||
[pool, underlyingAssetAddress, treasuryAddress, incentivesController, name, symbol]: [
|
||||
tEthereumAddress,
|
||||
tEthereumAddress,
|
||||
tEthereumAddress,
|
||||
tEthereumAddress,
|
||||
string,
|
||||
string,
|
||||
tEthereumAddress
|
||||
string
|
||||
],
|
||||
verify: boolean
|
||||
) => {
|
||||
const args: [
|
||||
tEthereumAddress,
|
||||
tEthereumAddress,
|
||||
string,
|
||||
string,
|
||||
tEthereumAddress,
|
||||
tEthereumAddress
|
||||
] = [poolAddress, underlyingAssetAddress, treasuryAddress, name, symbol, incentivesController];
|
||||
|
||||
return withSaveAndVerify(
|
||||
await new DelegationAwareATokenFactory(await getFirstSigner()).deploy(...args),
|
||||
const instance = await withSaveAndVerify(
|
||||
await new DelegationAwareATokenFactory(await getFirstSigner()).deploy(),
|
||||
eContractid.DelegationAwareAToken,
|
||||
args,
|
||||
[],
|
||||
verify
|
||||
);
|
||||
|
||||
await instance.initialize(
|
||||
pool,
|
||||
treasuryAddress,
|
||||
underlyingAssetAddress,
|
||||
incentivesController,
|
||||
"18",
|
||||
name,
|
||||
symbol
|
||||
)
|
||||
|
||||
return instance;
|
||||
};
|
||||
|
||||
export const deployAllMockTokens = async (verify?: boolean) => {
|
||||
|
@ -390,6 +423,7 @@ export const deployAllMockTokens = async (verify?: boolean) => {
|
|||
[tokenSymbol, tokenSymbol, configData ? configData.reserveDecimals : decimals],
|
||||
verify
|
||||
);
|
||||
await registerContractInJsonDb(tokenSymbol.toUpperCase(), tokens[tokenSymbol]);
|
||||
}
|
||||
return tokens;
|
||||
};
|
||||
|
@ -449,16 +483,29 @@ export const deployWETHGateway = async (
|
|||
);
|
||||
|
||||
export const deployMockStableDebtToken = async (
|
||||
args: [tEthereumAddress, tEthereumAddress, string, string, tEthereumAddress],
|
||||
args: [tEthereumAddress, tEthereumAddress, tEthereumAddress, string, string],
|
||||
verify?: boolean
|
||||
) =>
|
||||
withSaveAndVerify(
|
||||
await new MockStableDebtTokenFactory(await getFirstSigner()).deploy(...args),
|
||||
) => {
|
||||
const instance = await withSaveAndVerify(
|
||||
await new MockStableDebtTokenFactory(await getFirstSigner()).deploy(),
|
||||
eContractid.MockStableDebtToken,
|
||||
args,
|
||||
[],
|
||||
verify
|
||||
);
|
||||
|
||||
await instance.initialize(
|
||||
args[0],
|
||||
args[1],
|
||||
args[2],
|
||||
"18",
|
||||
args[3],
|
||||
args[4]
|
||||
);
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
||||
export const deployWETHMocked = async (verify?: boolean) =>
|
||||
withSaveAndVerify(
|
||||
await new WETH9MockedFactory(await getFirstSigner()).deploy(),
|
||||
|
@ -468,26 +515,53 @@ export const deployWETHMocked = async (verify?: boolean) =>
|
|||
);
|
||||
|
||||
export const deployMockVariableDebtToken = async (
|
||||
args: [tEthereumAddress, tEthereumAddress, string, string, tEthereumAddress],
|
||||
args: [tEthereumAddress, tEthereumAddress, tEthereumAddress, string, string],
|
||||
verify?: boolean
|
||||
) =>
|
||||
withSaveAndVerify(
|
||||
await new MockVariableDebtTokenFactory(await getFirstSigner()).deploy(...args),
|
||||
) => {
|
||||
const instance = await withSaveAndVerify(
|
||||
await new MockVariableDebtTokenFactory(await getFirstSigner()).deploy(),
|
||||
eContractid.MockVariableDebtToken,
|
||||
args,
|
||||
[],
|
||||
verify
|
||||
);
|
||||
|
||||
await instance.initialize(
|
||||
args[0],
|
||||
args[1],
|
||||
args[2],
|
||||
"18",
|
||||
args[3],
|
||||
args[4]
|
||||
);
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
||||
export const deployMockAToken = async (
|
||||
args: [tEthereumAddress, tEthereumAddress, tEthereumAddress, string, string, tEthereumAddress],
|
||||
args: [tEthereumAddress, tEthereumAddress, tEthereumAddress,tEthereumAddress, string, string],
|
||||
verify?: boolean
|
||||
) =>
|
||||
withSaveAndVerify(
|
||||
await new MockATokenFactory(await getFirstSigner()).deploy(...args),
|
||||
) => {
|
||||
const instance = await withSaveAndVerify(
|
||||
await new MockATokenFactory(await getFirstSigner()).deploy(),
|
||||
eContractid.MockAToken,
|
||||
args,
|
||||
[],
|
||||
verify
|
||||
);
|
||||
|
||||
await instance.initialize(
|
||||
args[0],
|
||||
args[2],
|
||||
args[1],
|
||||
args[3],
|
||||
"18",
|
||||
args[4],
|
||||
args[5],
|
||||
);
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
||||
export const deploySelfdestructTransferMock = async (verify?: boolean) =>
|
||||
withSaveAndVerify(
|
||||
|
|
|
@ -172,19 +172,19 @@ export const getPairsTokenAggregator = (
|
|||
},
|
||||
aggregatorsAddresses: { [tokenSymbol: string]: tEthereumAddress }
|
||||
): [string[], string[]] => {
|
||||
const { ETH, USD, WETH, ...assetsAddressesWithoutEth } = allAssetsAddresses;
|
||||
const { ETH, USD, WETH, UniWETH, ...assetsAddressesWithoutEth } = allAssetsAddresses;
|
||||
|
||||
const pairs = Object.entries(assetsAddressesWithoutEth).map(([tokenSymbol, tokenAddress]) => {
|
||||
if (tokenSymbol !== 'WETH' && tokenSymbol !== 'ETH') {
|
||||
const aggregatorAddressIndex = Object.keys(aggregatorsAddresses).findIndex(
|
||||
(value) => value === tokenSymbol
|
||||
);
|
||||
const [, aggregatorAddress] = (Object.entries(aggregatorsAddresses) as [
|
||||
string,
|
||||
tEthereumAddress
|
||||
][])[aggregatorAddressIndex];
|
||||
return [tokenAddress, aggregatorAddress];
|
||||
}
|
||||
//if (true/*tokenSymbol !== 'WETH' && tokenSymbol !== 'ETH' && tokenSymbol !== 'UniWETH'*/) {
|
||||
const aggregatorAddressIndex = Object.keys(aggregatorsAddresses).findIndex(
|
||||
(value) => value === tokenSymbol
|
||||
);
|
||||
const [, aggregatorAddress] = (Object.entries(aggregatorsAddresses) as [
|
||||
string,
|
||||
tEthereumAddress
|
||||
][])[aggregatorAddressIndex];
|
||||
return [tokenAddress, aggregatorAddress];
|
||||
//}
|
||||
}) as [string, string][];
|
||||
|
||||
const mappedPairs = pairs.map(([asset]) => asset);
|
||||
|
|
|
@ -18,6 +18,7 @@ import { Artifact as BuidlerArtifact } from '@nomiclabs/buidler/types';
|
|||
import { verifyContract } from './etherscan-verification';
|
||||
import { getIErc20Detailed } from './contracts-getters';
|
||||
import { usingTenderly } from './tenderly-utils';
|
||||
import { addGas, totalGas } from '../gas-tracker';
|
||||
|
||||
export type MockTokenMap = { [symbol: string]: MintableERC20 };
|
||||
|
||||
|
@ -89,6 +90,9 @@ export const withSaveAndVerify = async <ContractType extends Contract>(
|
|||
args: (string | string[])[],
|
||||
verify?: boolean
|
||||
): Promise<ContractType> => {
|
||||
addGas(instance.deployTransaction.gasLimit);
|
||||
console.log("Current totalGas value:", totalGas);
|
||||
console.log("Logged gas limit:", instance.deployTransaction.gasLimit);
|
||||
await waitForTx(instance.deployTransaction);
|
||||
await registerContractInJsonDb(id, instance);
|
||||
if (usingTenderly()) {
|
||||
|
@ -159,10 +163,12 @@ export const getParamPerNetwork = <T>(
|
|||
}
|
||||
};
|
||||
|
||||
export const getParamPerPool = <T>({ proto }: iParamsPerPool<T>, pool: AavePools) => {
|
||||
export const getParamPerPool = <T>({ proto, uniswap }: iParamsPerPool<T>, pool: AavePools) => {
|
||||
switch (pool) {
|
||||
case AavePools.proto:
|
||||
return proto;
|
||||
case AavePools.uniswap:
|
||||
return uniswap;
|
||||
default:
|
||||
return proto;
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import {
|
|||
getAToken,
|
||||
getATokensAndRatesHelper,
|
||||
getLendingPoolAddressesProvider,
|
||||
getLendingPoolConfiguratorProxy,
|
||||
getStableAndVariableTokensHelper,
|
||||
} from './contracts-getters';
|
||||
import { rawInsertContractAddressInDb } from './contracts-helpers';
|
||||
|
@ -25,6 +26,8 @@ import {
|
|||
} from './contracts-deployments';
|
||||
import { ZERO_ADDRESS } from './constants';
|
||||
import { isZeroAddress } from 'ethereumjs-util';
|
||||
import { addGas } from '../gas-tracker';
|
||||
import { getTreasuryAddress } from './configuration';
|
||||
|
||||
export const chooseATokenDeployment = (id: eContractid) => {
|
||||
switch (id) {
|
||||
|
@ -53,6 +56,7 @@ export const initReservesByHelper = async (
|
|||
const poolAddress = await addressProvider.getLendingPool();
|
||||
|
||||
// Set aTokenAndRatesDeployer as temporal admin
|
||||
addGas(await addressProvider.estimateGas.setPoolAdmin(atokenAndRatesDeployer.address));
|
||||
await waitForTx(await addressProvider.setPoolAdmin(atokenAndRatesDeployer.address));
|
||||
|
||||
// CHUNK CONFIGURATION
|
||||
|
@ -75,11 +79,32 @@ export const initReservesByHelper = async (
|
|||
let reserveInitDecimals: string[] = [];
|
||||
let reserveSymbols: string[] = [];
|
||||
|
||||
// TEST START
|
||||
let initInputParams: {
|
||||
aTokenImpl: string,
|
||||
stableDebtTokenImpl: string,
|
||||
variableDebtTokenImpl: string,
|
||||
underlyingAssetDecimals: BigNumberish,
|
||||
interestRateStrategyAddress: string,
|
||||
underlyingAsset: string,
|
||||
treasury: string,
|
||||
incentivesController: string,
|
||||
underlyingAssetName: string,
|
||||
aTokenName: string,
|
||||
aTokenSymbol: string,
|
||||
variableDebtTokenName: string,
|
||||
variableDebtTokenSymbol: string,
|
||||
stableDebtTokenName: string,
|
||||
stableDebtTokenSymbol: string,
|
||||
}[] = [];
|
||||
// TEST END
|
||||
|
||||
console.log(
|
||||
`- Token deployments in ${reservesChunks.length * 2} txs instead of ${
|
||||
Object.entries(reservesParams).length * 4
|
||||
} txs`
|
||||
);
|
||||
|
||||
for (let reservesChunk of reservesChunks) {
|
||||
// Prepare data
|
||||
const tokens: string[] = [];
|
||||
|
@ -93,7 +118,19 @@ export const initReservesByHelper = async (
|
|||
BigNumberish
|
||||
][] = [];
|
||||
const reservesDecimals: string[] = [];
|
||||
|
||||
// TEST START
|
||||
const inputParams: {
|
||||
asset: string,
|
||||
rates: [
|
||||
BigNumberish,
|
||||
BigNumberish,
|
||||
BigNumberish,
|
||||
BigNumberish,
|
||||
BigNumberish,
|
||||
BigNumberish
|
||||
]
|
||||
}[] = [];
|
||||
// TEST END
|
||||
for (let [assetSymbol, { reserveDecimals }] of reservesChunk) {
|
||||
const assetAddressIndex = Object.keys(tokenAddresses).findIndex(
|
||||
(value) => value === assetSymbol
|
||||
|
@ -128,11 +165,26 @@ export const initReservesByHelper = async (
|
|||
stableRateSlope2,
|
||||
]);
|
||||
reservesDecimals.push(reserveDecimals);
|
||||
|
||||
// TEST START
|
||||
inputParams.push({
|
||||
asset: tokenAddress,
|
||||
rates: [
|
||||
optimalUtilizationRate,
|
||||
baseVariableBorrowRate,
|
||||
variableRateSlope1,
|
||||
variableRateSlope2,
|
||||
stableRateSlope1,
|
||||
stableRateSlope2
|
||||
]
|
||||
});
|
||||
// TEST END
|
||||
}
|
||||
|
||||
// tx1 and tx2 gas is accounted for later.
|
||||
// Deploy stable and variable deployers and save implementations
|
||||
const tx1 = await waitForTx(
|
||||
await stableAndVariableDeployer.initDeployment(tokens, symbols, incentivesController)
|
||||
await stableAndVariableDeployer.initDeployment(tokens, symbols)
|
||||
);
|
||||
tx1.events?.forEach((event, index) => {
|
||||
rawInsertContractAddressInDb(`stableDebt${symbols[index]}`, event?.args?.stableToken);
|
||||
|
@ -141,13 +193,7 @@ export const initReservesByHelper = async (
|
|||
|
||||
// Deploy atokens and rate strategies and save implementations
|
||||
const tx2 = await waitForTx(
|
||||
await atokenAndRatesDeployer.initDeployment(
|
||||
tokens,
|
||||
symbols,
|
||||
strategyRates,
|
||||
treasuryAddress,
|
||||
incentivesController
|
||||
)
|
||||
await atokenAndRatesDeployer.initDeployment(inputParams)
|
||||
);
|
||||
tx2.events?.forEach((event, index) => {
|
||||
rawInsertContractAddressInDb(`a${symbols[index]}`, event?.args?.aToken);
|
||||
|
@ -158,7 +204,7 @@ export const initReservesByHelper = async (
|
|||
console.log(' * gasUsed: debtTokens batch', tx1.gasUsed.toString());
|
||||
console.log(' * gasUsed: aTokens and Strategy batch', tx2.gasUsed.toString());
|
||||
gasUsage = gasUsage.add(tx1.gasUsed).add(tx2.gasUsed);
|
||||
|
||||
|
||||
const stableTokens: string[] = tx1.events?.map((e) => e.args?.stableToken) || [];
|
||||
const variableTokens: string[] = tx1.events?.map((e) => e.args?.variableToken) || [];
|
||||
const aTokens: string[] = tx2.events?.map((e) => e.args?.aToken) || [];
|
||||
|
@ -173,6 +219,29 @@ export const initReservesByHelper = async (
|
|||
reserveSymbols = [...reserveSymbols, ...symbols];
|
||||
}
|
||||
|
||||
// TEST START
|
||||
for (let i = 0; i < deployedATokens.length; i ++) {
|
||||
initInputParams.push({
|
||||
aTokenImpl: deployedATokens[i],
|
||||
stableDebtTokenImpl: deployedStableTokens[i],
|
||||
variableDebtTokenImpl: deployedVariableTokens[i],
|
||||
underlyingAssetDecimals: reserveInitDecimals[i],
|
||||
interestRateStrategyAddress: deployedRates[i],
|
||||
underlyingAsset: reserveTokens[i],
|
||||
treasury: treasuryAddress,
|
||||
incentivesController: ZERO_ADDRESS,
|
||||
underlyingAssetName: reserveSymbols[i],
|
||||
aTokenName: `Aave interest bearing ${reserveSymbols[i]}`,
|
||||
aTokenSymbol: `a${reserveSymbols[i]}`,
|
||||
variableDebtTokenName: `Aave variable debt bearing ${reserveSymbols[i]}`,
|
||||
variableDebtTokenSymbol: `variableDebt${reserveSymbols[i]}`,
|
||||
stableDebtTokenName: `Aave stable debt bearing ${reserveSymbols[i]}`,
|
||||
stableDebtTokenSymbol: `stableDebt${reserveSymbols[i]}`
|
||||
});
|
||||
}
|
||||
// TEST END
|
||||
|
||||
|
||||
// Deploy delegated aware reserves tokens
|
||||
const delegatedAwareReserves = Object.entries(reservesParams).filter(
|
||||
([_, { aTokenImpl }]) => aTokenImpl === eContractid.DelegationAwareAToken
|
||||
|
@ -194,9 +263,9 @@ export const initReservesByHelper = async (
|
|||
poolAddress,
|
||||
tokenAddresses[symbol],
|
||||
treasuryAddress,
|
||||
ZERO_ADDRESS,
|
||||
`Aave interest bearing ${symbol}`,
|
||||
`a${symbol}`,
|
||||
ZERO_ADDRESS,
|
||||
],
|
||||
verify
|
||||
);
|
||||
|
@ -204,9 +273,9 @@ export const initReservesByHelper = async (
|
|||
[
|
||||
poolAddress,
|
||||
tokenAddresses[symbol],
|
||||
ZERO_ADDRESS, // Incentives controller
|
||||
`Aave stable debt bearing ${symbol}`,
|
||||
`stableDebt${symbol}`,
|
||||
ZERO_ADDRESS,
|
||||
`stableDebt${symbol}`
|
||||
],
|
||||
verify
|
||||
);
|
||||
|
@ -214,9 +283,9 @@ export const initReservesByHelper = async (
|
|||
[
|
||||
poolAddress,
|
||||
tokenAddresses[symbol],
|
||||
ZERO_ADDRESS, // Incentives controller
|
||||
`Aave variable debt bearing ${symbol}`,
|
||||
`variableDebt${symbol}`,
|
||||
ZERO_ADDRESS,
|
||||
],
|
||||
verify
|
||||
);
|
||||
|
@ -250,24 +319,34 @@ export const initReservesByHelper = async (
|
|||
const chunkedDecimals = chunk(reserveInitDecimals, initChunks);
|
||||
const chunkedSymbols = chunk(reserveSymbols, initChunks);
|
||||
|
||||
// TEST START
|
||||
const configurator = await getLendingPoolConfiguratorProxy();
|
||||
await waitForTx(await addressProvider.setPoolAdmin(admin));
|
||||
|
||||
const chunkedInitInputParams = chunk(initInputParams, initChunks);
|
||||
// TEST END
|
||||
console.log(`- Reserves initialization in ${chunkedStableTokens.length} txs`);
|
||||
for (let chunkIndex = 0; chunkIndex < chunkedDecimals.length; chunkIndex++) {
|
||||
const tx3 = await waitForTx(
|
||||
await atokenAndRatesDeployer.initReserve(
|
||||
chunkedStableTokens[chunkIndex],
|
||||
chunkedVariableTokens[chunkIndex],
|
||||
chunkedAtokens[chunkIndex],
|
||||
chunkedRates[chunkIndex],
|
||||
chunkedDecimals[chunkIndex]
|
||||
)
|
||||
// await atokenAndRatesDeployer.initReserve(
|
||||
// chunkedStableTokens[chunkIndex],
|
||||
// chunkedVariableTokens[chunkIndex],
|
||||
// chunkedAtokens[chunkIndex],
|
||||
// chunkedRates[chunkIndex],
|
||||
// chunkedDecimals[chunkIndex]
|
||||
// )
|
||||
await configurator.batchInitReserve(chunkedInitInputParams[chunkIndex])
|
||||
|
||||
);
|
||||
|
||||
console.log(` - Reserve ready for: ${chunkedSymbols[chunkIndex].join(', ')}`);
|
||||
console.log(' * gasUsed', tx3.gasUsed.toString());
|
||||
gasUsage = gasUsage.add(tx3.gasUsed);
|
||||
}
|
||||
addGas(gasUsage);
|
||||
|
||||
// Set deployer back as admin
|
||||
addGas(await addressProvider.estimateGas.setPoolAdmin(admin));
|
||||
await waitForTx(await addressProvider.setPoolAdmin(admin));
|
||||
return gasUsage;
|
||||
};
|
||||
|
@ -314,6 +393,16 @@ export const configureReservesByHelper = async (
|
|||
const liquidationBonuses: string[] = [];
|
||||
const reserveFactors: string[] = [];
|
||||
const stableRatesEnabled: boolean[] = [];
|
||||
// TEST START
|
||||
const inputParams : {
|
||||
asset: string;
|
||||
baseLTV: BigNumberish;
|
||||
liquidationThreshold: BigNumberish;
|
||||
liquidationBonus: BigNumberish;
|
||||
reserveFactor: BigNumberish;
|
||||
stableBorrowingEnabled: boolean;
|
||||
}[] = [];
|
||||
// TEST END
|
||||
|
||||
for (const [
|
||||
assetSymbol,
|
||||
|
@ -342,6 +431,18 @@ export const configureReservesByHelper = async (
|
|||
continue;
|
||||
}
|
||||
// Push data
|
||||
|
||||
// TEST START
|
||||
inputParams.push({
|
||||
asset: tokenAddress,
|
||||
baseLTV: baseLTVAsCollateral,
|
||||
liquidationThreshold: liquidationThreshold,
|
||||
liquidationBonus: liquidationBonus,
|
||||
reserveFactor: reserveFactor,
|
||||
stableBorrowingEnabled: stableBorrowRateEnabled
|
||||
});
|
||||
// TEST END
|
||||
|
||||
tokens.push(tokenAddress);
|
||||
symbols.push(assetSymbol);
|
||||
baseLTVA.push(baseLTVAsCollateral);
|
||||
|
@ -352,6 +453,7 @@ export const configureReservesByHelper = async (
|
|||
}
|
||||
if (tokens.length) {
|
||||
// Set aTokenAndRatesDeployer as temporal admin
|
||||
addGas(await addressProvider.estimateGas.setPoolAdmin(atokenAndRatesDeployer.address));
|
||||
await waitForTx(await addressProvider.setPoolAdmin(atokenAndRatesDeployer.address));
|
||||
|
||||
// Deploy init per chunks
|
||||
|
@ -364,22 +466,39 @@ export const configureReservesByHelper = async (
|
|||
const chunkedReserveFactors = chunk(reserveFactors, enableChunks);
|
||||
const chunkedStableRatesEnabled = chunk(stableRatesEnabled, enableChunks);
|
||||
|
||||
// TEST START
|
||||
const chunkedInputParams = chunk(inputParams, enableChunks);
|
||||
// TEST END
|
||||
|
||||
|
||||
console.log(`- Configure reserves in ${chunkedTokens.length} txs`);
|
||||
for (let chunkIndex = 0; chunkIndex < chunkedTokens.length; chunkIndex++) {
|
||||
// addGas(await atokenAndRatesDeployer.estimateGas.configureReserves(
|
||||
// chunkedTokens[chunkIndex],
|
||||
// chunkedBase[chunkIndex],
|
||||
// chunkedliquidationThresholds[chunkIndex],
|
||||
// chunkedliquidationBonuses[chunkIndex],
|
||||
// chunkedReserveFactors[chunkIndex],
|
||||
// chunkedStableRatesEnabled[chunkIndex],
|
||||
// { gasLimit: 12000000 }
|
||||
// ));
|
||||
|
||||
|
||||
addGas(await atokenAndRatesDeployer.estimateGas.configureReserves(
|
||||
chunkedInputParams[chunkIndex],
|
||||
{ gasLimit: 12000000 }
|
||||
));
|
||||
|
||||
await waitForTx(
|
||||
await atokenAndRatesDeployer.configureReserves(
|
||||
chunkedTokens[chunkIndex],
|
||||
chunkedBase[chunkIndex],
|
||||
chunkedliquidationThresholds[chunkIndex],
|
||||
chunkedliquidationBonuses[chunkIndex],
|
||||
chunkedReserveFactors[chunkIndex],
|
||||
chunkedStableRatesEnabled[chunkIndex],
|
||||
chunkedInputParams[chunkIndex],
|
||||
{ gasLimit: 12000000 }
|
||||
)
|
||||
);
|
||||
console.log(` - Init for: ${chunkedSymbols[chunkIndex].join(', ')}`);
|
||||
}
|
||||
// Set deployer back as admin
|
||||
addGas(await addressProvider.estimateGas.setPoolAdmin(admin));
|
||||
await waitForTx(await addressProvider.setPoolAdmin(admin));
|
||||
}
|
||||
};
|
||||
|
@ -454,9 +573,9 @@ export const initTokenReservesByHelper = async (
|
|||
[
|
||||
poolAddress,
|
||||
tokenAddresses[symbol],
|
||||
ZERO_ADDRESS, // Incentives controller
|
||||
`Aave stable debt bearing ${symbol}`,
|
||||
`stableDebt${symbol}`,
|
||||
ZERO_ADDRESS,
|
||||
`stableDebt${symbol}`
|
||||
],
|
||||
verify
|
||||
);
|
||||
|
@ -467,9 +586,9 @@ export const initTokenReservesByHelper = async (
|
|||
[
|
||||
poolAddress,
|
||||
tokenAddresses[symbol],
|
||||
ZERO_ADDRESS, // Incentives Controller
|
||||
`Aave variable debt bearing ${symbol}`,
|
||||
`variableDebt${symbol}`,
|
||||
ZERO_ADDRESS,
|
||||
`variableDebt${symbol}`
|
||||
],
|
||||
verify
|
||||
);
|
||||
|
@ -485,9 +604,9 @@ export const initTokenReservesByHelper = async (
|
|||
poolAddress,
|
||||
tokenAddresses[symbol],
|
||||
treasuryAddress,
|
||||
`Aave interest bearing ${symbol}`,
|
||||
`a${symbol}`,
|
||||
ZERO_ADDRESS,
|
||||
`Aave interest bearing ${symbol}`,
|
||||
`a${symbol}`
|
||||
],
|
||||
verify
|
||||
);
|
||||
|
|
|
@ -7,12 +7,13 @@ import {
|
|||
SymbolMap,
|
||||
} from './types';
|
||||
|
||||
import { LendingRateOracle } from '../types/LendingRateOracle';
|
||||
import { PriceOracle } from '../types/PriceOracle';
|
||||
import { MockAggregator } from '../types/MockAggregator';
|
||||
import { deployMockAggregator } from './contracts-deployments';
|
||||
import { chunk, waitForTx } from './misc-utils';
|
||||
import { getStableAndVariableTokensHelper } from './contracts-getters';
|
||||
import {LendingRateOracle} from '../types/LendingRateOracle';
|
||||
import {PriceOracle} from '../types/PriceOracle';
|
||||
import {MockAggregator} from '../types/MockAggregator';
|
||||
import {deployMockAggregator} from './contracts-deployments';
|
||||
import {chunk, waitForTx} from './misc-utils';
|
||||
import {getStableAndVariableTokensHelper} from './contracts-getters';
|
||||
import { addGas } from '../gas-tracker';
|
||||
|
||||
export const setInitialMarketRatesInRatesOracleByHelper = async (
|
||||
marketRates: iMultiPoolsAssets<IMarketRates>,
|
||||
|
@ -45,12 +46,20 @@ export const setInitialMarketRatesInRatesOracleByHelper = async (
|
|||
const chunkedSymbols = chunk(symbols, ratesChunks);
|
||||
|
||||
// Set helper as owner
|
||||
addGas(await lendingRateOracleInstance.estimateGas.transferOwnership(stableAndVariableTokenHelper.address));
|
||||
await waitForTx(
|
||||
await lendingRateOracleInstance.transferOwnership(stableAndVariableTokenHelper.address)
|
||||
);
|
||||
|
||||
console.log(`- Oracle borrow initalization in ${chunkedTokens.length} txs`);
|
||||
for (let chunkIndex = 0; chunkIndex < chunkedTokens.length; chunkIndex++) {
|
||||
|
||||
addGas(await stableAndVariableTokenHelper.estimateGas.setOracleBorrowRates(
|
||||
chunkedTokens[chunkIndex],
|
||||
chunkedRates[chunkIndex],
|
||||
lendingRateOracleInstance.address
|
||||
));
|
||||
|
||||
const tx3 = await waitForTx(
|
||||
await stableAndVariableTokenHelper.setOracleBorrowRates(
|
||||
chunkedTokens[chunkIndex],
|
||||
|
@ -61,6 +70,7 @@ export const setInitialMarketRatesInRatesOracleByHelper = async (
|
|||
console.log(` - Setted Oracle Borrow Rates for: ${chunkedSymbols[chunkIndex].join(', ')}`);
|
||||
}
|
||||
// Set back ownership
|
||||
addGas(await stableAndVariableTokenHelper.estimateGas.setOracleOwnership(lendingRateOracleInstance.address, admin));
|
||||
await waitForTx(
|
||||
await stableAndVariableTokenHelper.setOracleOwnership(lendingRateOracleInstance.address, admin)
|
||||
);
|
||||
|
@ -78,6 +88,7 @@ export const setInitialAssetPricesInOracle = async (
|
|||
const [, assetAddress] = (Object.entries(assetsAddresses) as [string, string][])[
|
||||
assetAddressIndex
|
||||
];
|
||||
addGas(await priceOracleInstance.estimateGas.setAssetPrice(assetAddress, price));
|
||||
await waitForTx(await priceOracleInstance.setAssetPrice(assetAddress, price));
|
||||
}
|
||||
};
|
||||
|
@ -94,6 +105,7 @@ export const setAssetPricesInOracle = async (
|
|||
const [, assetAddress] = (Object.entries(assetsAddresses) as [string, string][])[
|
||||
assetAddressIndex
|
||||
];
|
||||
addGas(await priceOracleInstance.estimateGas.setAssetPrice(assetAddress, price));
|
||||
await waitForTx(await priceOracleInstance.setAssetPrice(assetAddress, price));
|
||||
}
|
||||
};
|
||||
|
|
|
@ -22,6 +22,7 @@ export enum EthereumNetworkNames {
|
|||
|
||||
export enum AavePools {
|
||||
proto = 'proto',
|
||||
uniswap = 'uniswap',
|
||||
}
|
||||
|
||||
export enum eContractid {
|
||||
|
@ -204,6 +205,25 @@ export interface iAssetBase<T> {
|
|||
USD: T;
|
||||
REN: T;
|
||||
ENJ: T;
|
||||
UniWETH: T;
|
||||
UniWBTC: T;
|
||||
UniDAI: T;
|
||||
UniUSDC: T;
|
||||
UniUSDT: T;
|
||||
UniDAIWETH: T;
|
||||
UniWBTCWETH: T;
|
||||
UniAAVEWETH: T;
|
||||
UniBATWETH: T;
|
||||
UniUSDCDAI: T;
|
||||
UniCRVWETH: T;
|
||||
UniLINKWETH: T;
|
||||
UniMKRWETH: T;
|
||||
UniRENWETH: T;
|
||||
UniSNXWETH: T;
|
||||
UniUNIWETH: T;
|
||||
UniUSDCWETH: T;
|
||||
UniWBTCUSDC: T;
|
||||
UniYFIWETH: T;
|
||||
}
|
||||
|
||||
export type iAssetsWithoutETH<T> = Omit<iAssetBase<T>, 'ETH'>;
|
||||
|
@ -234,6 +254,29 @@ export type iAavePoolAssets<T> = Pick<
|
|||
| 'ENJ'
|
||||
>;
|
||||
|
||||
export type iUniswapPoolAssets<T> = Pick<
|
||||
iAssetsWithoutUSD<T>,
|
||||
| 'UniDAI'
|
||||
| 'UniUSDC'
|
||||
| 'UniUSDT'
|
||||
| 'UniWBTC'
|
||||
| 'UniWETH'
|
||||
| 'UniDAIWETH'
|
||||
| 'UniWBTCWETH'
|
||||
| 'UniAAVEWETH'
|
||||
| 'UniBATWETH'
|
||||
| 'UniUSDCDAI'
|
||||
| 'UniCRVWETH'
|
||||
| 'UniLINKWETH'
|
||||
| 'UniMKRWETH'
|
||||
| 'UniRENWETH'
|
||||
| 'UniSNXWETH'
|
||||
| 'UniUNIWETH'
|
||||
| 'UniUSDCWETH'
|
||||
| 'UniWBTCUSDC'
|
||||
| 'UniYFIWETH'
|
||||
>;
|
||||
|
||||
export type iMultiPoolsAssets<T> = iAssetCommon<T> | iAavePoolAssets<T>;
|
||||
|
||||
export type iAavePoolTokens<T> = Omit<iAavePoolAssets<T>, 'ETH'>;
|
||||
|
@ -262,6 +305,25 @@ export enum TokenContractId {
|
|||
YFI = 'YFI',
|
||||
UNI = 'UNI',
|
||||
ENJ = 'ENJ',
|
||||
UniWETH = 'UniWETH',
|
||||
UniWBTC = 'UniWBTC',
|
||||
UniDAI = 'UniDAI',
|
||||
UniUSDC = 'UniUSDC',
|
||||
UniUSDT = 'UniUSDT',
|
||||
UniDAIWETH = 'UniDAIWETH',
|
||||
UniWBTCWETH = 'UniWBTCWETH',
|
||||
UniAAVEWETH = 'UniAAVEWETH',
|
||||
UniBATWETH = 'UniBATWETH',
|
||||
UniUSDCDAI = 'UniUSDCDAI',
|
||||
UniCRVWETH = 'UniCRVWETH',
|
||||
UniLINKWETH = 'UniLINKWETH',
|
||||
UniMKRWETH = 'UniMKRWETH',
|
||||
UniRENWETH = 'UniRENWETH',
|
||||
UniSNXWETH = 'UniSNXWETH',
|
||||
UniUNIWETH = 'UniUNIWETH',
|
||||
UniUSDCWETH = 'UniUSDCWETH',
|
||||
UniWBTCUSDC = 'UniWBTCUSDC',
|
||||
UniYFIWETH = 'UniYFIWETH',
|
||||
}
|
||||
|
||||
export interface IReserveParams extends IReserveBorrowParams, IReserveCollateralParams {
|
||||
|
@ -302,6 +364,7 @@ export interface iParamsPerNetwork<T> {
|
|||
|
||||
export interface iParamsPerPool<T> {
|
||||
[AavePools.proto]: T;
|
||||
[AavePools.uniswap]: T;
|
||||
}
|
||||
|
||||
export interface iBasicDistributionParams {
|
||||
|
@ -376,6 +439,10 @@ export interface ICommonConfiguration {
|
|||
export interface IAaveConfiguration extends ICommonConfiguration {
|
||||
ReservesConfig: iAavePoolAssets<IReserveParams>;
|
||||
}
|
||||
|
||||
export interface IUniswapConfiguration extends ICommonConfiguration {
|
||||
ReservesConfig: iUniswapPoolAssets<IReserveParams>;
|
||||
}
|
||||
export interface ITokenAddress {
|
||||
[token: string]: tEthereumAddress;
|
||||
}
|
||||
|
|
|
@ -23,6 +23,25 @@ const MOCK_CHAINLINK_AGGREGATORS_PRICES = {
|
|||
WBTC: oneEther.multipliedBy('47.332685').toFixed(),
|
||||
YFI: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
ZRX: oneEther.multipliedBy('0.001151').toFixed(),
|
||||
UniDAI: oneEther.multipliedBy('0.00369068412860').toFixed(),
|
||||
UniUSDC: oneEther.multipliedBy('0.00367714136416').toFixed(),
|
||||
UniUSDT: oneEther.multipliedBy('0.00369068412860').toFixed(),
|
||||
UniWBTC: oneEther.multipliedBy('47.332685').toFixed(),
|
||||
UniWETH: oneEther.toFixed(),
|
||||
UniDAIWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniWBTCWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniAAVEWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniBATWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniUSDCDAI: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniCRVWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniLINKWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniMKRWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniRENWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniSNXWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniUNIWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniUSDCWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniWBTCUSDC: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniYFIWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
USD: '5848466240000000',
|
||||
};
|
||||
// ----------------
|
||||
|
|
322
markets/uniswap/commons.ts
Normal file
322
markets/uniswap/commons.ts
Normal file
|
@ -0,0 +1,322 @@
|
|||
import BigNumber from 'bignumber.js';
|
||||
import { oneEther, oneRay, RAY, ZERO_ADDRESS } from '../../helpers/constants';
|
||||
import { ICommonConfiguration, EthereumNetwork, eEthereumNetwork } from '../../helpers/types';
|
||||
|
||||
const MOCK_CHAINLINK_AGGREGATORS_PRICES = {
|
||||
AAVE: oneEther.multipliedBy('0.003620948469').toFixed(),
|
||||
BAT: oneEther.multipliedBy('0.00137893825230').toFixed(),
|
||||
BUSD: oneEther.multipliedBy('0.00736484').toFixed(),
|
||||
DAI: oneEther.multipliedBy('0.00369068412860').toFixed(),
|
||||
ENJ: oneEther.multipliedBy('0.00029560').toFixed(),
|
||||
KNC: oneEther.multipliedBy('0.001072').toFixed(),
|
||||
LINK: oneEther.multipliedBy('0.009955').toFixed(),
|
||||
MANA: oneEther.multipliedBy('0.000158').toFixed(),
|
||||
MKR: oneEther.multipliedBy('2.508581').toFixed(),
|
||||
REN: oneEther.multipliedBy('0.00065133').toFixed(),
|
||||
SNX: oneEther.multipliedBy('0.00442616').toFixed(),
|
||||
SUSD: oneEther.multipliedBy('0.00364714136416').toFixed(),
|
||||
TUSD: oneEther.multipliedBy('0.00364714136416').toFixed(),
|
||||
UNI: oneEther.multipliedBy('0.00536479').toFixed(),
|
||||
USDC: oneEther.multipliedBy('0.00367714136416').toFixed(),
|
||||
USDT: oneEther.multipliedBy('0.00369068412860').toFixed(),
|
||||
WETH: oneEther.toFixed(),
|
||||
WBTC: oneEther.multipliedBy('47.332685').toFixed(),
|
||||
YFI: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
ZRX: oneEther.multipliedBy('0.001151').toFixed(),
|
||||
UniDAI: oneEther.multipliedBy('0.00369068412860').toFixed(),
|
||||
UniUSDC: oneEther.multipliedBy('0.00367714136416').toFixed(),
|
||||
UniUSDT: oneEther.multipliedBy('0.00369068412860').toFixed(),
|
||||
UniWBTC: oneEther.multipliedBy('47.332685').toFixed(),
|
||||
UniWETH: oneEther.toFixed(),
|
||||
UniDAIWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniWBTCWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniAAVEWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniBATWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniUSDCDAI: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniCRVWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniLINKWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniMKRWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniRENWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniSNXWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniUNIWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniUSDCWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniWBTCUSDC: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
UniYFIWETH: oneEther.multipliedBy('22.407436').toFixed(),
|
||||
USD: '5848466240000000',
|
||||
};
|
||||
// ----------------
|
||||
// PROTOCOL GLOBAL PARAMS
|
||||
// ----------------
|
||||
|
||||
export const CommonsConfig: ICommonConfiguration = {
|
||||
MarketId: 'Commons',
|
||||
ProviderId: 0,
|
||||
ProtocolGlobalParams: {
|
||||
TokenDistributorPercentageBase: '10000',
|
||||
MockUsdPriceInWei: '5848466240000000',
|
||||
UsdAddress: '0x10F7Fc1F91Ba351f9C629c5947AD69bD03C05b96',
|
||||
NilAddress: '0x0000000000000000000000000000000000000000',
|
||||
OneAddress: '0x0000000000000000000000000000000000000001',
|
||||
AaveReferral: '0',
|
||||
},
|
||||
|
||||
// ----------------
|
||||
// COMMON PROTOCOL PARAMS ACROSS POOLS AND NETWORKS
|
||||
// ----------------
|
||||
|
||||
Mocks: {
|
||||
AllAssetsInitialPrices: {
|
||||
...MOCK_CHAINLINK_AGGREGATORS_PRICES,
|
||||
},
|
||||
},
|
||||
// TODO: reorg alphabetically, checking the reason of tests failing
|
||||
LendingRateOracleRatesCommon: {
|
||||
UniWETH: {
|
||||
borrowRate: oneRay.multipliedBy(0.03).toFixed(),
|
||||
},
|
||||
UniDAI: {
|
||||
borrowRate: oneRay.multipliedBy(0.039).toFixed(),
|
||||
},
|
||||
UniUSDC: {
|
||||
borrowRate: oneRay.multipliedBy(0.039).toFixed(),
|
||||
},
|
||||
UniUSDT: {
|
||||
borrowRate: oneRay.multipliedBy(0.035).toFixed(),
|
||||
},
|
||||
UniWBTC: {
|
||||
borrowRate: oneRay.multipliedBy(0.03).toFixed(),
|
||||
},
|
||||
UniDAIWETH: {
|
||||
borrowRate: oneRay.multipliedBy(0.05).toFixed(),
|
||||
},
|
||||
UniWBTCWETH: {
|
||||
borrowRate: oneRay.multipliedBy(0.05).toFixed(),
|
||||
},
|
||||
UniAAVEWETH:{
|
||||
borrowRate: oneRay.multipliedBy(0.05).toFixed(),
|
||||
},
|
||||
UniBATWETH: {
|
||||
borrowRate: oneRay.multipliedBy(0.05).toFixed(),
|
||||
},
|
||||
UniUSDCDAI: {
|
||||
borrowRate: oneRay.multipliedBy(0.05).toFixed(),
|
||||
},
|
||||
UniCRVWETH: {
|
||||
borrowRate: oneRay.multipliedBy(0.05).toFixed(),
|
||||
},
|
||||
UniLINKWETH: {
|
||||
borrowRate: oneRay.multipliedBy(0.05).toFixed(),
|
||||
},
|
||||
UniMKRWETH: {
|
||||
borrowRate: oneRay.multipliedBy(0.05).toFixed(),
|
||||
},
|
||||
UniRENWETH: {
|
||||
borrowRate: oneRay.multipliedBy(0.05).toFixed(),
|
||||
},
|
||||
UniSNXWETH: {
|
||||
borrowRate: oneRay.multipliedBy(0.05).toFixed(),
|
||||
},
|
||||
UniUNIWETH: {
|
||||
borrowRate: oneRay.multipliedBy(0.05).toFixed(),
|
||||
},
|
||||
UniUSDCWETH: {
|
||||
borrowRate: oneRay.multipliedBy(0.05).toFixed(),
|
||||
},
|
||||
UniWBTCUSDC: {
|
||||
borrowRate: oneRay.multipliedBy(0.05).toFixed(),
|
||||
},
|
||||
UniYFIWETH: {
|
||||
borrowRate: oneRay.multipliedBy(0.05).toFixed(),
|
||||
},
|
||||
},
|
||||
// ----------------
|
||||
// COMMON PROTOCOL ADDRESSES ACROSS POOLS
|
||||
// ----------------
|
||||
|
||||
// If PoolAdmin/emergencyAdmin is set, will take priority over PoolAdminIndex/emergencyAdminIndex
|
||||
PoolAdmin: {
|
||||
[eEthereumNetwork.coverage]: undefined,
|
||||
[eEthereumNetwork.buidlerevm]: undefined,
|
||||
[eEthereumNetwork.coverage]: undefined,
|
||||
[eEthereumNetwork.hardhat]: undefined,
|
||||
[eEthereumNetwork.kovan]: undefined,
|
||||
[eEthereumNetwork.ropsten]: undefined,
|
||||
[eEthereumNetwork.main]: undefined,
|
||||
[eEthereumNetwork.tenderlyMain]: undefined,
|
||||
},
|
||||
PoolAdminIndex: 0,
|
||||
EmergencyAdmin: {
|
||||
[eEthereumNetwork.hardhat]: undefined,
|
||||
[eEthereumNetwork.coverage]: undefined,
|
||||
[eEthereumNetwork.buidlerevm]: undefined,
|
||||
[eEthereumNetwork.kovan]: undefined,
|
||||
[eEthereumNetwork.ropsten]: undefined,
|
||||
[eEthereumNetwork.main]: undefined,
|
||||
[eEthereumNetwork.tenderlyMain]: undefined,
|
||||
},
|
||||
EmergencyAdminIndex: 1,
|
||||
ProviderRegistry: {
|
||||
[eEthereumNetwork.kovan]: '0x1E40B561EC587036f9789aF83236f057D1ed2A90',
|
||||
[eEthereumNetwork.ropsten]: '',
|
||||
[eEthereumNetwork.main]: '0x52D306e36E3B6B02c153d0266ff0f85d18BCD413',
|
||||
[eEthereumNetwork.coverage]: '',
|
||||
[eEthereumNetwork.hardhat]: '',
|
||||
[eEthereumNetwork.buidlerevm]: '',
|
||||
[eEthereumNetwork.tenderlyMain]: '0x52D306e36E3B6B02c153d0266ff0f85d18BCD413',
|
||||
},
|
||||
ProviderRegistryOwner: { // TEMPORARILY USING MY DEPLOYER
|
||||
[eEthereumNetwork.kovan]: '0x18d9bA2baEfBdE0FF137C4ad031427EF205f1Fd9',//'0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F',
|
||||
[eEthereumNetwork.ropsten]: '',
|
||||
[eEthereumNetwork.main]: '0xbd723fc4f1d737dcfc48a07fe7336766d34cad5f',
|
||||
[eEthereumNetwork.coverage]: '',
|
||||
[eEthereumNetwork.hardhat]: '',
|
||||
[eEthereumNetwork.buidlerevm]: '',
|
||||
[eEthereumNetwork.tenderlyMain]: '0xbd723fc4f1d737dcfc48a07fe7336766d34cad5f',
|
||||
},
|
||||
LendingRateOracle: {
|
||||
[eEthereumNetwork.coverage]: '',
|
||||
[eEthereumNetwork.hardhat]: '',
|
||||
[eEthereumNetwork.buidlerevm]: '',
|
||||
[eEthereumNetwork.kovan]: '',//'0xdCde9Bb6a49e37fA433990832AB541AE2d4FEB4a',
|
||||
[eEthereumNetwork.ropsten]: '0x05dcca805a6562c1bdd0423768754acb6993241b',
|
||||
[eEthereumNetwork.main]: '', //'0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D',
|
||||
[eEthereumNetwork.tenderlyMain]: '0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D',
|
||||
},
|
||||
TokenDistributor: {
|
||||
[eEthereumNetwork.coverage]: '',
|
||||
[eEthereumNetwork.buidlerevm]: '',
|
||||
[eEthereumNetwork.hardhat]: '',
|
||||
[EthereumNetwork.kovan]: '0x971efe90088f21dc6a36f610ffed77fc19710708',
|
||||
[EthereumNetwork.ropsten]: '0xeba2ea67942b8250d870b12750b594696d02fc9c',
|
||||
[EthereumNetwork.main]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae',
|
||||
[EthereumNetwork.tenderlyMain]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae',
|
||||
},
|
||||
AaveOracle: {
|
||||
[eEthereumNetwork.coverage]: '',
|
||||
[eEthereumNetwork.hardhat]: '',
|
||||
[eEthereumNetwork.buidlerevm]: '',
|
||||
[EthereumNetwork.kovan]: '',//'0xB8bE51E6563BB312Cbb2aa26e352516c25c26ac1',
|
||||
[EthereumNetwork.ropsten]: ZERO_ADDRESS,
|
||||
[EthereumNetwork.main]: '', //'0xA50ba011c48153De246E5192C8f9258A2ba79Ca9',
|
||||
[EthereumNetwork.tenderlyMain]: '0xA50ba011c48153De246E5192C8f9258A2ba79Ca9',
|
||||
},
|
||||
FallbackOracle: {
|
||||
[eEthereumNetwork.coverage]: '',
|
||||
[eEthereumNetwork.hardhat]: '',
|
||||
[eEthereumNetwork.buidlerevm]: '',
|
||||
[EthereumNetwork.kovan]: '0x50913E8E1c650E790F8a1E741FF9B1B1bB251dfe',
|
||||
[EthereumNetwork.ropsten]: '0xAD1a978cdbb8175b2eaeC47B01404f8AEC5f4F0d',
|
||||
[EthereumNetwork.main]: ZERO_ADDRESS,
|
||||
[EthereumNetwork.tenderlyMain]: ZERO_ADDRESS,
|
||||
},
|
||||
ChainlinkAggregator: {
|
||||
[eEthereumNetwork.coverage]: {},
|
||||
[eEthereumNetwork.hardhat]: {},
|
||||
[eEthereumNetwork.buidlerevm]: {},
|
||||
[EthereumNetwork.kovan]: {
|
||||
UniUSDT: '0x0bF499444525a23E7Bb61997539725cA2e928138',
|
||||
UniWBTC: '0xF7904a295A029a3aBDFFB6F12755974a958C7C25',
|
||||
UniUSDC: '0x64EaC61A2DFda2c3Fa04eED49AA33D021AeC8838',
|
||||
UniDAI:'0x22B58f1EbEDfCA50feF632bD73368b2FdA96D541',
|
||||
UniDAIWETH: '0x90B86B501BF4d800a7F76E551952E214Cc58Fba3', // Mock oracles
|
||||
UniWBTCWETH: '0x90B86B501BF4d800a7F76E551952E214Cc58Fba3',
|
||||
UniAAVEWETH: '0x90B86B501BF4d800a7F76E551952E214Cc58Fba3',
|
||||
UniBATWETH: '0x90B86B501BF4d800a7F76E551952E214Cc58Fba3',
|
||||
UniUSDCDAI: '0x90B86B501BF4d800a7F76E551952E214Cc58Fba3',
|
||||
UniCRVWETH: '0x90B86B501BF4d800a7F76E551952E214Cc58Fba3',
|
||||
UniLINKWETH: '0x90B86B501BF4d800a7F76E551952E214Cc58Fba3',
|
||||
UniMKRWETH: '0x90B86B501BF4d800a7F76E551952E214Cc58Fba3',
|
||||
UniRENWETH: '0x90B86B501BF4d800a7F76E551952E214Cc58Fba3',
|
||||
UniSNXWETH: '0x90B86B501BF4d800a7F76E551952E214Cc58Fba3',
|
||||
UniUNIWETH: '0x90B86B501BF4d800a7F76E551952E214Cc58Fba3',
|
||||
UniUSDCWETH: '0x90B86B501BF4d800a7F76E551952E214Cc58Fba3',
|
||||
UniWBTCUSDC: '0x90B86B501BF4d800a7F76E551952E214Cc58Fba3',
|
||||
UniYFIWETH: '0x90B86B501BF4d800a7F76E551952E214Cc58Fba3',
|
||||
USD: '0x9326BFA02ADD2366b30bacB125260Af641031331',
|
||||
},
|
||||
[EthereumNetwork.ropsten]: {
|
||||
},
|
||||
[EthereumNetwork.main]: {
|
||||
UniUSDT: '0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46',
|
||||
UniWBTC: '0xdeb288F737066589598e9214E782fa5A8eD689e8',
|
||||
UniUSDC: '0x986b5E1e1755e3C2440e960477f25201B0a8bbD4',
|
||||
UniDAI:'0x773616E4d11A78F511299002da57A0a94577F1f4',
|
||||
UniDAIWETH: '0xf4071801C4421Db7e63DaC15B9432e50C44a7F42',
|
||||
UniWBTCWETH: ZERO_ADDRESS,
|
||||
UniAAVEWETH: ZERO_ADDRESS,
|
||||
UniBATWETH: ZERO_ADDRESS,
|
||||
UniUSDCDAI: ZERO_ADDRESS,
|
||||
UniCRVWETH: ZERO_ADDRESS,
|
||||
UniLINKWETH: ZERO_ADDRESS,
|
||||
UniMKRWETH: ZERO_ADDRESS,
|
||||
UniRENWETH: ZERO_ADDRESS,
|
||||
UniSNXWETH: ZERO_ADDRESS,
|
||||
UniUNIWETH: ZERO_ADDRESS,
|
||||
UniUSDCWETH: ZERO_ADDRESS,
|
||||
UniWBTCUSDC: ZERO_ADDRESS,
|
||||
UniYFIWETH: ZERO_ADDRESS,
|
||||
USD: '0x9326BFA02ADD2366b30bacB125260Af641031331',
|
||||
},
|
||||
[EthereumNetwork.tenderlyMain]: {
|
||||
UniUSDT: '0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46',
|
||||
UniWBTC: '0xdeb288F737066589598e9214E782fa5A8eD689e8',
|
||||
UniUSDC: '0x986b5E1e1755e3C2440e960477f25201B0a8bbD4',
|
||||
UniDAI:'0x773616E4d11A78F511299002da57A0a94577F1f4',
|
||||
UniDAIWETH: ZERO_ADDRESS,
|
||||
UniWBTCWETH: ZERO_ADDRESS,
|
||||
UniAAVEWETH: ZERO_ADDRESS,
|
||||
UniBATWETH: ZERO_ADDRESS,
|
||||
UniUSDCDAI: ZERO_ADDRESS,
|
||||
UniCRVWETH: ZERO_ADDRESS,
|
||||
UniLINKWETH: ZERO_ADDRESS,
|
||||
UniMKRWETH: ZERO_ADDRESS,
|
||||
UniRENWETH: ZERO_ADDRESS,
|
||||
UniSNXWETH: ZERO_ADDRESS,
|
||||
UniUNIWETH: ZERO_ADDRESS,
|
||||
UniUSDCWETH: ZERO_ADDRESS,
|
||||
UniWBTCUSDC: ZERO_ADDRESS,
|
||||
UniYFIWETH: ZERO_ADDRESS,
|
||||
USD: '0x9326BFA02ADD2366b30bacB125260Af641031331',
|
||||
},
|
||||
},
|
||||
ReserveAssets: {
|
||||
[eEthereumNetwork.coverage]: {},
|
||||
[eEthereumNetwork.hardhat]: {},
|
||||
[eEthereumNetwork.buidlerevm]: {},
|
||||
[EthereumNetwork.main]: {},
|
||||
[EthereumNetwork.kovan]: {},
|
||||
[EthereumNetwork.ropsten]: {},
|
||||
[EthereumNetwork.tenderlyMain]: {},
|
||||
},
|
||||
ReservesConfig: {},
|
||||
ATokenDomainSeparator: {
|
||||
[eEthereumNetwork.coverage]:
|
||||
'0x95b73a72c6ecf4ccbbba5178800023260bad8e75cdccdb8e4827a2977a37c820',
|
||||
[eEthereumNetwork.hardhat]:
|
||||
'0xbae024d959c6a022dc5ed37294cd39c141034b2ae5f02a955cce75c930a81bf5',
|
||||
[eEthereumNetwork.buidlerevm]:
|
||||
'0xbae024d959c6a022dc5ed37294cd39c141034b2ae5f02a955cce75c930a81bf5',
|
||||
[eEthereumNetwork.kovan]: '',
|
||||
[eEthereumNetwork.ropsten]: '',
|
||||
[eEthereumNetwork.main]: '',
|
||||
[eEthereumNetwork.tenderlyMain]: '',
|
||||
},
|
||||
WETH: {
|
||||
[eEthereumNetwork.coverage]: '', // deployed in local evm
|
||||
[eEthereumNetwork.hardhat]: '', // deployed in local evm
|
||||
[eEthereumNetwork.buidlerevm]: '', // deployed in local evm
|
||||
[eEthereumNetwork.kovan]: '0xd0a1e359811322d97991e03f863a0c30c2cf029c',
|
||||
[eEthereumNetwork.ropsten]: '0xc778417e063141139fce010982780140aa0cd5ab',
|
||||
[eEthereumNetwork.main]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
||||
[eEthereumNetwork.tenderlyMain]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
||||
},
|
||||
ReserveFactorTreasuryAddress: {
|
||||
[eEthereumNetwork.coverage]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
|
||||
[eEthereumNetwork.hardhat]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
|
||||
[eEthereumNetwork.buidlerevm]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
|
||||
[eEthereumNetwork.kovan]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
|
||||
[eEthereumNetwork.ropsten]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
|
||||
[eEthereumNetwork.main]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
|
||||
[eEthereumNetwork.tenderlyMain]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
|
||||
},
|
||||
};
|
103
markets/uniswap/index.ts
Normal file
103
markets/uniswap/index.ts
Normal file
|
@ -0,0 +1,103 @@
|
|||
import { oneRay, ZERO_ADDRESS } from '../../helpers/constants';
|
||||
import { IUniswapConfiguration, EthereumNetwork, eEthereumNetwork } from '../../helpers/types';
|
||||
|
||||
import { CommonsConfig } from './commons';
|
||||
import {
|
||||
strategyDAI,
|
||||
strategyUSDC,
|
||||
strategyUSDT,
|
||||
strategyWETH,
|
||||
strategyWBTC,
|
||||
strategyWBTCWETH,
|
||||
strategyDAIWETH,
|
||||
strategyAAVEWETH,
|
||||
strategyBATWETH,
|
||||
strategyUSDCDAI,
|
||||
strategyCRVWETH,
|
||||
strategyLINKWETH,
|
||||
strategyMKRWETH,
|
||||
strategyRENWETH,
|
||||
strategySNXWETH,
|
||||
strategyUNIWETH,
|
||||
strategyUSDCWETH,
|
||||
strategyWBTCUSDC,
|
||||
strategyYFIWETH,
|
||||
} from './reservesConfigs';
|
||||
|
||||
// ----------------
|
||||
// POOL--SPECIFIC PARAMS
|
||||
// ----------------
|
||||
|
||||
export const UniswapConfig: IUniswapConfiguration = {
|
||||
...CommonsConfig,
|
||||
MarketId: 'Uniswap V2 market',
|
||||
ProviderId: 2,
|
||||
ReservesConfig: {
|
||||
UniWETH: strategyWETH,
|
||||
UniDAI: strategyDAI,
|
||||
UniUSDC: strategyUSDC,
|
||||
UniUSDT: strategyUSDT,
|
||||
UniWBTC: strategyWBTC,
|
||||
UniDAIWETH: strategyDAIWETH,
|
||||
UniWBTCWETH: strategyWBTCWETH,
|
||||
UniAAVEWETH: strategyAAVEWETH,
|
||||
UniBATWETH: strategyBATWETH,
|
||||
UniUSDCDAI: strategyUSDCDAI,
|
||||
UniCRVWETH: strategyCRVWETH,
|
||||
UniLINKWETH: strategyLINKWETH,
|
||||
UniMKRWETH: strategyMKRWETH,
|
||||
UniRENWETH: strategyRENWETH,
|
||||
UniSNXWETH: strategySNXWETH,
|
||||
UniUNIWETH: strategyUNIWETH,
|
||||
UniUSDCWETH: strategyUSDCWETH,
|
||||
UniWBTCUSDC: strategyWBTCUSDC,
|
||||
UniYFIWETH: strategyYFIWETH,
|
||||
},
|
||||
ReserveAssets: {
|
||||
[eEthereumNetwork.buidlerevm]: {},
|
||||
[eEthereumNetwork.hardhat]: {},
|
||||
[eEthereumNetwork.coverage]: {},
|
||||
[EthereumNetwork.kovan]: {
|
||||
UniDAI: '0xFf795577d9AC8bD7D90Ee22b6C1703490b6512FD',
|
||||
UniUSDC: '0xe22da380ee6B445bb8273C81944ADEB6E8450422',
|
||||
UniUSDT: '0x13512979ADE267AB5100878E2e0f485B568328a4',
|
||||
UniWBTC: '0xD1B98B6607330172f1D991521145A22BCe793277',
|
||||
UniWETH: '0xd0a1e359811322d97991e03f863a0c30c2cf029c',
|
||||
UniDAIWETH: '0x7d3A67ab574abD3F9849e5fcDa48c19939d032b4',
|
||||
uniWBTCWETH: '0x342e78bf229Cd2a750E80D7D7c2C185455979b91',
|
||||
// Other assets
|
||||
},
|
||||
[EthereumNetwork.ropsten]: {
|
||||
},
|
||||
[EthereumNetwork.main]: {
|
||||
UniDAI: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
||||
UniUSDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
||||
UniUSDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
|
||||
UniWBTC: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
|
||||
UniWETH: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
|
||||
UniDAIWETH: '0xA478c2975Ab1Ea89e8196811F51A7B7Ade33eB11',
|
||||
UniWBTCWETH: '0xBb2b8038a1640196FbE3e38816F3e67Cba72D940',
|
||||
UniAAVEWETH: '0xDFC14d2Af169B0D36C4EFF567Ada9b2E0CAE044f',
|
||||
UniBATWETH: '0xB6909B960DbbE7392D405429eB2b3649752b4838',
|
||||
UniUSDCDAI: '0xAE461cA67B15dc8dc81CE7615e0320dA1A9aB8D5',
|
||||
UniCRVWETH: '0x3dA1313aE46132A397D90d95B1424A9A7e3e0fCE',
|
||||
UniLINKWETH: '0xa2107FA5B38d9bbd2C461D6EDf11B11A50F6b974',
|
||||
UniMKRWETH: '0xC2aDdA861F89bBB333c90c492cB837741916A225',
|
||||
UniRENWETH: '0x8Bd1661Da98EBDd3BD080F0bE4e6d9bE8cE9858c',
|
||||
UniSNXWETH: '0x43AE24960e5534731Fc831386c07755A2dc33D47',
|
||||
UniUNIWETH: '0xd3d2E2692501A5c9Ca623199D38826e513033a17',
|
||||
UniUSDCWETH: '0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc',
|
||||
UniWBTCUSDC: '0x004375Dff511095CC5A197A54140a24eFEF3A416',
|
||||
UniYFIWETH: '0x2fDbAdf3C4D5A8666Bc06645B8358ab803996E28',
|
||||
},
|
||||
[EthereumNetwork.tenderlyMain]: {
|
||||
DAI: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
||||
USDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
||||
USDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
|
||||
WBTC: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
|
||||
WETH: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default UniswapConfig;
|
326
markets/uniswap/reservesConfigs.ts
Normal file
326
markets/uniswap/reservesConfigs.ts
Normal file
|
@ -0,0 +1,326 @@
|
|||
import BigNumber from 'bignumber.js';
|
||||
import { oneRay } from '../../helpers/constants';
|
||||
import { eContractid, IReserveParams } from '../../helpers/types';
|
||||
|
||||
export const strategyWETH: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.65).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.08).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(1).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope2: new BigNumber(1).multipliedBy(oneRay).toFixed(),
|
||||
baseLTVAsCollateral: '8000',
|
||||
liquidationThreshold: '8250',
|
||||
liquidationBonus: '10500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '1000'
|
||||
};
|
||||
|
||||
export const strategyWBTC: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.65).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.08).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(1).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(),
|
||||
baseLTVAsCollateral: '7000',
|
||||
liquidationThreshold: '7500',
|
||||
liquidationBonus: '11000',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '8',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '2000'
|
||||
};
|
||||
|
||||
export const strategyDAI: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.8).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.04).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(0.75).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: new BigNumber(0.02).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope2: new BigNumber(0.75).multipliedBy(oneRay).toFixed(),
|
||||
baseLTVAsCollateral: '7500',
|
||||
liquidationThreshold: '8000',
|
||||
liquidationBonus: '10500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '1000'
|
||||
};
|
||||
|
||||
export const strategyUSDC: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.8).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.04).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(0.75).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: new BigNumber(0.02).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope2: new BigNumber(0.60).multipliedBy(oneRay).toFixed(),
|
||||
baseLTVAsCollateral: '8000',
|
||||
liquidationThreshold: '8500',
|
||||
liquidationBonus: '10500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '6',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '1000'
|
||||
};
|
||||
|
||||
export const strategyUSDT: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.8).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.04).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(0.75).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: new BigNumber(0.02).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope2: new BigNumber(0.60).multipliedBy(oneRay).toFixed(),
|
||||
baseLTVAsCollateral: '-1',
|
||||
liquidationThreshold: '8500',
|
||||
liquidationBonus: '10500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '6',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '1000'
|
||||
};
|
||||
|
||||
export const strategyDAIWETH: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(3.00).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: '0',
|
||||
stableRateSlope2: '0',
|
||||
baseLTVAsCollateral: '6000',
|
||||
liquidationThreshold: '7000',
|
||||
liquidationBonus: '11500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '500'
|
||||
};
|
||||
|
||||
export const strategyWBTCWETH: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(3.00).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: '0',
|
||||
stableRateSlope2: '0',
|
||||
baseLTVAsCollateral: '6000',
|
||||
liquidationThreshold: '7000',
|
||||
liquidationBonus: '11500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '1500'
|
||||
};
|
||||
|
||||
export const strategyAAVEWETH: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(3.00).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: '0',
|
||||
stableRateSlope2: '0',
|
||||
baseLTVAsCollateral: '6000',
|
||||
liquidationThreshold: '7000',
|
||||
liquidationBonus: '11500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '500'
|
||||
};
|
||||
|
||||
export const strategyBATWETH: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(3.00).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: '0',
|
||||
stableRateSlope2: '0',
|
||||
baseLTVAsCollateral: '6000',
|
||||
liquidationThreshold: '7000',
|
||||
liquidationBonus: '11500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '1500'
|
||||
};
|
||||
|
||||
export const strategyUSDCDAI: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(3.00).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: '0',
|
||||
stableRateSlope2: '0',
|
||||
baseLTVAsCollateral: '6000',
|
||||
liquidationThreshold: '7000',
|
||||
liquidationBonus: '11500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '1000'
|
||||
};
|
||||
|
||||
export const strategyCRVWETH: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(3.00).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: '0',
|
||||
stableRateSlope2: '0',
|
||||
baseLTVAsCollateral: '5000',
|
||||
liquidationThreshold: '6000',
|
||||
liquidationBonus: '11500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '500'
|
||||
};
|
||||
|
||||
export const strategyLINKWETH: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(3.00).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: '0',
|
||||
stableRateSlope2: '0',
|
||||
baseLTVAsCollateral: '6000',
|
||||
liquidationThreshold: '7000',
|
||||
liquidationBonus: '11500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '1500'
|
||||
};
|
||||
|
||||
export const strategyMKRWETH: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(3.00).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: '0',
|
||||
stableRateSlope2: '0',
|
||||
baseLTVAsCollateral: '6000',
|
||||
liquidationThreshold: '7000',
|
||||
liquidationBonus: '11500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '1500'
|
||||
};
|
||||
|
||||
export const strategyRENWETH: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(3.00).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: '0',
|
||||
stableRateSlope2: '0',
|
||||
baseLTVAsCollateral: '6000',
|
||||
liquidationThreshold: '7000',
|
||||
liquidationBonus: '11500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '1500'
|
||||
};
|
||||
|
||||
export const strategySNXWETH: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(3.00).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: '0',
|
||||
stableRateSlope2: '0',
|
||||
baseLTVAsCollateral: '4000',
|
||||
liquidationThreshold: '6000',
|
||||
liquidationBonus: '11500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '2000'
|
||||
};
|
||||
|
||||
export const strategyUNIWETH: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(3.00).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: '0',
|
||||
stableRateSlope2: '0',
|
||||
baseLTVAsCollateral: '6000',
|
||||
liquidationThreshold: '7000',
|
||||
liquidationBonus: '11500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '1500'
|
||||
};
|
||||
|
||||
export const strategyUSDCWETH: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(3.00).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: '0',
|
||||
stableRateSlope2: '0',
|
||||
baseLTVAsCollateral: '6000',
|
||||
liquidationThreshold: '7000',
|
||||
liquidationBonus: '11500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '1000'
|
||||
};
|
||||
|
||||
export const strategyWBTCUSDC: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(3.00).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: '0',
|
||||
stableRateSlope2: '0',
|
||||
baseLTVAsCollateral: '6000',
|
||||
liquidationThreshold: '7000',
|
||||
liquidationBonus: '11500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '1500'
|
||||
};
|
||||
|
||||
export const strategyYFIWETH: IReserveParams = {
|
||||
optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
|
||||
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
|
||||
variableRateSlope2: new BigNumber(3.00).multipliedBy(oneRay).toFixed(),
|
||||
stableRateSlope1: '0',
|
||||
stableRateSlope2: '0',
|
||||
baseLTVAsCollateral: '5000',
|
||||
liquidationThreshold: '6000',
|
||||
liquidationBonus: '11500',
|
||||
borrowingEnabled: true,
|
||||
stableBorrowRateEnabled: false,
|
||||
reserveDecimals: '18',
|
||||
aTokenImpl: eContractid.AToken,
|
||||
reserveFactor: '1500'
|
||||
};
|
264
package-lock.json
generated
264
package-lock.json
generated
|
@ -5583,12 +5583,14 @@
|
|||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
"version": "4.1.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
|
||||
"dev": true
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "3.2.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-convert": "^1.9.0"
|
||||
|
@ -5596,7 +5598,8 @@
|
|||
},
|
||||
"bindings": {
|
||||
"version": "1.5.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"file-uri-to-path": "1.0.0"
|
||||
|
@ -5604,7 +5607,8 @@
|
|||
},
|
||||
"bip66": {
|
||||
"version": "1.1.5",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safe-buffer": "^5.0.1"
|
||||
|
@ -5612,17 +5616,20 @@
|
|||
},
|
||||
"bn.js": {
|
||||
"version": "4.11.8",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
|
||||
"dev": true
|
||||
},
|
||||
"brorand": {
|
||||
"version": "1.1.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
|
||||
"dev": true
|
||||
},
|
||||
"browserify-aes": {
|
||||
"version": "1.2.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"buffer-xor": "^1.0.3",
|
||||
|
@ -5635,22 +5642,26 @@
|
|||
},
|
||||
"buffer-from": {
|
||||
"version": "1.1.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
|
||||
"dev": true
|
||||
},
|
||||
"buffer-xor": {
|
||||
"version": "1.0.3",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
|
||||
"dev": true
|
||||
},
|
||||
"camelcase": {
|
||||
"version": "5.3.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
|
||||
"dev": true
|
||||
},
|
||||
"cipher-base": {
|
||||
"version": "1.0.4",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.1",
|
||||
|
@ -5659,7 +5670,8 @@
|
|||
},
|
||||
"cliui": {
|
||||
"version": "5.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"string-width": "^3.1.0",
|
||||
|
@ -5669,7 +5681,8 @@
|
|||
},
|
||||
"color-convert": {
|
||||
"version": "1.9.3",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-name": "1.1.3"
|
||||
|
@ -5677,12 +5690,14 @@
|
|||
},
|
||||
"color-name": {
|
||||
"version": "1.1.3",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||
"dev": true
|
||||
},
|
||||
"create-hash": {
|
||||
"version": "1.2.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cipher-base": "^1.0.1",
|
||||
|
@ -5694,7 +5709,8 @@
|
|||
},
|
||||
"create-hmac": {
|
||||
"version": "1.1.7",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cipher-base": "^1.0.3",
|
||||
|
@ -5707,7 +5723,8 @@
|
|||
},
|
||||
"cross-spawn": {
|
||||
"version": "6.0.5",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"nice-try": "^1.0.4",
|
||||
|
@ -5719,12 +5736,14 @@
|
|||
},
|
||||
"decamelize": {
|
||||
"version": "1.2.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
|
||||
"dev": true
|
||||
},
|
||||
"drbg.js": {
|
||||
"version": "1.0.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"browserify-aes": "^1.0.6",
|
||||
|
@ -5734,7 +5753,8 @@
|
|||
},
|
||||
"elliptic": {
|
||||
"version": "6.5.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bn.js": "^4.4.0",
|
||||
|
@ -5748,12 +5768,14 @@
|
|||
},
|
||||
"emoji-regex": {
|
||||
"version": "7.0.3",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
|
||||
"dev": true
|
||||
},
|
||||
"end-of-stream": {
|
||||
"version": "1.4.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "^1.4.0"
|
||||
|
@ -5761,7 +5783,8 @@
|
|||
},
|
||||
"ethereumjs-util": {
|
||||
"version": "6.1.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bn.js": "^4.11.0",
|
||||
|
@ -5775,7 +5798,8 @@
|
|||
},
|
||||
"ethjs-util": {
|
||||
"version": "0.1.6",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-hex-prefixed": "1.0.0",
|
||||
|
@ -5784,7 +5808,8 @@
|
|||
},
|
||||
"evp_bytestokey": {
|
||||
"version": "1.0.3",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"md5.js": "^1.3.4",
|
||||
|
@ -5793,7 +5818,8 @@
|
|||
},
|
||||
"execa": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cross-spawn": "^6.0.0",
|
||||
|
@ -5807,12 +5833,14 @@
|
|||
},
|
||||
"file-uri-to-path": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
|
||||
"dev": true
|
||||
},
|
||||
"find-up": {
|
||||
"version": "3.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"locate-path": "^3.0.0"
|
||||
|
@ -5820,12 +5848,14 @@
|
|||
},
|
||||
"get-caller-file": {
|
||||
"version": "2.0.5",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
||||
"dev": true
|
||||
},
|
||||
"get-stream": {
|
||||
"version": "4.1.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"pump": "^3.0.0"
|
||||
|
@ -5833,7 +5863,8 @@
|
|||
},
|
||||
"hash-base": {
|
||||
"version": "3.0.4",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.1",
|
||||
|
@ -5842,7 +5873,8 @@
|
|||
},
|
||||
"hash.js": {
|
||||
"version": "1.1.7",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
|
@ -5851,7 +5883,8 @@
|
|||
},
|
||||
"hmac-drbg": {
|
||||
"version": "1.0.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"hash.js": "^1.0.3",
|
||||
|
@ -5861,37 +5894,44 @@
|
|||
},
|
||||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
},
|
||||
"invert-kv": {
|
||||
"version": "2.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
|
||||
"dev": true
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "2.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
|
||||
"dev": true
|
||||
},
|
||||
"is-hex-prefixed": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=",
|
||||
"dev": true
|
||||
},
|
||||
"is-stream": {
|
||||
"version": "1.1.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
|
||||
"dev": true
|
||||
},
|
||||
"isexe": {
|
||||
"version": "2.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
|
||||
"dev": true
|
||||
},
|
||||
"keccak": {
|
||||
"version": "1.4.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bindings": "^1.2.1",
|
||||
|
@ -5902,7 +5942,8 @@
|
|||
},
|
||||
"lcid": {
|
||||
"version": "2.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"invert-kv": "^2.0.0"
|
||||
|
@ -5910,7 +5951,8 @@
|
|||
},
|
||||
"locate-path": {
|
||||
"version": "3.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-locate": "^3.0.0",
|
||||
|
@ -5919,7 +5961,8 @@
|
|||
},
|
||||
"map-age-cleaner": {
|
||||
"version": "0.1.3",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-defer": "^1.0.0"
|
||||
|
@ -5927,7 +5970,8 @@
|
|||
},
|
||||
"md5.js": {
|
||||
"version": "1.3.5",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"hash-base": "^3.0.0",
|
||||
|
@ -5937,7 +5981,8 @@
|
|||
},
|
||||
"mem": {
|
||||
"version": "4.3.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"map-age-cleaner": "^0.1.1",
|
||||
|
@ -5947,32 +5992,38 @@
|
|||
},
|
||||
"mimic-fn": {
|
||||
"version": "2.1.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
|
||||
"dev": true
|
||||
},
|
||||
"minimalistic-assert": {
|
||||
"version": "1.0.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
|
||||
"dev": true
|
||||
},
|
||||
"minimalistic-crypto-utils": {
|
||||
"version": "1.0.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
|
||||
"dev": true
|
||||
},
|
||||
"nan": {
|
||||
"version": "2.14.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
|
||||
"dev": true
|
||||
},
|
||||
"nice-try": {
|
||||
"version": "1.0.5",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
|
||||
"dev": true
|
||||
},
|
||||
"npm-run-path": {
|
||||
"version": "2.0.2",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"path-key": "^2.0.0"
|
||||
|
@ -5980,7 +6031,8 @@
|
|||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
|
@ -5988,7 +6040,8 @@
|
|||
},
|
||||
"os-locale": {
|
||||
"version": "3.1.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"execa": "^1.0.0",
|
||||
|
@ -5998,22 +6051,26 @@
|
|||
},
|
||||
"p-defer": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
|
||||
"dev": true
|
||||
},
|
||||
"p-finally": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
|
||||
"dev": true
|
||||
},
|
||||
"p-is-promise": {
|
||||
"version": "2.1.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
|
||||
"dev": true
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "2.2.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-try": "^2.0.0"
|
||||
|
@ -6021,7 +6078,8 @@
|
|||
},
|
||||
"p-locate": {
|
||||
"version": "3.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-limit": "^2.0.0"
|
||||
|
@ -6029,22 +6087,26 @@
|
|||
},
|
||||
"p-try": {
|
||||
"version": "2.2.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
|
||||
"dev": true
|
||||
},
|
||||
"path-exists": {
|
||||
"version": "3.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
|
||||
"dev": true
|
||||
},
|
||||
"path-key": {
|
||||
"version": "2.0.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
|
||||
"dev": true
|
||||
},
|
||||
"pump": {
|
||||
"version": "3.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"end-of-stream": "^1.1.0",
|
||||
|
@ -6053,17 +6115,20 @@
|
|||
},
|
||||
"require-directory": {
|
||||
"version": "2.1.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
|
||||
"dev": true
|
||||
},
|
||||
"require-main-filename": {
|
||||
"version": "2.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
|
||||
"dev": true
|
||||
},
|
||||
"ripemd160": {
|
||||
"version": "2.0.2",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"hash-base": "^3.0.0",
|
||||
|
@ -6072,7 +6137,8 @@
|
|||
},
|
||||
"rlp": {
|
||||
"version": "2.2.3",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-l6YVrI7+d2vpW6D6rS05x2Xrmq8oW7v3pieZOJKBEdjuTF4Kz/iwk55Zyh1Zaz+KOB2kC8+2jZlp2u9L4tTzCQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bn.js": "^4.11.1",
|
||||
|
@ -6081,12 +6147,14 @@
|
|||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.2.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
|
||||
"dev": true
|
||||
},
|
||||
"secp256k1": {
|
||||
"version": "3.7.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bindings": "^1.5.0",
|
||||
|
@ -6101,17 +6169,20 @@
|
|||
},
|
||||
"semver": {
|
||||
"version": "5.7.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
|
||||
"dev": true
|
||||
},
|
||||
"set-blocking": {
|
||||
"version": "2.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
|
||||
"dev": true
|
||||
},
|
||||
"sha.js": {
|
||||
"version": "2.4.11",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.1",
|
||||
|
@ -6120,7 +6191,8 @@
|
|||
},
|
||||
"shebang-command": {
|
||||
"version": "1.2.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"shebang-regex": "^1.0.0"
|
||||
|
@ -6128,22 +6200,26 @@
|
|||
},
|
||||
"shebang-regex": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
|
||||
"dev": true
|
||||
},
|
||||
"signal-exit": {
|
||||
"version": "3.0.2",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
|
||||
"dev": true
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"dev": true
|
||||
},
|
||||
"source-map-support": {
|
||||
"version": "0.5.12",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"buffer-from": "^1.0.0",
|
||||
|
@ -6152,7 +6228,8 @@
|
|||
},
|
||||
"string-width": {
|
||||
"version": "3.1.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"emoji-regex": "^7.0.1",
|
||||
|
@ -6162,7 +6239,8 @@
|
|||
},
|
||||
"strip-ansi": {
|
||||
"version": "5.2.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^4.1.0"
|
||||
|
@ -6170,12 +6248,14 @@
|
|||
},
|
||||
"strip-eof": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
|
||||
"dev": true
|
||||
},
|
||||
"strip-hex-prefix": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-hex-prefixed": "1.0.0"
|
||||
|
@ -6183,7 +6263,8 @@
|
|||
},
|
||||
"which": {
|
||||
"version": "1.3.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"isexe": "^2.0.0"
|
||||
|
@ -6191,12 +6272,14 @@
|
|||
},
|
||||
"which-module": {
|
||||
"version": "2.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
|
||||
"dev": true
|
||||
},
|
||||
"wrap-ansi": {
|
||||
"version": "5.1.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^3.2.0",
|
||||
|
@ -6206,17 +6289,20 @@
|
|||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"dev": true
|
||||
},
|
||||
"y18n": {
|
||||
"version": "4.0.0",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
|
||||
"dev": true
|
||||
},
|
||||
"yargs": {
|
||||
"version": "13.2.4",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cliui": "^5.0.0",
|
||||
|
@ -6234,7 +6320,8 @@
|
|||
},
|
||||
"yargs-parser": {
|
||||
"version": "13.1.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"camelcase": "^5.0.0",
|
||||
|
@ -8049,8 +8136,7 @@
|
|||
"integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"map-visit": "^1.0.0",
|
||||
"object-visit": "^1.0.0"
|
||||
"color-name": "1.1.3"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
|
|
|
@ -37,10 +37,12 @@
|
|||
"aave:evm:dev:migration": "npm run compile && hardhat aave:dev",
|
||||
"aave:docker:full:migration": "npm run compile && npm run hardhat:docker -- aave:mainnet",
|
||||
"aave:kovan:full:migration": "npm run compile && npm run hardhat:kovan -- aave:mainnet --verify",
|
||||
"uniswap:kovan:full:migration": "npm run compile && npm run hardhat:kovan -- uniswap:mainnet --verify",
|
||||
"aave:kovan:full:initialize": "npm run hardhat:kovan -- full:initialize-lending-pool --verify --pool Aave",
|
||||
"aave:ropsten:full:migration": "npm run compile && npm run hardhat:ropsten -- aave:mainnet --verify",
|
||||
"aave:fork:main:tenderly": "npm run compile && npm run hardhat:tenderly-main -- aave:mainnet",
|
||||
"aave:fork:main": "npm run compile && MAINNET_FORK=true hardhat aave:mainnet",
|
||||
"aave:fork:main": "npm run compile && MAINNET_FORK=true hardhat aave:mainnet",
|
||||
"uniswap:fork:main": "npm run compile && MAINNET_FORK=true hardhat uniswap:mainnet",
|
||||
"aave:main:full:migration": "npm run compile && npm run hardhat:main -- aave:mainnet --verify",
|
||||
"aave:main:full:initialize": "npm run compile && MAINNET_FORK=true full:initialize-tokens --pool Aave",
|
||||
"prettier:check": "npx prettier -c 'tasks/**/*.ts' 'contracts/**/*.sol' 'helpers/**/*.ts' 'test/**/*.ts'",
|
||||
|
|
|
@ -4,7 +4,6 @@ import {
|
|||
deployAaveOracle,
|
||||
deployLendingRateOracle,
|
||||
} from '../../helpers/contracts-deployments';
|
||||
|
||||
import {
|
||||
setInitialAssetPricesInOracle,
|
||||
deployAllMockAggregators,
|
||||
|
|
|
@ -18,8 +18,10 @@ import {
|
|||
} from '../../helpers/contracts-getters';
|
||||
import { formatEther, isAddress, parseEther } from 'ethers/lib/utils';
|
||||
import { isZeroAddress } from 'ethereumjs-util';
|
||||
import { Signer } from 'ethers';
|
||||
import { Signer, BigNumber } from 'ethers';
|
||||
import { parse } from 'path';
|
||||
import { addGas } from '../../gas-tracker';
|
||||
//import BigNumber from 'bignumber.js';
|
||||
|
||||
task(
|
||||
'full:deploy-address-provider',
|
||||
|
@ -80,16 +82,22 @@ task(
|
|||
|
||||
// 2. Deploy address provider and set genesis manager
|
||||
const addressesProvider = await deployLendingPoolAddressesProvider(MarketId, verify);
|
||||
|
||||
// TEMPORARILY DISABLING SEC. 3 FOR GOVERNANCE USE
|
||||
|
||||
// 3. Set the provider at the Registry
|
||||
await waitForTx(
|
||||
await addressesProviderRegistry.registerAddressesProvider(
|
||||
addressesProvider.address,
|
||||
ProviderId
|
||||
)
|
||||
);
|
||||
// await waitForTx(
|
||||
// await addressesProviderRegistry.registerAddressesProvider(
|
||||
// addressesProvider.address,
|
||||
// ProviderId
|
||||
// )
|
||||
// );
|
||||
|
||||
// 4. Set pool admins
|
||||
|
||||
|
||||
addGas(await addressesProvider.estimateGas.setPoolAdmin(await getGenesisPoolAdmin(poolConfig)));
|
||||
addGas(await addressesProvider.estimateGas.setEmergencyAdmin(await getEmergencyAdmin(poolConfig)));
|
||||
|
||||
await waitForTx(await addressesProvider.setPoolAdmin(await getGenesisPoolAdmin(poolConfig)));
|
||||
await waitForTx(await addressesProvider.setEmergencyAdmin(await getEmergencyAdmin(poolConfig)));
|
||||
|
|
|
@ -17,6 +17,7 @@ import {
|
|||
getLendingRateOracle,
|
||||
getPairsTokenAggregator,
|
||||
} from '../../helpers/contracts-getters';
|
||||
import { addGas } from '../../gas-tracker';
|
||||
|
||||
task('full:deploy-oracles', 'Deploy oracles for dev enviroment')
|
||||
.addFlag('verify', 'Verify contracts at Etherscan')
|
||||
|
@ -66,8 +67,10 @@ task('full:deploy-oracles', 'Deploy oracles for dev enviroment')
|
|||
admin
|
||||
);
|
||||
}
|
||||
|
||||
console.log("ORACLES: %s and %s", aaveOracle.address, lendingRateOracle.address);
|
||||
// Register the proxy price provider on the addressesProvider
|
||||
addGas(await addressesProvider.estimateGas.setPriceOracle(aaveOracle.address));
|
||||
addGas(await addressesProvider.estimateGas.setLendingRateOracle(lendingRateOracle.address));
|
||||
await waitForTx(await addressesProvider.setPriceOracle(aaveOracle.address));
|
||||
await waitForTx(await addressesProvider.setLendingRateOracle(lendingRateOracle.address));
|
||||
} catch (error) {
|
||||
|
|
|
@ -21,6 +21,7 @@ import {
|
|||
getLendingPoolAddressesProvider,
|
||||
} from '../../helpers/contracts-getters';
|
||||
import { ZERO_ADDRESS } from '../../helpers/constants';
|
||||
import { addGas } from '../../gas-tracker';
|
||||
|
||||
task('full:initialize-lending-pool', 'Initialize lending pool configuration.')
|
||||
.addFlag('verify', 'Verify contracts at Etherscan')
|
||||
|
@ -56,6 +57,8 @@ task('full:initialize-lending-pool', 'Initialize lending pool configuration.')
|
|||
await configureReservesByHelper(ReservesConfig, reserveAssets, testHelpers, admin);
|
||||
|
||||
const collateralManager = await deployLendingPoolCollateralManager(verify);
|
||||
|
||||
addGas(await addressesProvider.estimateGas.setLendingPoolCollateralManager(collateralManager.address));
|
||||
await waitForTx(
|
||||
await addressesProvider.setLendingPoolCollateralManager(collateralManager.address)
|
||||
);
|
||||
|
|
|
@ -3,6 +3,7 @@ import { checkVerification } from '../../helpers/etherscan-verification';
|
|||
import { ConfigNames } from '../../helpers/configuration';
|
||||
import { printContracts } from '../../helpers/misc-utils';
|
||||
import { usingTenderly } from '../../helpers/tenderly-utils';
|
||||
import {totalGas} from '../../gas-tracker';
|
||||
|
||||
task('aave:mainnet', 'Deploy development enviroment')
|
||||
.addFlag('verify', 'Verify contracts at Etherscan')
|
||||
|
@ -47,4 +48,5 @@ task('aave:mainnet', 'Deploy development enviroment')
|
|||
}
|
||||
console.log('\nFinished migrations');
|
||||
printContracts();
|
||||
console.log("Total gas used:", totalGas.toString());
|
||||
});
|
||||
|
|
63
tasks/migrations/uniswap.mainnet.ts
Normal file
63
tasks/migrations/uniswap.mainnet.ts
Normal file
|
@ -0,0 +1,63 @@
|
|||
import {task} from 'hardhat/config';
|
||||
import {ExternalProvider} from '@ethersproject/providers';
|
||||
import {checkVerification} from '../../helpers/etherscan-verification';
|
||||
import {ConfigNames} from '../../helpers/configuration';
|
||||
import {EthereumNetworkNames} from '../../helpers/types';
|
||||
import {printContracts} from '../../helpers/misc-utils';
|
||||
import {totalGas} from '../../gas-tracker';
|
||||
|
||||
task('uniswap:mainnet', 'Deploy development enviroment')
|
||||
.addFlag('verify', 'Verify contracts at Etherscan')
|
||||
.setAction(async ({verify}, DRE) => {
|
||||
const POOL_NAME = ConfigNames.Uniswap;
|
||||
const network = <EthereumNetworkNames>DRE.network.name;
|
||||
await DRE.run('set-DRE');
|
||||
|
||||
// Prevent loss of gas verifying all the needed ENVs for Etherscan verification
|
||||
if (verify) {
|
||||
checkVerification();
|
||||
}
|
||||
|
||||
if (network.includes('tenderly')) {
|
||||
console.log('- Setting up Tenderly provider');
|
||||
await DRE.tenderlyRPC.initializeFork();
|
||||
const provider = new DRE.ethers.providers.Web3Provider(DRE.tenderlyRPC as any);
|
||||
DRE.ethers.provider = provider;
|
||||
}
|
||||
// addGas(1);
|
||||
// console.log(totalGas);
|
||||
|
||||
console.log('Migration started\n');
|
||||
|
||||
console.log('1. Deploy address provider');
|
||||
await DRE.run('full:deploy-address-provider', {pool: POOL_NAME});
|
||||
|
||||
console.log('2. Deploy lending pool');
|
||||
await DRE.run('full:deploy-lending-pool');
|
||||
|
||||
console.log('3. Deploy oracles');
|
||||
await DRE.run('full:deploy-oracles', {pool: POOL_NAME});
|
||||
|
||||
console.log('4. Deploy Data Provider');
|
||||
await DRE.run('full:data-provider', {pool: POOL_NAME});
|
||||
|
||||
console.log('5. Initialize lending pool');
|
||||
await DRE.run('full:initialize-lending-pool', {pool: POOL_NAME});
|
||||
|
||||
if (verify) {
|
||||
printContracts();
|
||||
console.log('4. Veryfing contracts');
|
||||
await DRE.run('verify:general', {all: true, pool: POOL_NAME});
|
||||
|
||||
console.log('5. Veryfing aTokens and debtTokens');
|
||||
await DRE.run('verify:tokens', {pool: POOL_NAME});
|
||||
}
|
||||
|
||||
if (network.includes('tenderly')) {
|
||||
const postDeployHead = DRE.tenderlyRPC.getHead();
|
||||
console.log('Tenderly UUID', postDeployHead);
|
||||
}
|
||||
console.log('\nFinished migrations');
|
||||
printContracts();
|
||||
console.log("Total gas used:", totalGas.toString());
|
||||
});
|
|
@ -165,6 +165,25 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
|
|||
REN: mockTokens.REN.address,
|
||||
UNI: mockTokens.UNI.address,
|
||||
ENJ: mockTokens.ENJ.address,
|
||||
UniDAI: mockTokens.UniDAI.address,
|
||||
UniUSDC: mockTokens.UniUSDC.address,
|
||||
UniUSDT: mockTokens.UniUSDT.address,
|
||||
UniWBTC: mockTokens.UniWBTC.address,
|
||||
UniWETH: mockTokens.UniWETH.address,
|
||||
UniDAIWETH: mockTokens.UniDAIWETH.address,
|
||||
UniWBTCWETH: mockTokens.UniWBTCWETH.address,
|
||||
UniAAVEWETH: mockTokens.UniAAVEWETH.address,
|
||||
UniBATWETH: mockTokens.UniBATWETH.address,
|
||||
UniUSDCDAI: mockTokens.UniUSDCDAI.address,
|
||||
UniCRVWETH: mockTokens.UniCRVWETH.address,
|
||||
UniLINKWETH: mockTokens.UniLINKWETH.address,
|
||||
UniMKRWETH: mockTokens.UniMKRWETH.address,
|
||||
UniRENWETH: mockTokens.UniRENWETH.address,
|
||||
UniSNXWETH: mockTokens.UniSNXWETH.address,
|
||||
UniUNIWETH: mockTokens.UniUNIWETH.address,
|
||||
UniUSDCWETH: mockTokens.UniUSDCWETH.address,
|
||||
UniWBTCUSDC: mockTokens.UniWBTCUSDC.address,
|
||||
UniYFIWETH: mockTokens.UniYFIWETH.address,
|
||||
USD: USD_ADDRESS,
|
||||
},
|
||||
fallbackOracle
|
||||
|
|
|
@ -9,6 +9,7 @@ import { DRE } from '../helpers/misc-utils';
|
|||
import {
|
||||
ConfigNames,
|
||||
getATokenDomainSeparatorPerNetwork,
|
||||
getTreasuryAddress,
|
||||
loadPoolConfig,
|
||||
} from '../helpers/configuration';
|
||||
import { waitForTx } from '../helpers/misc-utils';
|
||||
|
@ -19,6 +20,7 @@ import {
|
|||
import { DelegationAwareATokenFactory } from '../types';
|
||||
import { DelegationAwareAToken } from '../types/DelegationAwareAToken';
|
||||
import { MintableDelegationERC20 } from '../types/MintableDelegationERC20';
|
||||
import AaveConfig from '../markets/aave';
|
||||
|
||||
const { parseEther } = ethers.utils;
|
||||
|
||||
|
@ -33,9 +35,13 @@ makeSuite('AToken: underlying delegation', (testEnv: TestEnv) => {
|
|||
delegationERC20 = await deployMintableDelegationERC20(['DEL', 'DEL', '18']);
|
||||
|
||||
delegationAToken = await deployDelegationAwareAToken(
|
||||
[pool.address, delegationERC20.address, ZERO_ADDRESS, 'aDEL', 'aDEL', ZERO_ADDRESS],
|
||||
[pool.address, delegationERC20.address, await getTreasuryAddress(AaveConfig), ZERO_ADDRESS, 'aDEL', 'aDEL'],
|
||||
false
|
||||
);
|
||||
|
||||
//await delegationAToken.initialize(pool.address, ZERO_ADDRESS, delegationERC20.address, ZERO_ADDRESS, '18', 'aDEL', 'aDEL');
|
||||
|
||||
console.log((await delegationAToken.decimals()).toString());
|
||||
});
|
||||
|
||||
it('Tries to delegate with the caller not being the Aave admin', async () => {
|
||||
|
|
|
@ -161,6 +161,9 @@ export const deposit = async (
|
|||
if (sendValue) {
|
||||
txOptions.value = await convertToCurrencyDecimals(reserve, sendValue);
|
||||
}
|
||||
|
||||
//console.log("Depositing %s %s, expecting %s", amountToDeposit.toString(), reserveSymbol, expectedResult);
|
||||
|
||||
if (expectedResult === 'success') {
|
||||
const txResult = await waitForTx(
|
||||
await pool
|
||||
|
@ -348,7 +351,7 @@ export const borrow = async (
|
|||
);
|
||||
|
||||
const amountToBorrow = await convertToCurrencyDecimals(reserve, amount);
|
||||
|
||||
//console.log("Borrowing %s %s with rate mode %s expecting", amountToBorrow.toString(), reserveSymbol, interestRateMode, expectedResult);
|
||||
if (expectedResult === 'success') {
|
||||
const txResult = await waitForTx(
|
||||
await pool
|
||||
|
|
|
@ -10,6 +10,7 @@ import {
|
|||
getAToken,
|
||||
getMockStableDebtToken,
|
||||
getMockVariableDebtToken,
|
||||
getStableDebtToken,
|
||||
getVariableDebtToken,
|
||||
} from '../helpers/contracts-getters';
|
||||
import {
|
||||
|
@ -30,25 +31,25 @@ makeSuite('Upgradeability', (testEnv: TestEnv) => {
|
|||
pool.address,
|
||||
dai.address,
|
||||
ZERO_ADDRESS,
|
||||
ZERO_ADDRESS,
|
||||
'Aave Interest bearing DAI updated',
|
||||
'aDAI',
|
||||
ZERO_ADDRESS,
|
||||
]);
|
||||
|
||||
const stableDebtTokenInstance = await deployMockStableDebtToken([
|
||||
pool.address,
|
||||
dai.address,
|
||||
ZERO_ADDRESS,
|
||||
'Aave stable debt bearing DAI updated',
|
||||
'stableDebtDAI',
|
||||
ZERO_ADDRESS,
|
||||
]);
|
||||
|
||||
const variableDebtTokenInstance = await deployMockVariableDebtToken([
|
||||
pool.address,
|
||||
dai.address,
|
||||
ZERO_ADDRESS,
|
||||
'Aave variable debt bearing DAI updated',
|
||||
'variableDebtDAI',
|
||||
ZERO_ADDRESS,
|
||||
]);
|
||||
|
||||
newATokenAddress = aTokenInstance.address;
|
||||
|
@ -59,8 +60,26 @@ makeSuite('Upgradeability', (testEnv: TestEnv) => {
|
|||
it('Tries to update the DAI Atoken implementation with a different address than the lendingPoolManager', async () => {
|
||||
const { dai, configurator, users } = testEnv;
|
||||
|
||||
const name = await (await getAToken(newATokenAddress)).name();
|
||||
const symbol = await (await getAToken(newATokenAddress)).symbol();
|
||||
|
||||
const updateATokenInputParams: {
|
||||
asset: string;
|
||||
treasury: string;
|
||||
incentivesController: string;
|
||||
name: string;
|
||||
symbol: string;
|
||||
implementation: string;
|
||||
} = {
|
||||
asset: dai.address,
|
||||
treasury: ZERO_ADDRESS,
|
||||
incentivesController: ZERO_ADDRESS,
|
||||
name: name,
|
||||
symbol: symbol,
|
||||
implementation: newATokenAddress,
|
||||
};
|
||||
await expect(
|
||||
configurator.connect(users[1].signer).updateAToken(dai.address, newATokenAddress)
|
||||
configurator.connect(users[1].signer).updateAToken(updateATokenInputParams)
|
||||
).to.be.revertedWith(CALLER_NOT_POOL_ADMIN);
|
||||
});
|
||||
|
||||
|
@ -68,8 +87,24 @@ makeSuite('Upgradeability', (testEnv: TestEnv) => {
|
|||
const { dai, configurator, aDai } = testEnv;
|
||||
|
||||
const name = await (await getAToken(newATokenAddress)).name();
|
||||
const symbol = await (await getAToken(newATokenAddress)).symbol();
|
||||
|
||||
await configurator.updateAToken(dai.address, newATokenAddress);
|
||||
const updateATokenInputParams: {
|
||||
asset: string;
|
||||
treasury: string;
|
||||
incentivesController: string;
|
||||
name: string;
|
||||
symbol: string;
|
||||
implementation: string;
|
||||
} = {
|
||||
asset: dai.address,
|
||||
treasury: ZERO_ADDRESS,
|
||||
incentivesController: ZERO_ADDRESS,
|
||||
name: name,
|
||||
symbol: symbol,
|
||||
implementation: newATokenAddress,
|
||||
};
|
||||
await configurator.updateAToken(updateATokenInputParams);
|
||||
|
||||
const tokenName = await aDai.name();
|
||||
|
||||
|
@ -79,19 +114,53 @@ makeSuite('Upgradeability', (testEnv: TestEnv) => {
|
|||
it('Tries to update the DAI Stable debt token implementation with a different address than the lendingPoolManager', async () => {
|
||||
const { dai, configurator, users } = testEnv;
|
||||
|
||||
const name = await (await getStableDebtToken(newStableTokenAddress)).name();
|
||||
const symbol = await (await getStableDebtToken(newStableTokenAddress)).symbol();
|
||||
|
||||
|
||||
const updateDebtTokenInput: {
|
||||
asset: string;
|
||||
incentivesController: string;
|
||||
name: string;
|
||||
symbol: string;
|
||||
implementation: string;
|
||||
} = {
|
||||
asset: dai.address,
|
||||
incentivesController: ZERO_ADDRESS,
|
||||
name: name,
|
||||
symbol: symbol,
|
||||
implementation: newStableTokenAddress,
|
||||
}
|
||||
|
||||
await expect(
|
||||
configurator
|
||||
.connect(users[1].signer)
|
||||
.updateStableDebtToken(dai.address, newStableTokenAddress)
|
||||
.updateStableDebtToken(updateDebtTokenInput)
|
||||
).to.be.revertedWith(CALLER_NOT_POOL_ADMIN);
|
||||
});
|
||||
|
||||
it('Upgrades the DAI stable debt token implementation ', async () => {
|
||||
const { dai, configurator, pool, helpersContract } = testEnv;
|
||||
|
||||
const name = await (await getAToken(newATokenAddress)).name();
|
||||
const name = await (await getStableDebtToken(newStableTokenAddress)).name();
|
||||
const symbol = await (await getStableDebtToken(newStableTokenAddress)).symbol();
|
||||
|
||||
await configurator.updateStableDebtToken(dai.address, newStableTokenAddress);
|
||||
|
||||
const updateDebtTokenInput: {
|
||||
asset: string;
|
||||
incentivesController: string;
|
||||
name: string;
|
||||
symbol: string;
|
||||
implementation: string;
|
||||
} = {
|
||||
asset: dai.address,
|
||||
incentivesController: ZERO_ADDRESS,
|
||||
name: name,
|
||||
symbol: symbol,
|
||||
implementation: newStableTokenAddress,
|
||||
}
|
||||
|
||||
await configurator.updateStableDebtToken(updateDebtTokenInput);
|
||||
|
||||
const { stableDebtTokenAddress } = await helpersContract.getReserveTokensAddresses(dai.address);
|
||||
|
||||
|
@ -103,21 +172,54 @@ makeSuite('Upgradeability', (testEnv: TestEnv) => {
|
|||
});
|
||||
|
||||
it('Tries to update the DAI variable debt token implementation with a different address than the lendingPoolManager', async () => {
|
||||
const { dai, configurator, users } = testEnv;
|
||||
const {dai, configurator, users} = testEnv;
|
||||
|
||||
const name = await (await getVariableDebtToken(newVariableTokenAddress)).name();
|
||||
const symbol = await (await getVariableDebtToken(newVariableTokenAddress)).symbol();
|
||||
|
||||
const updateDebtTokenInput: {
|
||||
asset: string;
|
||||
incentivesController: string;
|
||||
name: string;
|
||||
symbol: string;
|
||||
implementation: string;
|
||||
} = {
|
||||
asset: dai.address,
|
||||
incentivesController: ZERO_ADDRESS,
|
||||
name: name,
|
||||
symbol: symbol,
|
||||
implementation: newVariableTokenAddress,
|
||||
}
|
||||
|
||||
await expect(
|
||||
configurator
|
||||
.connect(users[1].signer)
|
||||
.updateVariableDebtToken(dai.address, newVariableTokenAddress)
|
||||
.updateVariableDebtToken(updateDebtTokenInput)
|
||||
).to.be.revertedWith(CALLER_NOT_POOL_ADMIN);
|
||||
});
|
||||
|
||||
it('Upgrades the DAI variable debt token implementation ', async () => {
|
||||
const { dai, configurator, pool, helpersContract } = testEnv;
|
||||
const {dai, configurator, pool, helpersContract} = testEnv;
|
||||
|
||||
const name = await (await getVariableDebtToken(newVariableTokenAddress)).name();
|
||||
const symbol = await (await getVariableDebtToken(newVariableTokenAddress)).symbol();
|
||||
|
||||
const updateDebtTokenInput: {
|
||||
asset: string;
|
||||
incentivesController: string;
|
||||
name: string;
|
||||
symbol: string;
|
||||
implementation: string;
|
||||
} = {
|
||||
asset: dai.address,
|
||||
incentivesController: ZERO_ADDRESS,
|
||||
name: name,
|
||||
symbol: symbol,
|
||||
implementation: newVariableTokenAddress,
|
||||
}
|
||||
//const name = await (await getAToken(newATokenAddress)).name();
|
||||
|
||||
const name = await (await getAToken(newATokenAddress)).name();
|
||||
|
||||
await configurator.updateVariableDebtToken(dai.address, newVariableTokenAddress);
|
||||
await configurator.updateVariableDebtToken(updateDebtTokenInput);
|
||||
|
||||
const { variableDebtTokenAddress } = await helpersContract.getReserveTokensAddresses(
|
||||
dai.address
|
||||
|
|
Loading…
Reference in New Issue
Block a user