Releases: lidofinance/core
Releases · lidofinance/core
Lido V2.1 release
LIPs imlemented
Audits
- 10-2024 MixBytes On-chain Audit of Community Staking Module (LIP-23, LIP-25, LIP-26)
- 10-2024 Ackee Blockchain Audit of Staking Router v2 (LIP-25)
PRs included
- Add check against underflow by @claudijd in #772
- chore(deps): bump requests from 2.30.0 to 2.31.0 by @dependabot in #773
- Add forge tests for Math256 and SignatureUtils by @claudijd in #756
- Add forge tests for unstructured storage by @claudijd in #774
- build: upload ABIs to a published release by @madlabman in #777
- chore: replace action-gh-release with gh cli by @madlabman in #778
- chore(deps-dev): bump certifi from 2023.5.7 to 2023.7.22 by @dependabot in #784
- chore(deps-dev): bump aiohttp from 3.8.4 to 3.8.5 by @dependabot in #783
- feat(scratch deploy): mvp of local scratch deployment by @arwer13 in #790
- chore(deps-dev): bump urllib3 from 2.0.2 to 2.0.7 by @dependabot in #800
- Scratch deploy: capability to set WithdrawalQueue baseUri by @arwer13 in #805
- try forge github action to run anvil by @arwer13 in #808
- chore(deps-dev): bump eth-abi from 4.0.0 to 4.2.0 by @dependabot in #811
- chore(deps-dev): bump aiohttp from 3.8.4 to 3.9.0 by @dependabot in #812
- Add CI workflow to do local scratch deployment by @arwer13 in #807
- Sync master with develop by @TheDZhon in #802
- Doc: readme refresh by @TheDZhon in #814
- Doc: update readme by @TheDZhon in #815
- Fix: typos by @vuittont60 in #817
- chore(deps-dev): bump aiohttp from 3.9.0 to 3.9.2 by @dependabot in #819
- chore(deps-dev): bump pycryptodome from 3.17 to 3.19.1 by @dependabot in #816
- Sepolia deployment and deposit contract adapter by @vp4242 in #820
- Update pyproject licence by @tamtamchik in #822
- Sepolia deposit adapter implementation by @vp4242 in #821
- Update deploy script to include SepoliaDepositAdapter contract upgrade by @vp4242 in #824
- Feat/clone nor simpledvt holesky by @krogla in #801
- fix: upd deployed-mainnet.json w/ simpledvt by @krogla in #825
- new SimpleDVT module by @krogla in #826
- update Readme: repo archived by @mymphe in #840
- feat: add Simple DVT to scratch deploy by @tamtamchik in #845
- docs(readme): add repovation disclaimer by @mymphe in #844
- sync: core repo master by @tamtamchik in #843
- ci: fix master coverage by @tamtamchik in #855
- sync: develop from core repo by @tamtamchik in #854
- Update README.md by @mymphe in #856
- test: Second opinion oracle test by @tamtamchik in #857
- fix: remove PostTotalShares event checks by @tamtamchik in #866
- build(deps): bump secp256k1 from 4.0.3 to 4.0.4 by @dependabot in #867
- chore: Sync SR1.5 branch with the latest develop by @tamtamchik in #858
- feat: Staking Router 1.5 by @tamtamchik in #860
- SR 1.5 by @krogla in #879
New Contributors
- @claudijd made their first contribution in #772
- @vuittont60 made their first contribution in #817
- @vp4242 made their first contribution in #820
- @tamtamchik made their first contribution in #822
Full Changelog: v2.0.0...v2.1.0
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 ...
Lido 2.0 rc2 release
What's Changed
Updates Lido 2.0 rc1 release.
High-level overview
- 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: 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
- Doc: churn limit explanations by @TheDZhon in #748
- 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
Full Changelog: v2.0.0-rc.1...v2.0.0-rc.2
Lido 2.0 rc1 release
What's Changed
Updates Lido 2.0 rc0-hotfix release.
High-level overview
- 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
Full Changelog: v2.0.0-rc.0-hotfix...v2.0.0-rc.1
v2.0.0-rc.0-hotfix
What's changed
Hotfixes Lido 2.0 rc0 release.
High-level overview
- Fix: finalizeUpgrade_v4 for legacy oracle in #705
- Fix: report processor view in #706
- Add test to check correct values on stuck/refund updates in #703
Full Changelog: v2.0.0-rc.0...v2.0.0-rc.0-hotfix
Lido 2.0 rc0 release
What's Changed
Updates Lido 2.0 beta3 release.
High-level overview
- Fix: Lido.handleOracleReport reorder burn and fee distribution in #690
- Fix: DSM.canDeposit for unknown module id in #689
- Accounting oracle: remove an erroneous and excess check in #692
- Fix: positive rebase limiter burn in #696
- HashConsesnsus: docs improvements in #697
- Set
lastDepositAt
andlastDepositBlock
on the staking module addition in #701 - Refactor: remove some dead code from MemUtils in #702
- Fix gas estimation for methods with try/catch of StakingRouter in #698
- Fix NOR stuck/refund in #693
- Lots of new tests (WithdrawalQueue gas estimation, NodeOperatorsRegistry happy path, LegacyOracle tests)
Full Changelog: v2.0.0-beta.3...v2.0.0-rc.0
Lido 2.0 beta3 release
What's Changed
Updates Lido 2.0 beta2 release.
High-level overview
- Finalize withdrawal requests with proper
shareRate
(instead of the wrongstETH
discount) (#673) - Improve oracle report integrity and
simulatedShareRate
correctness - Resolve issues within StakingRouter and NodeOperatorRegistry
- Fix oracle migration process and legacy oracle compatibility (#662, #666, #668)
- Implement
ERC-1271
for stETH and forbid transfers to the contract itself (#680) - Incompatible interfaces of
WithdrawalQueue
inLido
andOracleReportSanityChecker
issues resolved - Extensive chores to meet the bytecode size for
Lido
andWithdrawalQueue
. - More tests (unit & integration)
Full Changelog: v2.0.0-beta.2...v2.0.0-beta.3
Lido 2.0 beta2 release
What's Changed
Updates Lido 2.0 beta release.
High-level overview:
- Seed initial protocol holder to avoid zero total supply / zero total shares corner cases
- Collect summary from
NodeOperatorRegistry
and report stuck / exited keys in a gas-efficient way (avoid nested loops) - Resolve #634
- Resolve an accounting issue with
unaccountedEther
whendeposit
is made andStakingRouter
had non-zero balance - Fixes withdrawal request NFT (now it's
WithdrawalQueueERC721
) edge-cases and ownership issues - Make stETH permit signing for the token address
- Enforces the validator indexes order in
ValidatorExitBus
- Internal comments and minor naming updates
- Add public views for unstaking UI
See also #624
Full Changelog:
Lido 2.0 beta release
Lido V2 is centered around Withdrawals 🦉 and Staking Router 🛰️.
See Introducing Lido V2 — Next Step In Decentralization for more context.
Major features
- Withdrawals support 🦉
- In-protocol withdrawals FIFO request queue wrapped up into NFT
- Revised protocol accounting
- Facilitating validator exits
- Rewards skimming
- Staking Router 🛰️
- Solid architecture and interfaces for upcoming modules
- Upgrade
NodeOperatorRegistry
resembling the curated operators set - Levers for the NOM/DAO ops
- Two-phase oracle with data lists 🔮
- Polished consensus rules
- Better gas efficiency of running oracles
- Multistep oracle data delivery (’unlimited’ data size)
Minor features
- Decrease the
Lido
andNodeOperatorRegistry
contracts’ bytecode size - Revised/new sanity checks & single rebasing limit
- ERC2612 (permit) support for
stETH
(aka ‘ERC20 signed approvals’) transferSharesFrom
forstETH
- Reference initialization library following the
LIP-10
scheme - Oracle reports 'fast lane' (soft ordering enforcement)
Merge-ready mainnet release
Merge-ready Lido protocol 🐼
The following LIPs are implemented:
- LIP-6: In-protocol coverage application mechanism ❤️🔥
- LIP-7: Composite oracle beacon report receiver 🔢
- LIP-8: Increase keysOpIndex in assignNextSigningKeys 🔑
- LIP-9: Add an explicit log for the stETH burn events 🧾
- LIP-10: Proxy initializations and LidoOracle upgrade ⬆️
- LIP-11: Add a transfer shares function for stETH 🧷
- LIP-12: On-chain part of the rewards distribution after the Merge 💰
- LIP-14: Protocol safeguards. Staking rate limiting 🦺
- LIP-15: Protocol safeguards. Resume role 🏃