-
Notifications
You must be signed in to change notification settings - Fork 0
Vote 2026-05-13 (#201) #624
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
Merged
Merged
Changes from all commits
Commits
Show all changes
27 commits
Select commit
Hold shift + click to select a range
aae9dd3
Draft vote 2026_05_13 script & tests
phonktown 17771d0
feat(Vote): adjust tests
phonktown 843e5b7
feat(Vote): adjust tests & descriptions
phonktown 724ee6c
Merge pull request #622 from lidofinance/master
iamnp 986ff00
Merge pull request #623 from lidofinance/master
iamnp 0573d05
feat(Vote): adjust tests
phonktown e16245e
feat(Vote): add IV vote section with VEBO frame adjustment
F4ever 2ec28af
feat(Vote): fix VEBO related tests
F4ever fa62d10
feat(Vote): split items by each af call + vebo happy path in 45 epoches
F4ever 7287632
feat(Vote): replaced hardcode with utils call
F4ever 0446429
feat(Vote): remove unused vars + check after vote initial epoch
F4ever 01fd90a
feat(Vote): update descriptions
phonktown 7c8afec
Merge pull request #621 from lidofinance/feat/vote-2026-05-13
iamnp 60900ed
feat(Vote): update desc
phonktown 85dc72a
Merge pull request #625 from lidofinance/feat/vote-13-05-2026-descrip…
iamnp d6aeca9
fix(Vote): test fixes
phonktown 5f5a730
Add anvil and foundry RPC stability params to DG regression CI
Psirex 73a034a
Merge pull request #626 from lidofinance/fix/vote-13-05-2026-cleanup
iamnp d8710e2
Use develop branch in the DG regression tests workflow
Psirex e4f4e5b
Merge pull request #627 from lidofinance/fix/dg-test-fails
iamnp fff7f7b
fix(Vote): text-adjustments
phonktown 71c7506
Merge pull request #628 from lidofinance/fix/vote-13-05-2026-text-adj…
iamnp 5d2797d
feat(Vote): move script to archive
phonktown 489841c
feat(Vote): adjust script path for vote 201 tests
phonktown 9898f70
Merge pull request #630 from lidofinance/feat/archive-vote-201
kate-aleksseeva b8ea651
feat(Vote): archive vote 201 tests
phonktown a28b42c
Merge pull request #631 from lidofinance/feat/archive-test
iamnp File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,188 @@ | ||
| """ | ||
| Vote 2026_05_13. | ||
|
|
||
| I. Extend Dual Governance Emergency Protection for one additional year | ||
| 1.1. Call setEmergencyProtectionEndDate(1813449600) on Emergency Protected Timelock 0xCE0425301C85c5Ea2A0873A2dEe44d78E02D2316 | ||
|
|
||
| II. Grant MANAGE_SIGNING_KEYS role to Consensys | ||
| 1.2. Grant MANAGE_SIGNING_KEYS 75abc64490e17b40ea1e66691c3eb493647b24430b358bd87ec3e5127f1621ee role to 0xF45C77EadD434612fCD93db978B3E36B0D58eC99 for Node Operator Consensys (ID = 21) | ||
|
|
||
| III. Increase limit from $250K per 3 months to $5M per 6 months on Alliance Ops stablecoins Easy Track factory | ||
| 1.3. Set limit to 5,000,000 USD per 6 months on Alliance Ops stablecoins AllowedRecipientsRegistry 0x3B525F4c059F246Ca4aa995D21087204F30c9E2F | ||
|
|
||
| IV. Change number of epochs in VEBO reporting frame | ||
| 1.4. Grant MANAGE_FRAME_CONFIG_ROLE 0x921f40f434e049d23969cbe68d9cf3ac1013fbe8945da07963af6f3142de6afe role to Aragon Agent 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c on the VEBO Hash Consensus 0x7FaDB6358950c5fAA66Cb5EB8eE5147De3df355a | ||
| 1.5. Set number of epochs in reporting frame to 45 on the VEBO Hash Consensus 0x7FaDB6358950c5fAA66Cb5EB8eE5147De3df355a | ||
| 1.6. Revoke MANAGE_FRAME_CONFIG_ROLE 0x921f40f434e049d23969cbe68d9cf3ac1013fbe8945da07963af6f3142de6afe role from Aragon Agent 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c on the VEBO Hash Consensus 0x7FaDB6358950c5fAA66Cb5EB8eE5147De3df355a | ||
| 1.7. Set time window constraint (13:00 - 16:30 UTC) for Dual Governance Proposal execution on Dual Governance Time Constraints 0x2a30F5aC03187674553024296bed35Aa49749DDa | ||
|
|
||
| Vote passed & executed on May-18-2026 02:51:11 PM UTC, block 25122802. | ||
| """ | ||
|
|
||
| from brownie import interface | ||
| from typing import Dict, List, Tuple | ||
|
|
||
| from utils.voting import bake_vote_items, confirm_vote_script, create_vote | ||
| from utils.ipfs import upload_vote_ipfs_description, calculate_vote_ipfs_description | ||
| from utils.config import get_deployer_account, get_is_live, get_priority_fee | ||
| from utils.mainnet_fork import pass_and_exec_dao_vote | ||
| from utils.dual_governance import submit_proposals | ||
| from utils.permissions import encode_permission_grant_p | ||
| from utils.permission_parameters import Param, Op, ArgumentValue | ||
| from utils.allowed_recipients_registry import set_limit_parameters | ||
|
|
||
| from utils.agent import agent_forward | ||
|
|
||
| # ============================== Addresses =================================== | ||
| EMERGENCY_PROTECTED_TIMELOCK = "0xCE0425301C85c5Ea2A0873A2dEe44d78E02D2316" | ||
| NODE_OPERATORS_REGISTRY = "0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5" | ||
| ALLIANCE_OPS_STABLECOINS_REGISTRY = "0x3B525F4c059F246Ca4aa995D21087204F30c9E2F" | ||
| VEBO_HASH_CONSENSUS = "0x7FaDB6358950c5fAA66Cb5EB8eE5147De3df355a" | ||
| DUAL_GOVERNANCE_TIME_CONSTRAINTS = "0x2a30F5aC03187674553024296bed35Aa49749DDa" | ||
| ARAGON_AGENT = "0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c" | ||
|
|
||
|
|
||
| # ============================== Constants =================================== | ||
| NEW_EMERGENCY_PROTECTION_END_DATE = 1813449600 # 2027-06-20 00:00:00 UTC | ||
|
|
||
| CONSENSYS_NO_ID = 21 | ||
| CONSENSYS_NEW_MANAGER = "0xF45C77EadD434612fCD93db978B3E36B0D58eC99" | ||
|
|
||
| ALLIANCE_OPS_NEW_LIMIT = 5_000_000 * 10**18 | ||
| ALLIANCE_OPS_NEW_PERIOD_DURATION_MONTHS = 6 | ||
|
|
||
| VEBO_NEW_EPOCHS_PER_FRAME = 45 | ||
|
|
||
| # HashConsensus roles | ||
| MANAGE_FRAME_CONFIG_ROLE = "0x921f40f434e049d23969cbe68d9cf3ac1013fbe8945da07963af6f3142de6afe" | ||
|
|
||
|
|
||
| # ============================= IPFS Description ================================== | ||
| IPFS_DESCRIPTION = """ | ||
| 1. **Extend Dual Governance Emergency Protection until June 20, 2027**, [as proposed on the forum](https://research.lido.fi/t/lip-28-dual-governance/10032/18). Item 1.1. | ||
| 2. **Grant MANAGE_SIGNING_KEYS role to Node Operator Consensys**, [as requested on the forum](https://research.lido.fi/t/node-operator-registry-name-reward-address-change/4170/54). Item 1.2. | ||
| 3. **Increase Alliance Ops stablecoins Easy Track factory limit from $250K per 3 months to $5M per 6 months**, [as per Snapshot decision](https://snapshot.box/#/s:lido-snapshot.eth/proposal/0x429bdf30549800d3ed87ffa701802d267f6a1e06d1719c6f0a4cb2ecefde521e). Item 1.3. | ||
| 4. **Reduce VEBO Reporting Frame from 75 to 45 epochs**, [as proposed on the forum](https://research.lido.fi/t/proposal-reduce-vebo-reporting-frame-from-8h-to-4-8h-75-45-epochs/11524). Items 1.4–1.7. | ||
| """ | ||
|
|
||
|
|
||
| # ================================ Main ====================================== | ||
| def get_dg_items() -> List[Tuple[str, str]]: | ||
| timelock = interface.EmergencyProtectedTimelock(EMERGENCY_PROTECTED_TIMELOCK) | ||
| vebo_hash_consensus = interface.HashConsensus(VEBO_HASH_CONSENSUS) | ||
| time_constraints = interface.TimeConstraints(DUAL_GOVERNANCE_TIME_CONSTRAINTS) | ||
|
|
||
| (_, _, fast_lane_length_slots) = vebo_hash_consensus.getFrameConfig() | ||
|
|
||
| return [ | ||
| # 1.1. Call setEmergencyProtectionEndDate(1813449600) on Emergency Protected Timelock 0xCE0425301C85c5Ea2A0873A2dEe44d78E02D2316 | ||
| ( | ||
| timelock.address, | ||
| timelock.setEmergencyProtectionEndDate.encode_input(NEW_EMERGENCY_PROTECTION_END_DATE), | ||
| ), | ||
| # 1.2. Grant MANAGE_SIGNING_KEYS 75abc64490e17b40ea1e66691c3eb493647b24430b358bd87ec3e5127f1621ee role to 0xF45C77EadD434612fCD93db978B3E36B0D58eC99 for Node Operator Consensys (ID = 21) | ||
| agent_forward([ | ||
| encode_permission_grant_p( | ||
| target_app=NODE_OPERATORS_REGISTRY, | ||
| permission_name="MANAGE_SIGNING_KEYS", | ||
| grant_to=CONSENSYS_NEW_MANAGER, | ||
| params=[Param(0, Op.EQ, ArgumentValue(CONSENSYS_NO_ID))], | ||
| ), | ||
| ]), | ||
| # 1.3. Set limit to 5,000,000 USD per 6 months on Alliance Ops stablecoins AllowedRecipientsRegistry 0x3B525F4c059F246Ca4aa995D21087204F30c9E2F | ||
| agent_forward([ | ||
| set_limit_parameters( | ||
| registry_address=ALLIANCE_OPS_STABLECOINS_REGISTRY, | ||
| limit=ALLIANCE_OPS_NEW_LIMIT, | ||
| period_duration_months=ALLIANCE_OPS_NEW_PERIOD_DURATION_MONTHS, | ||
| ), | ||
| ]), | ||
| # 1.4. Grant MANAGE_FRAME_CONFIG_ROLE 0x921f40f434e049d23969cbe68d9cf3ac1013fbe8945da07963af6f3142de6afe role to Aragon Agent 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c on the VEBO Hash Consensus 0x7FaDB6358950c5fAA66Cb5EB8eE5147De3df355a | ||
| agent_forward([ | ||
| ( | ||
| vebo_hash_consensus.address, | ||
| vebo_hash_consensus.grantRole.encode_input(MANAGE_FRAME_CONFIG_ROLE, ARAGON_AGENT), | ||
| ), | ||
| ]), | ||
| # 1.5. Set number of epochs in reporting frame to 45 on the VEBO Hash Consensus 0x7FaDB6358950c5fAA66Cb5EB8eE5147De3df355a | ||
| agent_forward([ | ||
| ( | ||
| vebo_hash_consensus.address, | ||
| vebo_hash_consensus.setFrameConfig.encode_input(VEBO_NEW_EPOCHS_PER_FRAME, fast_lane_length_slots), | ||
| ), | ||
| ]), | ||
| # 1.6. Revoke MANAGE_FRAME_CONFIG_ROLE 0x921f40f434e049d23969cbe68d9cf3ac1013fbe8945da07963af6f3142de6afe role from Aragon Agent 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c on the VEBO Hash Consensus 0x7FaDB6358950c5fAA66Cb5EB8eE5147De3df355a | ||
| agent_forward([ | ||
| ( | ||
| vebo_hash_consensus.address, | ||
| vebo_hash_consensus.revokeRole.encode_input(MANAGE_FRAME_CONFIG_ROLE, ARAGON_AGENT), | ||
| ), | ||
| ]), | ||
| # 1.7. Set time window constraint (13:00 - 16:30 UTC) for Dual Governance Proposal execution on Dual Governance Time Constraints 0x2a30F5aC03187674553024296bed35Aa49749DDa | ||
| ( | ||
| DUAL_GOVERNANCE_TIME_CONSTRAINTS, | ||
| time_constraints.checkTimeWithinDayTimeAndEmit.encode_input( | ||
| 13 * 3600, | ||
| 16 * 3600 + 30 * 60, | ||
| ), | ||
| ), | ||
| ] | ||
|
|
||
|
|
||
| def get_vote_items() -> Tuple[List[str], List[Tuple[str, str]]]: | ||
| dg_items = get_dg_items() | ||
|
|
||
| dg_call_script = submit_proposals([ | ||
| ( | ||
| dg_items, | ||
| "Extend Dual Governance Emergency Protection until June 20 2027, " | ||
| "grant MANAGE_SIGNING_KEYS role to Node Operator Consensys, " | ||
| "increase Alliance Ops stablecoins Easy Track factory limit from $250K per 3 months to $5M per 6 months, " | ||
| "reduce VEBO Reporting Frame from 75 to 45 epochs", | ||
| ) | ||
| ]) | ||
|
|
||
| vote_desc_items, call_script_items = zip( | ||
| ( | ||
| "1. Submit a Dual Governance proposal to extend Dual Governance Emergency Protection until June 20 2027, " | ||
| "grant MANAGE_SIGNING_KEYS role to Node Operator Consensys, " | ||
| "increase Alliance Ops stablecoins Easy Track factory limit from $250K per 3 months to $5M per 6 months, " | ||
| "reduce VEBO Reporting Frame from 75 to 45 epochs", | ||
| dg_call_script[0] | ||
| ), | ||
| ) | ||
|
|
||
| return vote_desc_items, call_script_items | ||
|
|
||
|
|
||
| def start_vote(tx_params: Dict[str, str], silent: bool = False): | ||
| vote_desc_items, call_script_items = get_vote_items() | ||
| vote_items = bake_vote_items(list(vote_desc_items), list(call_script_items)) | ||
|
|
||
| desc_ipfs = ( | ||
| calculate_vote_ipfs_description(IPFS_DESCRIPTION) | ||
| if silent else upload_vote_ipfs_description(IPFS_DESCRIPTION) | ||
| ) | ||
|
|
||
| vote_id, tx = confirm_vote_script(vote_items, silent, desc_ipfs) and list( | ||
| create_vote(vote_items, tx_params, desc_ipfs=desc_ipfs) | ||
| ) | ||
|
|
||
| return vote_id, tx | ||
|
|
||
| def main(): | ||
| tx_params: Dict[str, str] = {"from": get_deployer_account().address} | ||
| if get_is_live(): | ||
| tx_params["priority_fee"] = get_priority_fee() | ||
|
|
||
| vote_id, _ = start_vote(tx_params=tx_params, silent=False) | ||
| vote_id >= 0 and print(f"Vote created: {vote_id}.") | ||
|
|
||
| def start_and_execute_vote_on_fork_manual(): | ||
| if get_is_live(): | ||
| raise Exception("This script is for local testing only.") | ||
|
|
||
| tx_params = {"from": get_deployer_account()} | ||
| vote_id, _ = start_vote(tx_params=tx_params, silent=True) | ||
| print(f"Vote created: {vote_id}.") | ||
| pass_and_exec_dao_vote(int(vote_id), step_by_step=True) | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.