From b368d236cc385cba56cee2009278e67145e10325 Mon Sep 17 00:00:00 2001 From: MartinGbz Date: Mon, 23 Dec 2024 09:10:05 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Onboard=20AUSD=20Aave=20v3=20Avalan?= =?UTF-8?q?che=20(#530)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: USDS BR update * ✨ add ausd aave v3 avalanche * ✨ update md file * 🐛 fix AUSD_LM_ADMIN * Revert "feat: USDS BR update" This reverts commit 4fda3134c4f7f2eb89a388fac61c6c05e73e35a0. * 🐛 fix Collateral Enabled md to false * 🔧 change seed amount for 100 AUSD * ✨ generate test + fix issue wrong collector transfer * ⬆️ update aave-helpers lib * ✅ test passed + update diff * Revert "⬆️ update aave-helpers lib" This reverts commit b4b5022373e9ebbb73b39a84dea271d4117c79af. * 🔥 revert lib update * 🐛 update chainlink price feed for capo --------- Co-authored-by: Rozengarden --- ...eV3Avalanche_OnboardAUSD_20241125_after.md | 112 ++++++++++++++++++ .../AaveV3Avalanche_OnboardAUSD_20241125.sol | 72 +++++++++++ ...AaveV3Avalanche_OnboardAUSD_20241125.t.sol | 54 +++++++++ .../OnboardAUSD.md | 59 +++++++++ .../OnboardAUSD_20241125.s.sol | 57 +++++++++ .../config.ts | 48 ++++++++ 6 files changed, 402 insertions(+) create mode 100644 diffs/AaveV3Avalanche_OnboardAUSD_20241125_before_AaveV3Avalanche_OnboardAUSD_20241125_after.md create mode 100644 src/20241125_AaveV3Avalanche_OnboardAUSD/AaveV3Avalanche_OnboardAUSD_20241125.sol create mode 100644 src/20241125_AaveV3Avalanche_OnboardAUSD/AaveV3Avalanche_OnboardAUSD_20241125.t.sol create mode 100644 src/20241125_AaveV3Avalanche_OnboardAUSD/OnboardAUSD.md create mode 100644 src/20241125_AaveV3Avalanche_OnboardAUSD/OnboardAUSD_20241125.s.sol create mode 100644 src/20241125_AaveV3Avalanche_OnboardAUSD/config.ts diff --git a/diffs/AaveV3Avalanche_OnboardAUSD_20241125_before_AaveV3Avalanche_OnboardAUSD_20241125_after.md b/diffs/AaveV3Avalanche_OnboardAUSD_20241125_before_AaveV3Avalanche_OnboardAUSD_20241125_after.md new file mode 100644 index 000000000..55f375ec8 --- /dev/null +++ b/diffs/AaveV3Avalanche_OnboardAUSD_20241125_before_AaveV3Avalanche_OnboardAUSD_20241125_after.md @@ -0,0 +1,112 @@ +## Reserve changes + +### Reserves added + +#### AUSD ([0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a](https://snowtrace.io/address/0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a)) + +| description | value | +| --- | --- | +| decimals | 6 | +| isActive | true | +| isFrozen | false | +| supplyCap | 19,000,000 AUSD | +| borrowCap | 17,400,000 AUSD | +| debtCeiling | 0 $ [0] | +| isSiloed | false | +| isFlashloanable | true | +| oracle | [0x83f32c0882B12Ef16214c417efF11FD9e764bf34](https://snowtrace.io/address/0x83f32c0882B12Ef16214c417efF11FD9e764bf34) | +| oracleDecimals | 8 | +| oracleDescription | Capped AUSD / USD | +| oracleLatestAnswer | 0.99925546 | +| usageAsCollateralEnabled | false | +| ltv | 0 % [0] | +| liquidationThreshold | 0 % [0] | +| liquidationBonus | 0 % | +| liquidationProtocolFee | 0 % [0] | +| reserveFactor | 10 % [1000] | +| aToken | [0x724dc807b04555b71ed48a6896b6F41593b8C637](https://snowtrace.io/address/0x724dc807b04555b71ed48a6896b6F41593b8C637) | +| aTokenImpl | [0x1E81af09001aD208BDa68FF022544dB2102A752d](https://snowtrace.io/address/0x1E81af09001aD208BDa68FF022544dB2102A752d) | +| variableDebtToken | [0xDC1fad70953Bb3918592b6fCc374fe05F5811B6a](https://snowtrace.io/address/0xDC1fad70953Bb3918592b6fCc374fe05F5811B6a) | +| variableDebtTokenImpl | [0xa0d9C1E9E48Ca30c8d8C3B5D69FF5dc1f6DFfC24](https://snowtrace.io/address/0xa0d9C1E9E48Ca30c8d8C3B5D69FF5dc1f6DFfC24) | +| borrowingEnabled | true | +| isBorrowableInIsolation | false | +| interestRateStrategy | [0xCe1C5509f2f4d755aA64B8D135B15ec6F12a93da](https://snowtrace.io/address/0xCe1C5509f2f4d755aA64B8D135B15ec6F12a93da) | +| aTokenName | Aave Avalanche AUSD | +| aTokenSymbol | aAvaAUSD | +| aTokenUnderlyingBalance | 100 AUSD [100000000] | +| id | 12 | +| isPaused | false | +| variableDebtTokenName | Aave Avalanche Variable Debt AUSD | +| variableDebtTokenSymbol | variableDebtAvaAUSD | +| virtualAccountingActive | true | +| virtualBalance | 100 AUSD [100000000] | +| optimalUsageRatio | 90 % | +| maxVariableBorrowRate | 80.5 % | +| baseVariableBorrowRate | 0 % | +| variableRateSlope1 | 5.5 % | +| variableRateSlope2 | 75 % | +| interestRate | ![ir](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | + + +## Raw diff + +```json +{ + "reserves": { + "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a": { + "from": null, + "to": { + "aToken": "0x724dc807b04555b71ed48a6896b6F41593b8C637", + "aTokenImpl": "0x1E81af09001aD208BDa68FF022544dB2102A752d", + "aTokenName": "Aave Avalanche AUSD", + "aTokenSymbol": "aAvaAUSD", + "aTokenUnderlyingBalance": "100000000", + "borrowCap": 17400000, + "borrowingEnabled": true, + "debtCeiling": 0, + "decimals": 6, + "id": 12, + "interestRateStrategy": "0xCe1C5509f2f4d755aA64B8D135B15ec6F12a93da", + "isActive": true, + "isBorrowableInIsolation": false, + "isFlashloanable": true, + "isFrozen": false, + "isPaused": false, + "isSiloed": false, + "liquidationBonus": 0, + "liquidationProtocolFee": 0, + "liquidationThreshold": 0, + "ltv": 0, + "oracle": "0x83f32c0882B12Ef16214c417efF11FD9e764bf34", + "oracleDecimals": 8, + "oracleDescription": "Capped AUSD / USD", + "oracleLatestAnswer": "99925546", + "reserveFactor": 1000, + "supplyCap": 19000000, + "symbol": "AUSD", + "underlying": "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a", + "usageAsCollateralEnabled": false, + "variableDebtToken": "0xDC1fad70953Bb3918592b6fCc374fe05F5811B6a", + "variableDebtTokenImpl": "0xa0d9C1E9E48Ca30c8d8C3B5D69FF5dc1f6DFfC24", + "variableDebtTokenName": "Aave Avalanche Variable Debt AUSD", + "variableDebtTokenSymbol": "variableDebtAvaAUSD", + "virtualAccountingActive": true, + "virtualBalance": "100000000" + } + } + }, + "strategies": { + "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a": { + "from": null, + "to": { + "address": "0xCe1C5509f2f4d755aA64B8D135B15ec6F12a93da", + "baseVariableBorrowRate": "0", + "maxVariableBorrowRate": "805000000000000000000000000", + "optimalUsageRatio": "900000000000000000000000000", + "variableRateSlope1": "55000000000000000000000000", + "variableRateSlope2": "750000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/src/20241125_AaveV3Avalanche_OnboardAUSD/AaveV3Avalanche_OnboardAUSD_20241125.sol b/src/20241125_AaveV3Avalanche_OnboardAUSD/AaveV3Avalanche_OnboardAUSD_20241125.sol new file mode 100644 index 000000000..eb4473203 --- /dev/null +++ b/src/20241125_AaveV3Avalanche_OnboardAUSD/AaveV3Avalanche_OnboardAUSD_20241125.sol @@ -0,0 +1,72 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Avalanche} from 'aave-address-book/AaveV3Avalanche.sol'; +import {GovernanceV3Avalanche} from 'aave-address-book/GovernanceV3Avalanche.sol'; +import {AaveV3PayloadAvalanche} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadAvalanche.sol'; +import {EngineFlags} from 'aave-v3-origin/contracts/extensions/v3-config-engine/EngineFlags.sol'; +import {IAaveV3ConfigEngine} from 'aave-v3-origin/contracts/extensions/v3-config-engine/IAaveV3ConfigEngine.sol'; +import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol'; +import {SafeERC20} from 'solidity-utils/contracts/oz-common/SafeERC20.sol'; +import {IEmissionManager} from 'aave-v3-origin/contracts/rewards/interfaces/IEmissionManager.sol'; +/** + * @title Onboard AUSD + * @author ACI + * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0x021b40c7042ce770c0ce1ee5ff63591c132a9f0f12e3a1cb92fa209299793dec + * - Discussion: https://governance.aave.com/t/arfc-onboard-ausd-to-aave-v3-on-avalanche/19689 + */ +contract AaveV3Avalanche_OnboardAUSD_20241125 is AaveV3PayloadAvalanche { + using SafeERC20 for IERC20; + + address public constant AUSD = 0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a; + uint256 public constant AUSD_SEED_AMOUNT = 100e6; + address public constant AUSD_ADMIN = 0xac140648435d03f784879cd789130F22Ef588Fcd; + + function _postExecute() internal override { + // transfer AUSD seed amount from collector to executor (fix the mistakes of wrong AUSD seed amount reicipient) + AaveV3Avalanche.COLLECTOR.transfer( + AUSD, + GovernanceV3Avalanche.EXECUTOR_LVL_1, + AUSD_SEED_AMOUNT + ); + + IERC20(AUSD).forceApprove(address(AaveV3Avalanche.POOL), AUSD_SEED_AMOUNT); + AaveV3Avalanche.POOL.supply(AUSD, AUSD_SEED_AMOUNT, address(AaveV3Avalanche.COLLECTOR), 0); + + (address aAUSD, , ) = AaveV3Avalanche.AAVE_PROTOCOL_DATA_PROVIDER.getReserveTokensAddresses( + AUSD + ); + IEmissionManager(AaveV3Avalanche.EMISSION_MANAGER).setEmissionAdmin(AUSD, AUSD_ADMIN); + IEmissionManager(AaveV3Avalanche.EMISSION_MANAGER).setEmissionAdmin(aAUSD, AUSD_ADMIN); + } + + function newListings() public pure override returns (IAaveV3ConfigEngine.Listing[] memory) { + IAaveV3ConfigEngine.Listing[] memory listings = new IAaveV3ConfigEngine.Listing[](1); + + listings[0] = IAaveV3ConfigEngine.Listing({ + asset: AUSD, + assetSymbol: 'AUSD', + priceFeed: 0x83f32c0882B12Ef16214c417efF11FD9e764bf34, + enabledToBorrow: EngineFlags.ENABLED, + borrowableInIsolation: EngineFlags.DISABLED, + withSiloedBorrowing: EngineFlags.DISABLED, + flashloanable: EngineFlags.ENABLED, + ltv: 0, + liqThreshold: 0, + liqBonus: 0, + reserveFactor: 10_00, + supplyCap: 19_000_000, + borrowCap: 17_400_000, + debtCeiling: 0, + liqProtocolFee: 0, + rateStrategyParams: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: 90_00, + baseVariableBorrowRate: 0, + variableRateSlope1: 5_50, + variableRateSlope2: 75_00 + }) + }); + + return listings; + } +} diff --git a/src/20241125_AaveV3Avalanche_OnboardAUSD/AaveV3Avalanche_OnboardAUSD_20241125.t.sol b/src/20241125_AaveV3Avalanche_OnboardAUSD/AaveV3Avalanche_OnboardAUSD_20241125.t.sol new file mode 100644 index 000000000..84ffc0223 --- /dev/null +++ b/src/20241125_AaveV3Avalanche_OnboardAUSD/AaveV3Avalanche_OnboardAUSD_20241125.t.sol @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {GovV3Helpers} from 'aave-helpers/src/GovV3Helpers.sol'; +import {AaveV3Avalanche} from 'aave-address-book/AaveV3Avalanche.sol'; +import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol'; +import {IEmissionManager} from 'aave-v3-origin/contracts/rewards/interfaces/IEmissionManager.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3Avalanche_OnboardAUSD_20241125} from './AaveV3Avalanche_OnboardAUSD_20241125.sol'; + +/** + * @dev Test for AaveV3Avalanche_OnboardAUSD_20241125 + * command: FOUNDRY_PROFILE=avalanche forge test --match-path=src/20241125_AaveV3Avalanche_OnboardAUSD/AaveV3Avalanche_OnboardAUSD_20241125.t.sol -vv + */ +contract AaveV3Avalanche_OnboardAUSD_20241125_Test is ProtocolV3TestBase { + AaveV3Avalanche_OnboardAUSD_20241125 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('avalanche'), 54627124); + proposal = new AaveV3Avalanche_OnboardAUSD_20241125(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest('AaveV3Avalanche_OnboardAUSD_20241125', AaveV3Avalanche.POOL, address(proposal)); + } + + function test_collectorHasAUSDFunds() public { + GovV3Helpers.executePayload(vm, address(proposal)); + (address aTokenAddress, , ) = AaveV3Avalanche + .AAVE_PROTOCOL_DATA_PROVIDER + .getReserveTokensAddresses(proposal.AUSD()); + assertGe(IERC20(aTokenAddress).balanceOf(address(AaveV3Avalanche.COLLECTOR)), 100 * 10 ** 6); + } + + function test_AUSDAdmin() public { + GovV3Helpers.executePayload(vm, address(proposal)); + (address aAUSD, , ) = AaveV3Avalanche.AAVE_PROTOCOL_DATA_PROVIDER.getReserveTokensAddresses( + proposal.AUSD() + ); + assertEq( + IEmissionManager(AaveV3Avalanche.EMISSION_MANAGER).getEmissionAdmin(proposal.AUSD()), + proposal.AUSD_ADMIN() + ); + assertEq( + IEmissionManager(AaveV3Avalanche.EMISSION_MANAGER).getEmissionAdmin(aAUSD), + proposal.AUSD_ADMIN() + ); + } +} diff --git a/src/20241125_AaveV3Avalanche_OnboardAUSD/OnboardAUSD.md b/src/20241125_AaveV3Avalanche_OnboardAUSD/OnboardAUSD.md new file mode 100644 index 000000000..e20d1351d --- /dev/null +++ b/src/20241125_AaveV3Avalanche_OnboardAUSD/OnboardAUSD.md @@ -0,0 +1,59 @@ +--- +title: "Onboard AUSD" +author: "ACI" +discussions: "https://governance.aave.com/t/arfc-onboard-ausd-to-aave-v3-on-avalanche/19689" +snapshot: "https://snapshot.org/#/aave.eth/proposal/0x021b40c7042ce770c0ce1ee5ff63591c132a9f0f12e3a1cb92fa209299793dec" +--- + +## Simple Summary + +This proposal seeks to onboard AUSD, a secure digital dollar backed 1:1 by USD fiat, to Aave V3 on Avalanche. AUSD, issued by Agora, serves as a stable and liquid alternative to USDT and USDC. With a growing AUM and robust liquidity, AUSD will enhance Aave’s liquidity pool, offering users a reliable and efficient stablecoin option with strong institutional backing. + +## Motivation + +Agora offers AUSD, a digital dollar minted 1:1 with USD fiat. AUSD is designed to be a secure digital currency, utilizing one of the world’s largest custodian banks to safeguard assets. AUSD enables users to participate in trading, lending and payments. It is the most cost-efficient stablecoin to transact with due to its gas-optimized smart contract, making it ideal for traders and payments. + +Agora operates an open partnership model, allowing collaboration with a diverse range of customers who meet KYB (Know Your Business) requirements and operate in jurisdictions we can serve. This approach contrasts with single partnership models (eg. Exchange-Backed Stables), ensuring that AUSD can be widely adopted across different ecosystems, providing liquidity and stability without conflicts of interest. + +AUSD is currently available on Ethereum, Avalanche, Sui and Mantle, garnering $70+ million in TVL and $12+ million in daily DEX volume since contract deployment. The reserve assets are managed by VanEck ($100B+ asset manager) and custodied with one of the largest global banks, ensuring security and safety. AUSD’s unique value proposition also includes zero-fee minting and redemption facilities, making it an attractive asset for all ecosystem participants. + +By integrating AUSD into Aave, users will gain access to a stable, liquid asset that supports trading, lending, and other decentralized finance activities. This integration aligns with Aave’s mission to decentralize finance while offering secure and reliable stablecoin options. + +## Specification + +The table below illustrates the configured risk parameters for **AUSD** + +| Parameter | Value | +| ------------------------- | -----------------------------------------: | +| Isolation Mode | false | +| Borrowable | ENABLED | +| Collateral Enabled | false | +| Supply Cap (AUSD) | 19,000,000 | +| Borrow Cap (AUSD) | 17,400,000 | +| Debt Ceiling | USD 0 | +| LTV | 0 % | +| LT | 0 % | +| Liquidation Bonus | 0 % | +| Liquidation Protocol Fee | 0 % | +| Reserve Factor | 10 % | +| Base Variable Borrow Rate | 0 % | +| Variable Slope 1 | 5.5 % | +| Variable Slope 2 | 75 % | +| Uoptimal | 90 % | +| Flashloanable | ENABLED | +| Siloed Borrowing | DISABLED | +| Borrowable in Isolation | DISABLED | +| Oracle | 0x83f32c0882B12Ef16214c417efF11FD9e764bf34 | + +Additionaly [0xac140648435d03f784879cd789130F22Ef588Fcd](https://snowtrace.io/address/0xac140648435d03f784879cd789130F22Ef588Fcd) has been set as the emission admin for AUSD and the corresponding aToken. + +## References + +- Implementation: [AaveV3Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241125_AaveV3Avalanche_OnboardAUSD/AaveV3Avalanche_OnboardAUSD_20241125.sol) +- Tests: [AaveV3Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241125_AaveV3Avalanche_OnboardAUSD/AaveV3Avalanche_OnboardAUSD_20241125.t.sol) +- [Snapshot](https://snapshot.org/#/aave.eth/proposal/0x021b40c7042ce770c0ce1ee5ff63591c132a9f0f12e3a1cb92fa209299793dec) +- [Discussion](https://governance.aave.com/t/arfc-onboard-ausd-to-aave-v3-on-avalanche/19689) + +## Copyright + +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/src/20241125_AaveV3Avalanche_OnboardAUSD/OnboardAUSD_20241125.s.sol b/src/20241125_AaveV3Avalanche_OnboardAUSD/OnboardAUSD_20241125.s.sol new file mode 100644 index 000000000..6818d1683 --- /dev/null +++ b/src/20241125_AaveV3Avalanche_OnboardAUSD/OnboardAUSD_20241125.s.sol @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {GovV3Helpers, IPayloadsControllerCore, PayloadsControllerUtils} from 'aave-helpers/src/GovV3Helpers.sol'; +import {GovernanceV3Ethereum} from 'aave-address-book/GovernanceV3Ethereum.sol'; +import {EthereumScript, AvalancheScript} from 'solidity-utils/contracts/utils/ScriptUtils.sol'; +import {AaveV3Avalanche_OnboardAUSD_20241125} from './AaveV3Avalanche_OnboardAUSD_20241125.sol'; + +/** + * @dev Deploy Avalanche + * deploy-command: make deploy-ledger contract=src/20241125_AaveV3Avalanche_OnboardAUSD/OnboardAUSD_20241125.s.sol:DeployAvalanche chain=avalanche + * verify-command: FOUNDRY_PROFILE=avalanche npx catapulta-verify -b broadcast/OnboardAUSD_20241125.s.sol/43114/run-latest.json + */ +contract DeployAvalanche is AvalancheScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Avalanche_OnboardAUSD_20241125).creationCode + ); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](1); + actions[0] = GovV3Helpers.buildAction(payload0); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} + +/** + * @dev Create Proposal + * command: make deploy-ledger contract=src/20241125_AaveV3Avalanche_OnboardAUSD/OnboardAUSD_20241125.s.sol:CreateProposal chain=mainnet + */ +contract CreateProposal is EthereumScript { + function run() external { + // create payloads + PayloadsControllerUtils.Payload[] memory payloads = new PayloadsControllerUtils.Payload[](1); + + // compose actions for validation + IPayloadsControllerCore.ExecutionAction[] + memory actionsAvalanche = new IPayloadsControllerCore.ExecutionAction[](1); + actionsAvalanche[0] = GovV3Helpers.buildAction( + type(AaveV3Avalanche_OnboardAUSD_20241125).creationCode + ); + payloads[0] = GovV3Helpers.buildAvalanchePayload(vm, actionsAvalanche); + + // create proposal + vm.startBroadcast(); + GovV3Helpers.createProposal( + vm, + payloads, + GovernanceV3Ethereum.VOTING_PORTAL_ETH_POL, + GovV3Helpers.ipfsHashFile(vm, 'src/20241125_AaveV3Avalanche_OnboardAUSD/OnboardAUSD.md') + ); + } +} diff --git a/src/20241125_AaveV3Avalanche_OnboardAUSD/config.ts b/src/20241125_AaveV3Avalanche_OnboardAUSD/config.ts new file mode 100644 index 000000000..0010ab5ae --- /dev/null +++ b/src/20241125_AaveV3Avalanche_OnboardAUSD/config.ts @@ -0,0 +1,48 @@ +import {ConfigFile} from '../../generator/types'; +export const config: ConfigFile = { + rootOptions: { + pools: ['AaveV3Avalanche'], + title: 'Onboard AUSD', + shortName: 'OnboardAUSD', + date: '20241125', + author: 'ACI', + discussion: 'https://governance.aave.com/t/arfc-onboard-ausd-to-aave-v3-on-avalanche/19689', + snapshot: + 'https://snapshot.org/#/aave.eth/proposal/0x021b40c7042ce770c0ce1ee5ff63591c132a9f0f12e3a1cb92fa209299793dec', + votingNetwork: 'POLYGON', + }, + poolOptions: { + AaveV3Avalanche: { + configs: { + ASSET_LISTING: [ + { + assetSymbol: 'AUSD', + decimals: 6, + priceFeed: '0x83f32c0882B12Ef16214c417efF11FD9e764bf34', + ltv: '0', + liqThreshold: '0', + liqBonus: '0', + debtCeiling: '0', + liqProtocolFee: '0', + enabledToBorrow: 'ENABLED', + flashloanable: 'ENABLED', + borrowableInIsolation: 'DISABLED', + withSiloedBorrowing: 'DISABLED', + reserveFactor: '10', + supplyCap: '19000000', + borrowCap: '17400000', + rateStrategyParams: { + optimalUtilizationRate: '90', + baseVariableBorrowRate: '0', + variableRateSlope1: '5.5', + variableRateSlope2: '75', + }, + asset: '0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a', + admin: '0xac140648435d03f784879cd789130F22Ef588Fcd', + }, + ], + }, + cache: {blockNumber: 53616852}, + }, + }, +};