Skip to content

Commit

Permalink
feat: active 3.1 markets [skip cypress] (#2117)
Browse files Browse the repository at this point in the history
Co-authored-by: Mark Grothe <[email protected]>
  • Loading branch information
foodaka and grothem authored Jul 26, 2024
1 parent e8a5128 commit 3750ffc
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 18 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@
"test:coverage": "jest --coverage"
},
"dependencies": {
"@aave/contract-helpers": "1.28.1",
"@aave/math-utils": "1.28.1",
"@aave/contract-helpers": "1.29.0",
"@aave/math-utils": "1.29.0",
"@bgd-labs/aave-address-book": "^2.26.1",
"@emotion/cache": "11.10.3",
"@emotion/react": "11.10.4",
Expand Down
58 changes: 50 additions & 8 deletions src/services/UIPoolService.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import {
LegacyUiPoolDataProvider,
ReservesDataHumanized,
UiPoolDataProvider,
UserReserveDataHumanized,
} from '@aave/contract-helpers';
import { Provider } from '@ethersproject/providers';
import { BigNumber, Contract } from 'ethers';
import { MarketDataType } from 'src/ui-config/marketsConfig';

export type UserReservesDataHumanized = {
Expand All @@ -14,17 +16,57 @@ export type UserReservesDataHumanized = {
export class UiPoolService {
constructor(private readonly getProvider: (chainId: number) => Provider) {}

private getUiPoolDataService(marketData: MarketDataType) {
private async getUiPoolDataService(marketData: MarketDataType) {
const provider = this.getProvider(marketData.chainId);
return new UiPoolDataProvider({
uiPoolDataProviderAddress: marketData.addresses.UI_POOL_DATA_PROVIDER,
provider,
chainId: marketData.chainId,
});
// Temporary check to have the UI detect when the v3.1 upgrade is live so the correct
// data providers can be used on the fly. Once the upgrade is executed on all markets,
// this can be removed.
const poolRevision = await this.getPoolRevision(marketData, provider);
if (poolRevision < 4 || this.useLegacyUiPoolDataProvider(marketData)) {
return new LegacyUiPoolDataProvider({
uiPoolDataProviderAddress: marketData.addresses.UI_POOL_DATA_PROVIDER,
provider,
chainId: marketData.chainId,
});
} else {
return new UiPoolDataProvider({
uiPoolDataProviderAddress: marketData.addresses.V3_1_UI_POOL_DATA_PROVIDER as string,
provider,
chainId: marketData.chainId,
});
}
}

private async getPoolRevision(marketData: MarketDataType, provider: Provider) {
if (!marketData.v3) {
return 0;
}

const poolContract = new Contract(
marketData.addresses.LENDING_POOL,
['function POOL_REVISION() public view returns (uint256)'],
provider
);

const revision: BigNumber = await poolContract.POOL_REVISION();
return revision.toNumber();
}

private useLegacyUiPoolDataProvider(marketData: MarketDataType) {
if (
!marketData.v3 ||
marketData.marketTitle === 'Fantom' ||
marketData.marketTitle === 'Harmony'
) {
// it's a v2 market, or it does not have v3.1 upgrade
return true;
}

return false;
}

async getReservesHumanized(marketData: MarketDataType): Promise<ReservesDataHumanized> {
const uiPoolDataProvider = this.getUiPoolDataService(marketData);
const uiPoolDataProvider = await this.getUiPoolDataService(marketData);
return uiPoolDataProvider.getReservesHumanized({
lendingPoolAddressProvider: marketData.addresses.LENDING_POOL_ADDRESS_PROVIDER,
});
Expand All @@ -34,7 +76,7 @@ export class UiPoolService {
marketData: MarketDataType,
user: string
): Promise<UserReservesDataHumanized> {
const uiPoolDataProvider = this.getUiPoolDataService(marketData);
const uiPoolDataProvider = await this.getUiPoolDataService(marketData);
return uiPoolDataProvider.getUserReservesHumanized({
user,
lendingPoolAddressProvider: marketData.addresses.LENDING_POOL_ADDRESS_PROVIDER,
Expand Down
11 changes: 11 additions & 0 deletions src/ui-config/marketsConfig.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ export type MarketDataType = {
WALLET_BALANCE_PROVIDER: string;
L2_ENCODER?: string;
UI_POOL_DATA_PROVIDER: string;
V3_1_UI_POOL_DATA_PROVIDER?: string;
UI_INCENTIVE_DATA_PROVIDER?: string;
COLLECTOR?: string;
V3_MIGRATOR?: string;
Expand Down Expand Up @@ -133,6 +134,7 @@ export const marketsData: {
SWAP_COLLATERAL_ADAPTER: AaveV3Ethereum.SWAP_COLLATERAL_ADAPTER,
WALLET_BALANCE_PROVIDER: AaveV3Ethereum.WALLET_BALANCE_PROVIDER,
UI_POOL_DATA_PROVIDER: AaveV3Ethereum.UI_POOL_DATA_PROVIDER,
V3_1_UI_POOL_DATA_PROVIDER: '0x5c5228ac8bc1528482514af3e27e692495148717',
UI_INCENTIVE_DATA_PROVIDER: AaveV3Ethereum.UI_INCENTIVE_DATA_PROVIDER,
COLLECTOR: AaveV3Ethereum.COLLECTOR,
GHO_TOKEN_ADDRESS: AaveV3Ethereum.ASSETS.GHO.UNDERLYING,
Expand Down Expand Up @@ -298,6 +300,7 @@ export const marketsData: {
WETH_GATEWAY: AaveV3Base.WETH_GATEWAY,
WALLET_BALANCE_PROVIDER: AaveV3Base.WALLET_BALANCE_PROVIDER,
UI_POOL_DATA_PROVIDER: AaveV3Base.UI_POOL_DATA_PROVIDER,
V3_1_UI_POOL_DATA_PROVIDER: '0x5d4D4007A4c6336550DdAa2a7c0d5e7972eebd16',
UI_INCENTIVE_DATA_PROVIDER: AaveV3Base.UI_INCENTIVE_DATA_PROVIDER,
L2_ENCODER: AaveV3Base.L2_ENCODER,
COLLECTOR: AaveV3Base.COLLECTOR,
Expand Down Expand Up @@ -346,6 +349,7 @@ export const marketsData: {
WETH_GATEWAY: AaveV3Arbitrum.WETH_GATEWAY,
WALLET_BALANCE_PROVIDER: AaveV3Arbitrum.WALLET_BALANCE_PROVIDER,
UI_POOL_DATA_PROVIDER: AaveV3Arbitrum.UI_POOL_DATA_PROVIDER,
V3_1_UI_POOL_DATA_PROVIDER: '0x5d4d4007a4c6336550ddaa2a7c0d5e7972eebd16',
UI_INCENTIVE_DATA_PROVIDER: AaveV3Arbitrum.UI_INCENTIVE_DATA_PROVIDER,
L2_ENCODER: AaveV3Arbitrum.L2_ENCODER,
COLLECTOR: AaveV3Arbitrum.COLLECTOR,
Expand Down Expand Up @@ -395,6 +399,7 @@ export const marketsData: {
SWAP_COLLATERAL_ADAPTER: AaveV3Avalanche.SWAP_COLLATERAL_ADAPTER,
WALLET_BALANCE_PROVIDER: AaveV3Avalanche.WALLET_BALANCE_PROVIDER,
UI_POOL_DATA_PROVIDER: AaveV3Avalanche.UI_POOL_DATA_PROVIDER,
V3_1_UI_POOL_DATA_PROVIDER: '0x5598bbfa2f4fe8151f45bba0a3ede1b54b51a0a9',
UI_INCENTIVE_DATA_PROVIDER: AaveV3Avalanche.UI_INCENTIVE_DATA_PROVIDER,
COLLECTOR: AaveV3Avalanche.COLLECTOR,
DEBT_SWITCH_ADAPTER: AaveV3Avalanche.DEBT_SWAP_ADAPTER,
Expand Down Expand Up @@ -538,6 +543,7 @@ export const marketsData: {
WETH_GATEWAY: AaveV3Optimism.WETH_GATEWAY,
WALLET_BALANCE_PROVIDER: AaveV3Optimism.WALLET_BALANCE_PROVIDER,
UI_POOL_DATA_PROVIDER: AaveV3Optimism.UI_POOL_DATA_PROVIDER,
V3_1_UI_POOL_DATA_PROVIDER: '0x5598bbfa2f4fe8151f45bba0a3ede1b54b51a0a9',
UI_INCENTIVE_DATA_PROVIDER: AaveV3Optimism.UI_INCENTIVE_DATA_PROVIDER,
L2_ENCODER: AaveV3Optimism.L2_ENCODER,
COLLECTOR: AaveV3Optimism.COLLECTOR,
Expand Down Expand Up @@ -569,6 +575,7 @@ export const marketsData: {
SWAP_COLLATERAL_ADAPTER: AaveV3Polygon.SWAP_COLLATERAL_ADAPTER,
WALLET_BALANCE_PROVIDER: AaveV3Polygon.WALLET_BALANCE_PROVIDER,
UI_POOL_DATA_PROVIDER: AaveV3Polygon.UI_POOL_DATA_PROVIDER,
V3_1_UI_POOL_DATA_PROVIDER: '0x5598bbfa2f4fe8151f45bba0a3ede1b54b51a0a9',
UI_INCENTIVE_DATA_PROVIDER: AaveV3Polygon.UI_INCENTIVE_DATA_PROVIDER,
COLLECTOR: AaveV3Polygon.COLLECTOR,
DEBT_SWITCH_ADAPTER: AaveV3Polygon.DEBT_SWAP_ADAPTER,
Expand Down Expand Up @@ -608,6 +615,7 @@ export const marketsData: {
WETH_GATEWAY: '0x0', // not applicable for Metis
WALLET_BALANCE_PROVIDER: AaveV3Metis.WALLET_BALANCE_PROVIDER,
UI_POOL_DATA_PROVIDER: AaveV3Metis.UI_POOL_DATA_PROVIDER,
V3_1_UI_POOL_DATA_PROVIDER: '0xc851e6147dcE6A469CC33BE3121b6B2D4CaD2763',
UI_INCENTIVE_DATA_PROVIDER: AaveV3Metis.UI_INCENTIVE_DATA_PROVIDER,
COLLECTOR: AaveV3Metis.COLLECTOR,
},
Expand All @@ -624,6 +632,7 @@ export const marketsData: {
WETH_GATEWAY: AaveV3Gnosis.WETH_GATEWAY,
WALLET_BALANCE_PROVIDER: AaveV3Gnosis.WALLET_BALANCE_PROVIDER,
UI_POOL_DATA_PROVIDER: AaveV3Gnosis.UI_POOL_DATA_PROVIDER,
V3_1_UI_POOL_DATA_PROVIDER: '0xc851e6147dce6a469cc33be3121b6b2d4cad2763',
UI_INCENTIVE_DATA_PROVIDER: AaveV3Gnosis.UI_INCENTIVE_DATA_PROVIDER,
COLLECTOR: AaveV3Gnosis.COLLECTOR,
},
Expand All @@ -649,6 +658,7 @@ export const marketsData: {
SWAP_COLLATERAL_ADAPTER: AaveV3BNB.SWAP_COLLATERAL_ADAPTER,
WALLET_BALANCE_PROVIDER: AaveV3BNB.WALLET_BALANCE_PROVIDER,
UI_POOL_DATA_PROVIDER: AaveV3BNB.UI_POOL_DATA_PROVIDER,
V3_1_UI_POOL_DATA_PROVIDER: '0x78f8bd884c3d738b74b420540659c82f392820e0',
UI_INCENTIVE_DATA_PROVIDER: AaveV3BNB.UI_INCENTIVE_DATA_PROVIDER,
COLLECTOR: AaveV3BNB.COLLECTOR,
DEBT_SWITCH_ADAPTER: AaveV3BNB.DEBT_SWAP_ADAPTER,
Expand All @@ -667,6 +677,7 @@ export const marketsData: {
WETH_GATEWAY: AaveV3Scroll.WETH_GATEWAY,
WALLET_BALANCE_PROVIDER: AaveV3Scroll.WALLET_BALANCE_PROVIDER,
UI_POOL_DATA_PROVIDER: AaveV3Scroll.UI_POOL_DATA_PROVIDER,
V3_1_UI_POOL_DATA_PROVIDER: '0xc851e6147dce6a469cc33be3121b6b2d4cad2763',
UI_INCENTIVE_DATA_PROVIDER: AaveV3Scroll.UI_INCENTIVE_DATA_PROVIDER,
COLLECTOR: AaveV3Scroll.COLLECTOR,
},
Expand Down
16 changes: 8 additions & 8 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@
# yarn lockfile v1


"@aave/contract-helpers@1.28.1":
version "1.28.1"
resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.28.1.tgz#c44c32ac7c76eea6eb02a426e69037b018523ec6"
integrity sha512-oUApAoxTjoxvXT3hR+8zKBn3pUArWqwJaXcDTOn82uRyK9igxcrU1ez6+OQgh7hGnBn2ccLeXPZHlJzGbhcGKw==
"@aave/contract-helpers@1.29.0":
version "1.29.0"
resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.29.0.tgz#75e817f44d9d2f0d77eefc8173ce191052f0497d"
integrity sha512-cjkkNNemqhE5uRfMMZuZqreGYbeP2B++VDLnJHOOvLVe9v9rm+RjxlzXJWx/cgVWhfccbqAFtHrP0NTg7HyjQw==
dependencies:
isomorphic-unfetch "^3.1.0"

"@aave/math-utils@1.28.1":
version "1.28.1"
resolved "https://registry.yarnpkg.com/@aave/math-utils/-/math-utils-1.28.1.tgz#13ce01727169b338e66eb7a069c113f4d65d7bfa"
integrity sha512-RYK62WDlmAgfgK8DgzM3M67sALDmYJCZIuq7qXef0fz6Zjtdmm7m33yyjUEF9y9lApT/vkYrdcER0rgZY9Ik8g==
"@aave/math-utils@1.29.0":
version "1.29.0"
resolved "https://registry.yarnpkg.com/@aave/math-utils/-/math-utils-1.29.0.tgz#9c0e2f02f29ac56e335d11707c0f9b1e19b63712"
integrity sha512-pYCFDNJdk9/tAAa5oh1wNdxrmzkQ83mqBVYnIVKmFR69obtwy+QeF5nKe2dUCTW8BfaS+/6fuj5iDK1hyx9/nA==

"@adobe/css-tools@^4.0.1":
version "4.0.1"
Expand Down

3 comments on commit 3750ffc

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This commit was deployed on ipfs

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This commit was deployed on ipfs

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This commit was deployed on ipfs

Please sign in to comment.