Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GHO CCIP Base Expansion #20

Closed
wants to merge 84 commits into from
Closed
Show file tree
Hide file tree
Changes from 58 commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
b289a4c
feat: base expansion
DhairyaSethi Dec 23, 2024
be4396a
chore: upd ccip lib
DhairyaSethi Dec 23, 2024
ac516af
feat: expand _validateConfig in e2e test
DhairyaSethi Dec 24, 2024
c7b11bd
feat: eth & arb tests
DhairyaSethi Dec 24, 2024
c3ea819
chore: import gho from EthereumAssets instead of MiscEthereum
DhairyaSethi Dec 24, 2024
dd13655
chore: use latest deployment of existing remote pool upgrade
DhairyaSethi Dec 24, 2024
9994623
doc: snapshot & discussion
DhairyaSethi Dec 24, 2024
2ddc813
chore: rename facilitator
DhairyaSethi Dec 24, 2024
8b43b84
test: cleanup & fuzzify
DhairyaSethi Dec 24, 2024
f022cd6
test: cleanup & fuzzify
DhairyaSethi Dec 24, 2024
1e06e0d
chore: use latest deployment of existing remote pool upgrade
DhairyaSethi Dec 24, 2024
843c94a
doc: snapshot -> direct-to-aip
DhairyaSethi Dec 24, 2024
ad22759
chore: import gho from EthereumAssets instead of MiscEthereum
DhairyaSethi Dec 24, 2024
b9022f6
chore: cleanup rm ProxyAdmin reference
DhairyaSethi Dec 24, 2024
2754acf
chore: rename facilitator
DhairyaSethi Dec 24, 2024
ff8bd9e
chore: rm duplicate check
DhairyaSethi Dec 24, 2024
17ec054
fix: snapshot, use utils reference for chain selectors
DhairyaSethi Dec 24, 2024
0471bd8
fix: base config test on eth
DhairyaSethi Dec 24, 2024
cddd175
test: eth<>arb e2e test
DhairyaSethi Dec 24, 2024
f866baf
chore: mock naming accuracy
DhairyaSethi Dec 24, 2024
c366c91
feat: base token through create2
DhairyaSethi Dec 24, 2024
d6717da
feat: expand _validateConfig in e2e test
DhairyaSethi Dec 24, 2024
88a26e4
feat: use deployed gho token impl on base, fix facilitator bucket to …
DhairyaSethi Dec 25, 2024
0f19b52
fix: merge latest upstream
DhairyaSethi Dec 25, 2024
bfb330d
Merge branch 'feat/ccip_1_5_1' into feat/gho-based-ccip
DhairyaSethi Dec 25, 2024
514bde6
fix: tmp fix remappings such that gho-core OZ and aave-v3 OZ do not c…
DhairyaSethi Dec 26, 2024
59e1dd2
feat: stewards, base tests
DhairyaSethi Dec 26, 2024
676ee32
fix: use 500 maxChange borrowRateConfig
DhairyaSethi Dec 26, 2024
372e11f
feat: validate base proposal constants
DhairyaSethi Dec 26, 2024
8e97f9f
chore: add partial explorer links for immutables
DhairyaSethi Dec 26, 2024
343e8d4
test: tokenPoolConfig
DhairyaSethi Dec 27, 2024
cd0c17f
test: fix risk council
DhairyaSethi Dec 31, 2024
d49d6bd
Merge branch 'feat/ccip_1_5_1' of https://github.com/aave/aave-propos…
DhairyaSethi Dec 31, 2024
3167880
fix: merge
DhairyaSethi Dec 31, 2024
1f7aea3
feat: add rate limit
DhairyaSethi Dec 31, 2024
36c0446
fix: riskCouncil
DhairyaSethi Dec 31, 2024
68a8441
feat: gho base listing
DhairyaSethi Dec 31, 2024
1662f90
feat: aave stewards test
DhairyaSethi Dec 31, 2024
414c76e
chore: fix typo
DhairyaSethi Dec 31, 2024
9f4a2b0
chore: upd title
DhairyaSethi Dec 31, 2024
080de87
Merge branch 'feat/ccip_1_5_1' of https://github.com/aave/aave-propos…
DhairyaSethi Jan 2, 2025
f50e217
Merge branch 'feat/ccip_1_5_1' of https://github.com/aave/aave-propos…
DhairyaSethi Jan 2, 2025
dc42f10
feat: use deployed base token pool & stewards
DhairyaSethi Jan 2, 2025
7092108
Merge branch 'feat/ccip_1_5_1' of https://github.com/aave/aave-propos…
DhairyaSethi Jan 3, 2025
16930a2
upd: upstream
DhairyaSethi Jan 3, 2025
e15e07c
Merge branch 'feat/ccip_1_5_1' of https://github.com/aave/aave-propos…
DhairyaSethi Jan 3, 2025
8cf9365
chore: steward tests
DhairyaSethi Jan 3, 2025
dd101af
fix: ccip stewards tests
DhairyaSethi Jan 3, 2025
fbdefd1
test: listing pre-req negative cases
DhairyaSethi Jan 3, 2025
b06cb8e
chore: minor cleanup
DhairyaSethi Jan 3, 2025
e7c651e
test: verbose error msg
DhairyaSethi Jan 3, 2025
7c6f9da
feat: QoL cleanup
DhairyaSethi Jan 3, 2025
c6f2c6e
Merge branch 'feat/ccip_1_5_1' of https://github.com/aave/aave-propos…
DhairyaSethi Jan 6, 2025
9dbf84e
chore: upd upstream
DhairyaSethi Jan 6, 2025
f960d78
chore: new ccip stewards with timelock getter on base
DhairyaSethi Jan 6, 2025
29ee27b
v3.3 sherlock contest funding (#560)
ianflexa Jan 7, 2025
4029849
fix(cache): automated cache update [skip ci]
Jan 7, 2025
6757aec
Merge branch 'feat/ccip_1_5_1' of https://github.com/aave/aave-propos…
DhairyaSethi Jan 8, 2025
0510e4e
upd: use latest eth/arb deployments
DhairyaSethi Jan 8, 2025
f2f9194
feat: predeploy gho token
DhairyaSethi Jan 8, 2025
6f36d41
doc: upd md with new token
DhairyaSethi Jan 9, 2025
0a1655d
feat: update gho token proxyAdmin
DhairyaSethi Jan 9, 2025
86c3cda
test: simplify
DhairyaSethi Jan 9, 2025
57aaaa1
Karpatkey-Gho-Growth (#559)
Luigy-Lemon Jan 9, 2025
0fe7c09
fix(cache): automated cache update [skip ci]
Jan 9, 2025
612e087
[Aavechan] ezeth on arbitrum and base (#561)
Rozengarden Jan 10, 2025
98da29e
fix(cache): automated cache update [skip ci]
Jan 10, 2025
cde38c6
chore: minor cleanup nits
DhairyaSethi Jan 14, 2025
f2940b9
[Aavechan] Onboard sUSDe and weETH on zksync (#565)
Rozengarden Jan 14, 2025
df9a022
fix(cache): automated cache update [skip ci]
Jan 14, 2025
763a015
chore: fix imports (#567)
brotherlymite Jan 14, 2025
47796fc
feat: a.DI Ethereum -> Celo path activation (#564)
sendra Jan 14, 2025
134c39c
GHO CCIP 1.5.1 Upgrade Eth<>Arb (#557)
DhairyaSethi Jan 16, 2025
0dff1b6
feat: explicitly enable optimizer (#571)
DhairyaSethi Jan 20, 2025
97f99f8
[Aavechan] lbtc onboarding (#562)
Rozengarden Jan 20, 2025
e925716
fix(cache): automated cache update [skip ci]
Jan 20, 2025
7c4fd17
feat: ACI emission admin for REZ, KERNEL & rsETH (#572)
Rozengarden Jan 21, 2025
6025b91
fix(cache): automated cache update [skip ci]
Jan 21, 2025
051dd67
✨ Update Prime GHO base borrow rate (#575)
MartinGbz Jan 21, 2025
639d461
fix(cache): automated cache update [skip ci]
Jan 21, 2025
d1896e6
Merge branch 'main' into feat/gho-based-ccip
DhairyaSethi Jan 23, 2025
1e54a33
chore: resolve conflicts
DhairyaSethi Jan 23, 2025
3e6f628
fix: update blocks, cleanup on pre-requisites
DhairyaSethi Jan 23, 2025
e6b73b8
doc: update AIP text
DhairyaSethi Jan 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
## Raw diff

```json
{}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
## Reserve changes

### Reserves added

#### GHO ([0x6F2216CB3Ca97b8756C5fD99bE27986f04CBd81D](https://basescan.org/address/0x6F2216CB3Ca97b8756C5fD99bE27986f04CBd81D))

| description | value |
| --- | --- |
| decimals | 18 |
| isActive | true |
| isFrozen | false |
| supplyCap | 2,500,000 GHO |
| borrowCap | 2,250,000 GHO |
| debtCeiling | 0 $ [0] |
| isSiloed | false |
| isFlashloanable | true |
| oracle | [0xfc421aD3C883Bf9E7C4f42dE845C4e4405799e73](https://basescan.org/address/0xfc421aD3C883Bf9E7C4f42dE845C4e4405799e73) |
| oracleDecimals | 8 |
| oracleLatestAnswer | 1 |
| usageAsCollateralEnabled | false |
| ltv | 0 % [0] |
| liquidationThreshold | 0 % [0] |
| liquidationBonus | 0 % |
| liquidationProtocolFee | 0 % [0] |
| reserveFactor | 10 % [1000] |
| aToken | [0xDD5745756C2de109183c6B5bB886F9207bEF114D](https://basescan.org/address/0xDD5745756C2de109183c6B5bB886F9207bEF114D) |
| aTokenImpl | [0x98F409Fc4A42F34AE3c326c7f48ED01ae8cAeC69](https://basescan.org/address/0x98F409Fc4A42F34AE3c326c7f48ED01ae8cAeC69) |
| variableDebtToken | [0xbc4f5631f2843488792e4F1660d0A51Ba489bdBd](https://basescan.org/address/0xbc4f5631f2843488792e4F1660d0A51Ba489bdBd) |
| variableDebtTokenImpl | [0x2425A746911128c2eAA7bEBDc9Bc452eE52208a1](https://basescan.org/address/0x2425A746911128c2eAA7bEBDc9Bc452eE52208a1) |
| borrowingEnabled | true |
| isBorrowableInIsolation | false |
| interestRateStrategy | [0x86AB1C62A8bf868E1b3E1ab87d587Aba6fbCbDC5](https://basescan.org/address/0x86AB1C62A8bf868E1b3E1ab87d587Aba6fbCbDC5) |
| aTokenName | Aave Base GHO |
| aTokenSymbol | aBasGHO |
| aTokenUnderlyingBalance | 1 GHO [1000000000000000000] |
| id | 7 |
| isPaused | false |
| variableDebtTokenName | Aave Base Variable Debt GHO |
| variableDebtTokenSymbol | variableDebtBasGHO |
| virtualAccountingActive | true |
| virtualBalance | 1 GHO [1000000000000000000] |
| optimalUsageRatio | 90 % |
| maxVariableBorrowRate | 77 % |
| baseVariableBorrowRate | 0 % |
| variableRateSlope1 | 12 % |
| variableRateSlope2 | 65 % |
| interestRate | ![ir](https://dash.onaave.com/api/static?variableRateSlope1=120000000000000000000000000&variableRateSlope2=650000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=770000000000000000000000000) |


## Raw diff

```json
{
"reserves": {
"0x6F2216CB3Ca97b8756C5fD99bE27986f04CBd81D": {
"from": null,
"to": {
"aToken": "0xDD5745756C2de109183c6B5bB886F9207bEF114D",
"aTokenImpl": "0x98F409Fc4A42F34AE3c326c7f48ED01ae8cAeC69",
"aTokenName": "Aave Base GHO",
"aTokenSymbol": "aBasGHO",
"aTokenUnderlyingBalance": "1000000000000000000",
"borrowCap": 2250000,
"borrowingEnabled": true,
"debtCeiling": 0,
"decimals": 18,
"id": 7,
"interestRateStrategy": "0x86AB1C62A8bf868E1b3E1ab87d587Aba6fbCbDC5",
"isActive": true,
"isBorrowableInIsolation": false,
"isFlashloanable": true,
"isFrozen": false,
"isPaused": false,
"isSiloed": false,
"liquidationBonus": 0,
"liquidationProtocolFee": 0,
"liquidationThreshold": 0,
"ltv": 0,
"oracle": "0xfc421aD3C883Bf9E7C4f42dE845C4e4405799e73",
"oracleDecimals": 8,
"oracleLatestAnswer": "100000000",
"reserveFactor": 1000,
"supplyCap": 2500000,
"symbol": "GHO",
"underlying": "0x6F2216CB3Ca97b8756C5fD99bE27986f04CBd81D",
"usageAsCollateralEnabled": false,
"variableDebtToken": "0xbc4f5631f2843488792e4F1660d0A51Ba489bdBd",
"variableDebtTokenImpl": "0x2425A746911128c2eAA7bEBDc9Bc452eE52208a1",
"variableDebtTokenName": "Aave Base Variable Debt GHO",
"variableDebtTokenSymbol": "variableDebtBasGHO",
"virtualAccountingActive": true,
"virtualBalance": "1000000000000000000"
}
}
},
"strategies": {
"0x6F2216CB3Ca97b8756C5fD99bE27986f04CBd81D": {
"from": null,
"to": {
"address": "0x86AB1C62A8bf868E1b3E1ab87d587Aba6fbCbDC5",
"baseVariableBorrowRate": "0",
"maxVariableBorrowRate": "770000000000000000000000000",
"optimalUsageRatio": "900000000000000000000000000",
"variableRateSlope1": "120000000000000000000000000",
"variableRateSlope2": "650000000000000000000000000"
}
}
}
}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {IProposalGenericExecutor} from 'aave-helpers/src/interfaces/IProposalGenericExecutor.sol';
import {IUpgradeableBurnMintTokenPool_1_5_1} from 'src/interfaces/ccip/tokenPool/IUpgradeableBurnMintTokenPool.sol';
import {IRateLimiter} from 'src/interfaces/ccip/IRateLimiter.sol';

/**
* @title GHO Base Launch
* @author Aave Labs
* - Discussion: https://governance.aave.com/t/arfc-launch-gho-on-base-set-aci-as-emissions-manager-for-rewards/19338
DhairyaSethi marked this conversation as resolved.
Show resolved Hide resolved
* - Snapshot: https://snapshot.box/#/s:aave.eth/proposal/0x03dc21e0423c60082dc23317af6ebaf997610cbc2cbb0f5a385653bd99a524fe
*/
contract AaveV3Arbitrum_GHOBaseLaunch_20241223 is IProposalGenericExecutor {
uint64 public constant BASE_CHAIN_SELECTOR = 15971525489660198786;

// https://arbiscan.io/address/0xB94Ab28c6869466a46a42abA834ca2B3cECCA5eB
IUpgradeableBurnMintTokenPool_1_5_1 public constant TOKEN_POOL =
IUpgradeableBurnMintTokenPool_1_5_1(0xB94Ab28c6869466a46a42abA834ca2B3cECCA5eB);

// https://basescan.org/address/0x98217A06721Ebf727f2C8d9aD7718ec28b7aAe34
address public constant REMOTE_TOKEN_POOL_BASE = 0x98217A06721Ebf727f2C8d9aD7718ec28b7aAe34;
// https://basescan.org/address/0x6Bb7a212910682DCFdbd5BCBb3e28FB4E8da10Ee
address public constant REMOTE_GHO_TOKEN_BASE = 0x6Bb7a212910682DCFdbd5BCBb3e28FB4E8da10Ee;

// Token Rate Limit Capacity: 300_000 GHO
uint128 public constant CCIP_RATE_LIMIT_CAPACITY = 300_000e18;
// Token Rate Limit Refill Rate: 60 GHO per second (=> 216_000 GHO per hour)
uint128 public constant CCIP_RATE_LIMIT_REFILL_RATE = 60e18;

function execute() external {
IRateLimiter.Config memory rateLimiterConfig = IRateLimiter.Config({
isEnabled: true,
capacity: CCIP_RATE_LIMIT_CAPACITY,
rate: CCIP_RATE_LIMIT_REFILL_RATE
});

IUpgradeableBurnMintTokenPool_1_5_1.ChainUpdate[]
memory chains = new IUpgradeableBurnMintTokenPool_1_5_1.ChainUpdate[](1);

bytes[] memory remotePoolAddresses = new bytes[](1);
remotePoolAddresses[0] = abi.encode(REMOTE_TOKEN_POOL_BASE);

chains[0] = IUpgradeableBurnMintTokenPool_1_5_1.ChainUpdate({
remoteChainSelector: BASE_CHAIN_SELECTOR,
remotePoolAddresses: remotePoolAddresses,
remoteTokenAddress: abi.encode(REMOTE_GHO_TOKEN_BASE),
outboundRateLimiterConfig: rateLimiterConfig,
inboundRateLimiterConfig: rateLimiterConfig
});

TOKEN_POOL.applyChainUpdates({
remoteChainSelectorsToRemove: new uint64[](0),
chainsToAdd: chains
});
}
}
Loading
Loading