Skip to content

Commit

Permalink
feat: Emission admin AIP generator (#473)
Browse files Browse the repository at this point in the history
* feat: Emission admin AIP generator

* fix: outsource explorer list curration to viem

* fix: typo

Co-authored-by: Harsh Pandey <[email protected]>

* Update generator/features/emission.ts

Co-authored-by: Harsh Pandey <[email protected]>

* Update generator/features/emission.ts

Co-authored-by: Harsh Pandey <[email protected]>

---------

Co-authored-by: Harsh Pandey <[email protected]>
  • Loading branch information
Rozengarden and brotherlymite authored Oct 7, 2024
1 parent 5dd0d74 commit 226a629
Show file tree
Hide file tree
Showing 6 changed files with 122 additions and 1 deletion.
2 changes: 2 additions & 0 deletions generator/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import {eModeUpdates} from './features/eModesUpdates';
import {eModeAssets} from './features/eModesAssets';
import {priceFeedsUpdates} from './features/priceFeedsUpdates';
import {freezeUpdates} from './features/freeze';
import {emissionUpdates} from './features/emission';
import {assetListing, assetListingCustom} from './features/assetListing';
import {generateFiles, writeFiles} from './generator';
import {CHAIN_ID_CLIENT_MAP} from '@bgd-labs/js-utils';
Expand Down Expand Up @@ -79,6 +80,7 @@ const FEATURE_MODULES_V3 = [
assetListing,
assetListingCustom,
freezeUpdates,
emissionUpdates,
PLACEHOLDER_MODULE,
];

Expand Down
11 changes: 11 additions & 0 deletions generator/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import {
scroll,
zkSync,
} from 'viem/chains';
import {Client, Hex, getAddress} from 'viem';
import {CHAIN_ID_CLIENT_MAP} from '@bgd-labs/js-utils';

export const AVAILABLE_CHAINS = [
'Ethereum',
Expand Down Expand Up @@ -54,6 +56,15 @@ export function getPoolChain(pool: PoolIdentifier) {
return chain;
}

export function getExplorerLink(chainId: number, address: Hex) {
const client = CHAIN_ID_CLIENT_MAP[chainId];
let url = client.chain?.blockExplorers?.default.url;
if (url && url.endsWith('/')) {
url = url.slice(0, -1); // sanitize explorer url
}
return `${url}/address/${getAddress(address)}`;
}

export function getDate() {
const date = new Date();
const years = date.getFullYear();
Expand Down
97 changes: 97 additions & 0 deletions generator/features/emission.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
import {confirm} from '@inquirer/prompts';
import {CodeArtifact, FEATURE, FeatureModule, PoolIdentifier} from '../types';
import {getContract} from 'viem';
import {CHAIN_TO_CHAIN_ID, getPoolChain, getExplorerLink} from '../common';
import {TEST_EXECUTE_PROPOSAL} from '../utils/constants';
import {EmissionUpdate} from './types';
import {addressPrompt, translateJsAddressToSol} from '../prompts/addressPrompt';
import {CHAIN_ID_CLIENT_MAP} from '@bgd-labs/js-utils';

async function fetchEmission(pool: PoolIdentifier): Promise<EmissionUpdate> {
const asset = await addressPrompt({
message: 'Address of the reward asset for which emission admin will be set',
required: true,
});

const chain = getPoolChain(pool);
const erc20 = getContract({
abi: [
{
constant: true,
inputs: [],
name: 'symbol',
outputs: [{internalType: 'string', name: '', type: 'string'}],
payable: false,
stateMutability: 'view',
type: 'function',
},
],
client: CHAIN_ID_CLIENT_MAP[CHAIN_TO_CHAIN_ID[chain]],
address: asset,
});
let symbol = '';
try {
symbol = await erc20.read.symbol();
} catch (e) {
console.log('could not fetch the symbol - this is likely an error');
console.log(e);
}

const admin = await addressPrompt({
message: `Address of the emission admin for the selected reward asset (${symbol})`,
required: true,
});
return {
asset: asset,
symbol: symbol,
admin: admin,
};
}

export const emissionUpdates: FeatureModule<EmissionUpdate[]> = {
value: FEATURE.EMISSION,
description: 'Set the emission admin for an asset',
async cli({pool}) {
const response: EmissionUpdate[] = [];
let more: boolean = true;
while (more) {
response.push(await fetchEmission(pool));
more = await confirm({
message: 'Do you want to assign an emission admin to another asset?',
default: false,
});
}
return response;
},
build({pool, cfg}) {
const response: CodeArtifact = {
code: {
constants: cfg
.map((cfg) => [
`address public constant ${cfg.symbol} = ${translateJsAddressToSol(cfg.asset)};`,
`address public constant ${cfg.symbol}_ADMIN = ${translateJsAddressToSol(cfg.admin)};`,
])
.flat(),
execute: cfg.map(
(cfg) =>
`IEmissionManager(${pool}.EMISSION_MANAGER).setEmissionAdmin(${cfg.symbol}, ${cfg.symbol}_ADMIN);`,
),
},
test: {
fn: cfg.map(
(cfg) => `function test_${cfg.symbol}Admin() public {
${TEST_EXECUTE_PROPOSAL}
assertEq(IEmissionManager(${pool}.EMISSION_MANAGER).getEmissionAdmin(${translateJsAddressToSol(cfg.asset)}), ${translateJsAddressToSol(cfg.admin)});
}`,
),
},
aip: {
specification: cfg.map(
(cfg) =>
`The emission admin role for [${cfg.symbol}](${getExplorerLink(CHAIN_TO_CHAIN_ID[getPoolChain(pool)], cfg.asset)}) is granted to [${cfg.admin}](${getExplorerLink(CHAIN_TO_CHAIN_ID[getPoolChain(pool)], cfg.admin)}).\n`,
),
},
};
return response;
},
};
6 changes: 6 additions & 0 deletions generator/features/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,3 +105,9 @@ export interface TokenStream {
export interface FreezeUpdate extends AssetSelector {
shouldBeFrozen: boolean;
}

export interface EmissionUpdate {
asset: Hex;
symbol: string;
admin: Hex;
}
3 changes: 3 additions & 0 deletions generator/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
PriceFeedUpdate,
RateStrategyUpdate,
FreezeUpdate,
EmissionUpdate,
} from './features/types';
import {FlashBorrower} from './features/flashBorrower';

Expand Down Expand Up @@ -88,6 +89,7 @@ export enum FEATURE {
RATE_UPDATE_V3 = 'RATE_UPDATE_V3',
RATE_UPDATE_V2 = 'RATE_UPDATE_V2',
FREEZE = 'FREEZE',
EMISSION = 'EMISSION',
OTHERS = 'OTHERS',
}

Expand Down Expand Up @@ -136,6 +138,7 @@ export interface PoolConfig {
[FEATURE.RATE_UPDATE_V3]?: RateStrategyUpdate[]; // TODO: type could be improved
[FEATURE.RATE_UPDATE_V2]?: RateStrategyUpdate[];
[FEATURE.FREEZE]?: FreezeUpdate[];
[FEATURE.EMISSION]?: EmissionUpdate[];
[FEATURE.OTHERS]?: {};
};
cache: PoolCache;
Expand Down
4 changes: 3 additions & 1 deletion generator/utils/importsResolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ export function prefixWithImports(code: string) {
if (findMatch(code, 'GovernanceV3Ethereum')) {
imports += `import {GovernanceV3Ethereum} from 'aave-address-book/GovernanceV3Ethereum.sol';\n`;
}

if (findMatch(code, 'IEmissionManager')) {
imports += `import {IEmissionManager} from 'aave-v3-periphery/contracts/rewards/interfaces/IEmissionManager.sol';\n`;
}
return imports + code;
}

1 comment on commit 226a629

@github-actions
Copy link

Choose a reason for hiding this comment

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

Foundry report

forge 0.2.0 (8905af3 2024-10-07T00:22:53.772323752Z)
Build log
Compiling 487 files with Solc 0.8.20
Solc 0.8.20 finished in 338.72s
Compiler run successful with warnings:
Warning (2072): Unused local variable.
  --> src/20240603_Multi_MayFundingUpdate/AaveV3Arbitrum_MayFundingUpdate_20240603.t.sol:48:5:
   |
48 |     uint256 collectorUsdcBalanceBefore = IERC20(AaveV3ArbitrumAssets.USDC_UNDERLYING).balanceOf(
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Warning (2072): Unused local variable.
  --> src/20240603_Multi_MayFundingUpdate/AaveV3Arbitrum_MayFundingUpdate_20240603.t.sol:51:5:
   |
51 |     uint256 collectorAusdcBalanceBefore = IERC20(AaveV3ArbitrumAssets.USDC_A_TOKEN).balanceOf(
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Warning (2072): Unused local variable.
  --> src/20240603_Multi_MayFundingUpdate/AaveV3Optimism_MayFundingUpdate_20240603.t.sol:41:5:
   |
41 |     uint256 collectorUsdcBalanceBefore = IERC20(AaveV3OptimismAssets.USDC_UNDERLYING).balanceOf(
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Warning (2072): Unused local variable.
  --> src/20240603_Multi_MayFundingUpdate/AaveV3Optimism_MayFundingUpdate_20240603.t.sol:44:5:
   |
44 |     uint256 collectorAusdcBalanceBefore = IERC20(AaveV3OptimismAssets.USDC_A_TOKEN).balanceOf(
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Warning (2018): Function state mutability can be restricted to pure
   --> lib/aave-helpers/src/ProtocolV2TestBase.sol:663:3:
    |
663 |   function _logReserveConfig(ReserveConfig memory config) internal view {
    |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to view
   --> src/20240902_AaveV3EthereumEtherFi_EtherFiEthereumActivation/AaveV3EthereumEtherFi_EtherFiEthereumActivation_20240902.t.sol:101:3:
    |
101 |   function test_check_etherfi_v3_libraries_against_lido_v3_instance() public {
    |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (4591): There are more than 256 warnings. Ignoring the rest.

| Contract                                                                                 | Size (B) | Margin (B) |
|------------------------------------------------------------------------------------------|----------|------------|
| AaveGovernanceV2                                                                         |       44 |     24,532 |
| AaveSwapper                                                                              |    5,464 |     19,112 |
| AaveV2Avalanche                                                                          |       44 |     24,532 |
| AaveV2AvalancheAssets                                                                    |       44 |     24,532 |
| AaveV2Avalanche_RenewalOfAaveGuardian2024_20240708                                       |      348 |     24,228 |
| AaveV2Avalanche_ReserveFactorUpdatesAugust_20240726                                      |      988 |     23,588 |
| AaveV2Avalanche_ReserveFactorUpdatesLateAugust_20240821                                  |      988 |     23,588 |
| AaveV2Avalanche_ReserveFactorUpdatesLateSeptember_20240916                               |      988 |     23,588 |
| AaveV2Avalanche_ReserveFactorUpdatesMidJuly_20240711                                     |      988 |     23,588 |
| AaveV2Ethereum                                                                           |       44 |     24,532 |
| AaveV2EthereumAMM                                                                        |       44 |     24,532 |
| AaveV2EthereumAMMAssets                                                                  |       44 |     24,532 |
| AaveV2EthereumAMM_RenewalOfAaveGuardian2024_20240708                                     |      348 |     24,228 |
| AaveV2EthereumAssets                                                                     |       44 |     24,532 |
| AaveV2Ethereum_RenewalOfAaveGuardian2024_20240708                                        |      348 |     24,228 |
| AaveV2Ethereum_ReserveFactorUpdatesAugust_20240726                                       |      988 |     23,588 |
| AaveV2Ethereum_ReserveFactorUpdatesLateAugust_20240821                                   |      988 |     23,588 |
| AaveV2Ethereum_ReserveFactorUpdatesLateSeptember_20240916                                |      988 |     23,588 |
| AaveV2Ethereum_ReserveFactorUpdatesMidJuly_20240711                                      |      988 |     23,588 |
| AaveV2Ethereum_StablecoinIRCurveAmendment_20240829                                       |    1,811 |     22,765 |
| AaveV2Polygon                                                                            |       44 |     24,532 |
| AaveV2PolygonAssets                                                                      |       44 |     24,532 |
| AaveV2Polygon_RenewalOfAaveGuardian2024_20240708                                         |      348 |     24,228 |
| AaveV2Polygon_ReserveFactorUpdatesAugust_20240726                                        |    2,384 |     22,192 |
| AaveV2Polygon_ReserveFactorUpdatesLateAugust_20240821                                    |    2,384 |     22,192 |
| AaveV2Polygon_ReserveFactorUpdatesLateSeptember_20240916                                 |    2,384 |     22,192 |
| AaveV2Polygon_ReserveFactorUpdatesMidJuly_20240711                                       |    2,384 |     22,192 |
| AaveV3Arbitrum                                                                           |       44 |     24,532 |
| AaveV3ArbitrumAssets                                                                     |       44 |     24,532 |
| AaveV3ArbitrumEModes                                                                     |       44 |     24,532 |
| AaveV3ArbitrumExternalLibraries                                                          |       44 |     24,532 |
| AaveV3Arbitrum_AddFlashBorrowers_20240906                                                |      242 |     24,334 |
| AaveV3Arbitrum_ChaosLabsRiskParameterUpdatesLTVAndLTAlignment_20240913                   |    3,894 |     20,682 |
| AaveV3Arbitrum_HarmonizeWeETHParameters_20240911                                         |    3,315 |     21,261 |
| AaveV3Arbitrum_IncreaseGHOFacilitatorCapacity_20240722                                   |    3,481 |     21,095 |
| AaveV3Arbitrum_MayFundingUpdate_20240603                                                 |    1,238 |     23,338 |
| AaveV3Arbitrum_ReduceReserveFactorOnWstETH_20240716                                      |    3,324 |     21,252 |
| AaveV3Arbitrum_RenewalOfAaveGuardian2024_20240708                                        |    1,062 |     23,514 |
| AaveV3Arbitrum_ReserveFactorUpdatesAugust_20240726                                       |    3,324 |     21,252 |
| AaveV3Arbitrum_ReserveFactorUpdatesLateAugust_20240821                                   |    3,324 |     21,252 |
| AaveV3Arbitrum_ReserveFactorUpdatesLateSeptember_20240916                                |    3,324 |     21,252 |
| AaveV3Arbitrum_ReserveFactorUpdatesMidJuly_20240711                                      |    3,324 |     21,252 |
| AaveV3Arbitrum_StablecoinIRCurveAmendment_20240829                                       |    4,059 |     20,517 |
| AaveV3Avalanche                                                                          |       44 |     24,532 |
| AaveV3AvalancheAssets                                                                    |       44 |     24,532 |
| AaveV3AvalancheEModes                                                                    |       44 |     24,532 |
| AaveV3AvalancheExternalLibraries                                                         |       44 |     24,532 |
| AaveV3Avalanche_ChaosLabsRiskParameterUpdatesLTVAndLTAlignment_20240913                  |    3,748 |     20,828 |
| AaveV3Avalanche_ChaosLabsRiskParameterUpdatesSAVAXLTLTVAdjustment_20240920               |    3,570 |     21,006 |
| AaveV3Avalanche_IncreaseWETHOptimalRatio_20240818                                        |    3,326 |     21,250 |
| AaveV3Avalanche_RenewalOfAaveGuardian2024_20240708                                       |    1,062 |     23,514 |
| AaveV3Avalanche_RiskParameterUpdatesSAVAXOnAaveV3Avalanche_20240724                      |    3,304 |     21,272 |
| AaveV3Avalanche_StablecoinIRCurveAmendment_20240829                                      |    3,762 |     20,814 |
| AaveV3Avalanche_UpdatePoRExecutorV3RobotCancel_20240617                                  |      242 |     24,334 |
| AaveV3Avalanche_UpdatePoRExecutorV3RobotRegister_20240617                                |    2,250 |     22,326 |
| AaveV3BNB                                                                                |       44 |     24,532 |
| AaveV3BNBAssets                                                                          |       44 |     24,532 |
| AaveV3BNBEModes                                                                          |       44 |     24,532 |
| AaveV3BNBExternalLibraries                                                               |       44 |     24,532 |
| AaveV3BNB_ChaosLabsRiskParameterUpdatesDecreaseSupplyAndBorrowCapsOnAaveV3_20240906      |    3,202 |     21,374 |
| AaveV3BNB_ChaosLabsRiskParameterUpdatesLTVAndLTAlignment_20240913                        |    3,309 |     21,267 |
| AaveV3BNB_RenewalOfAaveGuardian2024_20240708                                             |    1,062 |     23,514 |
| AaveV3BNB_StablecoinIRCurveAmendment_20240829                                            |    3,619 |     20,957 |
| AaveV3Base                                                                               |       44 |     24,532 |
| AaveV3BaseAssets                                                                         |       44 |     24,532 |
| AaveV3BaseEModes                                                                         |       44 |     24,532 |
| AaveV3BaseExternalLibraries                                                              |       44 |     24,532 |
| AaveV3Base_ChaosLabsRiskParameterUpdatesLTVAndLTAlignment_20240913                       |    3,441 |     21,135 |
| AaveV3Base_HarmonizeWeETHParameters_20240911                                             |    3,311 |     21,265 |
| AaveV3Base_IncreaseWETHOptimalRatio_20240818                                             |    3,308 |     21,268 |
| AaveV3Base_MeritBaseIncentivesAndSuperfestMatching_20240812                              |    2,231 |     22,345 |
| AaveV3Base_OnboardCbBTCOnMainnetAndBase_20240917                                         |    4,621 |     19,955 |
| AaveV3Base_ReduceReserveFactorOnWstETH_20240716                                          |    3,320 |     21,256 |
| AaveV3Base_RenewalOfAaveGuardian2024_20240708                                            |    1,062 |     23,514 |
| AaveV3Base_ReserveFactorUpdatesAugust_20240726                                           |    3,320 |     21,256 |
| AaveV3Base_ReserveFactorUpdatesLateAugust_20240821                                       |    3,320 |     21,256 |
| AaveV3Base_ReserveFactorUpdatesLateSeptember_20240916                                    |    3,320 |     21,256 |
| AaveV3Base_ReserveFactorUpdatesMidJuly_20240711                                          |    3,320 |     21,256 |
| AaveV3Base_StablecoinIRCurveAmendment_20240829                                           |    3,309 |     21,267 |
| AaveV3Ethereum                                                                           |       44 |     24,532 |
| AaveV3EthereumAssets                                                                     |       44 |     24,532 |
| AaveV3EthereumEModes                                                                     |       44 |     24,532 |
| AaveV3EthereumEtherFi                                                                    |       44 |     24,532 |
| AaveV3EthereumEtherFiAssets                                                              |       44 |     24,532 |
| AaveV3EthereumEtherFiEModes                                                              |       44 |     24,532 |
| AaveV3EthereumEtherFiExternalLibraries                                                   |       44 |     24,532 |
| AaveV3EthereumEtherFi_AddFlashBorrowers_20240906                                         |      557 |     24,019 |
| AaveV3EthereumEtherFi_EtherFiEthereumActivation_20240902                                 |    6,828 |     17,748 |
| AaveV3EthereumExternalLibraries                                                          |       44 |     24,532 |
| AaveV3EthereumLido                                                                       |       44 |     24,532 |
| AaveV3EthereumLidoAssets                                                                 |       44 |     24,532 |
| AaveV3EthereumLidoEModes                                                                 |       44 |     24,532 |
| AaveV3EthereumLidoExternalLibraries                                                      |       44 |     24,532 |
| AaveV3EthereumLido_AddFlashBorrowers_20240906                                            |      557 |     24,019 |
| AaveV3EthereumLido_LidoEthereumInstanceActivation_20240720                               |    6,634 |     17,942 |
| AaveV3EthereumLido_OnboardUSDCToAaveV3LidoInstance_20241002                              |    4,620 |     19,956 |
| AaveV3EthereumLido_OnboardUSDSAndSUSDS_20240914                                          |    4,652 |     19,924 |
| AaveV3EthereumLido_SetACIAsEmissionManagerForWstETH_20240923                             |      456 |     24,120 |
| AaveV3EthereumLido_WETHLTV0AaveV3LidoInstance_20240729                                   |    3,306 |     21,270 |
| AaveV3EthereumLido_WstETHBorrowCapReduction_20240913                                     |    3,235 |     21,341 |
| AaveV3Ethereum_AaveLiquidityCommitteeFundingPhaseIV_20240930                             |      336 |     24,240 |
| AaveV3Ethereum_AddFlashBorrowers_20240906                                                |      242 |     24,334 |
| AaveV3Ethereum_ChaosLabsRiskParameterUpdatesDecreaseSupplyAndBorrowCapsOnAaveV3_20240906 |    3,329 |     21,247 |
| AaveV3Ethereum_ChaosLabsRiskParameterUpdatesLTVAndLTAlignment_20240913                   |    3,590 |     20,986 |
| AaveV3Ethereum_EventsGrant2024_20240718                                                  |      336 |     24,240 |
| AaveV3Ethereum_GHOBorrowRateUpdate_20240814                                              |    3,313 |     21,263 |
| AaveV3Ethereum_GhoBorrowRateUpdateAugust2024_20240831                                    |    3,313 |     21,263 |
| AaveV3Ethereum_GhoBorrowRateUpdateSeptember2024_20240912                                 |    3,313 |     21,263 |
| AaveV3Ethereum_HarmonizeWeETHParameters_20240911                                         |    3,315 |     21,261 |
| AaveV3Ethereum_IncreaseGHOFacilitatorCapacity_20240722                                   |      214 |     24,362 |
| AaveV3Ethereum_JulyFundingUpdate_20240729                                                |    4,577 |     19,999 |
| AaveV3Ethereum_MayFundingUpdatePartB_20240917                                            |    4,647 |     19,929 |
| AaveV3Ethereum_MayFundingUpdate_20240603                                                 |    9,177 |     15,399 |
| AaveV3Ethereum_MeritBaseIncentivesAndSuperfestMatching_20240812                          |      326 |     24,250 |
| AaveV3Ethereum_OnboardCbBTCOnMainnetAndBase_20240917                                     |    4,626 |     19,950 |
| AaveV3Ethereum_OnboardTbtc_20240917                                                      |    4,626 |     19,950 |
| AaveV3Ethereum_OnboardUSDSAndSUSDS_20240914                                              |    4,649 |     19,927 |
| AaveV3Ethereum_OrbitProgramRenewalQ32024_20240905                                        |    2,043 |     22,533 |
| AaveV3Ethereum_ReduceReserveFactorOnWstETH_20240716                                      |    3,324 |     21,252 |
| AaveV3Ethereum_RenewalOfAaveGuardian2024_20240708                                        |    1,062 |     23,514 |
| AaveV3Ethereum_RiskParameterUpdatesIncreaseUSDeDebtCeilingOnV3Ethereum_20240801          |    3,304 |     21,272 |
| AaveV3Ethereum_SetACIAsEmissionManagerForUSDSAndAUSDS_20240929                           |    1,562 |     23,014 |
| AaveV3Ethereum_StablecoinIRCurveAmendment_20240829                                       |    4,209 |     20,367 |
| AaveV3Ethereum_TokenLogicKarpatkeyServiceProviderPartnershipPhase2_20240723              |    1,375 |     23,201 |
| AaveV3Ethereum_ToolingUpdateAllowance_20240707                                           |      336 |     24,240 |
| AaveV3Ethereum_UpgradeAllAaveInstancesTo32_20240924                                      |      293 |     24,283 |
| AaveV3Gnosis                                                                             |       44 |     24,532 |
| AaveV3GnosisAssets                                                                       |       44 |     24,532 |
| AaveV3GnosisEModes                                                                       |       44 |     24,532 |
| AaveV3GnosisExternalLibraries                                                            |       44 |     24,532 |
| AaveV3Gnosis_ChaosLabsRiskParameterUpdatesLTVAndLTAlignment_20240913                     |    3,452 |     21,124 |
| AaveV3Gnosis_IncreaseWETHOptimalRatio_20240818                                           |    3,323 |     21,253 |
| AaveV3Gnosis_OnboardUSDCEOnGnosis_20240717                                               |    4,622 |     19,954 |
| AaveV3Gnosis_ReduceReserveFactorOnWstETH_20240716                                        |    3,322 |     21,254 |
| AaveV3Gnosis_RenewalOfAaveGuardian2024_20240708                                          |    1,062 |     23,514 |
| AaveV3Gnosis_ReserveFactorUpdatesLateAugust_20240821                                     |    3,322 |     21,254 |
| AaveV3Gnosis_ReserveFactorUpdatesLateSeptember_20240916                                  |    3,322 |     21,254 |
| AaveV3Gnosis_StablecoinIRCurveAmendment_20240829                                         |    3,610 |     20,966 |
| AaveV3Metis                                                                              |       44 |     24,532 |
| AaveV3MetisAssets                                                                        |       44 |     24,532 |
| AaveV3MetisEModes                                                                        |       44 |     24,532 |
| AaveV3MetisExternalLibraries                                                             |       44 |     24,532 |
| AaveV3Metis_ChaosLabsRiskParameterUpdatesLTVAndLTAlignment_20240913                      |    3,583 |     20,993 |
| AaveV3Metis_EnableMetisAsCollateralOnMetisChain_20240814                                 |    3,417 |     21,159 |
| AaveV3Metis_IncreaseWETHOptimalRatio_20240818                                            |    3,309 |     21,267 |
| AaveV3Metis_RenewalOfAaveGuardian2024_20240708                                           |    1,062 |     23,514 |
| AaveV3Optimism                                                                           |       44 |     24,532 |
| AaveV3OptimismAssets                                                                     |       44 |     24,532 |
| AaveV3OptimismEModes                                                                     |       44 |     24,532 |
| AaveV3OptimismExternalLibraries                                                          |       44 |     24,532 |
| AaveV3Optimism_AddFlashBorrowers_20240906                                                |      242 |     24,334 |
| AaveV3Optimism_ChaosLabsRiskParameterUpdatesDecreaseSupplyAndBorrowCapsOnAaveV3_20240906 |    3,286 |     21,290 |
| AaveV3Optimism_ChaosLabsRiskParameterUpdatesLTVAndLTAlignment_20240913                   |    4,033 |     20,543 |
| AaveV3Optimism_MayFundingUpdate_20240603                                                 |    1,174 |     23,402 |
| AaveV3Optimism_ReduceReserveFactorOnWstETH_20240716                                      |    3,324 |     21,252 |
| AaveV3Optimism_RenewalOfAaveGuardian2024_20240708                                        |    1,062 |     23,514 |
| AaveV3Optimism_ReserveFactorUpdatesAugust_20240726                                       |    3,324 |     21,252 |
| AaveV3Optimism_ReserveFactorUpdatesLateAugust_20240821                                   |    3,324 |     21,252 |
| AaveV3Optimism_ReserveFactorUpdatesLateSeptember_20240916                                |    3,324 |     21,252 |
| AaveV3Optimism_ReserveFactorUpdatesMidJuly_20240711                                      |    3,324 |     21,252 |
| AaveV3Optimism_StablecoinIRCurveAmendment_20240829                                       |    4,059 |     20,517 |
| AaveV3Polygon                                                                            |       44 |     24,532 |
| AaveV3PolygonAssets                                                                      |       44 |     24,532 |
| AaveV3PolygonEModes                                                                      |       44 |     24,532 |
| AaveV3PolygonExternalLibraries                                                           |       44 |     24,532 |
| AaveV3Polygon_ChaosLabsRiskParameterUpdatesLTVAndLTAlignment_20240913                    |    3,759 |     20,817 |
| AaveV3Polygon_IncreaseWETHOptimalRatio_20240818                                          |    3,324 |     21,252 |
| AaveV3Polygon_MayFundingUpdate_20240603                                                  |    4,773 |     19,803 |
| AaveV3Polygon_ReduceReserveFactorOnWstETH_20240716                                       |    3,323 |     21,253 |
| AaveV3Polygon_RenewalOfAaveGuardian2024_20240708                                         |    1,062 |     23,514 |
| AaveV3Polygon_ReserveFactorUpdatesAugust_20240726                                        |    3,323 |     21,253 |
| AaveV3Polygon_ReserveFactorUpdatesLateAugust_20240821                                    |    3,323 |     21,253 |
| AaveV3Polygon_ReserveFactorUpdatesLateSeptember_20240916                                 |    3,323 |     21,253 |
| AaveV3Polygon_ReserveFactorUpdatesMidJuly_20240711                                       |    3,323 |     21,253 |
| AaveV3Polygon_StablecoinIRCurveAmendment_20240829                                        |    4,058 |     20,518 |
| AaveV3Scroll                                                                             |       44 |     24,532 |
| AaveV3ScrollAssets                                                                       |       44 |     24,532 |
| AaveV3ScrollEModes                                                                       |       44 |     24,532 |
| AaveV3ScrollExternalLibraries                                                            |       44 |     24,532 |
| AaveV3Scroll_ChaosLabsRiskParameterUpdatesLTVAndLTAlignment_20240913                     |    3,439 |     21,137 |
| AaveV3Scroll_HarmonizeWeETHParameters_20240911                                           |    3,556 |     21,020 |
| AaveV3Scroll_IncreaseWETHOptimalRatio_20240818                                           |    3,310 |     21,266 |
| AaveV3Scroll_OnboardingWeETHToAaveV3OnScroll_20240731                                    |    4,638 |     19,938 |
| AaveV3Scroll_ReduceReserveFactorOnWstETH_20240716                                        |    3,322 |     21,254 |
| AaveV3Scroll_RenewalOfAaveGuardian2024_20240708                                          |    1,062 |     23,514 |
| AaveV3Scroll_StablecoinIRCurveAmendment_20240829                                         |    3,311 |     21,265 |
| Address                                                                                  |       44 |     24,532 |
| ChainHelpers                                                                             |       44 |     24,532 |
| ChainIds                                                                                 |       44 |     24,532 |
| CollectorUtils                                                                           |       44 |     24,532 |
| ConfiguratorInputTypes                                                                   |       44 |     24,532 |
| Create2Utils                                                                             |      121 |     24,455 |
| Create2UtilsZkSync                                                                       |      104 |     24,472 |
| DataTypes                                                                                |       44 |     24,532 |
| EngineFlags                                                                              |       44 |     24,532 |
| Errors                                                                                   |    4,652 |     19,924 |
| GatewayMock                                                                              |      239 |     24,337 |
| GovV3Helpers                                                                             |    2,518 |     22,058 |
| GovV3StorageHelpers                                                                      |       44 |     24,532 |
| GovernanceGuardians                                                                      |      292 |     24,284 |
| GovernanceV3Arbitrum                                                                     |       44 |     24,532 |
| GovernanceV3Avalanche                                                                    |       44 |     24,532 |
| GovernanceV3BNB                                                                          |       44 |     24,532 |
| GovernanceV3Base                                                                         |       44 |     24,532 |
| GovernanceV3Ethereum                                                                     |       44 |     24,532 |
| GovernanceV3Gnosis                                                                       |       44 |     24,532 |
| GovernanceV3Metis                                                                        |       44 |     24,532 |
| GovernanceV3Optimism                                                                     |       44 |     24,532 |
| GovernanceV3Polygon                                                                      |       44 |     24,532 |
| GovernanceV3PolygonZkEvm                                                                 |       44 |     24,532 |
| GovernanceV3Scroll                                                                       |       44 |     24,532 |
| GovernanceV3ZkSync                                                                       |       44 |     24,532 |
| IpfsUtils                                                                                |       44 |     24,532 |
| MiscArbitrum                                                                             |       44 |     24,532 |
| MiscAvalanche                                                                            |       44 |     24,532 |
| MiscBNB                                                                                  |       44 |     24,532 |
| MiscBase                                                                                 |       44 |     24,532 |
| MiscEthereum                                                                             |       44 |     24,532 |
| MiscGnosis                                                                               |       44 |     24,532 |
| MiscMetis                                                                                |       44 |     24,532 |
| MiscOptimism                                                                             |       44 |     24,532 |
| MiscPolygon                                                                              |       44 |     24,532 |
| MiscScroll                                                                               |       44 |     24,532 |
| OrbitProgramData                                                                         |      484 |     24,092 |
| Payloads                                                                                 |       44 |     24,532 |
| PayloadsControllerUtils                                                                  |       44 |     24,532 |
| ProtocolGuardians                                                                        |      292 |     24,284 |
| ProxyHelpers                                                                             |       44 |     24,532 |
| RenewalV2BasePayload                                                                     |      348 |     24,228 |
| RenewalV3BasePayload                                                                     |    1,062 |     23,514 |
| ReserveConfiguration                                                                     |      128 |     24,448 |
| RewardsDataTypes                                                                         |       44 |     24,532 |
| SafeCast                                                                                 |       44 |     24,532 |
| SafeERC20                                                                                |       44 |     24,532 |
| StorageHelpers                                                                           |       44 |     24,532 |
| TestNetChainIds                                                                          |       44 |     24,532 |
| WadRayMath                                                                               |       44 |     24,532 |
Test success 🌈

Please sign in to comment.