From aa36b1db1a086f45cb19ec717653b2d1c0d363bb Mon Sep 17 00:00:00 2001 From: Harsh Pandey Date: Tue, 18 Mar 2025 14:06:46 +0530 Subject: [PATCH] feat: add celo network --- .gitmodules | 3 ++- foundry.toml | 5 +++++ generator/common.ts | 3 +++ generator/types.ts | 1 + lib/aave-helpers | 2 +- package.json | 2 +- scripts/deploy/DeployStewards.s.sol | 16 ++++++++++++++++ scripts/networks/RiskStewardsCelo.s.sol | 11 +++++++++++ 8 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 scripts/networks/RiskStewardsCelo.s.sol diff --git a/.gitmodules b/.gitmodules index 108ab7a..f4f8bbc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,4 +3,5 @@ url = https://github.com/bgd-labs/aave-capo [submodule "lib/aave-helpers"] path = lib/aave-helpers - url = https://github.com/bgd-labs/aave-helpers \ No newline at end of file + url = https://github.com/bgd-labs/aave-helpers + branch = main diff --git a/foundry.toml b/foundry.toml index b458a0c..6e326b1 100644 --- a/foundry.toml +++ b/foundry.toml @@ -35,6 +35,9 @@ evm_version = 'london' [profile.sonic] evm_version = 'cancun' +[profile.celo] +evm_version = 'paris' + [rpc_endpoints] mainnet = "${RPC_MAINNET}" optimism = "${RPC_OPTIMISM}" @@ -52,6 +55,7 @@ scroll = "${RPC_SCROLL}" zksync = "${RPC_ZKSYNC}" linea = "${RPC_LINEA}" sonic = "${RPC_SONIC}" +celo = "${RPC_CELO}" [etherscan] mainnet = { key="${ETHERSCAN_API_KEY_MAINNET}", chainId=1 } @@ -69,5 +73,6 @@ scroll = { key="${ETHERSCAN_API_KEY_SCROLL}", chainId= 534352 } zksync = { key="${ETHERSCAN_API_KEY_ZKSYNC}", chainId= 324 } linea = { key="${ETHERSCAN_API_KEY_LINEA}", chain = 59144 } sonic = { key="${ETHERSCAN_API_KEY_SONIC}", chain = 146 } +celo = { key="${ETHERSCAN_API_KEY_CELO}", chain = 42220 } # See more config options https://github.com/gakonst/foundry/tree/master/config diff --git a/generator/common.ts b/generator/common.ts index be5a025..ad3f18d 100644 --- a/generator/common.ts +++ b/generator/common.ts @@ -14,6 +14,7 @@ import { zkSync, linea, sonic, + celo, } from 'viem/chains'; export const AVAILABLE_CHAINS = [ @@ -32,6 +33,7 @@ export const AVAILABLE_CHAINS = [ 'ZkSync', 'Linea', 'Sonic', + 'Celo', ] as const; export function getAssets(pool: PoolIdentifier): string[] { @@ -117,6 +119,7 @@ export const CHAIN_TO_CHAIN_ID = { ZkSync: zkSync.id, Linea: linea.id, Sonic: sonic.id, + Celo: celo.id, }; export function flagAsRequired(message: string, required?: boolean) { diff --git a/generator/types.ts b/generator/types.ts index 74c4caa..12dba94 100644 --- a/generator/types.ts +++ b/generator/types.ts @@ -23,6 +23,7 @@ export const V3_POOLS = [ 'AaveV3ZkSync', 'AaveV3Linea', 'AaveV3Sonic', + 'AaveV3Celo', ] as const satisfies readonly (keyof typeof addressBook)[]; export const POOLS = [...V3_POOLS] as const satisfies readonly (keyof typeof addressBook)[]; diff --git a/lib/aave-helpers b/lib/aave-helpers index ec02d4f..30ae829 160000 --- a/lib/aave-helpers +++ b/lib/aave-helpers @@ -1 +1 @@ -Subproject commit ec02d4f715770c3e5fc998adebe81f9c15610246 +Subproject commit 30ae8291dbcde38ad398486765e458df3880e526 diff --git a/package.json b/package.json index d1e5230..3f63768 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "prettier": "2.8.7", "prettier-plugin-solidity": "1.1.3", "vitest": "^2.0.4", - "@bgd-labs/aave-address-book": "^4.12.0", + "@bgd-labs/aave-address-book": "^4.16.1", "@bgd-labs/aave-cli": "^1.1.12", "@bgd-labs/js-utils": "^1.4.7", "@inquirer/prompts": "^3.3.0", diff --git a/scripts/deploy/DeployStewards.s.sol b/scripts/deploy/DeployStewards.s.sol index fcfa6a7..69e66eb 100644 --- a/scripts/deploy/DeployStewards.s.sol +++ b/scripts/deploy/DeployStewards.s.sol @@ -28,6 +28,8 @@ import {AaveV3Linea} from 'aave-address-book/AaveV3Linea.sol'; import {GovernanceV3Linea} from 'aave-address-book/GovernanceV3Linea.sol'; import {AaveV3Sonic} from 'aave-address-book/AaveV3Sonic.sol'; import {GovernanceV3Sonic} from 'aave-address-book/GovernanceV3Sonic.sol'; +import {AaveV3Celo} from 'aave-address-book/AaveV3Celo.sol'; +import {GovernanceV3Celo} from 'aave-address-book/GovernanceV3Celo.sol'; import {IOwnable} from 'aave-address-book/common/IOwnable.sol'; import {RiskSteward, IRiskSteward, IPoolDataProvider, IEngine} from '../../src/contracts/RiskSteward.sol'; @@ -273,3 +275,17 @@ contract DeploySonic is SonicScript { vm.stopBroadcast(); } } + +// make deploy-ledger contract=scripts/deploy/DeployStewards.s.sol:DeployCelo chain=celo +contract DeployCelo is SonicScript { + function run() external { + vm.startBroadcast(); + DeployRiskStewards._deployRiskStewards( + address(AaveV3Celo.AAVE_PROTOCOL_DATA_PROVIDER), + AaveV3Celo.CONFIG_ENGINE, + 0xd85786B5FC61E2A0c0a3144a33A0fC70646a99f6, // celo-risk-council + GovernanceV3Celo.EXECUTOR_LVL_1 + ); + vm.stopBroadcast(); + } +} diff --git a/scripts/networks/RiskStewardsCelo.s.sol b/scripts/networks/RiskStewardsCelo.s.sol new file mode 100644 index 0000000..1982318 --- /dev/null +++ b/scripts/networks/RiskStewardsCelo.s.sol @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Celo} from 'aave-address-book/AaveV3Celo.sol'; +import {RiskStewardsBase} from '../RiskStewardsBase.s.sol'; + +abstract contract RiskStewardsCelo is RiskStewardsBase { + constructor() + RiskStewardsBase(address(AaveV3Celo.POOL), AaveV3Celo.RISK_STEWARD) + {} +}