Get proof type in NewWinningPoStProver constructor

This commit is contained in:
Łukasz Magiera 2020-04-13 23:25:38 +02:00
parent bb3789b130
commit 5bf80a60f1
4 changed files with 45 additions and 18 deletions

View File

@ -426,11 +426,6 @@ func storageMinerInit(ctx context.Context, cctx *cli.Context, api lapi.FullNode,
return err return err
} }
winPt, err := spt.RegisteredWinningPoStProof()
if err != nil {
return err
}
mid, err := address.IDFromAddress(a) mid, err := address.IDFromAddress(a)
if err != nil { if err != nil {
return xerrors.Errorf("getting id address: %w", err) return xerrors.Errorf("getting id address: %w", err)
@ -447,7 +442,10 @@ func storageMinerInit(ctx context.Context, cctx *cli.Context, api lapi.FullNode,
if err != nil { if err != nil {
return err return err
} }
epp := storage.NewWinningPoStProver(smgr, dtypes.MinerID(mid), winPt) epp, err := storage.NewWinningPoStProver(api, smgr, dtypes.MinerID(mid))
if err != nil {
return err
}
beacon := beacon.NewMockBeacon(build.BlockDelay * time.Second) beacon := beacon.NewMockBeacon(build.BlockDelay * time.Second)

View File

@ -135,18 +135,11 @@ func StorageMiner(mctx helpers.MetricsCtx, lc fx.Lifecycle, api lapi.FullNode, h
return nil, err return nil, err
} }
spt, err := ffiwrapper.SealProofTypeFromSectorSize(sealer.SectorSize()) // TODO: this changes fps, err := storage.NewWindowedPoStScheduler(api, sealer, maddr, worker)
if err != nil {
return nil, xerrors.Errorf("bad sector size: %w", err)
}
ppt, err := spt.RegisteredWindowPoStProof()
if err != nil { if err != nil {
return nil, err return nil, err
} }
fps := storage.NewWindowedPoStScheduler(api, sealer, maddr, worker, ppt)
sm, err := storage.NewMiner(api, maddr, worker, h, ds, sealer, sc, verif, tktFn) sm, err := storage.NewMiner(api, maddr, worker, h, ds, sealer, sc, verif, tktFn)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -133,8 +133,28 @@ type StorageWpp struct {
winnRpt abi.RegisteredProof winnRpt abi.RegisteredProof
} }
func NewWinningPoStProver(sb storage.Prover, miner dtypes.MinerID, winnRpt abi.RegisteredProof) *StorageWpp { func NewWinningPoStProver(api api.FullNode, sb storage.Prover, miner dtypes.MinerID) (*StorageWpp, error) {
return &StorageWpp{sb, abi.ActorID(miner), winnRpt} ma, err := address.NewIDAddress(uint64(miner))
if err != nil {
return nil, err
}
mss, err := api.StateMinerSectorSize(context.TODO(), ma, types.EmptyTSK)
if err != nil {
return nil, xerrors.Errorf("getting sector size: %w", err)
}
spt, err := ffiwrapper.SealProofTypeFromSectorSize(mss)
if err != nil {
return nil, err
}
wpt, err := spt.RegisteredWinningPoStProof()
if err != nil {
return nil, err
}
return &StorageWpp{sb, abi.ActorID(miner), wpt}, nil
} }
var _ gen.WinningPoStProver = (*StorageWpp)(nil) var _ gen.WinningPoStProver = (*StorageWpp)(nil)

View File

@ -8,6 +8,7 @@ import (
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/go-address" "github.com/filecoin-project/go-address"
"github.com/filecoin-project/sector-storage/ffiwrapper"
"github.com/filecoin-project/specs-actors/actors/abi" "github.com/filecoin-project/specs-actors/actors/abi"
"github.com/filecoin-project/specs-storage/storage" "github.com/filecoin-project/specs-storage/storage"
@ -36,8 +37,23 @@ type WindowPoStScheduler struct {
//failLk sync.Mutex //failLk sync.Mutex
} }
func NewWindowedPoStScheduler(api storageMinerApi, sb storage.Prover, actor address.Address, worker address.Address, rt abi.RegisteredProof) *WindowPoStScheduler { func NewWindowedPoStScheduler(api storageMinerApi, sb storage.Prover, actor address.Address, worker address.Address) (*WindowPoStScheduler, error) {
return &WindowPoStScheduler{api: api, prover: sb, actor: actor, worker: worker, proofType: rt} mss, err := api.StateMinerSectorSize(context.TODO(), actor, types.EmptyTSK)
if err != nil {
return nil, xerrors.Errorf("getting sector size: %w", err)
}
spt, err := ffiwrapper.SealProofTypeFromSectorSize(mss)
if err != nil {
return nil, err
}
rt, err := spt.RegisteredWindowPoStProof()
if err != nil {
return nil, err
}
return &WindowPoStScheduler{api: api, prover: sb, actor: actor, worker: worker, proofType: rt}, nil
} }
const ProvingDeadlineEpochs = (30 * 60) / build.BlockDelay const ProvingDeadlineEpochs = (30 * 60) / build.BlockDelay