Skip to content

Alignment on faults + arbitration  #427

Closed
@sternhenri

Description

@sternhenri

Per our conversation on the spec call, here's my understanding of how fault reporting works @dignifiedquire @whyrusleeping.

I understand this is not nec how they will work in the next spec PR. The goal here is to make sure I am not heading the wrong way for thinking about deal arbitration. Please let me know if there are any big issues here, otherwise I can move forward.

Simply put, there are three key events:

  • ProvingPeriodEnd: by which the miner must submit their PoSt. If they do not, consensus power is immediately lost.
    • Recovery by submitting the appropriate PoSt before the next event.
  • GracePeriod: part of the next ProvingPeriod, after which storage collateral will be slashed, and the client can call upon deal arbitration to recuperate some of it. After
    • Recovery by submitting the appropriate PoSt and putting up collateral again before the next event.
  • SectorFailureTimeout: a few ProvingPeriods away, after which sectors must simply be re-sealed in order to mine (i.e. no possible recovery).
    • Recovery by putting up storage collateral and SEALing sectors (ie same as a new miner).

Put another way:

  • Consensus power is lost immediately after a fault
  • Storage collateral is lost after the GracePeriod
    • The client can run arbitration after then (TODO: exactly how)
  • Data must be reSEALed after SectorFailureTimeout

Below a quick diagram to show this off, viewing the process from a miner's standpoint.

Key:

  • gp = Grace Period
  • c = challenge
  • f = declared fault
  • rf = recovered fault
  • ad = arbitration deal
  • ac = add collateral
            ┌──┐               ┌──┐               ┌──┐               ┌──┐               ┌──┐                ┌──┐     
            │c1│               │c2│               │c3│               │c4│               │c.│                │c9│     
            └──┘               └──┘               └──┘               └──┘               └──┘                └──┘     
              │    ┌────┐        │    ┌────┐        │    ┌────┐        │    ┌────┐        │    ┌────┐         │      
              │    │gp1 │        │    │gp2 │        │    │gp3 │        │    │gp4 │        │    │gp8 │         │      
┌─────────────▼────┼────┴────────▼────┼────┴────────▼────┼────┴────────▼────┼────┴────────▼────┼────┴─────────▼───┐  
│ Proving Period 1 │ Proving Period 2 │ Proving Period 3 │ Proving Period 4 │       ...        │ proving period 9 │  
└────────────▲─────┴───▲─────────▲────┴──────▲───▲───────┴────────────▲─────┴──────────────────┴──────────────────┘  
             │         │         │           │   │                    │                                              
             │         │         │           │   │                    │                                              
                     rf1,                      rf3,                                                                  
          f1, f2     rf2      f3, f4       da1 rf4,                  f5                                              
                                               ac1                                                                   
◀───────────▶◀────────▶ ◀──────▶  ◀────────▶ ◀──▶  ◀─────────────────▶ ◀─────────▶ ◀─────────▶  ◀────────────────────
     A           B         C         D          E           F               G           H                 I          

State of the network:

  • A
    • Power = 1
    • Collateral = 1
    • Next Proof = PoSt
  • B
    • Power = 0
    • Collateral = 1
    • Next proof = PoSt (to fix faults)
  • C
    • Power = 1
    • Collateral = 1
    • Next proof = PoSt
  • D
    • Power = 0
    • Collateral = 1
    • Next proof = PoSt (to fix faults)
  • E
    • Power = 0
    • Collateral = 0
    • Next proof = PoSt (to fix faults)
    • Collateral to be added back
  • F
    • Power = 1
    • Collateral = 0 | 1
    • Next proof = PoSt
  • G
    • Power = 0
    • Collateral = 0 | 1
    • Next proof = PoSt (to fix faults)
  • H
    • Power = 0
    • Collateral = 0 | 0
    • Next proof = PoSt (to fix faults)
    • Collateral to be added back
  • I
    • Power = 0
    • Collateral = 0
    • Next proof = SEAL
    • Collateral to be added back

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions