From 026d16f44ee3a022d1a3e44c2a513bc0032291c5 Mon Sep 17 00:00:00 2001 From: The3D Date: Mon, 17 May 2021 21:36:52 +0200 Subject: [PATCH] feat: added the permission manager deployment script --- .../deployments/deploy-permission-manager.ts | 45 +++++++++++++++++++ tasks/full/2_lending_pool.ts | 1 - 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 tasks/deployments/deploy-permission-manager.ts diff --git a/tasks/deployments/deploy-permission-manager.ts b/tasks/deployments/deploy-permission-manager.ts new file mode 100644 index 00000000..d00138cd --- /dev/null +++ b/tasks/deployments/deploy-permission-manager.ts @@ -0,0 +1,45 @@ +import { task } from 'hardhat/config'; + +import { PermissionManagerFactory } from '../../types'; +import { verifyContract } from '../../helpers/contracts-helpers'; +import { eContractid } from '../../helpers/types'; +import { insertContractAddressInDb } from '../../helpers/contracts-helpers'; +import { getLendingPoolAddressesProvider } from '../../helpers/contracts-getters'; +import { waitForTx } from '../../helpers/misc-utils'; +import { ethers } from 'ethers'; + +task(`deploy-permission-manager`, `Deploys the PermissionManager contract`) + .addFlag('verify', 'Verify PermissionManager contract via Etherscan API.') + .setAction(async ({ verify }, localBRE) => { + await localBRE.run('set-DRE'); + + if (!localBRE.network.config.chainId) { + throw new Error('INVALID_CHAIN_ID'); + } + + console.log(`\n- PermissionManager deployment`); + + console.log(`\tDeploying PermissionManager implementation ...`); + const permissionManagerInstance = await new PermissionManagerFactory( + await localBRE.ethers.provider.getSigner() + ).deploy(); + + await permissionManagerInstance.deployTransaction.wait(); + + console.log('Permission manager address', permissionManagerInstance.address); + await verifyContract(eContractid.PermissionManager, permissionManagerInstance, []); + + // register the permission manager in the addresses provider + const addressesProvider = await getLendingPoolAddressesProvider(); + const permissionManagerHash = ethers.utils.keccak256(ethers.utils.toUtf8Bytes("PERMISSION_MANAGER")); + + await waitForTx(await addressesProvider.setAddress(permissionManagerHash, permissionManagerInstance.address)); + + // store the permission manager contract in the DB + await insertContractAddressInDb( + eContractid.PermissionManager, + permissionManagerInstance.address + ); + + console.log(`\tFinished PermissionManager implementation deployment`); + }); diff --git a/tasks/full/2_lending_pool.ts b/tasks/full/2_lending_pool.ts index 4b57e51b..24df6159 100644 --- a/tasks/full/2_lending_pool.ts +++ b/tasks/full/2_lending_pool.ts @@ -19,7 +19,6 @@ import { loadPoolConfig, ConfigNames } from '../../helpers/configuration'; task('full:deploy-lending-pool', 'Deploy lending pool for dev enviroment') .addFlag('verify', 'Verify contracts at Etherscan') .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`) - .addParam('lendingPoolImpl') .setAction(async ({ verify, pool }, DRE: HardhatRuntimeEnvironment) => { try { await DRE.run('set-DRE');