Skip to content

Commit 7bf67c5

Browse files
committed
Merge branch 'feat/v3-phase-2' of https://github.com/lidofinance/scripts into feat/v3-phase-2
2 parents 74e7c83 + 9a58a70 commit 7bf67c5

File tree

2 files changed

+33
-33
lines changed

2 files changed

+33
-33
lines changed

scripts/upgrade_2026_01_20_v3_phase_2.py

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""
22
Vote 2026_01_21
33
4-
# TODO <a list of vote items synced with Notion Omnibus checklist>
4+
TODO: a list of items
55
66
# TODO (after vote) Vote #{vote number} passed & executed on ${date+time}, block ${blockNumber}.
77
"""
@@ -87,37 +87,37 @@ def get_vote_items() -> Tuple[List[str], List[Tuple[str, str]]]:
8787
predeposit_guarantee = interface.PredepositGuarantee(PREDEPOSIT_GUARANTEE)
8888

8989
dg_items = [
90-
# 1.1. Revoke REGISTRY_ROLE on OperatorGrid from old VaultsAdapter
90+
# 1.1. Revoke `vaults.OperatorsGrid.Registry` role `a495a3428837724c7f7648cda02eb83c9c4c778c8688d6f254c7f3f80c154d55` on OperatorGrid `0xC69685E89Cefc327b43B7234AC646451B27c544d` from old VaultsAdapter `0xe2DE6d2DefF15588a71849c0429101F8ca9FB14D`
9191
agent_forward([
9292
encode_oz_revoke_role(operator_grid, "vaults.OperatorsGrid.Registry", OLD_VAULTS_ADAPTER)
9393
]),
9494

95-
# 1.2. Grant REGISTRY_ROLE on OperatorGrid to new VaultsAdapter
95+
# 1.2. Grant `vaults.OperatorsGrid.Registry` role `a495a3428837724c7f7648cda02eb83c9c4c778c8688d6f254c7f3f80c154d55` on OperatorGrid `0xC69685E89Cefc327b43B7234AC646451B27c544d` to new VaultsAdapter `0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27`
9696
agent_forward([
9797
encode_oz_grant_role(operator_grid, "vaults.OperatorsGrid.Registry", VAULTS_ADAPTER)
9898
]),
9999

100-
# 1.3. Revoke VALIDATOR_EXIT_ROLE on VaultHub from old VaultsAdapter
100+
# 1.3. Revoke `vaults.VaultHub.ValidatorExitRole` role `2159c5943234d9f3a7225b9a743ea06e4a0d0ba5ed82889e867759a8a9eb7883` on VaultHub `0x1d201BE093d847f6446530Efb0E8Fb426d176709` from old VaultsAdapter `0xe2DE6d2DefF15588a71849c0429101F8ca9FB14D`
101101
agent_forward([
102102
encode_oz_revoke_role(vault_hub, "vaults.VaultHub.ValidatorExitRole", OLD_VAULTS_ADAPTER)
103103
]),
104104

105-
# 1.4. Grant VALIDATOR_EXIT_ROLE on VaultHub to new VaultsAdapter
105+
# 1.4. Grant `vaults.VaultHub.ValidatorExitRole` role `2159c5943234d9f3a7225b9a743ea06e4a0d0ba5ed82889e867759a8a9eb7883` on VaultHub `0x1d201BE093d847f6446530Efb0E8Fb426d176709` to new VaultsAdapter `0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27`
106106
agent_forward([
107107
encode_oz_grant_role(vault_hub, "vaults.VaultHub.ValidatorExitRole", VAULTS_ADAPTER)
108108
]),
109109

110-
# 1.5. Revoke BAD_DEBT_MASTER_ROLE on VaultHub from old VaultsAdapter
110+
# 1.5. Revoke `vaults.VaultHub.BadDebtMasterRole` role `a85bab4b576ca359fa6ae02ab8744b5c85c7e7ed4d7e0bca7b5b64580ac5d17d` on VaultHub `0x1d201BE093d847f6446530Efb0E8Fb426d176709` from old VaultsAdapter `0xe2DE6d2DefF15588a71849c0429101F8ca9FB14D`
111111
agent_forward([
112112
encode_oz_revoke_role(vault_hub, "vaults.VaultHub.BadDebtMasterRole", OLD_VAULTS_ADAPTER)
113113
]),
114114

115-
# 1.6. Grant BAD_DEBT_MASTER_ROLE on VaultHub to new VaultsAdapter
115+
# 1.6. Grant `vaults.VaultHub.BadDebtMasterRole` role `a85bab4b576ca359fa6ae02ab8744b5c85c7e7ed4d7e0bca7b5b64580ac5d17d` on VaultHub `0x1d201BE093d847f6446530Efb0E8Fb426d176709` to new VaultsAdapter `0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27`
116116
agent_forward([
117117
encode_oz_grant_role(vault_hub, "vaults.VaultHub.BadDebtMasterRole", VAULTS_ADAPTER)
118118
]),
119119

120-
# 1.7. Raise CSM (MODULE_ID = 3) stake share limit from 500 BP to 750 BP and priority exit threshold from 625 BP to 900 BP
120+
# 1.7. Raise CSM (MODULE_ID = `3`) stake share limit from `500 BP` to `750 BP` and priority exit threshold from `625 BP` to `900 BP`
121121
agent_forward([
122122
(
123123
staking_router.address,
@@ -133,7 +133,7 @@ def get_vote_items() -> Tuple[List[str], List[Tuple[str, str]]]:
133133
),
134134
]),
135135

136-
# 1.8. Grant MANAGE_FRAME_CONFIG_ROLE on CS HashConsensus to TwoPhaseFrameConfigUpdate
136+
# 1.8. Grant `MANAGE_FRAME_CONFIG_ROLE` `921f40f434e049d23969cbe68d9cf3ac1013fbe8945da07963af6f3142de6afe` on CS HashConsensus `0x71093efF8D8599b5fA340D665Ad60fA7C80688e4` to TwoPhaseFrameConfigUpdate contract `0xb2B4DB1491cbe949ae85EfF01E0d3ee239f110C1`
137137
agent_forward([
138138
encode_oz_grant_role(
139139
contract=cs_hash_consensus,
@@ -142,117 +142,117 @@ def get_vote_items() -> Tuple[List[str], List[Tuple[str, str]]]:
142142
)
143143
]),
144144

145-
# 1.9. Update PredepositGuarantee implementation
145+
# 1.9. Update PredepositGuarantee proxy `0xF4bF42c6D6A0E38825785048124DBAD6c9eaaac3` implementation to `0xE78717192C45736DF0E4be55c0219Ee7f9aDdd0D`
146146
agent_forward([
147147
(
148148
predeposit_guarantee_proxy.address,
149149
predeposit_guarantee_proxy.proxy__upgradeTo.encode_input(PREDEPOSIT_GUARANTEE_NEW_IMPL),
150150
)
151151
]),
152152

153-
# 1.10. Grant RESUME_ROLE on PredepositGuarantee to Agent
153+
# 1.10. Temporarily grant `PausableUntilWithRoles.ResumeRole` `a79a6aede309e0d48bf2ef0f71355c06ad317956d4c0da2deb0dc47cc34f826c` on PredepositGuarantee `0xF4bF42c6D6A0E38825785048124DBAD6c9eaaac3` to Agent `0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c`
154154
agent_forward([
155155
encode_oz_grant_role(predeposit_guarantee, "PausableUntilWithRoles.ResumeRole", AGENT)
156156
]),
157157

158-
# 1.11. Unpause PredepositGuarantee
158+
# 1.11. Unpause PredepositGuarantee `0xF4bF42c6D6A0E38825785048124DBAD6c9eaaac3`
159159
agent_forward([
160160
(
161161
predeposit_guarantee_proxy.address,
162162
predeposit_guarantee.resume.encode_input(),
163163
)
164164
]),
165165

166-
# 1.12. Revoke RESUME_ROLE on PredepositGuarantee from Agent
166+
# 1.12. Revoke `PausableUntilWithRoles.ResumeRole` `a79a6aede309e0d48bf2ef0f71355c06ad317956d4c0da2deb0dc47cc34f826c` on PredepositGuarantee `0xF4bF42c6D6A0E38825785048124DBAD6c9eaaac3` from Agent `0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c`
167167
agent_forward([
168168
encode_oz_revoke_role(predeposit_guarantee, "PausableUntilWithRoles.ResumeRole", AGENT)
169169
]),
170170

171-
# 1.13. Grant STAKING_CONTROL_ROLE on Lido to Agent
171+
# 1.13. Temporarily grant `STAKING_CONTROL_ROLE` `a42eee1333c0758ba72be38e728b6dadb32ea767de5b4ddbaea1dae85b1b051f` on Lido `0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84` to Agent `0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c`
172172
agent_forward([
173173
encode_permission_grant(lido, "STAKING_CONTROL_ROLE", AGENT)
174174
]),
175175

176-
# 1.14. Set max external ratio to 30%
176+
# 1.14. Set max external ratio to `30%` on Lido `0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84`
177177
agent_forward([
178178
(
179179
lido.address,
180180
lido.setMaxExternalRatioBP.encode_input(MAX_EXTERNAL_RATIO_BP),
181181
)
182182
]),
183183

184-
# 1.15. Revoke STAKING_CONTROL_ROLE on Lido from Agent
184+
# 1.15. Revoke `STAKING_CONTROL_ROLE` a42eee1333c0758ba72be38e728b6dadb32ea767de5b4ddbaea1dae85b1b051f on Lido `0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84` from Agent `0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c`
185185
agent_forward([
186186
encode_permission_revoke(lido, "STAKING_CONTROL_ROLE", AGENT)
187187
]),
188188
]
189189

190190
dg_call_script = submit_proposals([
191-
(dg_items, "TODO DG proposal description")
191+
(dg_items, "Activate Lido V3 Phase 2, raise CSM stake share limit to 7.5% and priority exit threshold from 9%, grant MANAGE_FRAME_CONFIG_ROLE on CS HashConsensus to TwoPhaseFrameConfigUpdate contract")
192192
])
193193

194194
vote_desc_items, call_script_items = zip(
195195
(
196-
"TODO 1. DG submission description",
196+
"1. Submit a Dual Governance proposal to activate Lido V3 Phase 2, raise CSM stake share limit to 7.5% and priority exit threshold from 9%, grant MANAGE_FRAME_CONFIG_ROLE on CS HashConsensus to TwoPhaseFrameConfigUpdate contract",
197197
dg_call_script[0]
198198
),
199199
(
200-
"2. Remove old ALTER_TIERS_IN_OPERATOR_GRID_FACTORY factory from Easy Track",
200+
"2. Remove old `ALTER_TIERS_IN_OPERATOR_GRID_FACTORY` `0xa29173C7BCf39dA48D5E404146A652d7464aee14` from Easy Track `0xF0211b7660680B49De1A7E9f25C65660F0a13Fea`",
201201
remove_evmscript_factory(OLD_ALTER_TIERS_IN_OPERATOR_GRID_FACTORY)
202202
),
203203
(
204-
"3. Add new ALTER_TIERS_IN_OPERATOR_GRID_FACTORY factory to Easy Track",
204+
"3. Add new `ALTER_TIERS_IN_OPERATOR_GRID_FACTORY` `0x73f80240ad9363d5d3C5C3626953C351cA36Bfe9` to Easy Track `0xF0211b7660680B49De1A7E9f25C65660F0a13Fea` (permissions: operatorGrid.alterTiers `0xc69685e89cefc327b43b7234ac646451b27c544d54544bcb`)",
205205
add_evmscript_factory(ALTER_TIERS_IN_OPERATOR_GRID_FACTORY, create_permissions(operator_grid, "alterTiers"))
206206
),
207207
(
208-
"4. Remove old REGISTER_GROUPS_IN_OPERATOR_GRID_FACTORY factory from Easy Track",
208+
"4. Remove old `REGISTER_GROUPS_IN_OPERATOR_GRID_FACTORY` `0x194A46DA1947E98c9D79af13E06Cfbee0D8610cC` from Easy Track `0xF0211b7660680B49De1A7E9f25C65660F0a13Fea`",
209209
remove_evmscript_factory(OLD_REGISTER_GROUPS_IN_OPERATOR_GRID_FACTORY)
210210
),
211211
(
212-
"5. Add new REGISTER_GROUPS_IN_OPERATOR_GRID_FACTORY factory to Easy Track",
212+
"5. Add new `REGISTER_GROUPS_IN_OPERATOR_GRID_FACTORY` `0xE73842AEbEC99Dacf2aAEec61409fD01A033f478` to Easy Track `0xF0211b7660680B49De1A7E9f25C65660F0a13Fea` (permissions: operatorGrid.registerGroup, operatorGrid.registerTiers `0xc69685e89cefc327b43b7234ac646451b27c544de37a7c0bc69685e89cefc327b43b7234ac646451b27c544d552b91da`)",
213213
add_evmscript_factory(
214214
REGISTER_GROUPS_IN_OPERATOR_GRID_FACTORY,
215215
create_permissions(operator_grid, "registerGroup") + create_permissions(operator_grid, "registerTiers")[2:]
216216
)
217217
),
218218
(
219-
"6. Remove old UPDATE_GROUPS_SHARE_LIMIT_IN_OPERATOR_GRID_FACTORY factory from Easy Track",
219+
"6. Remove old `UPDATE_GROUPS_SHARE_LIMIT_IN_OPERATOR_GRID_FACTORY` `0x8Bdc726a3147D8187820391D7c6F9F942606aEe6` from Easy Track `0xF0211b7660680B49De1A7E9f25C65660F0a13Fea`",
220220
remove_evmscript_factory(OLD_UPDATE_GROUPS_SHARE_LIMIT_IN_OPERATOR_GRID_FACTORY)
221221
),
222222
(
223-
"7. Add new UPDATE_GROUPS_SHARE_LIMIT_IN_OPERATOR_GRID_FACTORY factory to Easy Track",
223+
"7. Add new `UPDATE_GROUPS_SHARE_LIMIT_IN_OPERATOR_GRID_FACTORY` `0xf23559De8ab37fF7a154384B0822dA867Cfa7Eac` to Easy Track `0xF0211b7660680B49De1A7E9f25C65660F0a13Fea` (permissions: operatorGrid.updateGroupShareLimit `0xc69685e89cefc327b43b7234ac646451b27c544de52b6085`)",
224224
add_evmscript_factory(UPDATE_GROUPS_SHARE_LIMIT_IN_OPERATOR_GRID_FACTORY, create_permissions(operator_grid, "updateGroupShareLimit"))
225225
),
226226
(
227-
"8. Remove old SET_JAIL_STATUS_IN_OPERATOR_GRID_FACTORY factory from Easy Track",
227+
"8. Remove old `SET_JAIL_STATUS_IN_OPERATOR_GRID_FACTORY` `0x93F1DEE4473Ee9F42c8257C201e33a6Da30E5d67` from Easy Track `0xF0211b7660680B49De1A7E9f25C65660F0a13Fea`",
228228
remove_evmscript_factory(OLD_SET_JAIL_STATUS_IN_OPERATOR_GRID_FACTORY)
229229
),
230230
(
231-
"9. Add new SET_JAIL_STATUS_IN_OPERATOR_GRID_FACTORY factory to Easy Track",
231+
"9. Add new `SET_JAIL_STATUS_IN_OPERATOR_GRID_FACTORY` `0x6a4f33F05E7412A11100353724Bb6a152Cf0D305` to Easy Track `0xF0211b7660680B49De1A7E9f25C65660F0a13Fea` (permissions: vaults_adapter.setVaultJailStatus `0x28f9ac198c4e0fa6a9ad2c2f97cb38f1a3120f27285f591c`)",
232232
add_evmscript_factory(SET_JAIL_STATUS_IN_OPERATOR_GRID_FACTORY, create_permissions(vaults_adapter, "setVaultJailStatus"))
233233
),
234234
(
235-
"10. Remove old SOCIALIZE_BAD_DEBT_IN_VAULT_HUB_FACTORY factory from Easy Track",
235+
"10. Remove old `SOCIALIZE_BAD_DEBT_IN_VAULT_HUB_FACTORY` `0x1dF50522A1D868C12bF71747Bb6F24A18Fe6d32C` from Easy Track `0xF0211b7660680B49De1A7E9f25C65660F0a13Fea`",
236236
remove_evmscript_factory(OLD_SOCIALIZE_BAD_DEBT_IN_VAULT_HUB_FACTORY)
237237
),
238238
(
239-
"11. Add new SOCIALIZE_BAD_DEBT_IN_VAULT_HUB_FACTORY factory to Easy Track",
239+
"11. Add new `SOCIALIZE_BAD_DEBT_IN_VAULT_HUB_FACTORY` `0xaf35A63a4114B7481589fDD9FDB3e35Fd65fAed7` to Easy Track `0xF0211b7660680B49De1A7E9f25C65660F0a13Fea` (permissions: vaults_adapter.socializeBadDebt `0x28f9ac198c4e0fa6a9ad2c2f97cb38f1a3120f2796c4d514`)",
240240
add_evmscript_factory(SOCIALIZE_BAD_DEBT_IN_VAULT_HUB_FACTORY, create_permissions(vaults_adapter, "socializeBadDebt"))
241241
),
242242
(
243-
"12. Remove old FORCE_VALIDATOR_EXITS_IN_VAULT_HUB_FACTORY factory from Easy Track",
243+
"12. Remove old `FORCE_VALIDATOR_EXITS_IN_VAULT_HUB_FACTORY` `0x6C968cD89CA358fbAf57B18e77a8973Fa869a6aA` from Easy Track `0xF0211b7660680B49De1A7E9f25C65660F0a13Fea`",
244244
remove_evmscript_factory(OLD_FORCE_VALIDATOR_EXITS_IN_VAULT_HUB_FACTORY)
245245
),
246246
(
247-
"13. Add new FORCE_VALIDATOR_EXITS_IN_VAULT_HUB_FACTORY factory to Easy Track",
247+
"13. Add new `FORCE_VALIDATOR_EXITS_IN_VAULT_HUB_FACTORY` `0x6F5c0A5a824773E8f8285bC5aA59ea0Aab2A6400` to Easy Track `0xF0211b7660680B49De1A7E9f25C65660F0a13Fea` (permissions: vaults_adapter.forceValidatorExit `0x28f9ac198c4e0fa6a9ad2c2f97cb38f1a3120f2733eb1f1a`)",
248248
add_evmscript_factory(FORCE_VALIDATOR_EXITS_IN_VAULT_HUB_FACTORY, create_permissions(vaults_adapter, "forceValidatorExit"))
249249
),
250250
(
251-
"14. Remove old UPDATE_VAULTS_FEES_IN_OPERATOR_GRID_FACTORY factory from Easy Track",
251+
"14. Remove old `UPDATE_VAULTS_FEES_IN_OPERATOR_GRID_FACTORY` `0x5C3bDFa3E7f312d8cf72F56F2b797b026f6B471c` from Easy Track `0xF0211b7660680B49De1A7E9f25C65660F0a13Fea`",
252252
remove_evmscript_factory(OLD_UPDATE_VAULTS_FEES_IN_OPERATOR_GRID_FACTORY)
253253
),
254254
(
255-
"15. Add new UPDATE_VAULTS_FEES_IN_OPERATOR_GRID_FACTORY factory to Easy Track",
255+
"15. Add new `UPDATE_VAULTS_FEES_IN_OPERATOR_GRID_FACTORY` `0xDfA0bc38113B6d53c2881573FD764CEEFf468610` to Easy Track `0xF0211b7660680B49De1A7E9f25C65660F0a13Fea` (permissions: vaults_adapter.updateVaultFees `0x28f9ac198c4e0fa6a9ad2c2f97cb38f1a3120f27ed7139a7`)",
256256
add_evmscript_factory(UPDATE_VAULTS_FEES_IN_OPERATOR_GRID_FACTORY, create_permissions(vaults_adapter, "updateVaultFees"))
257257
),
258258
)

tests/test_2026_01_20.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ def test_vote(helpers, accounts, ldo_holder, vote_ids_from_env, stranger, dual_g
379379
proposal_id=EXPECTED_DG_PROPOSAL_ID,
380380
proposer=VOTING,
381381
executor=DUAL_GOVERNANCE_ADMIN_EXECUTOR,
382-
metadata="TODO DG proposal description",
382+
metadata="Activate Lido V3 Phase 2, raise CSM stake share limit to 7.5% and priority exit threshold from 9%, grant MANAGE_FRAME_CONFIG_ROLE on CS HashConsensus to TwoPhaseFrameConfigUpdate contract",
383383
proposal_calls=dual_governance_proposal_calls,
384384
)
385385

0 commit comments

Comments
 (0)