Skip to content

Commit 2bd7aea

Browse files
feat: add ink v3.5 whitelabel contracts (#1015)
* feat: add ink v3.5 whitelabel contracts * chore: update submodule * chore: use new origin submodule * fix: additional addresses: * fix: test * fix: test * fix: emergency admin * feat: add whitelabel to name * chore: update readme * chore: fix rename * chore: remove renamed file * Update README.md Co-authored-by: Ian Flexa <[email protected]> * chore: move readme changes from top --------- Co-authored-by: Ian Flexa <[email protected]>
1 parent 1a3c41b commit 2bd7aea

22 files changed

+515
-78
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ In any case you need to run `npm run generate:addresses` afterwards and commit t
111111

112112
- In order to successfully check that contracts are verified, you must have in your local `.env` file an entry of `ETHERSCAN_API_KEY` with a mainnet API key on it.
113113
- Avalanche contracts must be verified on `snowscan.io`
114+
- Contract addresses of whitelabel instances which are not directly controlled by the Aave DAO are also included in this repository. A complete list of Whitelabel instances controlled by their respective teams can be found here: [AaveV3InkWhitelabel](src/AaveV3InkWhitelabel.sol)
114115

115116
### Troubleshooting
116117

@@ -129,4 +130,4 @@ To install the Aave Search extension for [Raycast](https://www.raycast.com/):
129130
4. Search for `Aave Search` or navigate directly to the [extension page](https://www.raycast.com/smbdy/aave-search).
130131
5. Click the Install button or press `⁠⌘ + ⁠↵` to install the extension
131132

132-
Once installed, you can use the extension by typing `aave` in Raycast.
133+
Once installed, you can use the extension by typing `aave` in Raycast.

foundry.lock

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"lib/aave-v3-origin": {
3+
"branch": {
4+
"name": "main",
5+
"rev": "6138e1fda45884b6547d094a1ddeef43dcab4977"
6+
}
7+
}
8+
}

safe.csv

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3797,6 +3797,39 @@ address,name,chainId
37973797
0x56C1a4b54921DEA9A344967a8693C7E661D72968,MiscAvalanche PROTOCOL_GUARDIAN,43114
37983798
0xD3cF979e676265e4f6379749DECe4708B9A22476,MiscAvalanche PROXY_ADMIN,43114
37993799
0xEB0682d148e874553008730f0686ea89db7DA412,MiscAvalanche TRANSPARENT_PROXY_FACTORY,43114
3800+
0x96086C25d13943C80Ff9a19791a40Df6aFC08328,AaveV3InkWhitelabel AAVE_PROTOCOL_DATA_PROVIDER,57073
3801+
0x1dF462e2712496373A347f8ad10802a5E95f053D,AaveV3InkWhitelabel ACL_ADMIN,57073
3802+
0x86E2938daE289763D4e09a7e42c5cCcA62Cf9809,AaveV3InkWhitelabel ACL_MANAGER,57073
3803+
0x9138E2cAdFEB23AFFdc0419F2912CaB8F135dba9,AaveV3InkWhitelabel COLLECTOR,57073
3804+
0xea9989569Cf2D860597b4d649c9A963c15ab84fa,AaveV3InkWhitelabel CONFIG_ENGINE,57073
3805+
0xd8247C7926841337E8adf9fD9E87026992C45062,AaveV3InkWhitelabel DEFAULT_A_TOKEN_IMPL_REV_1,57073
3806+
0xD93e3Ae8f69D04d484d1652Ca569d4b0522414DF,AaveV3InkWhitelabel DEFAULT_INCENTIVES_CONTROLLER,57073
3807+
0x294daB91f3539f5a74Ed995a59235eE62A14A345,AaveV3InkWhitelabel DEFAULT_VARIABLE_DEBT_TOKEN_IMPL_REV_1,57073
3808+
0xb50881a9e7Ca0d1c08A59f4da1dE2f3D75B1E34E,AaveV3InkWhitelabel DUST_BIN,57073
3809+
0x9CbcEf2c44cF28ff2aa36Bff7BaB315398209A79,AaveV3InkWhitelabel EMISSION_MANAGER,57073
3810+
0x5e84CEe2afb7B37d2AB14722C39A7c1C26F5B0BB,AaveV3InkWhitelabel EXTERNAL_LIBRARIES FLASHLOAN_LOGIC,57073
3811+
0xFeD9871528E713B5038c4c44BbE7a315f56cAdc6,AaveV3InkWhitelabel EXTERNAL_LIBRARIES BORROW_LOGIC,57073
3812+
0xD1bddC05A3BB5A7907d82A1b4F1E21dBCE69c3d5,AaveV3InkWhitelabel EXTERNAL_LIBRARIES E_MODE_LOGIC,57073
3813+
0x36Ae486289bB807C3C79A1427b9c3D934294ef43,AaveV3InkWhitelabel EXTERNAL_LIBRARIES LIQUIDATION_LOGIC,57073
3814+
0xE51B69e5722Bf547866A4d7Bc190c6e81b626806,AaveV3InkWhitelabel EXTERNAL_LIBRARIES POOL_LOGIC,57073
3815+
0x034Fd14b9Ae6bB066a1F9f85A55e990b0b25c168,AaveV3InkWhitelabel EXTERNAL_LIBRARIES SUPPLY_LOGIC,57073
3816+
0x988B5d3863bdEE83339Be41cD31344Dfd9FD197c,AaveV3InkWhitelabel L2_ENCODER,57073
3817+
0x4758213271BFdC72224A7a8742dC865fC97756e1,AaveV3InkWhitelabel ORACLE,57073
3818+
0x2816cf15F6d2A220E789aA011D5EE4eB6c47FEbA,AaveV3InkWhitelabel POOL,57073
3819+
0x4172E6aAEC070ACB31aaCE343A58c93E4C70f44D,AaveV3InkWhitelabel POOL_ADDRESSES_PROVIDER,57073
3820+
0x501B4c19dd9C2e06E94dA7b6D5Ed4ddA013EC741,AaveV3InkWhitelabel POOL_ADDRESSES_PROVIDER_REGISTRY,57073
3821+
0x4f221e5c0B7103f7e3291E10097de6D9e3BfC02d,AaveV3InkWhitelabel POOL_CONFIGURATOR,57073
3822+
0xe892E40C92c2E4D281Be59b2E6300F271d824E75,AaveV3InkWhitelabel POOL_CONFIGURATOR_IMPL,57073
3823+
0x2aB3580a805fB10CbAd567212C70e26C1B6769eC,AaveV3InkWhitelabel POOL_IMPL,57073
3824+
0x5362dBb1e601abF3a4c14c22ffEdA64042E5eAA3,AaveV3InkWhitelabel STATA_FACTORY,57073
3825+
0x25Ec457d1778b0E5316e7f38f3c22baF413F1A8C,AaveV3InkWhitelabel UI_INCENTIVE_DATA_PROVIDER,57073
3826+
0x39bc1bfDa2130d6Bb6DBEfd366939b4c7aa7C697,AaveV3InkWhitelabel UI_POOL_DATA_PROVIDER,57073
3827+
0xB1532b76D054c9F9E61b25c4d91f69B4133E4671,AaveV3InkWhitelabel WALLET_BALANCE_PROVIDER,57073
3828+
0xDe090EfCD6ef4b86792e2D84E55a5fa8d49D25D2,AaveV3InkWhitelabel WETH_GATEWAY,57073
3829+
0x1dE9CB9420Dd1f2cCeFFf9393E126b800D413b7A,GovernanceV3InkWhitelabel PERMISSIONED_PAYLOADS_CONTROLLER,57073
3830+
0x1dF462e2712496373A347f8ad10802a5E95f053D,GovernanceV3InkWhitelabel PERMISSIONED_PAYLOADS_CONTROLLER_EXECUTOR,57073
3831+
0x00C2B13eF4F70Bf1827179Fe6d8facF7cFf6AcD2,MiscInkWhitelabel PROTOCOL_GUARDIAN,57073
3832+
0x5C2e738F6E27bCE0F7558051Bf90605dD6176900,MiscInkWhitelabel TRANSPARENT_PROXY_FACTORY,57073
38003833
0x47cd4b507B81cB831669c71c7077f4daF6762FF4,AaveV3Linea AAVE_PROTOCOL_DATA_PROVIDER,59144
38013834
0x8c2d95FE7aeB57b86961F3abB296A54f0ADb7F88,AaveV3Linea ACL_ADMIN,59144
38023835
0xbf32c7dFC72b730967072B112927ca0de205dbb5,AaveV3Linea ACL_MANAGER,59144

scripts/configs/governance/ink.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import {GovernanceConfig} from "../types";
2+
import {ChainId} from '@bgd-labs/toolbox';
3+
4+
export const governanceConfigInk: GovernanceConfig = {
5+
name: 'InkWhitelabel',
6+
CHAIN_ID: ChainId.ink,
7+
ADDRESSES: {
8+
PERMISSIONED_PAYLOADS_CONTROLLER: '0x1dE9CB9420Dd1f2cCeFFf9393E126b800D413b7A',
9+
},
10+
};

scripts/configs/networks/ink.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import {ChainId} from '@bgd-labs/toolbox';
2+
import {NetworkAddresses} from '../types';
3+
4+
export const inkAddresses: NetworkAddresses = {
5+
name: 'InkWhitelabel',
6+
chainId: ChainId.ink,
7+
addresses: {
8+
TRANSPARENT_PROXY_FACTORY: '0x5C2e738F6E27bCE0F7558051Bf90605dD6176900',
9+
PROTOCOL_GUARDIAN: '0x00C2B13eF4F70Bf1827179Fe6d8facF7cFf6AcD2'
10+
},
11+
};

scripts/configs/pools/ink.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import {ChainId} from '@bgd-labs/toolbox';
2+
import {PoolConfig} from '../types';
3+
4+
export const inkProtoV3: PoolConfig = {
5+
name: 'InkWhitelabel',
6+
chainId: ChainId.ink,
7+
POOL_ADDRESSES_PROVIDER: '0x4172E6aAEC070ACB31aaCE343A58c93E4C70f44D',
8+
additionalAddresses: {
9+
L2_ENCODER: '0x988B5d3863bdEE83339Be41cD31344Dfd9FD197c',
10+
CONFIG_ENGINE: '0xea9989569Cf2D860597b4d649c9A963c15ab84fa',
11+
POOL_ADDRESSES_PROVIDER_REGISTRY: '0x501B4c19dd9C2e06E94dA7b6D5Ed4ddA013EC741',
12+
UI_INCENTIVE_DATA_PROVIDER: '0x25Ec457d1778b0E5316e7f38f3c22baF413F1A8C',
13+
UI_POOL_DATA_PROVIDER: '0x39bc1bfDa2130d6Bb6DBEfd366939b4c7aa7C697',
14+
WALLET_BALANCE_PROVIDER: '0xB1532b76D054c9F9E61b25c4d91f69B4133E4671',
15+
WETH_GATEWAY: '0xDe090EfCD6ef4b86792e2D84E55a5fa8d49D25D2',
16+
DUST_BIN: '0xb50881a9e7Ca0d1c08A59f4da1dE2f3D75B1E34E',
17+
STATA_FACTORY: '0x5362dBb1e601abF3a4c14c22ffEdA64042E5eAA3',
18+
},
19+
initial: {
20+
COLLECTOR: '0x9138E2cAdFEB23AFFdc0419F2912CaB8F135dba9',
21+
DEFAULT_A_TOKEN_IMPL: '0xd8247C7926841337E8adf9fD9E87026992C45062',
22+
DEFAULT_VARIABLE_DEBT_TOKEN_IMPL: '0x294daB91f3539f5a74Ed995a59235eE62A14A345'
23+
},
24+
};

scripts/configs/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export type GovernanceV3Addresses = {
1515
GOVERNANCE?: Hex;
1616
VOTING_MACHINE?: Hex;
1717
PAYLOADS_CONTROLLER?: Hex;
18+
PERMISSIONED_PAYLOADS_CONTROLLER?: Hex;
1819
VOTING_PORTAL_ETH_ETH?: Hex;
1920
VOTING_PORTAL_ETH_AVAX?: Hex;
2021
VOTING_PORTAL_ETH_POL?: Hex;

scripts/generateAddresses.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import {celoProtoV3} from './configs/pools/celo';
3030
// import {mantleProtoV3} from './configs/pools/mantle';
3131
import {sonicProtoV3} from './configs/pools/sonic';
3232
import {soneiumProtoV3} from './configs/pools/soneium';
33+
import {inkProtoV3} from './configs/pools/ink';
3334
import {generateGovernanceLibrary} from './generator/governanceV3Generator';
3435
import {generateProtocolV2Library} from './generator/protocolV2Generator';
3536
import {generateProtocolV3Library} from './generator/protocolV3Generator';
@@ -60,6 +61,7 @@ import {gnosisAddresses} from './configs/networks/gnosis';
6061
import {bnbAddresses} from './configs/networks/bnb';
6162
import {celoAddresses} from './configs/networks/celo';
6263
import {scrollAddresses} from './configs/networks/scroll';
64+
import {inkAddresses} from './configs/networks/ink';
6365
import {governanceConfigScroll} from './configs/governance/scroll';
6466
import {generateTokenList} from './generator/generateTokenList';
6567
import {generateAaveV1} from './generator/protocolV1Generator';
@@ -81,6 +83,7 @@ import {umbrellaMainnetConfig} from './configs/umbrella/ethereum';
8183
import {umbrellaBaseSepoliaConfig} from './configs/umbrella/base';
8284
import {generateChainlink} from './generator/chainlink';
8385
import {governanceConfigSoneium} from './configs/governance/soneium';
86+
import {governanceConfigInk} from './configs/governance/ink';
8487

8588
async function main() {
8689
// cleanup ts artifacts
@@ -115,6 +118,7 @@ async function main() {
115118
governanceConfigMantle,
116119
governanceConfigSonic,
117120
governanceConfigSoneium,
121+
governanceConfigInk,
118122
].map((config) => generateGovernanceLibrary(config)),
119123
);
120124
const v1Library = generateAaveV1();
@@ -159,6 +163,7 @@ async function main() {
159163
// mantleProtoV3,
160164
sonicProtoV3,
161165
soneiumProtoV3,
166+
inkProtoV3,
162167
].map((config) => generateProtocolV3Library(config)),
163168
);
164169
const ghoAddresses = [ghoEthereum, ghoArbitrum, ghoBase, ghoAvalanche].map((config) =>
@@ -199,6 +204,7 @@ async function main() {
199204
mantleAddresses,
200205
sonicAddresses,
201206
soneiumAddresses,
207+
inkAddresses,
202208
].map((addresses) => generateNetworkAddresses(addresses));
203209

204210
const govImports = generateGovV2();

scripts/generator/governanceV3Generator.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {writeFileSync} from 'fs';
22
import {Hex, getContract, Address, Client} from 'viem';
33
import {Addresses, GovernanceConfig} from '../configs/types';
44
import {
5+
extractTypes,
56
generateJsConstants,
67
generateSolidityConstants,
78
prefixWithGeneratedWarning,
@@ -92,6 +93,20 @@ async function getGovernanceV3Addresses({CHAIN_ID, ADDRESSES}: GovernanceConfig)
9293
};
9394
addresses = {...addresses, ...executors};
9495
}
96+
if (ADDRESSES.PERMISSIONED_PAYLOADS_CONTROLLER) {
97+
const executors = await fetchV3ExecutorAddresses(
98+
getClient(CHAIN_ID),
99+
ADDRESSES.PERMISSIONED_PAYLOADS_CONTROLLER,
100+
);
101+
addresses.PERMISSIONED_PAYLOADS_CONTROLLER = {
102+
value: ADDRESSES.PERMISSIONED_PAYLOADS_CONTROLLER,
103+
type: 'IPayloadsControllerCore',
104+
};
105+
addresses = {
106+
...addresses,
107+
PERMISSIONED_PAYLOADS_CONTROLLER_EXECUTOR: executors.EXECUTOR_LVL_1,
108+
};
109+
}
95110
if (ADDRESSES.VOTING_MACHINE) {
96111
const strategyAndWareHouse = await getVotingStrategyAndWarehouse(
97112
ADDRESSES.VOTING_MACHINE,
@@ -110,7 +125,7 @@ export async function generateGovernanceLibrary(config: GovernanceConfig) {
110125
`./src/${name}.sol`,
111126
prefixWithPragma(
112127
prefixWithGeneratedWarning(
113-
`import {IGovernanceCore, IPayloadsControllerCore, IDataWarehouse, IVotingStrategy} from './GovernanceV3.sol';\n` +
128+
`import {${extractTypes(addresses).join(', ')}} from './GovernanceV3.sol';\n\n` +
114129
wrapIntoSolidityLibrary(
115130
generateSolidityConstants({chainId: config.CHAIN_ID, addresses}),
116131
name,

0 commit comments

Comments
 (0)