Closed
Description
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 nextProvingPeriod
, 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 fewProvingPeriod
s 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
Labels
No labels