Open laser opened 5 years ago
cc @ZenGround0 @whyrusleeping
A faultset is a bitfield and a timestamp. If a miner does not have some of their data when they need to prove it for their post, they mark it in the faultset as missing, and denote the timestamp (blockheight, or challenge index, not 100% sure yet) that the failed challenge occurred at. Miners must pay a fee for every failed sector. If the failure was only temporary (say they had to replace a disk or something) the miner can also mark the sectors in the 'recovered' set so that they don't get removed from the proving set.
Ensuring the fault sets properly stack means that no fault set overlaps with any other fault set.
The reason you need several fault sets and not just one, is because in order to properly validate the PoSt, you need to know when the failed challenges happened.
Needs documentation in the spec
further work here relies on the completion of #133
Moving forward with usage of rle+. Just needs to be written into the spec. @dignifiedquire Could you help with the spec'ing part?
Separate to the bitfield representation, the spec needs content similar to @whyrusleeping's comment above. This was also quite opaque to me.
Go-filecoin needs this to be specified so that the implementation can compute the appropriate fee to attach for temporary sector failures.
The
submitPoSt
message includes a parameterfaults
of type[]FaultSet
.The
GeneratePost
operation can return a slice of faults.Couple of questions:
FaultSet
? Is it just a set of the faulty sector ids returned from an invocation ofGeneratePost
?faults
is[]FaultSet
. Under what circumstances would someone send asubmitPoSt
message containing more than oneFaultSet
?