Skip to content

Commit e0adf2f

Browse files
NandyBaCopilot
andauthored
[ACI] Freeze wstETH on Plasma (#896)
* feat: freeze wstETH on Plasma instance * refactor: update snapshot status * refactor: improve summary Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]>
1 parent 5f980a9 commit e0adf2f

6 files changed

+259
-0
lines changed
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
## Reserve changes
2+
3+
### Reserves altered
4+
5+
#### wstETH (0xe48D935e6C9e735463ccCf29a7F11e32bC09136E)
6+
7+
| description | value before | value after |
8+
| --- | --- | --- |
9+
| isFrozen | false | true |
10+
| ltv | 78.5 % [7850] | 0 % [0] |
11+
12+
13+
## Raw diff
14+
15+
```json
16+
{
17+
"reserves": {
18+
"0xe48D935e6C9e735463ccCf29a7F11e32bC09136E": {
19+
"isFrozen": {
20+
"from": false,
21+
"to": true
22+
},
23+
"ltv": {
24+
"from": 7850,
25+
"to": 0
26+
}
27+
}
28+
},
29+
"raw": {
30+
"0x061d8e131f26512348ee5fa42e2df1ba9d6505e9": {
31+
"label": null,
32+
"balanceDiff": null,
33+
"stateDiff": {}
34+
},
35+
"0x39ba8c26fc81e6a37a870115940ab32ed25c9ae7": {
36+
"label": null,
37+
"balanceDiff": null,
38+
"stateDiff": {
39+
"0xca963fec62faed922acbb90d0b562be712c4c251e629b77d5199eccf3b17def7": {
40+
"previousValue": "0x0000000000000000000000000000000000000000000000000000000000000000",
41+
"newValue": "0x0000000000000000000000000000000000000000000000000000000000001eaa"
42+
}
43+
}
44+
},
45+
"0x47aadaae1f05c978e6abb7568d11b7f6e0fc4d6a": {
46+
"label": null,
47+
"balanceDiff": null,
48+
"stateDiff": {}
49+
},
50+
"0x7120b1f8e5b73c0c0dc99c6e52fe4937e7ea11e0": {
51+
"label": null,
52+
"balanceDiff": null,
53+
"stateDiff": {
54+
"0x8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb458": {
55+
"previousValue": "0x006913b365000000000002000000000000000000000000000000000000000000",
56+
"newValue": "0x006913b365000000000003000000000000000000000000000000000000000000"
57+
},
58+
"0x8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb459": {
59+
"previousValue": "0x000000000000000000093a800000000000006941d7e600000000000000000000",
60+
"newValue": "0x000000000000000000093a800000000000006941d7e60000000000006913b366"
61+
}
62+
}
63+
},
64+
"0x925a2a7214ed92428b5b1b090f80b25700095e12": {
65+
"label": null,
66+
"balanceDiff": null,
67+
"stateDiff": {}
68+
},
69+
"0xa119f84bc1b8083f5061e4cf53705cbf1065ba27": {
70+
"label": null,
71+
"balanceDiff": null,
72+
"stateDiff": {
73+
"0xf68e00084c275144b1974bd3f2feb9cbe71b28d9383f814d793ed298fc865b93": {
74+
"previousValue": "0x100000000000000000000003e8000004e200000013880dac851229681fa41eaa",
75+
"newValue": "0x100000000000000000000003e8000004e200000013880dac871229681fa40000"
76+
}
77+
}
78+
},
79+
"0xa860355f0ccfdc823f7332ac108317b2a1509c06": {
80+
"label": null,
81+
"balanceDiff": null,
82+
"stateDiff": {}
83+
},
84+
"0xc022b6c71c30a8ad52dac504efa132d13d99d2d9": {
85+
"label": null,
86+
"balanceDiff": null,
87+
"stateDiff": {}
88+
},
89+
"0xe76eb348e65ef163d85ce282125ff5a7f5712a1d": {
90+
"label": null,
91+
"balanceDiff": null,
92+
"stateDiff": {}
93+
}
94+
}
95+
}
96+
```
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.0;
3+
4+
import {AaveV3Plasma, AaveV3PlasmaAssets} from 'aave-address-book/AaveV3Plasma.sol';
5+
import {IProposalGenericExecutor} from 'aave-helpers/src/interfaces/IProposalGenericExecutor.sol';
6+
7+
/**
8+
* @title Freeze wstETH on Plasma
9+
* @author Lido (implemented by ACI via Skyward)
10+
* - Snapshot: Direct to AIP
11+
* - Discussion: https://governance.aave.com/t/direct-to-aip-freeze-wsteth-on-plasma/23400
12+
*/
13+
contract AaveV3Plasma_FreezeWstETHOnPlasma_20251111 is IProposalGenericExecutor {
14+
function execute() external {
15+
AaveV3Plasma.POOL_CONFIGURATOR.setReserveFreeze(AaveV3PlasmaAssets.wstETH_UNDERLYING, true);
16+
}
17+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.0;
3+
4+
import {AaveV3Plasma} from 'aave-address-book/AaveV3Plasma.sol';
5+
6+
import 'forge-std/Test.sol';
7+
import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol';
8+
import {AaveV3Plasma_FreezeWstETHOnPlasma_20251111} from './AaveV3Plasma_FreezeWstETHOnPlasma_20251111.sol';
9+
10+
/**
11+
* @dev Test for AaveV3Plasma_FreezeWstETHOnPlasma_20251111
12+
* command: FOUNDRY_PROFILE=test forge test --match-path=src/20251111_AaveV3Plasma_FreezeWstETHOnPlasma/AaveV3Plasma_FreezeWstETHOnPlasma_20251111.t.sol -vv
13+
*/
14+
contract AaveV3Plasma_FreezeWstETHOnPlasma_20251111_Test is ProtocolV3TestBase {
15+
AaveV3Plasma_FreezeWstETHOnPlasma_20251111 internal proposal;
16+
17+
function setUp() public {
18+
vm.createSelectFork(vm.rpcUrl('plasma'), 5968287);
19+
proposal = new AaveV3Plasma_FreezeWstETHOnPlasma_20251111();
20+
}
21+
22+
/**
23+
* @dev executes the generic test suite including e2e and config snapshots
24+
*/
25+
function test_defaultProposalExecution() public {
26+
defaultTest('AaveV3Plasma_FreezeWstETHOnPlasma_20251111', AaveV3Plasma.POOL, address(proposal));
27+
}
28+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
title: "Freeze wstETH Plasma"
3+
author: "Lido (implemented by ACI via Skyward)"
4+
discussions: "https://governance.aave.com/t/direct-to-aip-freeze-wsteth-on-plasma/23400"
5+
snapshot: Direct to AIP
6+
---
7+
8+
## Simple Summary
9+
10+
Freeze wstETH on Plasma instance
11+
12+
## Motivation
13+
14+
Last week, Lido [announced](https://blog.lido.fi/announcing-partnership-with-chainlink-on-adopting-ccip-as-official-cross-chain-infrastructure-for-wsteth/) that Chainlink's CCIP will be the official cross-chain infrastructure for wstETH. While the wstETH representation on Plasma was already deployed through CCIP, it was unfortunately not set up in a fully future-proof manner.
15+
16+
Together with Chainlink, they have decided to redeploy the token contract to ensure the deployment is in line with the new cross-chain strategy. They ask us to deprecate the asset.
17+
18+
Right now, there is about 0.044 wstETH on Aave Plasma instance / 0.12 wstETH on Plasma.
19+
20+
## Specification
21+
22+
If passed, this AIP will freeze wstETH reserve on Plasma, preventing new deposits, borrows, or collateral enablement.
23+
24+
### Copyright
25+
26+
Copyright and related rights waived under [CC0](https://creativecommons.org/publicdomain/zero/1.0/)
27+
28+
## References
29+
30+
- Implementation: [AaveV3Plasma](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20251111_AaveV3Plasma_FreezeWstETHPlasma/AaveV3Plasma_FreezeWstETHPlasma_20251111.sol)
31+
- Tests: [AaveV3Plasma](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20251111_AaveV3Plasma_FreezeWstETHPlasma/AaveV3Plasma_FreezeWstETHPlasma_20251111.t.sol)
32+
- [Discussion](https://governance.aave.com/t/direct-to-aip-freeze-wsteth-on-plasma/23400)
33+
34+
## Copyright
35+
36+
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.0;
3+
4+
import {GovV3Helpers, IPayloadsControllerCore, PayloadsControllerUtils} from 'aave-helpers/src/GovV3Helpers.sol';
5+
import {GovernanceV3Ethereum} from 'aave-address-book/GovernanceV3Ethereum.sol';
6+
7+
import {EthereumScript, PlasmaScript} from 'solidity-utils/contracts/utils/ScriptUtils.sol';
8+
import {AaveV3Plasma_FreezeWstETHOnPlasma_20251111} from './AaveV3Plasma_FreezeWstETHOnPlasma_20251111.sol';
9+
10+
/**
11+
* @dev Deploy Plasma
12+
* deploy-command: make deploy-ledger contract=src/20251111_AaveV3Plasma_FreezeWstETHOnPlasma/FreezeWstETHOnPlasma_20251111.s.sol:DeployPlasma chain=plasma
13+
* verify-command: FOUNDRY_PROFILE=deploy npx catapulta-verify -b broadcast/FreezeWstETHOnPlasma_20251111.s.sol/9745/run-latest.json
14+
*/
15+
contract DeployPlasma is PlasmaScript {
16+
function run() external broadcast {
17+
// deploy payloads
18+
address payload0 = GovV3Helpers.deployDeterministic(
19+
type(AaveV3Plasma_FreezeWstETHOnPlasma_20251111).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.createPayload(actions);
29+
}
30+
}
31+
32+
/**
33+
* @dev Create Proposal
34+
* command: make deploy-ledger contract=src/20251111_AaveV3Plasma_FreezeWstETHOnPlasma/FreezeWstETHOnPlasma_20251111.s.sol:CreateProposal chain=mainnet
35+
*/
36+
contract CreateProposal is EthereumScript {
37+
function run() external {
38+
// create payloads
39+
PayloadsControllerUtils.Payload[] memory payloads = new PayloadsControllerUtils.Payload[](1);
40+
41+
// compose actions for validation
42+
{
43+
IPayloadsControllerCore.ExecutionAction[]
44+
memory actionsPlasma = new IPayloadsControllerCore.ExecutionAction[](1);
45+
actionsPlasma[0] = GovV3Helpers.buildAction(
46+
type(AaveV3Plasma_FreezeWstETHOnPlasma_20251111).creationCode
47+
);
48+
payloads[0] = GovV3Helpers.buildPlasmaPayload(vm, actionsPlasma);
49+
}
50+
51+
// create proposal
52+
vm.startBroadcast();
53+
GovV3Helpers.createProposal(
54+
vm,
55+
payloads,
56+
GovernanceV3Ethereum.VOTING_PORTAL_ETH_AVAX,
57+
GovV3Helpers.ipfsHashFile(
58+
vm,
59+
'src/20251111_AaveV3Plasma_FreezeWstETHOnPlasma/FreezeWstETHOnPlasma.md'
60+
)
61+
);
62+
}
63+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import {ConfigFile} from '../../generator/types';
2+
export const config: ConfigFile = {
3+
rootOptions: {
4+
pools: ['AaveV3Plasma'],
5+
title: 'Freeze wstETH on Plasma',
6+
shortName: 'FreezeWstETHOnPlasma',
7+
date: '20251111',
8+
author: 'Lido (implemented by ACI via Skyward)',
9+
discussion: 'https://governance.aave.com/t/direct-to-aip-freeze-wsteth-on-plasma/23400',
10+
snapshot: '',
11+
votingNetwork: 'AVALANCHE',
12+
},
13+
poolOptions: {
14+
AaveV3Plasma: {
15+
configs: {FREEZE: [{asset: 'wstETH', shouldBeFrozen: true}]},
16+
cache: {blockNumber: 5968287},
17+
},
18+
},
19+
};

0 commit comments

Comments
 (0)