Skip to content

SR phase 2 - #2002

Draft
dry914 wants to merge 35 commits into
gloas-verifierfrom
feat/sr-phase-2
Draft

dry914 wants to merge 35 commits into
gloas-verifierfrom
feat/sr-phase-2

Conversation

@dry914

@dry914 dry914 commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

See LIP-38 for details.

@dry914 dry914 self-assigned this Oct 14, 2026
@dry914 dry914 added the solidity Smart contract code changes label Oct 14, 2026
@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

badge

Hardhat Unit Tests Coverage Summary

Details
Filename                                                                Stmts    Miss  Cover    Missing
--------------------------------------------------------------------  -------  ------  -------  ------------------------------------------------------------------------------------------------------------
contracts/0.4.24/Lido.sol                                                 310      11  96.45%   1038-1057, 1165-1177
contracts/0.4.24/StETH.sol                                                 80       0  100.00%
contracts/0.4.24/StETHPermit.sol                                           15       0  100.00%
contracts/0.4.24/lib/Packed64x4.sol                                         5       0  100.00%
contracts/0.4.24/lib/SigningKeys.sol                                       36       0  100.00%
contracts/0.4.24/lib/StakeLimitUtils.sol                                   41       0  100.00%
contracts/0.4.24/nos/NodeOperatorsRegistry.sol                            435       0  100.00%
contracts/0.4.24/utils/Pausable.sol                                         9       0  100.00%
contracts/0.4.24/utils/UnstructuredStorageExt.sol                          14       0  100.00%
contracts/0.4.24/utils/Versioned.sol                                        5       0  100.00%
contracts/0.6.12/WstETH.sol                                                17       0  100.00%
contracts/0.8.25/CLProofVerifier.sol                                       15       0  100.00%
contracts/0.8.25/CLValidatorVerifier.sol                                   33       0  100.00%
contracts/0.8.25/TopUpGateway.sol                                         110       0  100.00%
contracts/0.8.25/TriggerableWithdrawalsBus.sol                             53       0  100.00%
contracts/0.8.25/TriggerableWithdrawalsGateway.sol                         67       0  100.00%
contracts/0.8.25/consolidation/ConsolidationBus.sol                        73       0  100.00%
contracts/0.8.25/consolidation/ConsolidationGateway.sol                    75       0  100.00%
contracts/0.8.25/consolidation/ConsolidationMigrator.sol                   65       0  100.00%
contracts/0.8.25/lib/BeaconChainDepositor.sol                              42       4  90.48%   44, 47, 83, 98
contracts/0.8.25/lib/WithdrawalLimit.sol                                   27       0  100.00%
contracts/0.8.25/sr/ISRBase.sol                                             0       0  100.00%
contracts/0.8.25/sr/SRLib.sol                                             285      15  94.74%   98-148, 313
contracts/0.8.25/sr/SRStorage.sol                                          13       0  100.00%
contracts/0.8.25/sr/SRTypes.sol                                             0       0  100.00%
contracts/0.8.25/sr/SRUtils.sol                                            13       1  92.31%   87
contracts/0.8.25/sr/StakingRouter.sol                                     273      10  96.34%   67, 367-368, 627-628, 712, 766, 864-869
contracts/0.8.25/utils/AccessControlConfirmable.sol                         2       0  100.00%
contracts/0.8.25/utils/Confirmable2Addresses.sol                            5       0  100.00%
contracts/0.8.25/utils/Confirmations.sol                                   37       0  100.00%
contracts/0.8.25/utils/PausableUntilWithRoles.sol                           3       0  100.00%
contracts/0.8.25/vaults/LazyOracle.sol                                    134      18  86.57%   203-209, 248, 276-279, 436, 449, 465, 513, 554-556, 648, 656
contracts/0.8.25/vaults/OperatorGrid.sol                                  196       1  99.49%   203
contracts/0.8.25/vaults/PinnedBeaconProxy.sol                               6       0  100.00%
contracts/0.8.25/vaults/StakingVault.sol                                  111      14  87.39%   307-341
contracts/0.8.25/vaults/ValidatorConsolidationRequests.sol                 48       3  93.75%   183, 187, 199
contracts/0.8.25/vaults/VaultFactory.sol                                   34       0  100.00%
contracts/0.8.25/vaults/VaultHub.sol                                      427      76  82.20%   257-266, 281-287, 342-366, 383, 552-553, 595-688, 998-1000, 1088-1092, 1150, 1205-1212, 1498-1499, 1514-1524
contracts/0.8.25/vaults/dashboard/Dashboard.sol                           137       8  94.16%   183-201, 327, 636-649
contracts/0.8.25/vaults/dashboard/NodeOperatorFee.sol                      70       0  100.00%
contracts/0.8.25/vaults/dashboard/Permissions.sol                          47       2  95.74%   321-330
contracts/0.8.25/vaults/interfaces/IPinnedBeaconProxy.sol                   0       0  100.00%
contracts/0.8.25/vaults/interfaces/IPredepositGuarantee.sol                 0       0  100.00%
contracts/0.8.25/vaults/interfaces/IStakingVault.sol                        0       0  100.00%
contracts/0.8.25/vaults/interfaces/IVaultFactory.sol                        0       0  100.00%
contracts/0.8.25/vaults/lib/PinnedBeaconUtils.sol                           5       0  100.00%
contracts/0.8.25/vaults/lib/RecoverTokens.sol                               5       0  100.00%
contracts/0.8.25/vaults/lib/RefSlotCache.sol                               36       0  100.00%
contracts/0.8.25/vaults/predeposit_guarantee/MeIfNobodyElse.sol             3       0  100.00%
contracts/0.8.25/vaults/predeposit_guarantee/PredepositGuarantee.sol      213      12  94.37%   477-497, 526, 665, 672, 694
contracts/0.8.9/Accounting.sol                                             98       2  97.96%   384-385
contracts/0.8.9/Burner.sol                                                 92       0  100.00%
contracts/0.8.9/DepositSecurityModule.sol                                 119       0  100.00%
contracts/0.8.9/EIP712StETH.sol                                            16       0  100.00%
contracts/0.8.9/LidoExecutionLayerRewardsVault.sol                         16       0  100.00%
contracts/0.8.9/LidoLocator.sol                                            28       0  100.00%
contracts/0.8.9/OracleDaemonConfig.sol                                     28       0  100.00%
contracts/0.8.9/TokenRateNotifier.sol                                      45       0  100.00%
contracts/0.8.9/WithdrawalQueue.sol                                        88       0  100.00%
contracts/0.8.9/WithdrawalQueueBase.sol                                   146       0  100.00%
contracts/0.8.9/WithdrawalQueueERC721.sol                                  89       0  100.00%
contracts/0.8.9/WithdrawalVault.sol                                        37       0  100.00%
contracts/0.8.9/WithdrawalVaultEIP7685.sol                                 45       0  100.00%
contracts/0.8.9/lib/Math.sol                                                4       0  100.00%
contracts/0.8.9/lib/PositiveTokenRebaseLimiter.sol                         22       0  100.00%
contracts/0.8.9/lib/UnstructuredRefStorage.sol                              2       0  100.00%
contracts/0.8.9/oracle/AccountingOracle.sol                               197       3  98.48%   440-441, 615
contracts/0.8.9/oracle/BaseOracle.sol                                      89       1  98.88%   401
contracts/0.8.9/oracle/HashConsensus.sol                                  263       1  99.62%   1005
contracts/0.8.9/oracle/ValidatorsExitBusOracle.sol                        103       0  100.00%
contracts/0.8.9/proxy/OssifiableProxy.sol                                  17       0  100.00%
contracts/0.8.9/proxy/WithdrawalsManagerProxy.sol                          60       0  100.00%
contracts/0.8.9/sanity_checks/OracleReportSanityChecker.sol               382       2  99.48%   1300, 1312
contracts/0.8.9/utils/DummyEmptyContract.sol                                0       0  100.00%
contracts/0.8.9/utils/PausableUntil.sol                                    31       0  100.00%
contracts/0.8.9/utils/Versioned.sol                                        11       0  100.00%
contracts/0.8.9/utils/access/AccessControl.sol                             23       0  100.00%
contracts/0.8.9/utils/access/AccessControlEnumerable.sol                    9       0  100.00%
contracts/common/utils/PausableUntil.sol                                   29       0  100.00%
contracts/tooling/AlertingHarness.sol                                      54       1  98.15%   97
contracts/tooling/sepolia/SepoliaDepositAdapter.sol                        21      21  0.00%    55-106
TOTAL                                                                    5794     206  96.44%

Diff against master

Filename                                              Stmts    Miss  Cover
--------------------------------------------------  -------  ------  --------
contracts/0.8.25/CLProofVerifier.sol                    +15       0  +100.00%
contracts/0.8.25/CLValidatorVerifier.sol                 -1      -1  +2.94%
contracts/0.8.25/TopUpGateway.sol                        +8      -2  +1.96%
contracts/0.8.25/TriggerableWithdrawalsBus.sol          +53       0  +100.00%
contracts/0.8.25/TriggerableWithdrawalsGateway.sol      +67       0  +100.00%
contracts/0.8.25/lib/WithdrawalLimit.sol                +27       0  +100.00%
contracts/0.8.25/sr/SRLib.sol                            -5       0  -0.09%
contracts/0.8.25/sr/StakingRouter.sol                     0      -1  +0.37%
contracts/0.8.9/oracle/ValidatorsExitBusOracle.sol      +45      -1  +1.72%
TOTAL                                                  +209      -5  +100.00%

Results for commit: 6b84406

Minimum allowed coverage is 95%

♻️ This comment has been updated with latest results

Base automatically changed from gloas-verifier to develop October 22, 2026 10:22
@dry914 dry914 added next upgrade Things to pickup for the next protocol upgrade and removed next upgrade Things to pickup for the next protocol upgrade labels Oct 22, 2026
@dry914
dry914 changed the base branch from develop to gloas-verifier October 29, 2026 08:45
Comment on lines +86 to +125
function getVoteItems() public view override returns (VoteItem[] memory items) {
SRPhase2UpgradeConfig config = SRPhase2UpgradeConfig(CONFIG);
address dualGovernance = address(DUAL_GOVERNANCE);

VoteItem[] memory rawItems = _getVoteItems();
CallsScriptBuilder.Context memory scriptBuilder = CallsScriptBuilder.create();
for (uint256 i = 0; i < rawItems.length; ++i) {
scriptBuilder.addCall(rawItems[i].call.to, rawItems[i].call.data);
}

items = new VoteItem[](DG_ITEMS_COUNT);
items[0] = VoteItem({
description: "1. Upgrade the SR phase 2 (LIP-38) contracts through the Agent",
call: _votingCall(AGENT, abi.encodeCall(IForwarder.forward, (scriptBuilder.getResult())))
});
items[1] = VoteItem({
description: "2. Remove the old TriggerableWithdrawalsGateway from the Dual Governance tiebreaker sealable withdrawal blockers",
call: _votingCall(
dualGovernance,
abi.encodeCall(
IDualGovernanceTiebreaker.removeTiebreakerSealableWithdrawalBlocker,
(config.OLD_TRIGGERABLE_WITHDRAWALS_GATEWAY())
)
)
});
items[2] = VoteItem({
description: "3. Add the new TriggerableWithdrawalsGateway to the Dual Governance tiebreaker sealable withdrawal blockers",
call: _votingCall(
dualGovernance,
abi.encodeCall(
IDualGovernanceTiebreaker.addTiebreakerSealableWithdrawalBlocker,
(config.NEW_TRIGGERABLE_WITHDRAWALS_GATEWAY())
)
)
});
items[3] = VoteItem({
description: "4. Call SRPhase2UpgradeTemplate.finishUpgrade",
call: _forwardCall(AGENT, TEMPLATE, abi.encodeCall(SRPhase2UpgradeTemplate.finishUpgrade, ()))
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

solidity Smart contract code changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants