Add miner-side MaxDealStartDelay config
This commit is contained in:
parent
0e4cd3c599
commit
9521c0b773
@ -436,6 +436,8 @@ var MinerNode = Options(
|
|||||||
Override(new(dtypes.GetSealingConfigFunc), modules.NewGetSealConfigFunc),
|
Override(new(dtypes.GetSealingConfigFunc), modules.NewGetSealConfigFunc),
|
||||||
Override(new(dtypes.SetExpectedSealDurationFunc), modules.NewSetExpectedSealDurationFunc),
|
Override(new(dtypes.SetExpectedSealDurationFunc), modules.NewSetExpectedSealDurationFunc),
|
||||||
Override(new(dtypes.GetExpectedSealDurationFunc), modules.NewGetExpectedSealDurationFunc),
|
Override(new(dtypes.GetExpectedSealDurationFunc), modules.NewGetExpectedSealDurationFunc),
|
||||||
|
Override(new(dtypes.SetMaxDealStartDelayFunc), modules.NewSetMaxDealStartDelayFunc),
|
||||||
|
Override(new(dtypes.GetMaxDealStartDelayFunc), modules.NewGetMaxDealStartDelayFunc),
|
||||||
)
|
)
|
||||||
|
|
||||||
// Online sets up basic libp2p node
|
// Online sets up basic libp2p node
|
||||||
|
@ -58,6 +58,8 @@ type DealmakingConfig struct {
|
|||||||
ConsiderUnverifiedStorageDeals bool
|
ConsiderUnverifiedStorageDeals bool
|
||||||
PieceCidBlocklist []cid.Cid
|
PieceCidBlocklist []cid.Cid
|
||||||
ExpectedSealDuration Duration
|
ExpectedSealDuration Duration
|
||||||
|
// Maximum amount of time proposed deal StartEpoch can be in future
|
||||||
|
MaxDealStartDelay Duration
|
||||||
// The amount of time to wait for more deals to arrive before
|
// The amount of time to wait for more deals to arrive before
|
||||||
// publishing
|
// publishing
|
||||||
PublishMsgPeriod Duration
|
PublishMsgPeriod Duration
|
||||||
@ -320,6 +322,7 @@ func DefaultStorageMiner() *StorageMiner {
|
|||||||
ConsiderUnverifiedStorageDeals: true,
|
ConsiderUnverifiedStorageDeals: true,
|
||||||
PieceCidBlocklist: []cid.Cid{},
|
PieceCidBlocklist: []cid.Cid{},
|
||||||
// TODO: It'd be nice to set this based on sector size
|
// TODO: It'd be nice to set this based on sector size
|
||||||
|
MaxDealStartDelay: Duration(time.Hour * 24 * 14),
|
||||||
ExpectedSealDuration: Duration(time.Hour * 24),
|
ExpectedSealDuration: Duration(time.Hour * 24),
|
||||||
PublishMsgPeriod: Duration(time.Hour),
|
PublishMsgPeriod: Duration(time.Hour),
|
||||||
MaxDealsPerPublishMsg: 8,
|
MaxDealsPerPublishMsg: 8,
|
||||||
|
@ -88,5 +88,8 @@ type SetExpectedSealDurationFunc func(time.Duration) error
|
|||||||
// too determine how long sealing is expected to take
|
// too determine how long sealing is expected to take
|
||||||
type GetExpectedSealDurationFunc func() (time.Duration, error)
|
type GetExpectedSealDurationFunc func() (time.Duration, error)
|
||||||
|
|
||||||
|
type SetMaxDealStartDelayFunc func(time.Duration) error
|
||||||
|
type GetMaxDealStartDelayFunc func() (time.Duration, error)
|
||||||
|
|
||||||
type StorageDealFilter func(ctx context.Context, deal storagemarket.MinerDeal) (bool, string, error)
|
type StorageDealFilter func(ctx context.Context, deal storagemarket.MinerDeal) (bool, string, error)
|
||||||
type RetrievalDealFilter func(ctx context.Context, deal retrievalmarket.ProviderDealState) (bool, string, error)
|
type RetrievalDealFilter func(ctx context.Context, deal retrievalmarket.ProviderDealState) (bool, string, error)
|
||||||
|
@ -59,7 +59,6 @@ import (
|
|||||||
"github.com/filecoin-project/lotus/api/v1api"
|
"github.com/filecoin-project/lotus/api/v1api"
|
||||||
"github.com/filecoin-project/lotus/blockstore"
|
"github.com/filecoin-project/lotus/blockstore"
|
||||||
"github.com/filecoin-project/lotus/build"
|
"github.com/filecoin-project/lotus/build"
|
||||||
"github.com/filecoin-project/lotus/chain/actors/builtin"
|
|
||||||
"github.com/filecoin-project/lotus/chain/actors/builtin/miner"
|
"github.com/filecoin-project/lotus/chain/actors/builtin/miner"
|
||||||
"github.com/filecoin-project/lotus/chain/gen"
|
"github.com/filecoin-project/lotus/chain/gen"
|
||||||
"github.com/filecoin-project/lotus/chain/gen/slashfilter"
|
"github.com/filecoin-project/lotus/chain/gen/slashfilter"
|
||||||
@ -486,6 +485,7 @@ func BasicDealFilter(user dtypes.StorageDealFilter) func(onlineOk dtypes.Conside
|
|||||||
unverifiedOk dtypes.ConsiderUnverifiedStorageDealsConfigFunc,
|
unverifiedOk dtypes.ConsiderUnverifiedStorageDealsConfigFunc,
|
||||||
blocklistFunc dtypes.StorageDealPieceCidBlocklistConfigFunc,
|
blocklistFunc dtypes.StorageDealPieceCidBlocklistConfigFunc,
|
||||||
expectedSealTimeFunc dtypes.GetExpectedSealDurationFunc,
|
expectedSealTimeFunc dtypes.GetExpectedSealDurationFunc,
|
||||||
|
startDelay dtypes.GetMaxDealStartDelayFunc,
|
||||||
spn storagemarket.StorageProviderNode) dtypes.StorageDealFilter {
|
spn storagemarket.StorageProviderNode) dtypes.StorageDealFilter {
|
||||||
return func(onlineOk dtypes.ConsiderOnlineStorageDealsConfigFunc,
|
return func(onlineOk dtypes.ConsiderOnlineStorageDealsConfigFunc,
|
||||||
offlineOk dtypes.ConsiderOfflineStorageDealsConfigFunc,
|
offlineOk dtypes.ConsiderOfflineStorageDealsConfigFunc,
|
||||||
@ -493,6 +493,7 @@ func BasicDealFilter(user dtypes.StorageDealFilter) func(onlineOk dtypes.Conside
|
|||||||
unverifiedOk dtypes.ConsiderUnverifiedStorageDealsConfigFunc,
|
unverifiedOk dtypes.ConsiderUnverifiedStorageDealsConfigFunc,
|
||||||
blocklistFunc dtypes.StorageDealPieceCidBlocklistConfigFunc,
|
blocklistFunc dtypes.StorageDealPieceCidBlocklistConfigFunc,
|
||||||
expectedSealTimeFunc dtypes.GetExpectedSealDurationFunc,
|
expectedSealTimeFunc dtypes.GetExpectedSealDurationFunc,
|
||||||
|
startDelay dtypes.GetMaxDealStartDelayFunc,
|
||||||
spn storagemarket.StorageProviderNode) dtypes.StorageDealFilter {
|
spn storagemarket.StorageProviderNode) dtypes.StorageDealFilter {
|
||||||
|
|
||||||
return func(ctx context.Context, deal storagemarket.MinerDeal) (bool, string, error) {
|
return func(ctx context.Context, deal storagemarket.MinerDeal) (bool, string, error) {
|
||||||
@ -564,9 +565,14 @@ func BasicDealFilter(user dtypes.StorageDealFilter) func(onlineOk dtypes.Conside
|
|||||||
return false, fmt.Sprintf("cannot seal a sector before %s", deal.Proposal.StartEpoch), nil
|
return false, fmt.Sprintf("cannot seal a sector before %s", deal.Proposal.StartEpoch), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sd, err := startDelay()
|
||||||
|
if err != nil {
|
||||||
|
return false, "miner error", err
|
||||||
|
}
|
||||||
|
|
||||||
// Reject if it's more than 7 days in the future
|
// Reject if it's more than 7 days in the future
|
||||||
// TODO: read from cfg
|
// TODO: read from cfg
|
||||||
maxStartEpoch := earliest + abi.ChainEpoch(7*builtin.SecondsInDay/build.BlockDelaySecs)
|
maxStartEpoch := earliest + abi.ChainEpoch(uint64(sd.Seconds())/build.BlockDelaySecs)
|
||||||
if deal.Proposal.StartEpoch > maxStartEpoch {
|
if deal.Proposal.StartEpoch > maxStartEpoch {
|
||||||
return false, fmt.Sprintf("deal start epoch is too far in the future: %s > %s", deal.Proposal.StartEpoch, maxStartEpoch), nil
|
return false, fmt.Sprintf("deal start epoch is too far in the future: %s > %s", deal.Proposal.StartEpoch, maxStartEpoch), nil
|
||||||
}
|
}
|
||||||
@ -898,6 +904,24 @@ func NewGetExpectedSealDurationFunc(r repo.LockedRepo) (dtypes.GetExpectedSealDu
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewSetMaxDealStartDelayFunc(r repo.LockedRepo) (dtypes.SetMaxDealStartDelayFunc, error) {
|
||||||
|
return func(delay time.Duration) (err error) {
|
||||||
|
err = mutateCfg(r, func(cfg *config.StorageMiner) {
|
||||||
|
cfg.Dealmaking.MaxDealStartDelay = config.Duration(delay)
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewGetMaxDealStartDelayFunc(r repo.LockedRepo) (dtypes.GetMaxDealStartDelayFunc, error) {
|
||||||
|
return func() (out time.Duration, err error) {
|
||||||
|
err = readCfg(r, func(cfg *config.StorageMiner) {
|
||||||
|
out = time.Duration(cfg.Dealmaking.MaxDealStartDelay)
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
func readCfg(r repo.LockedRepo, accessor func(*config.StorageMiner)) error {
|
func readCfg(r repo.LockedRepo, accessor func(*config.StorageMiner)) error {
|
||||||
raw, err := r.Config()
|
raw, err := r.Config()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user