Comments (7)
Actually, I got it, in the context of the Lido withdrawals it doesn't make any sense.
from lido-dao.
But wait, what if the following sequence of actions happens?
- Bob requests a withdrawal of 1e18 stETH. <-- Tx1
- AccountingOracle reports(Let's say the negative rebase happens here (after a massive slashing)). <-- Tx2
- The bunker mode is activated. <-- Tx3
In case of the following sequence of txs, nothing weird happens. But what if the Bob's withdrawal request comes right after AccountingOracle's report(which will report negative rebase) in the same block? In this case, the bunker mode is not activated yet, but it seems Bob loses some funds due to the negative rebase.
from lido-dao.
Anyways, I think it's better to have some slippage control mechanism for unexpected cases like that.
from lido-dao.
Hey, @Rassska
Thank you for bringing up this issue 👍
The current architecture presumes strict FIFO ordering of finalization, and requests aren't cancellable.
Based on this, 'virtual slippage' control isn't feasible for implementation on the protocol's level.
To overcome the issue, one might want to exchange stETH for ETH on secondary markets or sell the already placed request position represented as an ERC721-compatible token (NFT).
from lido-dao.
Of course, the probability for such case is pretty low, but as I got it correctly it makes some sense:
I'm talking about the following txs order:
- tx2(negative rebase),
- tx1(Bob's Withdrawal),
- tx3(Bunker mode is activated).
As a result, after 36 days or when bunker mode is de-ativated and the batch which contains Bob's withdrawal is finalized, Bob receives less amount of ETH compared to the case where he simply could front-run tx2 which causes the negative rebase.
I mean, the whole concept here is to explore some withdrawal requests passed right after negative rebase happens.
Anyways, thanks a lot, I'm just exploring the Lido for fun!
from lido-dao.
I see your point, yet the bunker mode activates retroactively, practically excluding the probability of the bunker mode front-running (by means of the associated frame definition of the withdrawal request)
see the second rule for the 'Withdrawal requests finalization' section
https://docs.google.com/document/d/1NoJ3rbVZ1OJfByjibHPA91Ghqk487tT0djAf6PFu8s8/edit
Nevertheless, maybe you see any additional weaknesses? 👀
from lido-dao.
Thanks a lot, gotcha!
from lido-dao.
Related Issues (20)
- Add a view method in NOR to get a range of keys HOT 2
- Unproven keys can be used for the deposit if a node operator has stopped validators HOT 2
- Alternating transactions of oracle committee members HOT 5
- Volatile `gasLimit` for `_submit()` method HOT 3
- Tune up CI checks for readability HOT 1
- Make _submit() cheaper by removing _getTotalPooledEther() != 0 check HOT 3
- No check for report in submitReportData HOT 1
- LegacyOracle.finalizeUpgrade_V4 can be called multiple times HOT 1
- Prevent possible `pauseStaking` and `resumeStaking` repetitive calls
- Steal of shares using `transferSharesFrom` due to math rounding issues HOT 2
- Potential withdrawal request griefing vector via `permit` front-running HOT 3
- Incorrect unstETH full name on Holesky
- Incompatible Solidity Version and Unresolved Import Issues with lido-dao Contract HOT 1
- Don't assign MANAGE_NODE_OPERATOR_ROLE to voting upon scratch deploy HOT 1
- requestWithdrawals!
- Mark Packed64x4.sol as Unsafe or Deprecated
- Improve precision for the `PositiveTokenRebaseLimiter` library
- Lido
- How to add new operator at the moment of passing the vote.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lido-dao.