policy: Round up expiration to nearest ProvingPeriod

This commit is contained in:
Łukasz Magiera 2020-04-17 21:47:44 +02:00
parent afc45d4b6e
commit f2744cf099

View File

@ -4,6 +4,7 @@ import (
"context"
"github.com/filecoin-project/specs-actors/actors/abi"
"github.com/filecoin-project/specs-actors/actors/builtin/miner"
)
type PreCommitPolicy interface {
@ -31,13 +32,15 @@ type Chain interface {
type BasicPreCommitPolicy struct {
api Chain
duration abi.ChainEpoch
provingBoundary abi.ChainEpoch
duration abi.ChainEpoch
}
// NewBasicPreCommitPolicy produces a BasicPreCommitPolicy
func NewBasicPreCommitPolicy(api Chain, duration abi.ChainEpoch) BasicPreCommitPolicy {
func NewBasicPreCommitPolicy(api Chain, duration abi.ChainEpoch, provingBoundary abi.ChainEpoch) BasicPreCommitPolicy {
return BasicPreCommitPolicy{
api: api,
provingBoundary: provingBoundary,
duration: duration,
}
}
@ -63,7 +66,8 @@ func (p *BasicPreCommitPolicy) Expiration(ctx context.Context, ps ...Piece) (abi
}
if end == nil || *end < p.DealInfo.DealSchedule.EndEpoch {
end = &p.DealInfo.DealSchedule.EndEpoch
tmp := p.DealInfo.DealSchedule.EndEpoch
end = &tmp
}
}
@ -72,5 +76,7 @@ func (p *BasicPreCommitPolicy) Expiration(ctx context.Context, ps ...Piece) (abi
end = &tmp
}
*end += miner.WPoStProvingPeriod - (*end % miner.WPoStProvingPeriod) + p.provingBoundary - 1
return *end, nil
}