Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions test/integration/aaveGovernanceV2Module.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ import {
getAccounts,
getWaffleExpect,
getSystemFixture,
getAaveFixture,
increaseTimeAsync,
getAaveV2Fixture,
} from "@utils/test/index";
import { AaveFixture, SystemFixture } from "@utils/fixtures";
import { AaveV2Fixture, SystemFixture } from "@utils/fixtures";

const expect = getWaffleExpect();

Expand All @@ -27,7 +27,7 @@ describe("AaveGovernanceV2Module", () => {
let deployer: DeployHelper;
let setup: SystemFixture;

let aaveSetup: AaveFixture;
let aaveSetup: AaveV2Fixture;

let governanceModule: GovernanceModule;
let aaveGovernanceV2Adapter: AaveGovernanceV2Adapter;
Expand All @@ -45,8 +45,8 @@ describe("AaveGovernanceV2Module", () => {
await setup.initialize();

// Aave setup
aaveSetup = getAaveFixture(owner.address);
await aaveSetup.initialize();
aaveSetup = getAaveV2Fixture(owner.address);
await aaveSetup.initialize(setup.weth.address, setup.dai.address);

// GovernanceModule setup
governanceModule = await deployer.modules.deployGovernanceModule(setup.controller.address);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@ import {
addSnapshotBeforeRestoreAfterEach,
getAccounts,
getWaffleExpect,
getAaveFixture,
getRandomAddress
getAaveV2Fixture,
getRandomAddress,
getSystemFixture
} from "@utils/test/index";
import { AaveFixture } from "@utils/fixtures";
import { AaveV2Fixture, SystemFixture } from "@utils/fixtures";


const expect = getWaffleExpect();
Expand All @@ -23,7 +24,8 @@ describe("AaveGovernanceAdapter", () => {
let deployer: DeployHelper;
let aaveGovernanceV2Adapter: AaveGovernanceV2Adapter;
let mockSetToken: Account;
let aaveSetup: AaveFixture;
let setV2Setup: SystemFixture;
let aaveSetup: AaveV2Fixture;

before(async () => {
[
Expand All @@ -33,8 +35,11 @@ describe("AaveGovernanceAdapter", () => {

deployer = new DeployHelper(owner.wallet);

aaveSetup = getAaveFixture(owner.address);
await aaveSetup.initialize();
setV2Setup = getSystemFixture(owner.address);
await setV2Setup.initialize();

aaveSetup = getAaveV2Fixture(owner.address);
await aaveSetup.initialize(setV2Setup.weth.address, setV2Setup.dai.address);

aaveGovernanceV2Adapter = await deployer.adapters.deployAaveGovernanceV2Adapter(
aaveSetup.aaveGovernanceV2.address,
Expand Down
9 changes: 2 additions & 7 deletions utils/contracts/aave.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// External Aave Contracts
export { AavePropositionPower } from "../../typechain/AavePropositionPower";
export { AaveProtoGovernance } from "../../typechain/AaveProtoGovernance";
export { AaveTokenV2Mintable } from "../../typechain/AaveTokenV2Mintable";
export { AssetVotingWeightProvider } from "../../typechain/AssetVotingWeightProvider";
export { AToken } from "../../typechain/AToken";
export { DefaultReserveInterestRateStrategy } from "../../typechain/DefaultReserveInterestRateStrategy";
Expand All @@ -12,10 +13,4 @@ export { CoreLibrary } from "../../typechain/CoreLibrary";
export { LendingPoolConfigurator } from "../../typechain/LendingPoolConfigurator";
export { LendingRateOracle } from "../../typechain/LendingRateOracle";
export { LendingPoolDataProvider } from "../../typechain/LendingPoolDataProvider";
export { LendToAaveMigrator } from "../../typechain/LendToAaveMigrator";

// Governance V2
export { AaveGovernanceV2 } from "../../typechain/AaveGovernanceV2";
export { AaveTokenV2Mintable } from "../../typechain/AaveTokenV2Mintable";
export { GovernanceStrategy } from "../../typechain/GovernanceStrategy";
export { Executor } from "../../typechain/Executor";
export { LendToAaveMigrator } from "../../typechain/LendToAaveMigrator";
6 changes: 6 additions & 0 deletions utils/contracts/aaveV2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ export { AaveV2StableDebtToken } from "../../typechain/AaveV2StableDebtToken";
export { AaveV2StakedTokenIncentivesController } from "../../typechain/AaveV2StakedTokenIncentivesController";
export { AaveV2VariableDebtToken } from "../../typechain/AaveV2VariableDebtToken";

// Governance V2
export { AaveGovernanceV2 } from "../../typechain/AaveGovernanceV2";
export { AaveTokenV2Mintable } from "../../typechain/AaveTokenV2Mintable";
export { GovernanceStrategy } from "../../typechain/GovernanceStrategy";
export { Executor } from "../../typechain/Executor";

// Libraries
export { GenericLogic } from "../../typechain/GenericLogic";
export { ReserveLogic } from "../../typechain/ReserveLogic";
Expand Down
20 changes: 10 additions & 10 deletions utils/deploys/deployExternal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,12 @@ import { WhitePaperInterestRateModel__factory } from "../../typechain/factories/
import { LendingPoolAddressesProvider__factory } from "../../typechain/factories/LendingPoolAddressesProvider__factory";

import {
AaveGovernanceV2,
AavePropositionPower,
AaveProtoGovernance,
AaveTokenV2Mintable,
AssetVotingWeightProvider,
CoreLibrary,
DefaultReserveInterestRateStrategy,
Executor,
GovernanceStrategy,
GovernanceParamsProvider,
LendingPool,
LendingPoolAddressesProvider,
Expand All @@ -57,10 +54,7 @@ import {
LendToAaveMigrator
} from "../contracts/aave";

import { AaveGovernanceV2__factory } from "../../typechain/factories/AaveGovernanceV2__factory";
import { AaveTokenV2Mintable__factory } from "../../typechain/factories/AaveTokenV2Mintable__factory";
import { Executor__factory } from "../../typechain/factories/Executor__factory";
import { GovernanceStrategy__factory } from "../../typechain/factories/GovernanceStrategy__factory";
import { AavePropositionPower__factory } from "../../typechain/factories/AavePropositionPower__factory";
import { AaveProtoGovernance__factory } from "../../typechain/factories/AaveProtoGovernance__factory";
import { AssetVotingWeightProvider__factory } from "../../typechain/factories/AssetVotingWeightProvider__factory";
Expand Down Expand Up @@ -168,9 +162,7 @@ import { Quoter__factory } from "../../typechain/factories/Quoter__factory";
import { NFTDescriptor__factory } from "../../typechain/factories/NFTDescriptor__factory";

import {
GenericLogic,
ValidationLogic,
ReserveLogic,
AaveGovernanceV2,
AaveV2AToken,
AaveV2StakedTokenIncentivesController,
AaveV2StableDebtToken,
Expand All @@ -183,7 +175,12 @@ import {
AaveV2DefaultReserveInterestRateStrategy,
AaveV2LendingRateOracle,
AaveV2Oracle,
AaveV2PriceOracle
AaveV2PriceOracle,
Executor,
GovernanceStrategy,
GenericLogic,
ReserveLogic,
ValidationLogic
} from "../contracts/aaveV2";
import { AaveV2LendingPool__factory } from "../../typechain/factories/AaveV2LendingPool__factory";
import { AaveV2LendingPoolAddressesProvider__factory } from "../../typechain/factories/AaveV2LendingPoolAddressesProvider__factory";
Expand All @@ -201,6 +198,9 @@ import { ReserveLogic__factory } from "../../typechain/factories/ReserveLogic__f
import { AaveV2LendingRateOracle__factory } from "../../typechain/factories/AaveV2LendingRateOracle__factory";
import { AaveV2Oracle__factory } from "../../typechain/factories/AaveV2Oracle__factory";
import { AaveV2PriceOracle__factory } from "../../typechain/factories/AaveV2PriceOracle__factory";
import { AaveGovernanceV2__factory } from "../../typechain/factories/AaveGovernanceV2__factory";
import { Executor__factory } from "../../typechain/factories/Executor__factory";
import { GovernanceStrategy__factory } from "../../typechain/factories/GovernanceStrategy__factory";

export default class DeployExternalContracts {
private _deployerSigner: Signer;
Expand Down
34 changes: 1 addition & 33 deletions utils/fixtures/aaveFixture.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,13 @@ import {
LendingRateOracle,
LendingPoolDataProvider,
LendToAaveMigrator,
AaveGovernanceV2,
Executor,
GovernanceStrategy
} from "../contracts/aave";

import { StandardTokenMock } from "../contracts";

import { ether, getRandomAddress } from "../common";
import { ether } from "../common";

import { AToken__factory } from "../../typechain/factories/AToken__factory";
import { MAX_UINT_256 } from "../constants";
import { AaveTokenV2Mintable } from "../../typechain/AaveTokenV2Mintable";

export class AaveFixture {
Expand All @@ -47,16 +43,12 @@ export class AaveFixture {
public lendToAaveMigrator: LendToAaveMigrator;
public lendToken: StandardTokenMock;
public aaveToken: AaveTokenV2Mintable;
public stkAaveToken: AaveTokenV2Mintable;
public aaveExchangeRatio: BigNumber;
public ethTokenAddress: Address = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
public aaveProtoGovernance: AaveProtoGovernance;
public aavePropositionPower: AavePropositionPower;
public assetVotingWeightPower: AssetVotingWeightProvider;
public governanceParamsProvider: GovernanceParamsProvider;
public aaveGovernanceV2: AaveGovernanceV2;
public executor: Executor;
public governanceStrategy: GovernanceStrategy;

constructor(provider: Web3Provider | JsonRpcProvider, ownerAddress: Address) {
this._ownerSigner = provider.getSigner(ownerAddress);
Expand Down Expand Up @@ -133,30 +125,6 @@ export class AaveFixture {
await this.aaveToken.transfer(this.lendToAaveMigrator.address, ether(100));

await this.lendToAaveMigrator.initialize();

// Deploy governance V2
this.executor = await this._deployer.external.deployExecutor(
await this._ownerSigner.getAddress(),
BigNumber.from(0),
BigNumber.from(0),
BigNumber.from(0),
MAX_UINT_256,
BigNumber.from(50),
BigNumber.from(100),
BigNumber.from(50),
ether(100)
);
this.stkAaveToken = await this._deployer.external.deployAaveTokenV2Mintable();
this.stkAaveToken.mint(await this._ownerSigner.getAddress(), ether(100000));
this.governanceStrategy = await this._deployer.external.deployGovernanceStrategy(this.aaveToken.address, this.stkAaveToken.address);
this.aaveGovernanceV2 = await this._deployer.external.deployAaveGovernanceV2(
this.governanceStrategy.address,
BigNumber.from(0),
await this._ownerSigner.getAddress(),
[this.executor.address]
);
this.aaveToken.connect(this._ownerSigner).transfer(await getRandomAddress(), 100);
this.stkAaveToken.connect(this._ownerSigner).transfer(await getRandomAddress(), 100);
}

public async deployAToken(_underlyingAsset: Address, _decimals: BigNumberish = 18): Promise<AToken> {
Expand Down
43 changes: 22 additions & 21 deletions utils/fixtures/aaveV2Fixture.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import { Address } from "../types";
import { BigNumber, BigNumberish } from "@ethersproject/bignumber";

import {
AaveGovernanceV2,
AaveTokenV2Mintable,
AaveV2Oracle,
AaveV2PriceOracle,
AaveV2LendingPool,
Expand All @@ -16,18 +18,15 @@ import {
AaveV2LendingRateOracle,
AaveV2AToken,
AaveV2StableDebtToken,
AaveV2VariableDebtToken
AaveV2VariableDebtToken,
Executor,
GovernanceStrategy
} from "../contracts/aaveV2";

// import {
// Executor,
// AaveGovernanceV2,
// AaveTokenV2Mintable
// } from "../contracts/aave";

import { ether, getRandomAddress } from "../common";

import { ADDRESS_ZERO } from "../constants";
import { ADDRESS_ZERO, MAX_UINT_256 } from "../constants";

export interface ReserveTokens {
aToken: AaveV2AToken;
Expand Down Expand Up @@ -57,16 +56,12 @@ export class AaveV2Fixture {
public treasuryAddress: Address;
public incentivesControllerAddress: Address;

// TODO: move governance to this fixture
// public executor: Executor;
// public aaveGovernanceV2: AaveGovernanceV2;
// public aaveToken: AaveTokenV2Mintable;
// public stkAaveToken: AaveTokenV2Mintable;
// public governanceStrategy: GovernanceStrategy;
// public aaveProtoGovernance: AaveProtoGovernance;
// public aavePropositionPower: AavePropositionPower;
// public assetVotingWeightPower: AssetVotingWeightProvider;
// public governanceParamsProvider: GovernanceParamsProvider;
public aaveToken: AaveTokenV2Mintable;
public stkAaveToken: AaveTokenV2Mintable;

public aaveGovernanceV2: AaveGovernanceV2;
public executor: Executor;
public governanceStrategy: GovernanceStrategy;

constructor(provider: Web3Provider | JsonRpcProvider, ownerAddress: Address) {
this._ownerSigner = provider.getSigner(ownerAddress);
Expand Down Expand Up @@ -155,6 +150,9 @@ export class AaveV2Fixture {
true, // enable borrowing on reserve
true // enable stable debts
);

// Initialize governance
await this.initializeGovernance();
}

public async createAndEnableReserve(
Expand Down Expand Up @@ -232,10 +230,9 @@ export class AaveV2Fixture {
public async setMarketBorrowRate(asset: Address, rate: BigNumberish): Promise<void> {
this.lendingRateOracle.setMarketBorrowRate(asset, rate);
}
/*

private async initializeGovernance(): Promise<void> {

TODO: Move governance to this fixture.
// Deploy Executor
this.executor = await this._deployer.external.deployExecutor(
await this._ownerSigner.getAddress(),
Expand All @@ -249,11 +246,13 @@ export class AaveV2Fixture {
ether(100)
);

// Deploy Aave and stkAave
this.aaveToken = await this._deployer.external.deployAaveTokenV2Mintable();
await this.aaveToken.mint(await this._ownerSigner.getAddress(), ether(100000));
this.stkAaveToken = await this._deployer.external.deployAaveTokenV2Mintable();
await this.stkAaveToken.mint(await this._ownerSigner.getAddress(), ether(100000));

// Deploy core gov contracts
this.governanceStrategy = await this._deployer.external.deployGovernanceStrategy(this.aaveToken.address, this.stkAaveToken.address);
this.aaveGovernanceV2 = await this._deployer.external.deployAaveGovernanceV2(
this.governanceStrategy.address,
Expand All @@ -262,15 +261,17 @@ export class AaveV2Fixture {
[this.executor.address]
);

// send some aave and stkAave to random addresses to initialize the vote snapshots
this.aaveToken.connect(this._ownerSigner).transfer(await getRandomAddress(), 100);
this.stkAaveToken.connect(this._ownerSigner).transfer(await getRandomAddress(), 100);

// Deploy inventive controller
await this._deployer.external.deployAaveV2StakedTokenIncentivesController(
this.stkAaveToken.address, this.executor.address
)
);

this.incentivesControllerAddress = (await this._deployer.external.deployAaveV2StakedTokenIncentivesController(
this.stkAaveToken.address, this.executor.address
)).address;
}
*/
}