mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
import { task } from 'hardhat/config';
|
|
import { loadPoolConfig } from '../../helpers/configuration';
|
|
import { CRV_TOKEN, CURVE_CONFIG, ZERO_ADDRESS } from '../../helpers/constants';
|
|
import {
|
|
deployCurveTreasury,
|
|
deployInitializableAdminUpgradeabilityProxy,
|
|
} from '../../helpers/contracts-deployments';
|
|
import { waitForTx } from '../../helpers/misc-utils';
|
|
|
|
task(`deploy-curve-treasury`, `Deploys the CurveTreasury contract`)
|
|
.addParam('proxyAdmin')
|
|
.addParam('treasuryAdmin')
|
|
.addOptionalParam('collector')
|
|
.addFlag('verify', `Verify contract via Etherscan API.`)
|
|
.setAction(async ({ verify, proxyAdmin, treasuryAdmin, collector }, localBRE) => {
|
|
await localBRE.run('set-DRE');
|
|
|
|
const net = process.env.FORK ? process.env.FORK : localBRE.network.name;
|
|
console.log(`\n- Curve Treasury deployment`);
|
|
const aaveCollector = collector || ZERO_ADDRESS;
|
|
|
|
// Deploy implementation
|
|
const implementation = await deployCurveTreasury(
|
|
CURVE_CONFIG.votingEscrow[net],
|
|
CRV_TOKEN[net],
|
|
CURVE_CONFIG.curveFeeDistributor[net],
|
|
CURVE_CONFIG.gaugeController[net],
|
|
aaveCollector,
|
|
verify
|
|
);
|
|
|
|
// Freeze implementatation
|
|
await waitForTx(await implementation.initialize(ZERO_ADDRESS));
|
|
|
|
// Deploy proxy
|
|
const proxy = await deployInitializableAdminUpgradeabilityProxy(verify);
|
|
|
|
const encoded = implementation.interface.encodeFunctionData('initialize', [treasuryAdmin]);
|
|
await waitForTx(
|
|
await proxy['initialize(address,address,bytes)'](implementation.address, proxyAdmin, encoded)
|
|
);
|
|
|
|
console.log(`\tFinished CurveTreasury deployment`);
|
|
console.log(`\tProxy:`, proxy.address);
|
|
console.log(`\tImpl:`, implementation.address);
|
|
|
|
return { implementation: implementation.address, proxy: proxy.address };
|
|
});
|