Lido V2 release
What's Changed
- chore(security): Add slither by @dgusakov in #447
- chore(security): Add storage layout linter by @dgusakov in #449
- feat: assert-bytecode by @madlabman in #454
- Fix storage layout linter by @madlabman in #456
- fix: remove missing assert-git-changes file usage by @madlabman in #457
- Linters fixes by @madlabman in #458
- One more fix for linters 🐇🕳 by @madlabman in #459
- Add regression test on malicious stETH recovery by
recoverERC721
(selfOwnedStETHBurner) by @TheDZhon in #444 - Feature/validator exit bus by @arwer13 in #453
- Staking router recycle by @krogla in #464
- feat: add lido rewards distribution by @rkolpakov in #466
- Update DepositSecurityModule to be compatible with StakingRouter by @Psirex in #465
- Node operators rewards distribution by @bulbozaur in #467
- Staking router/rewards distribution by @rkolpakov in #469
- remove recycle / add deposits / add transfer balance by @loga4 in #468
- Staking router deposits allocation by @Psirex in #470
- staking router events, errors, fees setter by @bulbozaur in #471
- update roles and remove outdates by @bulbozaur in #473
- fix: rework variable names & add max fee for lido contract by @rkolpakov in #474
- Staking route and Lido refactor by @krogla in #476
- Staking router module status by @krogla in #477
- feat: remove some funcs shrinking Lido bytecode sz by @TheDZhon in #479
- NodeOperatorsRegistry update for StakingRouter by @Psirex in #480
- StakingRouter internal review fixes by @Psirex in #481
- Parallel testing by @folkyatina in #462
- update deployment from scratch by @arwer13 in #441
- feat: add bunker mode flag for later use by @folkyatina in #483
- LidoOracleNew, ValidatorExitBus: initial rough version of hash consensus by @arwer13 in #485
- Restoring Withdrawal tests by @folkyatina in #484
- feat: add AccessControl to managing ACL in WQ by @folkyatina in #487
- feat: sanity check for bufferedEtherReserve by @folkyatina in #490
- ci: upd actions by @madlabman in #491
- Feat: implement the ERC2612 (Permit) extension for StETH by @TheDZhon in #486
- staking router tests and fixes by @bulbozaur in #496
- unit test + coverage + fixes for Lido.sol by @loga4 in #493
- Staking router/allocation lib tests by @mymphe in #489
- NodeOperatorsRegistry full unit tests coverage & fixes by @Psirex in #488
- fix: reward distribution array by @krogla in #494
- Reduce NodeOperatorsRegistry contract size by @Psirex in #498
- test: allocating between modules with different params by @mymphe in #501
- Fix: const gas
calculateCurrentStakeLimit
ver by @TheDZhon in #500 - fix: keys allocation fix by @bulbozaur in #502
- Tests: trivial fixes about
permit
andStakingRouter
by @TheDZhon in #504 - Staking router external params to uint256 by @loga4 in #505
- Staking Router post-audit fixes by @Psirex in #497
- Staking router by @loga4 in #463
- Fix scratch deploy for shapella devnet-3 by @arwer13 in #503
- Hardhat task to generate userdoc artifacts by @manneredboor in #507
- Staking Router: fix typos, add base precision to Lido views by @arwer13 in #508
- Optimize
MinFirstAllocationStrategy
by @Psirex in #511 - feat: add possibility to change recipient by @rkolpakov in #515
- WithdrawalQueue improvements after the internal review by @folkyatina in #506
- Oracle upgrade by @skozin in #495
- feat: use unstructured AccessControl everywhere by @folkyatina in #519
- Staking router audit fixes by @krogla in #517
- Staking router audit fixes (Shapella-upgrade) by @folkyatina in #518
- Add methods for batch withdrawals requests and claiming by @Psirex in #513
- Feat/use only id externally by @mymphe in #510
- Refactor: allocation tests by @mymphe in #520
- Fix failed coverage tests by @Psirex in #524
- Abolish interface contracts by @arwer13 in #521
- Feat: positive rebase limiter by @TheDZhon in #514
- Fix missing gas reports for contracts with the new Solidity version by @Psirex in #525
- Versioned.sol inheritance by @bulbozaur in #530
- Feat: Staking router audit fix2 (shapella-upgrade) by @TheDZhon in #533
- Use overrides for eth-gas-reporter instead of a forked repo by @Psirex in #534
- Feature/sanity checks soft limit (Sanity Checks Registry subPR) by @TheDZhon in #535
- Oracle upgrade: legacy oracle compatibility by @skozin in #522
- Feat: use timestamp instead of blockNumber for WithdrawalRequest by @TheDZhon in #537
- Fix: move eip712 for stETH to unstructured storage by @TheDZhon in #536
- Remove POC version of new oracles (LidoOracleNew, ValidatorExitBus) by @arwer13 in #541
- Fix: make WithdrawalVault versioned by @TheDZhon in #545
- lidoLocator update tests by @bulbozaur in #538
- Unify solidify version pragma for contracts in common by @arwer13 in #543
- Feat: LidoLocator behind Proxy by @mymphe in #539
- Feature/plain coverage test fix by @bulbozaur in #548
- Oracle report sanity checks by @Psirex in #529
- Feat: new accounting oracle report for Lido (feature/shapella-upgrade) by @TheDZhon in #549
- BytesLib totally removed! by @krogla in #544
- Add search views to find finalizable request in WithdrawalQueue by @folkyatina in #546
- Oracle improvements & still-missing features by @skozin in #542
- Refactor/withdrawal discount by @folkyatina in #552
- Refactor/recipient to owner by @folkyatina in #554
- fix oracle test setup by @bulbozaur in #556
- Use OpenZeppelin's
SafeCast
lib across the project by @Psirex in #559 - Make ValidatorExitBusOracle pausable by @arwer13 in #553
- Lido: restore getFee and getFeeDistributions by @arwer13 in #561
- Feat: refactor oracle report for Lido by @TheDZhon in #555
- feat: add oracle daemon config contract by @rkolpakov in #558
- LidoLocator: safetyNetsRegistry -> oracleReportSanityChecks by @arwer13 in #564
- Oracle: support "fast lane" member subset by @skozin in #563
- Feat: WithdrawalRequestNFT by @Psirex in #560
- Feat: burn shares fixes by @TheDZhon in #567
- Oracle: post-review improvements by @skozin in #566
- Accounting oracle gas optimization by @skozin in #570
- ValidatorExitBusOracle limit related updates by @arwer13 in #565
- Feat: simplified burner by @TheDZhon in #571
- test: hash consensus: add access control tests by @DiRaiks in #568
- Feature/nor limits tests by @loga4 in #575
- Renaming and LidoOracle initialize fix by @arwer13 in #579
- Improve compatibility of the memory allocation helper by @skozin in #572
- Better interface for oracle daemon by @skozin in #578
- WIP: HashConesnus report processor tests by @manneredboor in #577
- test: hash consensus: add more frames tests by @DiRaiks in #576
- test: hashConsensus setQuorum tests by @Jeday in #580
- WIP: HashConesnus report processor tests by @manneredboor in #581
- test: hash consensus: fix deploy test by @DiRaiks in #585
- Better interface for the oracle daemon (follow-up) by @skozin in #587
- Fix: distribute fee by @TheDZhon in #586
- LidoOracle, AccountingOracle: deploy related initialize() fixes by @arwer13 in #583
- Fix/wq review fixes 2 by @folkyatina in #584
- Feature/nft metadata by @folkyatina in #588
- NodeOperatorRegistry limits features v2 by @loga4 in #557
- shapella upgrade: fix processor changing corner case by @manneredboor in #592
- More efficient accounting oracle by @skozin in #589
- Oracle: avoid using zeros for data type values by @skozin in #593
- Feature/tests fix by @bulbozaur in #596
- A bit of 💅 by @folkyatina in #595
- Another set of minor improvements by @folkyatina in #598
- update tests by @bulbozaur in #597
- test: fix setReportProcessor roles test by @manneredboor in #594
- Solid
IStakingModule
interface by @Psirex in #574 - Sanity refactoring by @arwer13 in #599
- AccountingOracle: move data boundaries to OracleReportSanityChecker by @arwer13 in #591
- fix: remove extra pause check from
_mintShares
by @TheDZhon in #600 - fix: handle report resubmit case by @Jeday in #601
- Existing tests fix by @folkyatina in #605
- Base oracle: tests and fixes (shapella upgrade) by @DiRaiks in #590
- Update batching view methods for StakingRouter by @Psirex in #606
- Refactor: move sanity check out of while loop for optimizing gas usage by @ujenjt in #604
- handle oracle report edge tests by @bulbozaur in #610
- Feature/post zhejiang fixes nor comments by @loga4 in #609
- Fix: share rate sanity check by @TheDZhon in #612
- Tests Accounting Oracle by @DiRaiks in #603
- replace selfdestruct with setBalance by @bulbozaur in #611
- Feat: post zhejiang fixes by @TheDZhon in #602
- Feature/tests fix by @bulbozaur in #613
- Fix: getDepositableEther by @TheDZhon in #614
- Feature/shapella upgrade tests accounting oracle by @manneredboor in #615
- test: AccountingOracle submit extra data handlers refactor by @manneredboor in #617
- ValidatorExitBusOracle: add pauser and resumer to initialize() by @arwer13 in #620
- refactor: rename a few shortened names by @arwer13 in #625
- Mint some shares to initial holder on protocol deploy and optimize submit. by @folkyatina in #608
- Add support of Foundry tests by @Psirex in #619
- refactor: nft renaming by @folkyatina in #628
- Fix and multiple improvements to OracleReportSanityChecker by @arwer13 in #629
- Fix: add OracleDaemonConfig to LidoLocator by @TheDZhon in #630
- Fix issues from preliminary audit by @folkyatina in #632
- Forbid transfer to themselves for Withdrawal nft by @folkyatina in #633
- Accounting oracle: tests & fixes by @DiRaiks in #618
- Validator exit bus oracle: tests & fixes by @DiRaiks in #637
- Fixes related to
handleOracleReport
and shares burning by @TheDZhon in #636 - update handle report test by @bulbozaur in #639
- Feat: embedded EIP712 for StETH by @TheDZhon in #640
- StakingRouter: prevent address duplication by @loga4 in #641
- Deposits accounting by @Psirex in #626
- WIP ValidatorsExitBus Oracle tests by @DiRaiks in #638
- feat: view to get claimable ether for request by @folkyatina in #627
- fix tests by @bulbozaur in #616
- fix rewards distribution tests by @bulbozaur in #643
- NOR: signing keys lib refactor by @krogla in #645
- NOR: static totals storage by @krogla in #623
- Fix module rewards distribution by @skozin in #644
- NFTDescriptor for WithdrawalQueueERC721 by @ujenjt in #646
- fix: comments and docs 📚 by @TheDZhon in #647
- Feat: shapella upgrade followups by @TheDZhon in #624
- 💅 tests by @folkyatina in #648
- Feat: fix/share rate simulation by @TheDZhon in #650
- Tests WithdrawalQueueERC721 by @DiRaiks in #657
- Test: add ACL tests for Burner by @TheDZhon in #653
- refactor: remove needless grantRole calls in exit bus initialize() by @arwer13 in #658
- Fix reward distribution on modules without active keys by @krogla in #655
- chore(deps): bump golang.org/x/sys from 0.0.0-20211205182925-97ca703d548d to 0.1.0 in /cli by @dependabot in #652
- sr fixes by @krogla in #660
- feat: adopted OZ tests for AccessControl by @Jeday in #663
- Fix/upgrade test scenario EL rewards after the merge by @DiRaiks in #661
- Hash consensus: allow updating a future initial epoch by @skozin in #662
- Fix/base oracle tests deadline by @Jeday in #666
- Tests for WithdrawalQueue, share rate simulation fix by @Jeday in #649
- fix: penalty delay restart by @krogla in #667
- StakingRouter findings fixes by @Psirex in #664
- fix: grammar by @EridianAlpha in #669
- Fix: Spelling and grammar by @EridianAlpha in #676
- fix: refactor nft tests and revive main tests by @Jeday in #671
- fix: follow-up fixes for PausableUntil by @TheDZhon in #677
- feature: add pauseUntil(resumeSince) in addition to pause(duration) by @arwer13 in #670
- Legacy oracle bug&tests by @Jeday in #668
- StakingRouter finding fixes & tests by @loga4 in #656
- Fix withdrawal finalization correctness (base PR) by @TheDZhon in #672
- feat (WithdrawalQueue): restore wsteth withdrawals by @arwer13 in #678
- No extrema checking during withdrawal finalization by @folkyatina in #673
- fix: WQ tests actualization and fixes by @Jeday in #679
- Feat: forbid stETH transfers to the contract itself by @TheDZhon in #681
- ERC-1271 contract signature verification for stETH by @skozin in #680
- doc: StakingModule.lastDeposit{At,Block} of StakingModule change if 0 deposit by @arwer13 in #682
- Fix: shapella upgrade fixes by @TheDZhon in #659
- Withrdawal queue test actualization by @Jeday in #683
- Fix: Lido.handleOracleReport reorder burn and fee distribution by @TheDZhon in #690
- fix(AccountingOracle ctor): SM INFO-11, revert is zero lido address by @arwer13 in #691
- Fix: DSM.canDeposit for unknown module id by @TheDZhon in #689
- Legacy oracle Lido report tests by @Jeday in #687
- Additional test cases by @Psirex in #695
- Accounting oracle: remove an erroneous and excess check by @skozin in #692
- Fix: positive rebase limiter burn by @TheDZhon in #696
- HashConsesnsus: docs improvements by @skozin in #697
- Withdrawal Queue Gas Tests by @Jeday in #699
- Set
lastDepositAt
andlastDepositBlock
on the staking module addition by @Psirex in #701 - Refactor: remove some dead code from MemUtils by @folkyatina in #702
- Fix gas estimation for methods with try/catch in StakingRouter by @Psirex in #698
- Fix NOR stuck/refund by @krogla in #693
- shapella upgrade test node operators registry happy path by @manneredboor in #686
- Fix: shapella upgrade from beta3 to rc by @TheDZhon in #688
- Add test to check correct values on stuck/refund updates by @krogla in #703
- Fix: finalizeUpgrade_v4 for legacy oracle by @TheDZhon in #705
- Fix: report processor view by @TheDZhon in #706
- Fix/mixbytes audit by @loga4 in #713
- Fix: HashConsensus fast lane calc when consensus is disabled by @skozin in #711
- Fix (SignatureUtils): check the EIP-1271 call result more strictly by @skozin in #714
- Add missing nonce updates to NodeOperatorsRegistry by @Psirex in #715
- Fix/lido fee distribution by @arwer13 in #717
- Docs and other minor improvements by @skozin in #716
- fix: check stuck+exited<=deposited by @krogla in #718
- Fix (AccountingOracle): extra data submission order check by @skozin in #712
- Fix: stake limit resume handling by @TheDZhon in #721
- Fix: make isLimitReached more coherent by @TheDZhon in #710
- Statemind report minor fixes by @Psirex in #720
- Fix: discard report processing on lost consensus by @skozin in #708
- Fix: remove unused methods in UnstructuredRefStorage lib by @loga4 in #723
- Fix: check zero admin in OracleReportSanityChecker constructor by @loga4 in #724
- Fix: typos by @loga4 in #728
- Fix: restrict staking module name length to 31 bytes by @loga4 in #725
- Fix: check nor active status by @loga4 in #727
- Fix: resume pause double check by @loga4 in #726
- fix: remove int64 limitations by @krogla in #719
- transfer events order by @krogla in #722
- Add requirement comments for
IStakingModule
by @Psirex in #729 - Feat: shapella upgrade from rc.0 to rc.1 [WIP] by @TheDZhon in #709
- Certora report's small fixes by @Psirex in #731
- Add event tests by @Jeday in #739
- Fix: sr redundant variable by @loga4 in #741
- Fix: redundant int type by @loga4 in #740
- Fix: typos by @loga4 in #736
- Fix: oracle daemon config update by @loga4 in #737
- Fix: remove redundant require by @loga4 in #735
- Fix: summary desc typo by @loga4 in #742
- Fix: too high simulated share rate by @TheDZhon in #730
- Feat: split churn limit into exited and appeared by @TheDZhon in #743
- Update Aragon frontends by @mymphe in #642
- Revert "Feat: split churn limit into exited and appeared" by @TheDZhon in #747
- Doc: churn limit explanations by @TheDZhon in #748
- Revert "Fix: redundant int type" by @TheDZhon in #749
- ERC4906 implementation for withdrawal nft by @folkyatina in #733
- WQ: Replace _batches parameter with _lastIdToBeFinalized for
finalize()
by @folkyatina in #738 - fix storage slot by @loga4 in #753
- Make BatchMetadataUpdate touch more requests for further convenience by @folkyatina in #754
- Docs: dsm churn limit by @TheDZhon in #755
- Fix: improve UX of findCheckpointHints by @folkyatina in #750
- Statemind minor fixes round 2 by @Psirex in #751
- Fix: shapella upgrade from rc1 to rc2 by @TheDZhon in #732
- Feat: shellchecker fixes by @TheDZhon in #762
- Fix: bytecode verification [review suggestions] by @TheDZhon in #763
- Feature/bytecode verificator cli by @bulbozaur in #761
- Shapella upgrade and scratch deploy by @arwer13 in #635
- Diffyscan config for shapella upgrade by @folkyatina in #764
- batch verification by @bulbozaur in #765
- Shapella upgrade (capella+shanghai) by @arwer13 in #482
- fix: Slither by @dgusakov in #768
- Aragon Apps: followup updates by @mymphe in #757
- Update readme on hash replication by @mymphe in #769
- Fix readme commit by @mymphe in #770
- V2 upgrade cleanup by @arwer13 in #771
- Feature: Lido V2 by @TheDZhon in #766
New Contributors
- @madlabman made their first contribution in #454
- @rkolpakov made their first contribution in #466
- @manneredboor made their first contribution in #507
- @DiRaiks made their first contribution in #568
- @Jeday made their first contribution in #580
- @dependabot made their first contribution in #652
- @EridianAlpha made their first contribution in #669
Full Changelog: v1.2.0...v2.0.0