124 lines
2.4 KiB
Go
124 lines
2.4 KiB
Go
package sealing
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
|
|
"github.com/ipfs/go-cid"
|
|
|
|
"github.com/filecoin-project/specs-actors/actors/abi"
|
|
"github.com/filecoin-project/specs-actors/actors/runtime/exitcode"
|
|
"github.com/filecoin-project/specs-storage/storage"
|
|
)
|
|
|
|
type Piece struct {
|
|
DealID *abi.DealID
|
|
|
|
Size abi.UnpaddedPieceSize
|
|
CommP cid.Cid
|
|
}
|
|
|
|
type Log struct {
|
|
Timestamp uint64
|
|
Trace string // for errors
|
|
|
|
Message string
|
|
|
|
// additional data (Event info)
|
|
Kind string
|
|
}
|
|
|
|
type SectorInfo struct {
|
|
State SectorState
|
|
SectorNumber abi.SectorNumber // TODO: this field's name should be changed to SectorNumber
|
|
Nonce uint64 // TODO: remove
|
|
|
|
SectorType abi.RegisteredProof
|
|
|
|
// Packing
|
|
|
|
Pieces []Piece
|
|
|
|
// PreCommit1
|
|
TicketValue abi.SealRandomness
|
|
TicketEpoch abi.ChainEpoch
|
|
PreCommit1Out storage.PreCommit1Out
|
|
|
|
// PreCommit2
|
|
CommD *cid.Cid
|
|
CommR *cid.Cid
|
|
Proof []byte
|
|
|
|
PreCommitMessage *cid.Cid
|
|
|
|
// WaitSeed
|
|
SeedValue abi.InteractiveSealRandomness
|
|
SeedEpoch abi.ChainEpoch
|
|
|
|
// Committing
|
|
CommitMessage *cid.Cid
|
|
InvalidProofs uint64 // failed proof computations (doesn't validate with proof inputs)
|
|
|
|
// Faults
|
|
FaultReportMsg *cid.Cid
|
|
|
|
// Debug
|
|
LastErr string
|
|
|
|
Log []Log
|
|
}
|
|
|
|
func (t *SectorInfo) pieceInfos() []abi.PieceInfo {
|
|
out := make([]abi.PieceInfo, len(t.Pieces))
|
|
for i, piece := range t.Pieces {
|
|
out[i] = abi.PieceInfo{
|
|
Size: piece.Size.Padded(),
|
|
PieceCID: piece.CommP,
|
|
}
|
|
}
|
|
return out
|
|
}
|
|
|
|
func (t *SectorInfo) deals() []abi.DealID {
|
|
out := make([]abi.DealID, 0, len(t.Pieces))
|
|
for _, piece := range t.Pieces {
|
|
if piece.DealID == nil {
|
|
continue
|
|
}
|
|
out = append(out, *piece.DealID)
|
|
}
|
|
return out
|
|
}
|
|
|
|
func (t *SectorInfo) existingPieces() []abi.UnpaddedPieceSize {
|
|
out := make([]abi.UnpaddedPieceSize, len(t.Pieces))
|
|
for i, piece := range t.Pieces {
|
|
out[i] = piece.Size
|
|
}
|
|
return out
|
|
}
|
|
|
|
type TicketFn func(ctx context.Context, tok TipSetToken) (abi.SealRandomness, abi.ChainEpoch, error)
|
|
|
|
type SectorIDCounter interface {
|
|
Next() (abi.SectorNumber, error)
|
|
}
|
|
|
|
type TipSetToken []byte
|
|
|
|
type MsgLookup struct {
|
|
Receipt MessageReceipt
|
|
TipSetTok TipSetToken
|
|
Height abi.ChainEpoch
|
|
}
|
|
|
|
type MessageReceipt struct {
|
|
ExitCode exitcode.ExitCode
|
|
Return []byte
|
|
GasUsed int64
|
|
}
|
|
|
|
func (mr *MessageReceipt) Equals(o *MessageReceipt) bool {
|
|
return mr.ExitCode == o.ExitCode && bytes.Equal(mr.Return, o.Return) && mr.GasUsed == o.GasUsed
|
|
}
|