mirror of
				https://github.com/Instadapp/aave-protocol-v2.git
				synced 2024-07-29 21:47:30 +00:00 
			
		
		
		
	Merge branch 'master' into feat/permissioned-market
This commit is contained in:
		
						commit
						1ad9275cbd
					
				|  | @ -21,3 +21,5 @@ services: | |||
|       ALCHEMY_KEY: ${ALCHEMY_KEY} | ||||
|       TENDERLY_FORK_ID: ${TENDERLY_FORK_ID} | ||||
|       TENDERLY_HEAD_ID: ${TENDERLY_HEAD_ID} | ||||
|       DEFENDER_API_KEY: ${DEFENDER_API_KEY} | ||||
|       DEFENDER_SECRET_KEY: ${DEFENDER_SECRET_KEY} | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ import { | |||
|   ICommonConfiguration, | ||||
|   eNetwork, | ||||
| } from './types'; | ||||
| import { getParamPerPool } from './contracts-helpers'; | ||||
| import { getEthersSignersAddresses, getParamPerPool } from './contracts-helpers'; | ||||
| import AaveConfig from '../markets/aave'; | ||||
| import AaveProConfig from '../markets/aave-pro'; | ||||
| import MaticConfig from '../markets/matic'; | ||||
|  | @ -69,9 +69,7 @@ export const getGenesisPoolAdmin = async ( | |||
|   if (targetAddress) { | ||||
|     return targetAddress; | ||||
|   } | ||||
|   const addressList = await Promise.all( | ||||
|     (await DRE.ethers.getSigners()).map((signer) => signer.getAddress()) | ||||
|   ); | ||||
|   const addressList = await getEthersSignersAddresses(); | ||||
|   const addressIndex = config.PoolAdminIndex; | ||||
|   return addressList[addressIndex]; | ||||
| }; | ||||
|  | @ -84,9 +82,7 @@ export const getEmergencyAdmin = async ( | |||
|   if (targetAddress) { | ||||
|     return targetAddress; | ||||
|   } | ||||
|   const addressList = await Promise.all( | ||||
|     (await DRE.ethers.getSigners()).map((signer) => signer.getAddress()) | ||||
|   ); | ||||
|   const addressList = await getEthersSignersAddresses(); | ||||
|   const addressIndex = config.EmergencyAdminIndex; | ||||
|   return addressList[addressIndex]; | ||||
| }; | ||||
|  |  | |||
|  | @ -140,7 +140,9 @@ export const deployGenericLogic = async (reserveLogic: Contract, verify?: boolea | |||
|     linkedGenericLogicByteCode | ||||
|   ); | ||||
| 
 | ||||
|   const genericLogic = await (await genericLogicFactory.deploy()).deployed(); | ||||
|   const genericLogic = await ( | ||||
|     await genericLogicFactory.connect(await getFirstSigner()).deploy() | ||||
|   ).deployed(); | ||||
|   return withSaveAndVerify(genericLogic, eContractid.GenericLogic, [], verify); | ||||
| }; | ||||
| 
 | ||||
|  | @ -161,7 +163,9 @@ export const deployValidationLogic = async ( | |||
|     linkedValidationLogicByteCode | ||||
|   ); | ||||
| 
 | ||||
|   const validationLogic = await (await validationLogicFactory.deploy()).deployed(); | ||||
|   const validationLogic = await ( | ||||
|     await validationLogicFactory.connect(await getFirstSigner()).deploy() | ||||
|   ).deployed(); | ||||
| 
 | ||||
|   return withSaveAndVerify(validationLogic, eContractid.ValidationLogic, [], verify); | ||||
| }; | ||||
|  |  | |||
|  | @ -32,11 +32,11 @@ import { | |||
|   FlashLiquidationAdapterFactory, | ||||
| } from '../types'; | ||||
| import { IERC20DetailedFactory } from '../types/IERC20DetailedFactory'; | ||||
| import { MockTokenMap } from './contracts-helpers'; | ||||
| import { getEthersSigners, MockTokenMap } from './contracts-helpers'; | ||||
| import { DRE, getDb, notFalsyOrZeroAddress } from './misc-utils'; | ||||
| import { eContractid, PoolConfiguration, tEthereumAddress, TokenContractId } from './types'; | ||||
| 
 | ||||
| export const getFirstSigner = async () => (await DRE.ethers.getSigners())[0]; | ||||
| export const getFirstSigner = async () => (await getEthersSigners())[0]; | ||||
| 
 | ||||
| export const getLendingPoolAddressesProvider = async (address?: tEthereumAddress) => { | ||||
|   return await LendingPoolAddressesProviderFactory.connect( | ||||
|  |  | |||
|  | @ -23,9 +23,10 @@ import { MintableERC20 } from '../types/MintableERC20'; | |||
| import { Artifact } from 'hardhat/types'; | ||||
| import { Artifact as BuidlerArtifact } from '@nomiclabs/buidler/types'; | ||||
| import { verifyEtherscanContract } from './etherscan-verification'; | ||||
| import { getIErc20Detailed } from './contracts-getters'; | ||||
| import { getFirstSigner, getIErc20Detailed } from './contracts-getters'; | ||||
| import { usingTenderly, verifyAtTenderly } from './tenderly-utils'; | ||||
| import { usingPolygon, verifyAtPolygon } from './polygon-utils'; | ||||
| import { getDefenderRelaySigner, usingDefender } from './defender-utils'; | ||||
| 
 | ||||
| export type MockTokenMap = { [symbol: string]: MintableERC20 }; | ||||
| 
 | ||||
|  | @ -66,11 +67,18 @@ export const rawInsertContractAddressInDb = async (id: string, address: tEthereu | |||
|     }) | ||||
|     .write(); | ||||
| 
 | ||||
| export const getEthersSigners = async (): Promise<Signer[]> => | ||||
|   await Promise.all(await DRE.ethers.getSigners()); | ||||
| export const getEthersSigners = async (): Promise<Signer[]> => { | ||||
|   const ethersSigners = await Promise.all(await DRE.ethers.getSigners()); | ||||
| 
 | ||||
|   if (usingDefender()) { | ||||
|     const [, ...users] = ethersSigners; | ||||
|     return [await getDefenderRelaySigner(), ...users]; | ||||
|   } | ||||
|   return ethersSigners; | ||||
| }; | ||||
| 
 | ||||
| export const getEthersSignersAddresses = async (): Promise<tEthereumAddress[]> => | ||||
|   await Promise.all((await DRE.ethers.getSigners()).map((signer) => signer.getAddress())); | ||||
|   await Promise.all((await getEthersSigners()).map((signer) => signer.getAddress())); | ||||
| 
 | ||||
| export const getCurrentBlock = async () => { | ||||
|   return DRE.ethers.provider.getBlockNumber(); | ||||
|  | @ -83,9 +91,9 @@ export const deployContract = async <ContractType extends Contract>( | |||
|   contractName: string, | ||||
|   args: any[] | ||||
| ): Promise<ContractType> => { | ||||
|   const contract = (await (await DRE.ethers.getContractFactory(contractName)).deploy( | ||||
|     ...args | ||||
|   )) as ContractType; | ||||
|   const contract = (await (await DRE.ethers.getContractFactory(contractName)) | ||||
|     .connect(await getFirstSigner()) | ||||
|     .deploy(...args)) as ContractType; | ||||
|   await waitForTx(contract.deployTransaction); | ||||
|   await registerContractInJsonDb(<eContractid>contractName, contract); | ||||
|   return contract; | ||||
|  |  | |||
							
								
								
									
										41
									
								
								helpers/defender-utils.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								helpers/defender-utils.ts
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,41 @@ | |||
| import { formatEther } from '@ethersproject/units'; | ||||
| import { DefenderRelaySigner, DefenderRelayProvider } from 'defender-relay-client/lib/ethers'; | ||||
| import { Signer } from 'ethers'; | ||||
| import { HardhatRuntimeEnvironment } from 'hardhat/types'; | ||||
| import { DRE, impersonateAccountsHardhat } from './misc-utils'; | ||||
| import { usingTenderly } from './tenderly-utils'; | ||||
| 
 | ||||
| export const usingDefender = () => process.env.DEFENDER === 'true'; | ||||
| 
 | ||||
| export const getDefenderRelaySigner = async () => { | ||||
|   const { DEFENDER_API_KEY, DEFENDER_SECRET_KEY } = process.env; | ||||
|   let defenderSigner: Signer; | ||||
| 
 | ||||
|   if (!DEFENDER_API_KEY || !DEFENDER_SECRET_KEY) { | ||||
|     throw new Error('Defender secrets required'); | ||||
|   } | ||||
| 
 | ||||
|   const credentials = { apiKey: DEFENDER_API_KEY, apiSecret: DEFENDER_SECRET_KEY }; | ||||
| 
 | ||||
|   defenderSigner = new DefenderRelaySigner(credentials, new DefenderRelayProvider(credentials), { | ||||
|     speed: 'fast', | ||||
|   }); | ||||
| 
 | ||||
|   const defenderAddress = await defenderSigner.getAddress(); | ||||
|   console.log('  - Using Defender Relay: ', defenderAddress); | ||||
| 
 | ||||
|   // Replace signer if FORK=main is active
 | ||||
|   if (process.env.FORK === 'main') { | ||||
|     console.log('  - Impersonating Defender Relay'); | ||||
|     await impersonateAccountsHardhat([defenderAddress]); | ||||
|     defenderSigner = await (DRE as HardhatRuntimeEnvironment).ethers.getSigner(defenderAddress); | ||||
|   } | ||||
|   // Replace signer if Tenderly network is active
 | ||||
|   if (usingTenderly()) { | ||||
|     console.log('  - Impersonating Defender Relay via Tenderly'); | ||||
|     defenderSigner = await (DRE as HardhatRuntimeEnvironment).ethers.getSigner(defenderAddress); | ||||
|   } | ||||
|   console.log('  - Balance: ', formatEther(await defenderSigner.getBalance())); | ||||
| 
 | ||||
|   return defenderSigner; | ||||
| }; | ||||
|  | @ -115,3 +115,17 @@ export const notFalsyOrZeroAddress = (address: tEthereumAddress | null | undefin | |||
|   } | ||||
|   return isAddress(address) && !isZeroAddress(address); | ||||
| }; | ||||
| 
 | ||||
| export const impersonateAccountsHardhat = async (accounts: string[]) => { | ||||
|   if (process.env.TENDERLY === 'true') { | ||||
|     return; | ||||
|   } | ||||
|   // eslint-disable-next-line no-restricted-syntax
 | ||||
|   for (const account of accounts) { | ||||
|     // eslint-disable-next-line no-await-in-loop
 | ||||
|     await (DRE as HardhatRuntimeEnvironment).network.provider.request({ | ||||
|       method: 'hardhat_impersonateAccount', | ||||
|       params: [account], | ||||
|     }); | ||||
|   } | ||||
| }; | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ export const usingTenderly = () => | |||
| 
 | ||||
| export const verifyAtTenderly = async (id: string, instance: Contract) => { | ||||
|   console.log('\n- Doing Tenderly contract verification of', id); | ||||
|   await (DRE as any).tenderlyRPC.verify({ | ||||
|   await (DRE as any).tenderlyNetwork.verify({ | ||||
|     name: id, | ||||
|     address: instance.address, | ||||
|   }); | ||||
|  |  | |||
							
								
								
									
										1309
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1309
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -99,7 +99,7 @@ | |||
|     "@nomiclabs/hardhat-ethers": "^2.0.0", | ||||
|     "@nomiclabs/hardhat-waffle": "^2.0.0", | ||||
|     "@openzeppelin/contracts": "3.1.0", | ||||
|     "@tenderly/hardhat-tenderly": "^1.1.0-beta.4", | ||||
|     "@tenderly/hardhat-tenderly": "1.1.0-beta.5", | ||||
|     "@typechain/ethers-v4": "1.0.0", | ||||
|     "@typechain/ethers-v5": "^2.0.0", | ||||
|     "@typechain/truffle-v4": "2.0.2", | ||||
|  | @ -114,6 +114,7 @@ | |||
|     "chai": "4.2.0", | ||||
|     "chai-bignumber": "3.0.0", | ||||
|     "chai-bn": "^0.2.1", | ||||
|     "defender-relay-client": "^1.7.0", | ||||
|     "dotenv": "^8.2.0", | ||||
|     "eth-sig-util": "2.5.3", | ||||
|     "ethereum-waffle": "3.0.2", | ||||
|  |  | |||
|  | @ -3,6 +3,7 @@ import { | |||
|   deployLendingPoolAddressesProvider, | ||||
|   deployLendingPoolAddressesProviderRegistry, | ||||
| } from '../../helpers/contracts-deployments'; | ||||
| import { getEthersSigners } from '../../helpers/contracts-helpers'; | ||||
| import { waitForTx } from '../../helpers/misc-utils'; | ||||
| import { AaveConfig } from '../../markets/aave'; | ||||
| 
 | ||||
|  | @ -14,7 +15,7 @@ task( | |||
|   .setAction(async ({ verify }, localBRE) => { | ||||
|     await localBRE.run('set-DRE'); | ||||
| 
 | ||||
|     const admin = await (await localBRE.ethers.getSigners())[0].getAddress(); | ||||
|     const admin = await (await getEthersSigners())[0].getAddress(); | ||||
| 
 | ||||
|     const addressesProvider = await deployLendingPoolAddressesProvider(AaveConfig.MarketId, verify); | ||||
|     await waitForTx(await addressesProvider.setPoolAdmin(admin)); | ||||
|  |  | |||
|  | @ -82,7 +82,7 @@ task('full:deploy-lending-pool', 'Deploy lending pool for dev environment') | |||
|       if (DRE.network.name.includes('tenderly')) { | ||||
|         const transactionLink = `https://dashboard.tenderly.co/${DRE.config.tenderly.username}/${ | ||||
|           DRE.config.tenderly.project | ||||
|         }/fork/${DRE.tenderlyRPC.getFork()}/simulation/${DRE.tenderlyRPC.getHead()}`;
 | ||||
|         }/fork/${DRE.tenderlyNetwork.getFork()}/simulation/${DRE.tenderlyNetwork.getHead()}`;
 | ||||
|         console.error('Check tx error:', transactionLink); | ||||
|       } | ||||
|       throw error; | ||||
|  |  | |||
|  | @ -84,7 +84,7 @@ task('full:deploy-oracles', 'Deploy oracles for dev enviroment') | |||
|       if (DRE.network.name.includes('tenderly')) { | ||||
|         const transactionLink = `https://dashboard.tenderly.co/${DRE.config.tenderly.username}/${ | ||||
|           DRE.config.tenderly.project | ||||
|         }/fork/${DRE.tenderlyRPC.getFork()}/simulation/${DRE.tenderlyRPC.getHead()}`;
 | ||||
|         }/fork/${DRE.tenderlyNetwork.getFork()}/simulation/${DRE.tenderlyNetwork.getHead()}`;
 | ||||
|         console.error('Check tx error:', transactionLink); | ||||
|       } | ||||
|       throw error; | ||||
|  |  | |||
|  | @ -46,8 +46,8 @@ task('aave:mainnet', 'Deploy development enviroment') | |||
|     } | ||||
| 
 | ||||
|     if (usingTenderly()) { | ||||
|       const postDeployHead = DRE.tenderlyRPC.getHead(); | ||||
|       const postDeployFork = DRE.tenderlyRPC.getFork(); | ||||
|       const postDeployHead = DRE.tenderlyNetwork.getHead(); | ||||
|       const postDeployFork = DRE.tenderlyNetwork.getFork(); | ||||
|       console.log('Tenderly Info'); | ||||
|       console.log('- Head', postDeployHead); | ||||
|       console.log('- Fork', postDeployFork); | ||||
|  |  | |||
|  | @ -46,8 +46,8 @@ task('amm:mainnet', 'Deploy development enviroment') | |||
|     } | ||||
| 
 | ||||
|     if (usingTenderly()) { | ||||
|       const postDeployHead = DRE.tenderlyRPC.getHead(); | ||||
|       const postDeployFork = DRE.tenderlyRPC.getFork(); | ||||
|       const postDeployHead = DRE.tenderlyNetwork.getHead(); | ||||
|       const postDeployFork = DRE.tenderlyNetwork.getFork(); | ||||
|       console.log('Tenderly Info'); | ||||
|       console.log('- Head', postDeployHead); | ||||
|       console.log('- Fork', postDeployFork); | ||||
|  |  | |||
|  | @ -49,8 +49,8 @@ task('sidechain:mainnet', 'Deploy market at sidechain') | |||
|     } | ||||
| 
 | ||||
|     if (usingTenderly()) { | ||||
|       const postDeployHead = DRE.tenderlyRPC.getHead(); | ||||
|       const postDeployFork = DRE.tenderlyRPC.getFork(); | ||||
|       const postDeployHead = DRE.tenderlyNetwork.getHead(); | ||||
|       const postDeployFork = DRE.tenderlyNetwork.getFork(); | ||||
|       console.log('Tenderly Info'); | ||||
|       console.log('- Head', postDeployHead); | ||||
|       console.log('- Fork', postDeployFork); | ||||
|  |  | |||
|  | @ -1,12 +1,6 @@ | |||
| import { task } from 'hardhat/config'; | ||||
| import { DRE, setDRE } from '../../helpers/misc-utils'; | ||||
| import { EthereumNetworkNames } from '../../helpers/types'; | ||||
| import { usingTenderly } from '../../helpers/tenderly-utils'; | ||||
| import { HardhatRuntimeEnvironment } from 'hardhat/types'; | ||||
| import { getFirstSigner } from '../../helpers/contracts-getters'; | ||||
| import { formatEther } from 'ethers/lib/utils'; | ||||
| import { fork } from 'child_process'; | ||||
| import { env } from 'process'; | ||||
| 
 | ||||
| task(`set-DRE`, `Inits the DRE, to have access to all the plugins' objects`).setAction( | ||||
|   async (_, _DRE) => { | ||||
|  | @ -18,24 +12,21 @@ task(`set-DRE`, `Inits the DRE, to have access to all the plugins' objects`).set | |||
|       process.env.TENDERLY === 'true' | ||||
|     ) { | ||||
|       console.log('- Setting up Tenderly provider'); | ||||
|       const net = _DRE.tenderly.network(); | ||||
| 
 | ||||
|       if (process.env.TENDERLY_FORK_ID && process.env.TENDERLY_HEAD_ID) { | ||||
|         console.log('- Connecting to a Tenderly Fork'); | ||||
|         _DRE.tenderlyRPC.setFork(process.env.TENDERLY_FORK_ID); | ||||
|         _DRE.tenderlyRPC.setHead(process.env.TENDERLY_HEAD_ID); | ||||
|         await net.setFork(process.env.TENDERLY_FORK_ID); | ||||
|         await net.setHead(process.env.TENDERLY_HEAD_ID); | ||||
|       } else { | ||||
|         console.log('- Creating a new Tenderly Fork'); | ||||
|         await _DRE.tenderlyRPC.initializeFork(); | ||||
|         await net.initializeFork(); | ||||
|       } | ||||
|       const provider = new _DRE.ethers.providers.Web3Provider(_DRE.tenderlyRPC as any); | ||||
|       const provider = new _DRE.ethers.providers.Web3Provider(net); | ||||
|       _DRE.ethers.provider = provider; | ||||
|       console.log('- Initialized Tenderly fork:'); | ||||
|       console.log('  - Fork: ', _DRE.tenderlyRPC.getFork()); | ||||
|       console.log('  - Head: ', _DRE.tenderlyRPC.getHead()); | ||||
|       console.log('  - First account:', await (await _DRE.ethers.getSigners())[0].getAddress()); | ||||
|       console.log( | ||||
|         '  - Balance:', | ||||
|         formatEther(await (await _DRE.ethers.getSigners())[0].getBalance()) | ||||
|       ); | ||||
|       console.log('  - Fork: ', net.getFork()); | ||||
|       console.log('  - Head: ', net.getHead()); | ||||
|     } | ||||
| 
 | ||||
|     console.log('- Enviroment'); | ||||
|  | @ -50,6 +41,7 @@ task(`set-DRE`, `Inits the DRE, to have access to all the plugins' objects`).set | |||
|       } | ||||
|     } | ||||
|     console.log('  - Network :', _DRE.network.name); | ||||
| 
 | ||||
|     setDRE(_DRE); | ||||
|     return _DRE; | ||||
|   } | ||||
|  |  | |||
|  | @ -4,6 +4,7 @@ import { | |||
|   insertContractAddressInDb, | ||||
|   getEthersSigners, | ||||
|   registerContractInJsonDb, | ||||
|   getEthersSignersAddresses, | ||||
| } from '../../helpers/contracts-helpers'; | ||||
| import { | ||||
|   deployLendingPoolAddressesProvider, | ||||
|  | @ -102,9 +103,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => { | |||
|   await waitForTx(await addressesProvider.setPoolAdmin(aaveAdmin)); | ||||
| 
 | ||||
|   //setting users[1] as emergency admin, which is in position 2 in the DRE addresses list
 | ||||
|   const addressList = await Promise.all( | ||||
|     (await DRE.ethers.getSigners()).map((signer) => signer.getAddress()) | ||||
|   ); | ||||
|   const addressList = await getEthersSignersAddresses(); | ||||
| 
 | ||||
|   await waitForTx(await addressesProvider.setEmergencyAdmin(addressList[2])); | ||||
| 
 | ||||
|  |  | |||
|  | @ -163,7 +163,7 @@ export async function initializeMakeSuite() { | |||
| const setSnapshot = async () => { | ||||
|   const hre = DRE as HardhatRuntimeEnvironment; | ||||
|   if (usingTenderly()) { | ||||
|     setBuidlerevmSnapshotId((await hre.tenderlyRPC.getHead()) || '0x1'); | ||||
|     setBuidlerevmSnapshotId((await hre.tenderlyNetwork.getHead()) || '0x1'); | ||||
|     return; | ||||
|   } | ||||
|   setBuidlerevmSnapshotId(await evmSnapshot()); | ||||
|  | @ -172,7 +172,7 @@ const setSnapshot = async () => { | |||
| const revertHead = async () => { | ||||
|   const hre = DRE as HardhatRuntimeEnvironment; | ||||
|   if (usingTenderly()) { | ||||
|     await hre.tenderlyRPC.setHead(buidlerevmSnapshotId); | ||||
|     await hre.tenderlyNetwork.setHead(buidlerevmSnapshotId); | ||||
|     return; | ||||
|   } | ||||
|   await evmRevert(buidlerevmSnapshotId); | ||||
|  |  | |||
|  | @ -4,6 +4,7 @@ import { | |||
|   insertContractAddressInDb, | ||||
|   getEthersSigners, | ||||
|   registerContractInJsonDb, | ||||
|   getEthersSignersAddresses, | ||||
| } from '../../helpers/contracts-helpers'; | ||||
| import { | ||||
|   deployLendingPoolAddressesProvider, | ||||
|  | @ -101,9 +102,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => { | |||
|   await waitForTx(await addressesProvider.setPoolAdmin(aaveAdmin)); | ||||
| 
 | ||||
|   //setting users[1] as emergency admin, which is in position 2 in the DRE addresses list
 | ||||
|   const addressList = await Promise.all( | ||||
|     (await DRE.ethers.getSigners()).map((signer) => signer.getAddress()) | ||||
|   ); | ||||
|   const addressList = await getEthersSignersAddresses(); | ||||
| 
 | ||||
|   await waitForTx(await addressesProvider.setEmergencyAdmin(addressList[2])); | ||||
| 
 | ||||
|  |  | |||
|  | @ -163,7 +163,7 @@ export async function initializeMakeSuite() { | |||
| const setSnapshot = async () => { | ||||
|   const hre = DRE as HardhatRuntimeEnvironment; | ||||
|   if (usingTenderly()) { | ||||
|     setBuidlerevmSnapshotId((await hre.tenderlyRPC.getHead()) || '0x1'); | ||||
|     setBuidlerevmSnapshotId((await hre.tenderlyNetwork.getHead()) || '0x1'); | ||||
|     return; | ||||
|   } | ||||
|   setBuidlerevmSnapshotId(await evmSnapshot()); | ||||
|  | @ -172,7 +172,7 @@ const setSnapshot = async () => { | |||
| const revertHead = async () => { | ||||
|   const hre = DRE as HardhatRuntimeEnvironment; | ||||
|   if (usingTenderly()) { | ||||
|     await hre.tenderlyRPC.setHead(buidlerevmSnapshotId); | ||||
|     await hre.tenderlyNetwork.setHead(buidlerevmSnapshotId); | ||||
|     return; | ||||
|   } | ||||
|   await evmRevert(buidlerevmSnapshotId); | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ | |||
|     "noImplicitAny": false, | ||||
|     "resolveJsonModule": true | ||||
|   }, | ||||
|   "include": ["./scripts", "./test", "./tasks", "test-suites/test-aave/uniswapAdapters.repay.spec.ts", "test-suites/test-aave/upgradeability.spec.ts", "test-suites/test-aave/variable-debt-token.spec.ts", "test-suites/test-aave/weth-gateway.spec.ts"], | ||||
|   "include": ["./scripts", "./test", "./tasks", "./helpers", "test-suites/test-aave/uniswapAdapters.repay.spec.ts", "test-suites/test-aave/upgradeability.spec.ts", "test-suites/test-aave/variable-debt-token.spec.ts", "test-suites/test-aave/weth-gateway.spec.ts"], | ||||
|   "files": [ | ||||
|     "./hardhat.config.ts", | ||||
|     "./modules/tenderly/tenderly.d.ts", | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 The3D
						The3D