Releases: lidofinance/core
v2.0.0 – Lido V2 Release
Original release: https://github.com/lidofinance/lido-dao/releases/v2.0.0
What's Changed
- chore(security): Add slither by @dgusakov in lidofinance/lido-dao#447
- chore(security): Add storage layout linter by @dgusakov in lidofinance/lido-dao#449
- feat: assert-bytecode by @madlabman in lidofinance/lido-dao#454
- Fix storage layout linter by @madlabman in lidofinance/lido-dao#456
- fix: remove missing assert-git-changes file usage by @madlabman in lidofinance/lido-dao#457
- Linters fixes by @madlabman in lidofinance/lido-dao#458
- One more fix for linters 🐇🕳 by @madlabman in lidofinance/lido-dao#459
- Add regression test on malicious stETH recovery by
recoverERC721
(selfOwnedStETHBurner) by @TheDZhon in lidofinance/lido-dao#444 - Feature/validator exit bus by @arwer13 in lidofinance/lido-dao#453
- Staking router recycle by @krogla in lidofinance/lido-dao#464
- feat: add lido rewards distribution by @rkolpakov in lidofinance/lido-dao#466
- Update DepositSecurityModule to be compatible with StakingRouter by @Psirex in lidofinance/lido-dao#465
- Node operators rewards distribution by @bulbozaur in lidofinance/lido-dao#467
- Staking router/rewards distribution by @rkolpakov in lidofinance/lido-dao#469
- remove recycle / add deposits / add transfer balance by @loga4 in lidofinance/lido-dao#468
- Staking router deposits allocation by @Psirex in lidofinance/lido-dao#470
- staking router events, errors, fees setter by @bulbozaur in lidofinance/lido-dao#471
- update roles and remove outdates by @bulbozaur in lidofinance/lido-dao#473
- fix: rework variable names & add max fee for lido contract by @rkolpakov in lidofinance/lido-dao#474
- Staking route and Lido refactor by @krogla in lidofinance/lido-dao#476
- Staking router module status by @krogla in lidofinance/lido-dao#477
- feat: remove some funcs shrinking Lido bytecode sz by @TheDZhon in lidofinance/lido-dao#479
- NodeOperatorsRegistry update for StakingRouter by @Psirex in lidofinance/lido-dao#480
- StakingRouter internal review fixes by @Psirex in lidofinance/lido-dao#481
- Parallel testing by @folkyatina in lidofinance/lido-dao#462
- update deployment from scratch by @arwer13 in lidofinance/lido-dao#441
- feat: add bunker mode flag for later use by @folkyatina in lidofinance/lido-dao#483
- LidoOracleNew, ValidatorExitBus: initial rough version of hash consensus by @arwer13 in lidofinance/lido-dao#485
- Restoring Withdrawal tests by @folkyatina in lidofinance/lido-dao#484
- feat: add AccessControl to managing ACL in WQ by @folkyatina in lidofinance/lido-dao#487
- feat: sanity check for bufferedEtherReserve by @folkyatina in lidofinance/lido-dao#490
- ci: upd actions by @madlabman in lidofinance/lido-dao#491
- Feat: implement the ERC2612 (Permit) extension for StETH by @TheDZhon in lidofinance/lido-dao#486
- staking router tests and fixes by @bulbozaur in lidofinance/lido-dao#496
- unit test + coverage + fixes for Lido.sol by @loga4 in lidofinance/lido-dao#493
- Staking router/allocation lib tests by @mymphe in lidofinance/lido-dao#489
- NodeOperatorsRegistry full unit tests coverage & fixes by @Psirex in lidofinance/lido-dao#488
- fix: reward distribution array by @krogla in lidofinance/lido-dao#494
- Reduce NodeOperatorsRegistry contract size by @Psirex in lidofinance/lido-dao#498
- test: allocating between modules with different params by @mymphe in lidofinance/lido-dao#501
- Fix: const gas
calculateCurrentStakeLimit
ver by @TheDZhon in lidofinance/lido-dao#500 - fix: keys allocation fix by @bulbozaur in lidofinance/lido-dao#502
- Tests: trivial fixes about
permit
andStakingRouter
by @TheDZhon in lidofinance/lido-dao#504 - Staking router external params to uint256 by @loga4 in lidofinance/lido-dao#505
- Staking Router post-audit fixes by @Psirex in lidofinance/lido-dao#497
- Staking router by @loga4 in lidofinance/lido-dao#463
- Fix scratch deploy for shapella devnet-3 by @arwer13 in lidofinance/lido-dao#503
- Hardhat task to generate userdoc artifacts by @manneredboor in lidofinance/lido-dao#507
- Staking Router: fix typos, add base precision to Lido views by @arwer13 in lidofinance/lido-dao#508
- Optimize
MinFirstAllocationStrategy
by @Psirex in lidofinance/lido-dao#511 - feat: add possibility to change recipient by @rkolpakov in lidofinance/lido-dao#515
- WithdrawalQueue improvements after the internal review by @folkyatina in lidofinance/lido-dao#506
- Oracle upgrade by @skozin in lidofinance/lido-dao#495
- feat: use unstructured AccessControl everywhere by @folkyatina in lidofinance/lido-dao#519
- Staking router audit fixes by @krogla in lidofinance/lido-dao#517
- Staking router audit fixes (Shapella-upgrade) by @folkyatina in lidofinance/lido-dao#518
- Add methods for batch withdrawals requests and claiming by @Psirex in lidofinance/lido-dao#513
- Feat/use only id externally by @mymphe in lidofinance/lido-dao#510
- Refactor: allocation tests by @mymphe in lidofinance/lido-dao#520
- Fix failed coverage tests by @Psirex in lidofinance/lido-dao#524
- Abolish interface contracts by @arwer13 in lidofinance/lido-dao#521
- Feat: positive rebase limiter by @TheDZhon in lidofinance/lido-dao#514
- Fix missing gas reports for contracts with the new Solidity version by @Psirex in lidofinance/lido-dao#525
- Versioned.sol inheritance by @bulbozaur in lidofinance/lido-dao#530
- Feat: Staking router audit fix2 (shapella-upgrade) by @TheDZhon in lidofinance/lido-dao#533
- Use overrides for eth-gas-reporter instead of a forked repo by @Psirex in lidofinance/lido-dao#534
- Feature/sanity checks soft limit (Sanity Checks Registry subPR) by @TheDZhon in lidofinance/lido-dao#535
- Oracle upgrade: legacy oracle compatibility by @skozin in lidofinance/lido-dao#522
- Feat: use timestamp instead of blockNumber for WithdrawalRequest by @TheDZhon in lidofinance/lido-dao#537
- Fix: move eip712 for stETH to unstructured storage by @TheDZhon in lidofinance/lido-dao#536
- Remove POC version of new oracles (LidoOracleNew, ValidatorExitBus) by @arwer13 in lidofinance/lido-dao#541
- Fix: make WithdrawalVault versioned by @TheDZhon in lidofinance/lido-dao#545
- lidoLocator update tests by @bulbozaur in lidofinance/lido-dao#538
- Unify solidify version pragma for contracts in common by @arwer13 in lidofinance/lido-dao#543
- Feat: LidoLocator behind Proxy by @mymphe in lidofinance/lido-dao#539
- Feature/plain coverage test fix by @bulbozaur in lidofinance/lido-dao#548
- Oracle report sanity checks by @Psirex in lidofinance/lido-dao#529
- Feat: new accounting oracle report for Lido (feature/shapella-upgrade) by @TheDZhon in lidofinance/lido-dao#549
- BytesLib totally removed! by @krogla in lidofinance/lido-dao#544
- Add search views to find finalizable request in WithdrawalQueue by @folkyatina in lidofinance/lido-dao#546
- Oracle improvements & still-missing features by @skozin in lidofinance/lido-dao#542
- Refactor/withdrawal discount by @folkyatina in lidofinance/lido-dao#552
- Refactor/recipient to owner by @folkyatina in lidofinance/lido-dao#554
- fix oracle test setup by @bulbozaur in lidofinance/lido-dao#556
- Use OpenZeppelin's
SafeCast
lib across the project by @Psirex in lidofinance/lido-dao#559 - Make ValidatorExitBusOracle pausable by @arwer13 in lidofinance/lido-dao#553
- Lido: restore getFee and getFeeDistributions by @arwer13 in lidofinance/lido-dao#561
- Feat: refactor oracle report for Lido by @TheDZhon in lidofinance/lido-dao#555
- feat: add oracle daemon config contract by @rkolpakov in lidofinance/lido-dao#558
- LidoLocator: safetyNetsRegistry -> oracleReportSanityChecks by @arwer13 in lidofinance/lido-dao#564
- Oracle: support "fast lane" member subset by @skozin in lidofinance/lido-dao#563
- Feat: WithdrawalRequ...
Lido 2.0 (rc2)
Original release: https://github.com/lidofinance/lido-dao/releases/v2.0.0-rc.2
What's Changed
Updates Lido 2.0 (rc1) release.
High-level overview
- Certora report's small fixes by @Psirex in lidofinance/lido-dao#731
- Add event tests by @Jeday in lidofinance/lido-dao#739
- Fix: sr redundant variable by @loga4 in lidofinance/lido-dao#741
- Fix: typos by @loga4 in lidofinance/lido-dao#736
- Fix: oracle daemon config update by @loga4 in lidofinance/lido-dao#737
- Fix: remove redundant require by @loga4 in lidofinance/lido-dao#735
- Fix: summary desc typo by @loga4 in lidofinance/lido-dao#742
- Fix: too high simulated share rate by @TheDZhon in lidofinance/lido-dao#730
- Doc: churn limit explanations by @TheDZhon in lidofinance/lido-dao#748
- ERC4906 implementation for withdrawal nft by @folkyatina in lidofinance/lido-dao#733
- WQ: Replace _batches parameter with _lastIdToBeFinalized for
finalize()
by @folkyatina in lidofinance/lido-dao#738 - fix storage slot by @loga4 in lidofinance/lido-dao#753
- Make BatchMetadataUpdate touch more requests for further convenience by @folkyatina in lidofinance/lido-dao#754
- Docs: dsm churn limit by @TheDZhon in lidofinance/lido-dao#755
- Fix: improve UX of findCheckpointHints by @folkyatina in lidofinance/lido-dao#750
- Statemind minor fixes round 2 by @Psirex in lidofinance/lido-dao#751
- Fix: shapella upgrade from rc1 to rc2 by @TheDZhon in lidofinance/lido-dao#732
Full Changelog: v2.0.0-rc.1...v2.0.0-rc.2
Lido 2.0 (rc1)
Original release: https://github.com/lidofinance/lido-dao/releases/v2.0.0-rc.1
What's Changed
Updates Lido 2.0 rc0-hotfix release.
High-level overview
- Fix/mixbytes audit by @loga4 in lidofinance/lido-dao#713
- Fix: HashConsensus fast lane calc when consensus is disabled by @skozin in lidofinance/lido-dao#711
- Fix (SignatureUtils): check the EIP-1271 call result more strictly by @skozin in lidofinance/lido-dao#714
- Add missing nonce updates to NodeOperatorsRegistry by @Psirex in lidofinance/lido-dao#715
- Fix/lido fee distribution by @arwer13 in lidofinance/lido-dao#717
- Docs and other minor improvements by @skozin in lidofinance/lido-dao#716
- fix: check stuck+exited<=deposited by @krogla in lidofinance/lido-dao#718
- Fix (AccountingOracle): extra data submission order check by @skozin in lidofinance/lido-dao#712
- Fix: stake limit resume handling by @TheDZhon in lidofinance/lido-dao#721
- Fix: make isLimitReached more coherent by @TheDZhon in lidofinance/lido-dao#710
- Statemind report minor fixes by @Psirex in lidofinance/lido-dao#720
- Fix: discard report processing on lost consensus by @skozin in lidofinance/lido-dao#708
- Fix: remove unused methods in UnstructuredRefStorage lib by @loga4 in lidofinance/lido-dao#723
- Fix: check zero admin in OracleReportSanityChecker constructor by @loga4 in lidofinance/lido-dao#724
- Fix: typos by @loga4 in lidofinance/lido-dao#728
- Fix: restrict staking module name length to 31 bytes by @loga4 in lidofinance/lido-dao#725
- Fix: check nor active status by @loga4 in lidofinance/lido-dao#727
- Fix: resume pause double check by @loga4 in lidofinance/lido-dao#726
- fix: remove int64 limitations by @krogla in lidofinance/lido-dao#719
- transfer events order by @krogla in lidofinance/lido-dao#722
- Add requirement comments for
IStakingModule
by @Psirex in lidofinance/lido-dao#729
Full Changelog: v2.0.0-rc.0...v2.0.0-rc.1
Lido 2.0 (rc0)
Original release: https://github.com/lidofinance/lido-dao/releases/v2.0.0-rc.0
What's Changed
Updates Lido 2.0 beta2 release.
High-level overview
- Fix: Lido.handleOracleReport reorder burn and fee distribution in lidofinance/lido-dao#690
- Fix: DSM.canDeposit for unknown module id in lidofinance/lido-dao#689
- Accounting oracle: remove an erroneous and excess check in lidofinance/lido-dao#692
- Fix: positive rebase limiter burn in lidofinance/lido-dao#696
- HashConsesnsus: docs improvements in lidofinance/lido-dao#697
- Set
lastDepositAt
andlastDepositBlock
on the staking module addition in lidofinance/lido-dao#701 - Refactor: remove some dead code from MemUtils in lidofinance/lido-dao#702
- Fix gas estimation for methods with try/catch of StakingRouter in lidofinance/lido-dao#698
- Fix NOR stuck/refund in lidofinance/lido-dao#693
- Lots of new tests (WithdrawalQueue gas estimation, NodeOperatorsRegistry happy path, LegacyOracle tests)
Full Changelog: v2.0.0-beta.2...v2.0.0-rc.0
Lido 2.0 (beta2)
Original release: https://github.com/lidofinance/lido-dao/releases/v2.0.0-beta.3
What's Changed
Updates Lido 2.0 beta2 release.
High-level overview
- Finalize withdrawal requests with proper
shareRate
(instead of the wrongstETH
discount) (lidofinance/lido-dao#673) - Improve oracle report integrity and
simulatedShareRate
correctness - Resolve issues within StakingRouter and NodeOperatorRegistry
- Fix oracle migration process and legacy oracle compatibility (lidofinance/lido-dao#662, lidofinance/lido-dao#666, lidofinance/lido-dao#668)
- Implement
ERC-1271
for stETH and forbid transfers to the contract itself (lidofinance/lido-dao#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.1...v2.0.0-beta.2
Lido 2.0 (beta1)
Original release: https://github.com/lidofinance/lido-dao/releases/v2.0.0-beta.2
What's Changed
Updates for 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 lidofinance/lido-dao#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 lidofinance/lido-dao#624
Full Changelog: v2.0.0-beta.0...v2.0.0-beta.1
Lido 2.0 (beta0)
Original release: https://github.com/lidofinance/lido-dao/releases/v2.0.0-beta
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)
Full Changelog: v1.2.0...v2.0.0-beta.0
v1.2.0 – Merge-ready mainnet release
Original release: https://github.com/lidofinance/lido-dao/releases/v1.2.0
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 🏃
Context:
- Announcement on the Lido research forum
- Snapshot vote
- Twitter announcements 🐦
- Audit report by MixBytes
Full Changelog: v1.0.0...v1.2.0
Merge-ready protocol (rc1)
Original release: https://github.com/lidofinance/lido-dao/releases/v1.2.0-rc.1
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 🏃
Context
Full Changelog: v1.1.1-rc.1...v1.2.0-rc.1
In-protocol coverage application mechanism (rc1)
Original release: https://github.com/lidofinance/lido-dao/releases/v1.1.1-rc.1
Context: https://research.lido.fi/t/lip-6-in-protocol-coverage-proposal/1468
- Limit the maximum burning amount of shares per single run
- Handle ERC20 transfer return
success
status as EIP-20 requires - Remove some redundant checks
Full Changelog: v1.1.1-rc.0...v1.1.1-rc.1