Try   HackMD

How to check the Lido DAO onchain vote #184

1. What the vote is about

The Lido DAO on-chain vote #184 consists of nineteen independent steps (or items) and packs together the execution of the two different motions:

  • Extend On-Chain Voting Duration, including:
    • Extend On-Chain Voting Duration from 72h to 120h
    • Change GateSeal on WithdrawalQueue and ValidatorsExitBusOracle
    • Change CSM GateSeal
  • Add Easy Track setups for funding Lido Ecosystem & Lido Labs BORG Foundations’ Operational Expenses Multisigs

2. Resources for the Proposal Validation

The resources listed in this section are considered trustworthy and reliable.

  • Lido Docs - use this to verify contract addresses
  • Blockchain Explorer Etherscan (or alternatives such as Blockscout) - use this to review contract functionality, check the current state of contracts, and inspect available contract functions
  • Lido Research Forum - use this to access original proposals, review details of proposed changes, and validate modification parameters
  • Snapshot - use this to review finalized and pre-approved DAO versions of proposals

Direct links to relevant sources will be provided for each item in the vote, ensuring easy access to the associated information.

3. Voting scripts "translation" and verification

I-a. Extend On-Chain Voting Duration from 72h to 120h

1. Grant UNSAFELY_MODIFY_VOTE_TIME_ROLE to Aragon Voting 0x2e59A20f205bB85a89C53f1936454680651E618e

The vote calls the "grantPermission" function of the "AragonACL" contract with the parameters mentioned below:

On [AragonACL]
0x9895f0f17cc1d1891b6f18ee0b483b6f221b37bb

function grantPermission(
	address _entity,
	address _app,
	bytes32 _role
)

Call data:
[1] [AragonVoting] 0x2e59A20f205bB85a89C53f1936454680651E618e
[2] [AragonVoting] 0x2e59A20f205bB85a89C53f1936454680651E618e
[3] [UNSAFELY MODIFY VOTE TIME ROLE] 0x068ca51c9d69625c7add396c98ca4f3b27d894c3b973051ad3ee53017d7094ea

Key Verification Points:

  • The Aragon Voting contract address 0x2e59A20f205bB85a89C53f1936454680651E618e is published on Lido Docs
  • The keccak of 0x068ca51c9d69625c7add396c98ca4f3b27d894c3b973051ad3ee53017d7094ea matches the one that can be obtained via Etherscan
  • The Aragon Voting contract currently does not have UNSAFELY_MODIFY_VOTE_TIME_ROLE; verify it by executing canPerform function with the following parameters:
    • sender: 0x2e59A20f205bB85a89C53f1936454680651E618e (Aragon Voting contract address)
    • role: 0x068ca51c9d69625c7add396c98ca4f3b27d894c3b973051ad3ee53017d7094ea (UNSAFELY_MODIFY_VOTE_TIME_ROLE keccak)
    • params: 0

2. Change Vote time from 259200 to 432000 on Aragon Voting 0x2e59A20f205bB85a89C53f1936454680651E618e

The vote calls the "unsafelyChangeVoteTime" function of the "AragonVoting" contract with the parameters mentioned below:

On [AragonVoting]
0x2e59A20f205bB85a89C53f1936454680651E618e

function unsafelyChangeVoteTime(
	uint64 _voteTime
)

Call data:
[1] 432000

Key Verification Points:

3. Change Objection Phase time from 86400 to 172800 on Aragon Voting 0x2e59A20f205bB85a89C53f1936454680651E618e

The vote calls the "unsafelyChangeObjectionPhaseTime" function of the "AragonVoting" contract with the parameters mentioned below:

On [AragonVoting]
0x2e59A20f205bB85a89C53f1936454680651E618e

function unsafelyChangeObjectionPhaseTime(
	uint64 _objectionPhaseTime
)

Call data:
[1] 172800

Key Verification Points:

4. Revoke UNSAFELY_MODIFY_VOTE_TIME_ROLE from Aragon Voting 0x2e59A20f205bB85a89C53f1936454680651E618e

The vote calls the "revokePermission" function of the "AragonACL" contract with the parameters mentioned below:

On [AragonACL]
0x9895f0f17cc1d1891b6f18ee0b483b6f221b37bb

function revokePermission(
	address _entity,
	address _app,
	bytes32 _role
)

Call data:
[1] [AragonVoting] 0x2e59A20f205bB85a89C53f1936454680651E618e
[2] [AragonVoting] 0x2e59A20f205bB85a89C53f1936454680651E618e
[3] [UNSAFELY MODIFY VOTE TIME ROLE] 0x068ca51c9d69625c7add396c98ca4f3b27d894c3b973051ad3ee53017d7094ea

Key Verification Points:

  • The Aragon Voting contract address 0x2e59A20f205bB85a89C53f1936454680651E618e matches the one previously used
  • The keccak of UNSAFELY_MODIFY_VOTE_TIME_ROLE 0x068ca51c9d69625c7add396c98ca4f3b27d894c3b973051ad3ee53017d7094ea matches the one previously used

5. Grant CONFIG_MANAGER_ROLE on OracleDaemonConfig 0xbf05A929c3D7885a6aeAd833a992dA6E5ac23b09 to Aragon Agent 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

The vote calls the "grantRole" function of the "OracleDaemonConfig" contract with the parameters mentioned below:

On [AragonAgent]
0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

function forward(
	bytes _evmScript
)

Call data:
[1] See parsed evm script at 5.1

5.1. On [OracleDaemonConfig]
0xbf05A929c3D7885a6aeAd833a992dA6E5ac23b09

function grantRole(
	bytes32 role,
	address account
)

Call data:
[1] [CONFIG MANAGER ROLE] 0xbbfb55d933c2bfa638763473275b1d84c4418e58d26cf9d2cd5758237756d9f0
[2] [AragonAgent] 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

Key Verification Points:

  • The Aragon Agent contract address 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c is published on Lido Docs
  • The OracleDaemonConfig contract address 0xbf05A929c3D7885a6aeAd833a992dA6E5ac23b09 is published on Lido Docs
  • The keccak of CONFIG_MANAGER_ROLE 0xbbfb55d933c2bfa638763473275b1d84c4418e58d26cf9d2cd5758237756d9f0 matches the one that can be obtained via Etherscan
  • The Aragon Agent contract currently does not have CONFIG_MANAGER_ROLE; verify it by executing hasRole function with the following parameters:
    • role: 0xbbfb55d933c2bfa638763473275b1d84c4418e58d26cf9d2cd5758237756d9f0 (CONFIG_MANAGER_ROLE keccak)
    • account: 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c (Aragon agent contract address)

6. Update the FINALIZATION_MAX_NEGATIVE_REBASE_EPOCH_SHIFT parameter in the OracleDaemonConfig contract 0xbf05A929c3D7885a6aeAd833a992dA6E5ac23b09 to 0x08CA (2250 epochs)

The vote calls the "update" function of the "OracleDaemonConfig" contract with the parameters mentioned below:

On [AragonAgent]
0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

function forward(
	bytes _evmScript
)

Call data:
[1] See parsed evm script at 6.1

6.1. On [OracleDaemonConfig]
0xbf05A929c3D7885a6aeAd833a992dA6E5ac23b09

function update(
	string _key,
	bytes _value
)

Call data:
[1] FINALIZATION_MAX_NEGATIVE_REBASE_EPOCH_SHIFT
[2] 0x08ca

Key Verification Points:

  • The OracleDaemonConfig contract address 0xbf05A929c3D7885a6aeAd833a992dA6E5ac23b09 matches the one previously used
  • The current value of the FINALIZATION_MAX_NEGATIVE_REBASE_EPOCH_SHIFT 1350 (0x0546 in hex) is published on Lido docs; additionally, verify it by executing get function with the following parameter:
    • key: FINALIZATION_MAX_NEGATIVE_REBASE_EPOCH_SHIFT
  • The new FINALIZATION_MAX_NEGATIVE_REBASE_EPOCH_SHIFT value 2250 (0x08CA in hex) is published on the research forum

7. Revoke CONFIG_MANAGER_ROLE on OracleDaemonConfig 0xbf05A929c3D7885a6aeAd833a992dA6E5ac23b09 from Aragon Agent 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

The vote calls the "revokeRole" function of the "OracleDaemonConfig" contract with the parameters mentioned below:

On [AragonAgent]
0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

function forward(
	bytes _evmScript
)

Call data:
[1] See parsed evm script at 7.1

7.1. On [OracleDaemonConfig]
0xbf05A929c3D7885a6aeAd833a992dA6E5ac23b09

function revokeRole(
	bytes32 role,
	address account
)

Call data:
[1] [CONFIG MANAGER ROLE] 0xbbfb55d933c2bfa638763473275b1d84c4418e58d26cf9d2cd5758237756d9f0
[2] [AragonAgent] 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

Key Verification Points:

I-b. Change GateSeal on WithdrawalQueue and ValidatorsExitBusOracle

8. Grant PAUSE_ROLE on WithdrawalQueue 0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1 for the new GateSeal 0xf9C9fDB4A5D2AA1D836D5370AB9b28BC1847e178

The vote calls the "grantRole" function of the "WithdrawalQueue" contract with the parameters mentioned below:

On [AragonAgent]
0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

function forward(
	bytes _evmScript
)

Call data:
[1] See parsed evm script at 8.1

8.1. On [WithdrawalQueueERC721]
0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1

function grantRole(
	bytes32 role,
	address account
)

Call data:
[1] [PAUSE ROLE] 0x139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d
[2] [GateSealProposed] 0xf9C9fDB4A5D2AA1D836D5370AB9b28BC1847e178

Key Verification Points:

9. Grant PAUSE_ROLE on ValidatorsExitBusOracle 0x0De4Ea0184c2ad0BacA7183356Aea5B8d5Bf5c6e for the new GateSeal 0xf9C9fDB4A5D2AA1D836D5370AB9b28BC1847e178

The vote calls the "grantRole" function of the "ValidatorsExitBusOracle" contract with the parameters mentioned below:

On [AragonAgent]
0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

function forward(
	bytes _evmScript
)

Call data:
[1] See parsed evm script at 9.1

9.1. On [ValidatorsExitBusOracle]
0x0De4Ea0184c2ad0BacA7183356Aea5B8d5Bf5c6e

function grantRole(
	bytes32 role,
	address account
)

Call data:
[1] [PAUSE ROLE] 0x139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d
[2] [GateSealProposed] 0xf9C9fDB4A5D2AA1D836D5370AB9b28BC1847e178

Key Verification Points:

10. Revoke PAUSE_ROLE on WithdrawalQueue 0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1 from the old GateSeal 0x79243345eDbe01A7E42EDfF5900156700d22611c

The vote calls the "revokeRole" function of the "WithdrawalQueue" contract with the parameters mentioned below:

On [AragonAgent]
0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

function forward(
	bytes _evmScript
)

Call data:
[1] See parsed evm script at 10.1

10.1. On [WithdrawalQueueERC721]
0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1

function revokeRole(
	bytes32 role,
	address account
)

Call data:
[1] [PAUSE ROLE] 0x139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d
[2] [GateSeal] 0x79243345eDbe01A7E42EDfF5900156700d22611c

Key Verification Points:

11. Revoke PAUSE_ROLE on ValidatorsExitBusOracle 0x0De4Ea0184c2ad0BacA7183356Aea5B8d5Bf5c6e from the old GateSeal 0x79243345eDbe01A7E42EDfF5900156700d22611c

The vote calls the "revokeRole" function of the "ValidatorsExitBusOracle" contract with the parameters mentioned below:

On [AragonAgent]
0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

function forward(
	bytes _evmScript
)

Call data:
[1] See parsed evm script at 11.1

11.1. On [ValidatorsExitBusOracle]
0x0De4Ea0184c2ad0BacA7183356Aea5B8d5Bf5c6e

function revokeRole(
	bytes32 role,
	address account
)

Call data:
[1] [PAUSE ROLE] 0x139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d
[2] [GateSeal] 0x79243345eDbe01A7E42EDfF5900156700d22611c

Key Verification Points:

I-c. Change CSM GateSeal

12. Grant PAUSE_ROLE on CSModule 0xdA7dE2ECdDfccC6c3AF10108Db212ACBBf9EA83F for the new CSM GateSeal 0x16Dbd4B85a448bE564f1742d5c8cCdD2bB3185D0

The vote calls the "grantRole" function of the "CSModule" contract with the parameters mentioned below:

On [AragonAgent]
0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

function forward(
	bytes _evmScript
)

Call data:
[1] See parsed evm script at 12.1

12.1. On [CSModule]
0xdA7dE2ECdDfccC6c3AF10108Db212ACBBf9EA83F

function grantRole(
	bytes32 role,
	address account
)

Call data:
[1] [PAUSE ROLE] 0x139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d
[2] [CSMGateSealProposed] 0x16Dbd4B85a448bE564f1742d5c8cCdD2bB3185D0

Key Verification Points:

13. Grant PAUSE_ROLE on CSAccounting 0x4d72BFF1BeaC69925F8Bd12526a39BAAb069e5Da for the new CSM GateSeal 0x16Dbd4B85a448bE564f1742d5c8cCdD2bB3185D0

The vote calls the "grantRole" function of the "CSAccounting" contract with the parameters mentioned below:

On [AragonAgent]
0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

function forward(
	bytes _evmScript
)

Call data:
[1] See parsed evm script at 13.1

13.1. On [CSAccounting]
0x4d72BFF1BeaC69925F8Bd12526a39BAAb069e5Da

function grantRole(
	bytes32 role,
	address account
)

Call data:
[1] [PAUSE ROLE] 0x139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d
[2] [CSMGateSealProposed] 0x16Dbd4B85a448bE564f1742d5c8cCdD2bB3185D0

Key Verification Points:

14. Grant PAUSE_ROLE on CSFeeOracle 0x4D4074628678Bd302921c20573EEa1ed38DdF7FB for the new CSM GateSeal 0x16Dbd4B85a448bE564f1742d5c8cCdD2bB3185D0

The vote calls the "grantRole" function of the "CSFeeOracle" contract with the parameters mentioned below:

On [AragonAgent]
0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

function forward(
	bytes _evmScript
)

Call data:
[1] See parsed evm script at 14.1

14.1. On [CSFeeOracle]
0x4D4074628678Bd302921c20573EEa1ed38DdF7FB

function grantRole(
	bytes32 role,
	address account
)

Call data:
[1] [PAUSE ROLE] 0x139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d
[2] [CSMGateSealProposed] 0x16Dbd4B85a448bE564f1742d5c8cCdD2bB3185D0

Key Verification Points:

15. Revoke PAUSE_ROLE on CSModule 0xdA7dE2ECdDfccC6c3AF10108Db212ACBBf9EA83F from the old CSM GateSeal 0x5cFCa30450B1e5548F140C24A47E36c10CE306F0

The vote calls the "revokeRole" function of the "CSModule" contract with the parameters mentioned below:

On [AragonAgent]
0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

function forward(
	bytes _evmScript
)

Call data:
[1] See parsed evm script at 15.1

15.1. On [CSModule]
0xdA7dE2ECdDfccC6c3AF10108Db212ACBBf9EA83F

function revokeRole(
	bytes32 role,
	address account
)

Call data:
[1] [PAUSE ROLE] 0x139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d
[2] [CSMGateSeal] 0x5cFCa30450B1e5548F140C24A47E36c10CE306F0

Key Verification Points:

16. Revoke PAUSE_ROLE on CSAccounting 0x4d72BFF1BeaC69925F8Bd12526a39BAAb069e5Da from the old CSM GateSeal 0x5cFCa30450B1e5548F140C24A47E36c10CE306F0

The vote calls the "revokeRole" function of the "CSAccounting" contract with the parameters mentioned below:

On [AragonAgent]
0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

function forward(
	bytes _evmScript
)

Call data:
[1] See parsed evm script at 16.1

16.1. On [CSAccounting]
0x4d72BFF1BeaC69925F8Bd12526a39BAAb069e5Da

function revokeRole(
	bytes32 role,
	address account
)

Call data:
[1] [PAUSE ROLE] 0x139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d
[2] [CSMGateSeal] 0x5cFCa30450B1e5548F140C24A47E36c10CE306F0

Key Verification Points:

17. Revoke PAUSE_ROLE on CSFeeOracle 0x4D4074628678Bd302921c20573EEa1ed38DdF7FB from the old CSM GateSeal 0x5cFCa30450B1e5548F140C24A47E36c10CE306F0

The vote calls the "revokeRole" function of the "CSFeeOracle" contract with the parameters mentioned below:

On [AragonAgent]
0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

function forward(
	bytes _evmScript
)

Call data:
[1] See parsed evm script at 17.1

17.1. On [CSFeeOracle]
0x4D4074628678Bd302921c20573EEa1ed38DdF7FB

function revokeRole(
	bytes32 role,
	address account
)

Call data:
[1] [PAUSE ROLE] 0x139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d
[2] [CSMGateSeal] 0x5cFCa30450B1e5548F140C24A47E36c10CE306F0

Key Verification Points:

II. Add Easy Track setups for funding Lido Ecosystem & Lido Labs BORG Foundations’ Operational Expenses Multisigs

18. Add an Easy Track EVM script factory 0xf2476f967C826722F5505eDfc4b2561A34033477 for funding the Lido Ecosystem BORG Foundation’s operational multisig (AllowedRecipientsRegistry 0xDAdC4C36cD8F468A398C25d0D8aaf6A928B47Ab4)

The vote calls the "addEVMScriptFactory" function of the "EasyTrack" contract with the parameters mentioned below:

On [EasyTrack]
0xF0211b7660680B49De1A7E9f25C65660F0a13Fea

function addEVMScriptFactory(
	address _evmScriptFactory,
	bytes _permissions
)

Call data:
[1] 0xf2476f967C826722F5505eDfc4b2561A34033477
[2] 0xb9e5cbb9ca5b0d659238807e84d0176930753d86f6364846dadc4c36cd8f468a398c25d0d8aaf6a928b47ab466671229

Key Verification Points:

19. Add an Easy Track EVM script factory 0xE1f6BaBb445F809B97e3505Ea91749461050F780 for funding the Lido Labs BORG Foundation’s operational multisig (AllowedRecipientsRegistry 0x68267f3D310E9f0FF53a37c141c90B738E1133c2)

The vote calls the "addEVMScriptFactory" function of the "EasyTrack" contract with the parameters mentioned below:

On [EasyTrack]
0xF0211b7660680B49De1A7E9f25C65660F0a13Fea

function addEVMScriptFactory(
	address _evmScriptFactory,
	bytes _permissions
)

Call data:
[1] 0xE1f6BaBb445F809B97e3505Ea91749461050F780
[2] 0xb9e5cbb9ca5b0d659238807e84d0176930753d86f636484668267f3d310e9f0ff53a37c141c90b738e1133c266671229

Key Verification Points: