Skip to content
This repository was archived by the owner on Jun 6, 2023. It is now read-only.
This repository was archived by the owner on Jun 6, 2023. It is now read-only.

Market.PublishStorageDeals griefing vector #1144

@wadealexc

Description

@wadealexc

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:

  1. Client adds balance to the market actor (Market.AddBalance)
  2. Client negotiates/signs a storage deal with some miner
  3. Miner creates a transaction to Market.PublishStorageDeals
  4. Client frontruns this transaction with a call to Market.WithdrawBalance, withdrawing their escrowed funds
  5. 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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions