Skip to content

Commit 4e35e81

Browse files
authored
✨ Update KBTC supply cap on Ink (#935)
1 parent 1e7cdf1 commit 4e35e81

File tree

6 files changed

+245
-0
lines changed

6 files changed

+245
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
## Reserve changes
2+
3+
### Reserves altered
4+
5+
#### kBTC ([0x73E0C0d45E048D25Fc26Fa3159b0aA04BfA4Db98](https://explorer.inkonchain.com/address/0x73E0C0d45E048D25Fc26Fa3159b0aA04BfA4Db98))
6+
7+
| description | value before | value after |
8+
| --- | --- | --- |
9+
| supplyCap | 1,500 kBTC | 2,750 kBTC |
10+
11+
12+
## Raw diff
13+
14+
```json
15+
{
16+
"reserves": {
17+
"0x73E0C0d45E048D25Fc26Fa3159b0aA04BfA4Db98": {
18+
"supplyCap": {
19+
"from": 1500,
20+
"to": 2750
21+
}
22+
}
23+
},
24+
"raw": {
25+
"0x1de9cb9420dd1f2ccefff9393e126b800d413b7a": {
26+
"label": "GovernanceV3InkWhitelabel.PERMISSIONED_PAYLOADS_CONTROLLER",
27+
"contract": "lib/aave-umbrella/lib/aave-v3-origin/lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol:TransparentUpgradeableProxy",
28+
"balanceDiff": null,
29+
"nonceDiff": null,
30+
"stateDiff": {
31+
"0x85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbe": {
32+
"previousValue": "0x006955826c000000000002000000000000000000000000000000000000000000",
33+
"newValue": "0x006955826c000000000003000000000000000000000000000000000000000000"
34+
},
35+
"0x85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbf": {
36+
"previousValue": "0x000000000000000000093a800000000000006983a6ed00000000000000000000",
37+
"newValue": "0x000000000000000000093a800000000000006983a6ed0000000000006955826d"
38+
}
39+
}
40+
},
41+
"0x2816cf15f6d2a220e789aa011d5ee4eb6c47feba": {
42+
"label": "AaveV3InkWhitelabel.POOL",
43+
"contract": "lib/aave-umbrella/lib/aave-v3-origin/lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol:TransparentUpgradeableProxy",
44+
"balanceDiff": null,
45+
"nonceDiff": null,
46+
"stateDiff": {
47+
"0x52eaf0ef0d5fb4b8b7ab408cae5db0f302f467a5f7642af11e325a225ec359fd": {
48+
"previousValue": "0x100000000000000000000003e80000005dc0000000c81388850829fe1e141c20",
49+
"newValue": "0x100000000000000000000003e8000000abe0000000c81388850829fe1e141c20"
50+
}
51+
}
52+
}
53+
}
54+
}
55+
```
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
## Payload 8 on Ink
2+
3+
- creator: 0x2e8090716C5a25332cf963d454250B88bf04E6dC
4+
- maximumAccessLevelRequired: 1
5+
- state: 3(Executed)
6+
- actions:
7+
- [0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8](https://explorer.inkonchain.com/address/0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8), accessLevel: 1, withDelegateCall: true, value: 0, signature: execute(), callData: 0x
8+
9+
:sos: Found unverified contracts!
10+
11+
- [0xbe0eb53f46cd790cd13851d5eff43d12404d33e8](https://explorer.inkonchain.com/address/0xbe0eb53f46cd790cd13851d5eff43d12404d33e8)
12+
13+
#### TransparentUpgradeableProxy at `0x1dE9CB9420Dd1f2cCeFFf9393E126b800D413b7A` with implementation PermissionedPayloadsController at `0xCCCcf90C363Eaf09dD89DD5330C1287Ff6a945Ee` [:ghost:](https://github.com/bgd-labs/aave-address-book "GovernanceV3InkWhitelabel.PERMISSIONED_PAYLOADS_CONTROLLER")
14+
15+
```diff
16+
@@ `0x85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbe` raw @@
17+
- "\"0x006952df0b00695582fc02012e8090716c5a25332cf963d454250b88bf04e6dc\""
18+
+ "\"0x006952df0b00695582fc03012e8090716c5a25332cf963d454250b88bf04e6dc\""
19+
20+
@@ `0x85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbf` raw @@
21+
- "\"0x000000000000000000093a80000002a300006983a77c00000000000000000000\""
22+
+ "\"0x000000000000000000093a80000002a300006983a77c000000000000695582fd\""
23+
24+
```
25+
26+
#### InitializableImmutableAdminUpgradeabilityProxy at `0x2816cf15F6d2A220E789aA011D5EE4eB6c47FEbA` with implementation L2PoolInstance at `0x2aB3580a805fB10CbAd567212C70e26C1B6769eC` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.POOL")
27+
28+
```diff
29+
@@ `_reserves` mapping (address => tuple) key `0x73e0c0d45e048d25fc26fa3159b0aa04bfa4db98`.configuration.data @@
30+
- "7237005577332262213973186568751985011777828690440756870756040710287799884832"
31+
+ "7237005577332262213973186568751985011881674627611453423326650636872201804832"
32+
33+
@@ `_reserves` mapping (address => tuple) key `0x73e0c0d45e048d25fc26fa3159b0aa04bfa4db98`.configuration.supplyCap @@
34+
- "1500"
35+
+ "2750"
36+
37+
```
38+
39+
### Verification status for contracts touched in the proposal
40+
41+
| Contract | Status |
42+
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
43+
| TransparentUpgradeableProxy at `0x1dE9CB9420Dd1f2cCeFFf9393E126b800D413b7A` with implementation PermissionedPayloadsController at `0xCCCcf90C363Eaf09dD89DD5330C1287Ff6a945Ee` [:ghost:](https://github.com/bgd-labs/aave-address-book "GovernanceV3InkWhitelabel.PERMISSIONED_PAYLOADS_CONTROLLER") | Contract |
44+
| Executor at `0x1dF462e2712496373A347f8ad10802a5E95f053D` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.ACL_ADMIN") | Contract |
45+
| InitializableImmutableAdminUpgradeabilityProxy at `0x2816cf15F6d2A220E789aA011D5EE4eB6c47FEbA` with implementation L2PoolInstance at `0x2aB3580a805fB10CbAd567212C70e26C1B6769eC` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.POOL") | Contract |
46+
| L2PoolInstance at `0x2aB3580a805fB10CbAd567212C70e26C1B6769eC` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.POOL_IMPL") | Contract |
47+
| SafeProxy at `0x2e8090716C5a25332cf963d454250B88bf04E6dC` | Contract |
48+
| PoolAddressesProvider at `0x4172E6aAEC070ACB31aaCE343A58c93E4C70f44D` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.POOL_ADDRESSES_PROVIDER") | Contract |
49+
| InitializableImmutableAdminUpgradeabilityProxy at `0x4f221e5c0B7103f7e3291E10097de6D9e3BfC02d` with implementation PoolConfiguratorInstance at `0xe892E40C92c2E4D281Be59b2E6300F271d824E75` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.POOL_CONFIGURATOR") | Contract |
50+
| ACLManager at `0x86E2938daE289763D4e09a7e42c5cCcA62Cf9809` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.ACL_MANAGER") | Contract |
51+
| unknown contract name at `0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8` | Error |
52+
| CapsEngine at `0xC3DeCF0c8821384644B923F08f840c23f6d24634` | Contract |
53+
| PermissionedPayloadsController at `0xCCCcf90C363Eaf09dD89DD5330C1287Ff6a945Ee` | Contract |
54+
| PoolConfiguratorInstance at `0xe892E40C92c2E4D281Be59b2E6300F271d824E75` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.POOL_CONFIGURATOR_IMPL") | Contract |
55+
| AaveV3ConfigEngine at `0xea9989569Cf2D860597b4d649c9A963c15ab84fa` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.CONFIG_ENGINE") | Contract |
56+
57+
### Selfdestruct analysis
58+
59+
| Address | Result |
60+
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
61+
| TransparentUpgradeableProxy at `0x1dE9CB9420Dd1f2cCeFFf9393E126b800D413b7A` with implementation PermissionedPayloadsController at `0xCCCcf90C363Eaf09dD89DD5330C1287Ff6a945Ee` [:ghost:](https://github.com/bgd-labs/aave-address-book "GovernanceV3InkWhitelabel.PERMISSIONED_PAYLOADS_CONTROLLER") | DelegateCall |
62+
| Executor at `0x1dF462e2712496373A347f8ad10802a5E95f053D` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.ACL_ADMIN") | DelegateCall |
63+
| InitializableImmutableAdminUpgradeabilityProxy at `0x2816cf15F6d2A220E789aA011D5EE4eB6c47FEbA` with implementation L2PoolInstance at `0x2aB3580a805fB10CbAd567212C70e26C1B6769eC` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.POOL") | DelegateCall |
64+
| L2PoolInstance at `0x2aB3580a805fB10CbAd567212C70e26C1B6769eC` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.POOL_IMPL") | DelegateCall |
65+
| SafeProxy at `0x2e8090716C5a25332cf963d454250B88bf04E6dC` | DelegateCall |
66+
| PoolAddressesProvider at `0x4172E6aAEC070ACB31aaCE343A58c93E4C70f44D` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.POOL_ADDRESSES_PROVIDER") | DelegateCall |
67+
| InitializableImmutableAdminUpgradeabilityProxy at `0x4f221e5c0B7103f7e3291E10097de6D9e3BfC02d` with implementation PoolConfiguratorInstance at `0xe892E40C92c2E4D281Be59b2E6300F271d824E75` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.POOL_CONFIGURATOR") | DelegateCall |
68+
| ACLManager at `0x86E2938daE289763D4e09a7e42c5cCcA62Cf9809` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.ACL_MANAGER") | Safe |
69+
| unknown contract name at `0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8` | DelegateCall |
70+
| CapsEngine at `0xC3DeCF0c8821384644B923F08f840c23f6d24634` | Safe |
71+
| PermissionedPayloadsController at `0xCCCcf90C363Eaf09dD89DD5330C1287Ff6a945Ee` | Safe |
72+
| PoolConfiguratorInstance at `0xe892E40C92c2E4D281Be59b2E6300F271d824E75` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.POOL_CONFIGURATOR_IMPL") | DelegateCall |
73+
| AaveV3ConfigEngine at `0xea9989569Cf2D860597b4d649c9A963c15ab84fa` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.CONFIG_ENGINE") | DelegateCall |
74+
75+
### Events emitted from the proposal
76+
77+
- TransparentUpgradeableProxy at `0x1dE9CB9420Dd1f2cCeFFf9393E126b800D413b7A` with implementation PermissionedPayloadsController at `0xCCCcf90C363Eaf09dD89DD5330C1287Ff6a945Ee` [:ghost:](https://github.com/bgd-labs/aave-address-book "GovernanceV3InkWhitelabel.PERMISSIONED_PAYLOADS_CONTROLLER")
78+
- `PayloadExecuted({"payloadId":8})`
79+
- Executor at `0x1dF462e2712496373A347f8ad10802a5E95f053D` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.ACL_ADMIN")
80+
- `ExecutedAction({"target":"0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8","value":"0","signature":"execute()","data":"0x","executionTime":"1767211773","withDelegatecall":true,"resultData":"0x"})`
81+
- InitializableImmutableAdminUpgradeabilityProxy at `0x4f221e5c0B7103f7e3291E10097de6D9e3BfC02d` with implementation PoolConfiguratorInstance at `0xe892E40C92c2E4D281Be59b2E6300F271d824E75` [:ghost:](https://github.com/bgd-labs/aave-address-book "AaveV3InkWhitelabel.POOL_CONFIGURATOR")
82+
- `SupplyCapChanged({"asset":"0x73E0C0d45E048D25Fc26Fa3159b0aA04BfA4Db98 (symbol: kBTC)","oldSupplyCap":"1500","newSupplyCap":"2750"})`
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.0;
3+
4+
import {AaveV3InkWhitelabelAssets} from 'aave-address-book/AaveV3InkWhitelabel.sol';
5+
import {AaveV3PayloadInkWhitelabel} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadInkWhitelabel.sol';
6+
import {EngineFlags} from 'aave-v3-origin/contracts/extensions/v3-config-engine/EngineFlags.sol';
7+
import {IAaveV3ConfigEngine} from 'aave-v3-origin/contracts/extensions/v3-config-engine/IAaveV3ConfigEngine.sol';
8+
9+
/**
10+
* @title Update KBTC Ink caps
11+
* @author ACI
12+
*/
13+
contract AaveV3InkWhitelabel_UpdateKBTCInkCaps_20251231 is AaveV3PayloadInkWhitelabel {
14+
function capsUpdates() public pure override returns (IAaveV3ConfigEngine.CapsUpdate[] memory) {
15+
IAaveV3ConfigEngine.CapsUpdate[] memory capsUpdate = new IAaveV3ConfigEngine.CapsUpdate[](1);
16+
17+
capsUpdate[0] = IAaveV3ConfigEngine.CapsUpdate({
18+
asset: AaveV3InkWhitelabelAssets.kBTC_UNDERLYING,
19+
supplyCap: 2_750,
20+
borrowCap: EngineFlags.KEEP_CURRENT
21+
});
22+
23+
return capsUpdate;
24+
}
25+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.0;
3+
4+
import {AaveV3InkWhitelabel} from 'aave-address-book/AaveV3InkWhitelabel.sol';
5+
6+
import 'forge-std/Test.sol';
7+
import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol';
8+
import {AaveV3InkWhitelabel_UpdateKBTCInkCaps_20251231} from './AaveV3InkWhitelabel_UpdateKBTCInkCaps_20251231.sol';
9+
10+
/**
11+
* @dev Test for AaveV3InkWhitelabel_UpdateKBTCInkCaps_20251231
12+
* command: FOUNDRY_PROFILE=test forge test --match-path=src/20251231_AaveV3InkWhitelabel_UpdateKBTCInkCaps/AaveV3InkWhitelabel_UpdateKBTCInkCaps_20251231.t.sol -vv
13+
*/
14+
contract AaveV3InkWhitelabel_UpdateKBTCInkCaps_20251231_Test is ProtocolV3TestBase {
15+
AaveV3InkWhitelabel_UpdateKBTCInkCaps_20251231 internal proposal;
16+
17+
function setUp() public {
18+
vm.createSelectFork(vm.rpcUrl('ink'), 33713218);
19+
proposal = new AaveV3InkWhitelabel_UpdateKBTCInkCaps_20251231();
20+
}
21+
22+
/**
23+
* @dev executes the generic test suite including e2e and config snapshots
24+
*/
25+
function test_defaultProposalExecution() public {
26+
defaultTest(
27+
'AaveV3InkWhitelabel_UpdateKBTCInkCaps_20251231',
28+
AaveV3InkWhitelabel.POOL,
29+
address(proposal),
30+
true,
31+
true
32+
);
33+
}
34+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.0;
3+
4+
import {GovV3Helpers, IPayloadsControllerCore} from 'aave-helpers/src/GovV3Helpers.sol';
5+
import {GovernanceV3InkWhitelabel} from 'aave-address-book/GovernanceV3InkWhitelabel.sol';
6+
7+
import {EthereumScript, InkScript} from 'solidity-utils/contracts/utils/ScriptUtils.sol';
8+
import {AaveV3InkWhitelabel_UpdateKBTCInkCaps_20251231} from './AaveV3InkWhitelabel_UpdateKBTCInkCaps_20251231.sol';
9+
10+
/**
11+
* @dev Deploy Ink
12+
* deploy-command: make deploy-ledger contract=src/20251231_AaveV3InkWhitelabel_UpdateKBTCInkCaps/UpdateKBTCInkCaps_20251231.s.sol:DeployInk chain=ink
13+
* verify-command: FOUNDRY_PROFILE=deploy npx catapulta-verify -b broadcast/UpdateKBTCInkCaps_20251231.s.sol/57073/run-latest.json
14+
*/
15+
contract DeployInk is InkScript {
16+
function run() external broadcast {
17+
// deploy payloads
18+
address payload0 = GovV3Helpers.deployDeterministic(
19+
type(AaveV3InkWhitelabel_UpdateKBTCInkCaps_20251231).creationCode
20+
);
21+
22+
// compose action
23+
IPayloadsControllerCore.ExecutionAction[]
24+
memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
25+
actions[0] = GovV3Helpers.buildAction(payload0);
26+
27+
// register action at payloadsController
28+
GovV3Helpers.createPermissionedPayloadCalldata(
29+
GovernanceV3InkWhitelabel.PERMISSIONED_PAYLOADS_CONTROLLER,
30+
actions
31+
);
32+
}
33+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import {ConfigFile} from '../../generator/types';
2+
export const config: ConfigFile = {
3+
rootOptions: {
4+
pools: ['AaveV3InkWhitelabel'],
5+
title: 'Update KBTC Ink caps',
6+
shortName: 'UpdateKBTCInkCaps',
7+
date: '20251231',
8+
author: 'ACI',
9+
},
10+
poolOptions: {
11+
AaveV3InkWhitelabel: {
12+
configs: {CAPS_UPDATE: [{asset: 'kBTC', supplyCap: '2750', borrowCap: ''}]},
13+
cache: {blockNumber: 33713218},
14+
},
15+
},
16+
};

0 commit comments

Comments
 (0)