diff --git a/extern/storage-sealing/states_sealing.go b/extern/storage-sealing/states_sealing.go index 5334fc72e..0935823eb 100644 --- a/extern/storage-sealing/states_sealing.go +++ b/extern/storage-sealing/states_sealing.go @@ -304,8 +304,6 @@ func (m *Sealing) preCommitParams(ctx statemachine.Context, sector SectorInfo) ( return nil, big.Zero(), nil, ctx.Send(SectorSealPreCommit1Failed{xerrors.Errorf("handlePreCommitting: failed to compute pre-commit expiry: %w", err)}) } - // Sectors must last _at least_ MinSectorExpiration + MaxSealDuration. - // TODO: The "+10" allows the pre-commit to take 10 blocks to be accepted. nv, err := m.api.StateNetworkVersion(ctx.Context(), tok) if err != nil { return nil, big.Zero(), nil, ctx.Send(SectorSealPreCommit1Failed{xerrors.Errorf("failed to get network version: %w", err)}) @@ -316,7 +314,12 @@ func (m *Sealing) preCommitParams(ctx statemachine.Context, sector SectorInfo) ( if minExpiration := sector.TicketEpoch + policy.MaxPreCommitRandomnessLookback + msd + miner.MinSectorExpiration; expiration < minExpiration { expiration = minExpiration } - // TODO: enforce a reasonable _maximum_ sector lifetime? + + // Assume: both precommit msg & commit msg land on chain as early as possible + maxExpiration := height + policy.GetPreCommitChallengeDelay() + policy.GetMaxSectorExpirationExtension() + if expiration > maxExpiration { + expiration = maxExpiration + } params := &miner.SectorPreCommitInfo{ Expiration: expiration,