You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Jun 6, 2023. It is now read-only.
PublishStorageDeals relies on validation for all deals passing, or the entire call fails. A deal client may force validation for any of their signed deals to fail on publication by withdrawing market funds that are escrowed (but not locked). The attack is as follows:
Client adds balance to the market actor (Market.AddBalance)
Client negotiates/signs a storage deal with some miner
Miner creates a transaction to Market.PublishStorageDeals
Client frontruns this transaction with a call to Market.WithdrawBalance, withdrawing their escrowed funds
Market.PublishStorageDeals fails because the client no longer has balance to lock up
The same may be accomplished if a client signs multiple copies of the same storage deal and distributes them to multiple miners, but only supplies enough balance to the market to support one deal. In this case, no frontrunning is needed; the first miner to publish the client's deal will "win," and the rest will fail.
The text was updated successfully, but these errors were encountered:
Right, there was an expectation that WithdrawBalance will have a delay for X epoch after it is called as mentioned in the spec but we can revisit this and evaluate other proposals later.
PublishStorageDeals
relies on validation for all deals passing, or the entire call fails. A deal client may force validation for any of their signed deals to fail on publication by withdrawing market funds that are escrowed (but not locked). The attack is as follows:Market.AddBalance
)Market.PublishStorageDeals
Market.WithdrawBalance
, withdrawing their escrowed fundsMarket.PublishStorageDeals
fails because the client no longer has balance to lock upThe same may be accomplished if a client signs multiple copies of the same storage deal and distributes them to multiple miners, but only supplies enough balance to the market to support one deal. In this case, no frontrunning is needed; the first miner to publish the client's deal will "win," and the rest will fail.
The text was updated successfully, but these errors were encountered: