diff --git a/chain/gen/gen.go b/chain/gen/gen.go index d75215083..71a7f3127 100644 --- a/chain/gen/gen.go +++ b/chain/gen/gen.go @@ -12,7 +12,6 @@ import ( commcid "github.com/filecoin-project/go-fil-commcid" "github.com/filecoin-project/specs-actors/actors/abi" "github.com/filecoin-project/specs-actors/actors/crypto" - "github.com/filecoin-project/specs-storage/storage" block "github.com/ipfs/go-block-format" "github.com/ipfs/go-blockservice" "github.com/ipfs/go-car" @@ -65,7 +64,7 @@ type ChainGen struct { w *wallet.Wallet - eppProvs map[address.Address]ElectionPoStProver + eppProvs map[address.Address]WinningPoStProver Miners []address.Address receivers []address.Address banker address.Address @@ -205,9 +204,9 @@ func NewGenerator() (*ChainGen, error) { return nil, xerrors.Errorf("set genesis failed: %w", err) } - mgen := make(map[address.Address]ElectionPoStProver) + mgen := make(map[address.Address]WinningPoStProver) for i := range tpl.Miners { - mgen[genesis2.MinerAddress(uint64(i))] = &eppProvider{} + mgen[genesis2.MinerAddress(uint64(i))] = &wppProvider{} } sm := stmgr.NewStateManager(cs) @@ -501,39 +500,28 @@ func (mca mca) WalletSign(ctx context.Context, a address.Address, v []byte) (*cr return mca.w.Sign(ctx, a, v) } -type ElectionPoStProver interface { - GenerateCandidates(context.Context, []abi.SectorInfo, abi.PoStRandomness) ([]storage.PoStCandidateWithTicket, error) - ComputeProof(context.Context, []abi.SectorInfo, []byte, []storage.PoStCandidateWithTicket) ([]abi.PoStProof, error) +type WinningPoStProver interface { + GenerateCandidates(context.Context, abi.PoStRandomness, uint64) ([]uint64, error) + ComputeProof(context.Context, []abi.SectorInfo, []byte) ([]abi.PoStProof, error) } -type eppProvider struct{} +type wppProvider struct{} -func (epp *eppProvider) GenerateCandidates(ctx context.Context, _ []abi.SectorInfo, eprand abi.PoStRandomness) ([]storage.PoStCandidateWithTicket, error) { - return []storage.PoStCandidateWithTicket{ - { - Candidate: abi.PoStCandidate{ - RegisteredProof: abi.RegisteredProof_StackedDRG2KiBPoSt, - SectorID: abi.SectorID{Number: 1}, - PartialTicket: abi.PartialTicket{}, - PrivateProof: abi.PrivatePoStCandidateProof{}, - ChallengeIndex: 1, - }, - }, - }, nil +func (wpp *wppProvider) GenerateCandidates(ctx context.Context, _ abi.PoStRandomness, _ uint64) ([]uint64, error) { + return []uint64{0}, nil } -func (epp *eppProvider) ComputeProof(ctx context.Context, _ []abi.SectorInfo, eprand []byte, winners []storage.PoStCandidateWithTicket) ([]abi.PoStProof, error) { - +func (wpp *wppProvider) ComputeProof(context.Context, []abi.SectorInfo, []byte) ([]abi.PoStProof, error) { return []abi.PoStProof{{ ProofBytes: []byte("valid proof"), }}, nil } type ProofInput struct { - sectors []abi.SectorInfo - hvrf []byte - winners []storage.PoStCandidateWithTicket - vrfout []byte + sectors []abi.SectorInfo + hvrf []byte + challengedSectors []uint64 + vrfout []byte } func IsRoundWinner(ctx context.Context, ts *types.TipSet, round abi.ChainEpoch, @@ -563,8 +551,8 @@ func IsRoundWinner(ctx context.Context, ts *types.TipSet, round abi.ChainEpoch, } /* -func ComputeProof(ctx context.Context, epp ElectionPoStProver, pi *ProofInput) (*types.EPostProof, error) { - proof, err := epp.ComputeProof(ctx, pi.sectors, pi.hvrf, pi.winners) +func ComputeProof(ctx context.Context, epp WinningPoStProver, pi *ProofInput) (*types.EPostProof, error) { + proof, err := epp.ComputeProof(ctx, pi.sectors, pi.hvrf, pi.challengedSectors) if err != nil { return nil, xerrors.Errorf("failed to compute snark for election proof: %w", err) } @@ -573,7 +561,7 @@ func ComputeProof(ctx context.Context, epp ElectionPoStProver, pi *ProofInput) ( Proofs: proof, PostRand: pi.vrfout, } - for _, win := range pi.winners { + for _, win := range pi.challengedSectors { part := make([]byte, 32) copy(part, win.Candidate.PartialTicket) ept.Candidates = append(ept.Candidates, types.EPostTicket{ @@ -622,14 +610,14 @@ type genFakeVerifier struct{} var _ ffiwrapper.Verifier = (*genFakeVerifier)(nil) -func (m genFakeVerifier) VerifyElectionPost(ctx context.Context, pvi abi.PoStVerifyInfo) (bool, error) { - panic("nyi") -} - func (m genFakeVerifier) VerifySeal(svi abi.SealVerifyInfo) (bool, error) { return true, nil } -func (m genFakeVerifier) VerifyFallbackPost(ctx context.Context, pvi abi.PoStVerifyInfo) (bool, error) { - panic("nyi") +func (m genFakeVerifier) VerifyWinningPoSt(ctx context.Context, info abi.WinningPoStVerifyInfo) (bool, error) { + panic("implement me") +} + +func (m genFakeVerifier) VerifyWindowPoSt(ctx context.Context, info abi.WindowPoStVerifyInfo) (bool, error) { + panic("implement me") } diff --git a/chain/gen/genesis/miners.go b/chain/gen/genesis/miners.go index cd0d6b7ce..01d962a8f 100644 --- a/chain/gen/genesis/miners.go +++ b/chain/gen/genesis/miners.go @@ -6,19 +6,19 @@ import ( "fmt" "math/rand" - cborutil "github.com/filecoin-project/go-cbor-util" - "github.com/filecoin-project/specs-actors/actors/builtin/power" + "github.com/ipfs/go-cid" cbor "github.com/ipfs/go-ipld-cbor" + "golang.org/x/xerrors" "github.com/filecoin-project/go-address" + cborutil "github.com/filecoin-project/go-cbor-util" "github.com/filecoin-project/specs-actors/actors/abi" "github.com/filecoin-project/specs-actors/actors/abi/big" "github.com/filecoin-project/specs-actors/actors/builtin" "github.com/filecoin-project/specs-actors/actors/builtin/market" "github.com/filecoin-project/specs-actors/actors/builtin/miner" + "github.com/filecoin-project/specs-actors/actors/builtin/power" "github.com/filecoin-project/specs-actors/actors/crypto" - "github.com/ipfs/go-cid" - "golang.org/x/xerrors" "github.com/filecoin-project/lotus/build" "github.com/filecoin-project/lotus/chain/state" @@ -182,7 +182,7 @@ func SetupStorageMiners(ctx context.Context, cs *store.ChainStore, sroot cid.Cid } // TODO: This is almost definitely not correct - circSupply := types.BigMul(types.NewInt(build.TotalFilecoin - build.MiningRewardTotal), types.NewInt(build.FilecoinPrecision)) + circSupply := types.BigMul(types.NewInt(build.TotalFilecoin-build.MiningRewardTotal), types.NewInt(build.FilecoinPrecision)) totalPledge := types.NewInt(3) perEpochReward := types.NewInt(9) diff --git a/chain/gen/genesis/t04_power.go b/chain/gen/genesis/t04_power.go index ac7af899c..146e08f7d 100644 --- a/chain/gen/genesis/t04_power.go +++ b/chain/gen/genesis/t04_power.go @@ -24,7 +24,7 @@ func SetupStoragePowerActor(bs bstore.Blockstore) (*types.Actor, error) { } sms := &power.State{ - TotalQualityAdjPower: big.NewInt(1), // TODO: has to be 1 initially to avoid div by zero. Kinda annoying, should find a way to fix + TotalQualityAdjPower: big.NewInt(1), // TODO: has to be 1 initially to avoid div by zero. Kinda annoying, should find a way to fix MinerCount: 0, EscrowTable: emptyhamt, CronEventQueue: emptyhamt, diff --git a/cmd/lotus-bench/main.go b/cmd/lotus-bench/main.go index 0d5289119..b2e24b96a 100644 --- a/cmd/lotus-bench/main.go +++ b/cmd/lotus-bench/main.go @@ -174,7 +174,7 @@ var sealBenchCmd = &cli.Command{ } sectorSize := abi.SectorSize(sectorSizeInt) - _, spt, err := ffiwrapper.ProofTypeFromSectorSize(sectorSize) + _, spt, err := ffiwrapper.SealProofTypeFromSectorSize(sectorSize) if err != nil { return err } @@ -401,7 +401,8 @@ var sealBenchCmd = &cli.Command{ candidates := make([]abi.SectorInfo, len(fcandidates)) for i, fcandidate := range fcandidates { - candidates[i] = sealedSectors[i]; _ = fcandidate // todo: I have no idea what is under fcandidate, but it's a large number + candidates[i] = sealedSectors[i] + _ = fcandidate // todo: I have no idea what is under fcandidate, but it's a large number } gencandidates := time.Now() @@ -423,10 +424,10 @@ var sealBenchCmd = &cli.Command{ epost2 := time.Now() pvi1 := abi.WinningPoStVerifyInfo{ - Randomness: abi.PoStRandomness(challenge[:]), - Proofs: proof1, + Randomness: abi.PoStRandomness(challenge[:]), + Proofs: proof1, ChallengedSectors: candidates, - Prover: mid, + Prover: mid, } ok, err := ffiwrapper.ProofVerifier.VerifyWinningPoSt(context.TODO(), pvi1) if err != nil { @@ -439,10 +440,10 @@ var sealBenchCmd = &cli.Command{ verifypost1 := time.Now() pvi2 := abi.WinningPoStVerifyInfo{ - Randomness: abi.PoStRandomness(challenge[:]), - Proofs: proof2, + Randomness: abi.PoStRandomness(challenge[:]), + Proofs: proof2, ChallengedSectors: candidates, - Prover: mid, + Prover: mid, } ok, err = ffiwrapper.ProofVerifier.VerifyWinningPoSt(context.TODO(), pvi2) @@ -534,7 +535,7 @@ var proveCmd = &cli.Command{ return err } - _, spt, err := ffiwrapper.ProofTypeFromSectorSize(abi.SectorSize(c2in.SectorSize)) + _, spt, err := ffiwrapper.SealProofTypeFromSectorSize(abi.SectorSize(c2in.SectorSize)) if err != nil { return err } diff --git a/cmd/lotus-seal-worker/main.go b/cmd/lotus-seal-worker/main.go index effb5900f..fdbb450c4 100644 --- a/cmd/lotus-seal-worker/main.go +++ b/cmd/lotus-seal-worker/main.go @@ -242,7 +242,7 @@ var runCmd = &cli.Command{ } // Setup remote sector store - _, spt, err := ffiwrapper.ProofTypeFromSectorSize(ssize) + _, spt, err := ffiwrapper.SealProofTypeFromSectorSize(ssize) if err != nil { return xerrors.Errorf("getting proof type: %w", err) } diff --git a/cmd/lotus-seed/main.go b/cmd/lotus-seed/main.go index 3b544d010..97bf57ac0 100644 --- a/cmd/lotus-seed/main.go +++ b/cmd/lotus-seed/main.go @@ -120,7 +120,7 @@ var preSealCmd = &cli.Command{ } sectorSize := abi.SectorSize(sectorSizeInt) - rp, _, err := ffiwrapper.ProofTypeFromSectorSize(sectorSize) + rp, _, err := ffiwrapper.SealProofTypeFromSectorSize(sectorSize) if err != nil { return err } diff --git a/cmd/lotus-storage-miner/init.go b/cmd/lotus-storage-miner/init.go index 535abf000..dbed16453 100644 --- a/cmd/lotus-storage-miner/init.go +++ b/cmd/lotus-storage-miner/init.go @@ -413,7 +413,7 @@ func storageMinerInit(ctx context.Context, cctx *cli.Context, api lapi.FullNode, return err } - ppt, spt, err := ffiwrapper.ProofTypeFromSectorSize(ssize) + ppt, spt, err := ffiwrapper.SealProofTypeFromSectorSize(ssize) if err != nil { return err } diff --git a/go.sum b/go.sum index d0cab0e9f..bc0430e80 100644 --- a/go.sum +++ b/go.sum @@ -130,7 +130,6 @@ github.com/filecoin-project/chain-validation v0.0.3 h1:luT/8kJ0WdMIqQ9Bm31W4JkuY github.com/filecoin-project/chain-validation v0.0.3/go.mod h1:NCEGFjcWRjb8akWFSOXvU6n2efkWIqAeOKU6o5WBGQw= github.com/filecoin-project/chain-validation v0.0.6-0.20200331143132-15970e639ac2 h1:kRaCruOKzFy5mE5lwPecKD5aztzmazMQDot38NgT6E0= github.com/filecoin-project/chain-validation v0.0.6-0.20200331143132-15970e639ac2/go.mod h1:mXiAviXMZ2WVGmWNtjGr0JPMpNCNsPU774DawKZCzzM= -github.com/filecoin-project/go-address v0.0.0-20191219011437-af739c490b4f/go.mod h1:rCbpXPva2NKF9/J4X6sr7hbKBgQCxyFtRj7KOZqoIms= github.com/filecoin-project/go-address v0.0.0-20200107215422-da8eea2842b5/go.mod h1:SAOwJoakQ8EPjwNIsiakIQKsoKdkcbx8U3IapgCg9R0= github.com/filecoin-project/go-address v0.0.2-0.20200218010043-eb9bb40ed5be h1:TooKBwR/g8jG0hZ3lqe9S5sy2vTUcLOZLlz3M5wGn2E= github.com/filecoin-project/go-address v0.0.2-0.20200218010043-eb9bb40ed5be/go.mod h1:SAOwJoakQ8EPjwNIsiakIQKsoKdkcbx8U3IapgCg9R0= @@ -152,9 +151,6 @@ github.com/filecoin-project/go-data-transfer v0.0.0-20200408061858-82c58b423ca6/ github.com/filecoin-project/go-data-transfer v0.0.0-20200408061858-82c58b423ca6/go.mod h1:7b5/sG9Jj33aWqft8XsH8yIdxZBACqS5tx9hv4uj2Ck= github.com/filecoin-project/go-fil-commcid v0.0.0-20200208005934-2b8bd03caca5 h1:yvQJCW9mmi9zy+51xA01Ea2X7/dL7r8eKDPuGUjRmbo= github.com/filecoin-project/go-fil-commcid v0.0.0-20200208005934-2b8bd03caca5/go.mod h1:JbkIgFF/Z9BDlvrJO1FuKkaWsH673/UdFaiVS6uIHlA= -github.com/filecoin-project/go-fil-markets v0.0.0-20200114015428-74d100f305f8/go.mod h1:c8NTjvFVy1Ud02mmGDjOiMeawY2t6ALfrrdvAB01FQc= -github.com/filecoin-project/go-fil-markets v0.0.0-20200408062434-d92f329a6428 h1:y8P10ZwfmsKMVHrqcU1L8Bgj2q42O6LzaySI+XaogXE= -github.com/filecoin-project/go-fil-markets v0.0.0-20200408062434-d92f329a6428/go.mod h1:NmuTIqaivdyUzmvHOUCsTDGEtNjOZQwC1cgW3W/02m4= github.com/filecoin-project/go-padreader v0.0.0-20200210211231-548257017ca6 h1:92PET+sx1Hb4W/8CgFwGuxaKbttwY+UNspYZTvXY0vs= github.com/filecoin-project/go-padreader v0.0.0-20200210211231-548257017ca6/go.mod h1:0HgYnrkeSU4lu1p+LEOeDpFsNBssa0OGGriWdA4hvaE= github.com/filecoin-project/go-paramfetch v0.0.0-20200102181131-b20d579f2878/go.mod h1:40kI2Gv16mwcRsHptI3OAV4nlOEU7wVDc4RgMylNFjU= @@ -167,18 +163,11 @@ github.com/filecoin-project/go-statemachine v0.0.0-20200226041606-2074af6d51d9/g github.com/filecoin-project/go-statestore v0.1.0 h1:t56reH59843TwXHkMcwyuayStBIiWBRilQjQ+5IiwdQ= github.com/filecoin-project/go-statestore v0.1.0/go.mod h1:LFc9hD+fRxPqiHiaqUEZOinUJB4WARkRfNl10O7kTnI= github.com/filecoin-project/lotus v0.2.10/go.mod h1:om5PQA9ZT0lf16qI7Fz/ZGLn4LDCMqPC8ntZA9uncRE= -github.com/filecoin-project/sector-storage v0.0.0-20200406195014-a6d093838576 h1:MzBqbddYp/vdFOC3WNu3tSWfLFwHUP8Orcx2CxjRPyo= -github.com/filecoin-project/sector-storage v0.0.0-20200406195014-a6d093838576/go.mod h1:yT100eeKHGO9xU3rfkeM2/8NcBktxe2nBkDT4WmD1lA= github.com/filecoin-project/specs-actors v0.0.0-20200210130641-2d1fbd8672cf/go.mod h1:xtDZUB6pe4Pksa/bAJbJ693OilaC5Wbot9jMhLm3cZA= -github.com/filecoin-project/specs-actors v0.0.0-20200220011005-b2a2fbf40362/go.mod h1:xtDZUB6pe4Pksa/bAJbJ693OilaC5Wbot9jMhLm3cZA= -github.com/filecoin-project/specs-actors v0.0.0-20200226200336-94c9b92b2775/go.mod h1:0HAWYrvajFHDgRaKbF0rl+IybVLZL5z4gQ8koCMPhoU= -github.com/filecoin-project/specs-actors v0.0.0-20200302223606-0eaf97b10aaf/go.mod h1:0HAWYrvajFHDgRaKbF0rl+IybVLZL5z4gQ8koCMPhoU= github.com/filecoin-project/specs-actors v0.0.0-20200324235424-aef9b20a9fb1 h1:IL6A1yAamz0HtLQEdZS57hnRZHPL11VIrQxMZ1Nn5hI= github.com/filecoin-project/specs-actors v0.0.0-20200324235424-aef9b20a9fb1/go.mod h1:5WngRgTN5Eo4+0SjCBqLzEr2l6Mj45DrP2606gBhqI0= github.com/filecoin-project/specs-actors v0.0.0-20200409043918-e569f4a2f504 h1:mwuAaqxKThl70+7FkGdFKVLdwaQZQ8XmscKdhSBBtnc= github.com/filecoin-project/specs-actors v0.0.0-20200409043918-e569f4a2f504/go.mod h1:mdJraXq5vMy0+/FqVQIrnNlpQ/Em6zeu06G/ltQ0/lA= -github.com/filecoin-project/specs-storage v0.0.0-20200317225704-7420bc655c38 h1:ky+rfX3bG1TjOBLn14V674q+iwZpalyKzZxGRNzA11I= -github.com/filecoin-project/specs-storage v0.0.0-20200317225704-7420bc655c38/go.mod h1:dUmzHS7izOD6HW3/JpzFrjxnptxbsHXBlO8puK2UzBk= github.com/filecoin-project/storage-fsm v0.0.0-20200407163248-25993479b13f h1:WPA4Lj1PLBVKFe8nKs8UdJ7fj4luFKR62eRDpVNo9CU= github.com/filecoin-project/storage-fsm v0.0.0-20200407163248-25993479b13f/go.mod h1:t3dyEJiCkdQjo0h75mir3x5a0vSPHi9woQO7UkkZpFg= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= @@ -288,9 +277,7 @@ github.com/ipfs/go-blockservice v0.1.3-0.20190908200855-f22eea50656c/go.mod h1:t github.com/ipfs/go-blockservice v0.1.3 h1:9XgsPMwwWJSC9uVr2pMDsW2qFTBSkxpGMhmna8mIjPM= github.com/ipfs/go-blockservice v0.1.3/go.mod h1:OTZhFpkgY48kNzbgyvcexW9cHrpjBYIjSR0KoDOFOLU= github.com/ipfs/go-blockservice v0.1.3/go.mod h1:OTZhFpkgY48kNzbgyvcexW9cHrpjBYIjSR0KoDOFOLU= -github.com/ipfs/go-car v0.0.3-0.20191203022317-23b0a85fd1b1/go.mod h1:rmd887mJxQRDfndfDEY3Liyx8gQVyfFFRSHdsnDSAlk= github.com/ipfs/go-car v0.0.3-0.20200121013634-f188c0e24291/go.mod h1:AG6sBpd2PWMccpAG7XLFBBQ/4rfBEtzUNeO2GSMesYk= -github.com/ipfs/go-car v0.0.3-0.20200131220434-3f68f6ebd093/go.mod h1:rEkw0S1sHd5kHL3rUSGEhwNanYqTwwNhjtpp0rwjrr4= github.com/ipfs/go-car v0.0.3-0.20200304012825-b6769248bfef h1:Zn2PZSkX8Go+SZpQmjVKNrkcgbNuIxUC/3MOQRDTIVw= github.com/ipfs/go-car v0.0.3-0.20200304012825-b6769248bfef/go.mod h1:7BMxYRi5cbR/GJ1A8mYSHvMLXLkHgYdrJ6VlNGobd0o= github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= @@ -814,7 +801,6 @@ github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0 h1:c8R11WC8m7KNMkTv/0+Be8vvwo4I3/Ut9AC2FW8fX3U= github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= @@ -861,7 +847,6 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= -github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v1.20.0 h1:fDqGv3UG/4jbVl/QkFwEdddtEDjh/5Ov6X+0B/3bPaw= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= @@ -915,8 +900,6 @@ github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee/go.mod h1: github.com/whyrusleeping/yamux v1.1.5/go.mod h1:E8LnQQ8HKx5KD29HZFUwM1PxCOdPRzGwur1mcYhXcD8= github.com/x-cray/logrus-prefixed-formatter v0.5.2 h1:00txxvfBM9muc0jiLIEAkAcIMJzfthRT6usrui8uGmg= github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE= -github.com/xlab/c-for-go v0.0.0-20200116014644-76fdc4a01753/go.mod h1:IW51aYj15pzGQpgS/r4N84qI+g2fNAiTjYK5l8Gz1w0= -github.com/xlab/pkgconfig v0.0.0-20170226114623-cea12a0fd245/go.mod h1:C+diUUz7pxhNY6KAoLgrTYARGWnt82zWTylZlxT92vk= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.dedis.ch/fixbuf v1.0.3/go.mod h1:yzJMt34Wa5xD37V5RTdmp38cz3QhMagdGoem9anUalw= @@ -1151,8 +1134,3 @@ howett.net/plist v0.0.0-20181124034731-591f970eefbb h1:jhnBjNi9UFpfpl8YZhA9CrOqp howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= launchpad.net/gocheck v0.0.0-20140225173054-000000000087 h1:Izowp2XBH6Ya6rv+hqbceQyw/gSGoXfH/UPoTGduL54= launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= -modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= -modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= -modernc.org/mathutil v1.1.0/go.mod h1:Jip3gBlE32vJMsD4RJ5qzniC0pvRnCxrlwmKPZrrLXI= -modernc.org/strutil v1.1.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= -modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= diff --git a/miner/miner.go b/miner/miner.go index c77da1bd9..2d4131794 100644 --- a/miner/miner.go +++ b/miner/miner.go @@ -27,7 +27,7 @@ var log = logging.Logger("miner") type waitFunc func(ctx context.Context, baseTime uint64) error -func NewMiner(api api.FullNode, epp gen.ElectionPoStProver, beacon beacon.RandomBeacon) *Miner { +func NewMiner(api api.FullNode, epp gen.WinningPoStProver, beacon beacon.RandomBeacon) *Miner { arc, err := lru.NewARC(10000) if err != nil { panic(err) @@ -51,7 +51,7 @@ func NewMiner(api api.FullNode, epp gen.ElectionPoStProver, beacon beacon.Random type Miner struct { api api.FullNode - epp gen.ElectionPoStProver + epp gen.WinningPoStProver beacon beacon.RandomBeacon lk sync.Mutex diff --git a/miner/testminer.go b/miner/testminer.go index 7b7d6f476..67901ad53 100644 --- a/miner/testminer.go +++ b/miner/testminer.go @@ -10,8 +10,8 @@ import ( lru "github.com/hashicorp/golang-lru" ) -func NewTestMiner(nextCh <-chan struct{}, addr address.Address) func(api.FullNode, gen.ElectionPoStProver) *Miner { - return func(api api.FullNode, epp gen.ElectionPoStProver) *Miner { +func NewTestMiner(nextCh <-chan struct{}, addr address.Address) func(api.FullNode, gen.WinningPoStProver) *Miner { + return func(api api.FullNode, epp gen.WinningPoStProver) *Miner { arc, err := lru.NewARC(10000) if err != nil { panic(err) diff --git a/node/builder.go b/node/builder.go index 4b799fcf7..77ebb921a 100644 --- a/node/builder.go +++ b/node/builder.go @@ -298,7 +298,7 @@ func Online() Option { Override(HandleRetrievalKey, modules.HandleRetrieval), Override(GetParamsKey, modules.GetParams), Override(HandleDealsKey, modules.HandleDeals), - Override(new(gen.ElectionPoStProver), storage.NewElectionPoStProver), + Override(new(gen.WinningPoStProver), storage.NewElectionPoStProver), Override(new(*miner.Miner), modules.SetupBlockProducer), ), ) diff --git a/node/impl/client/client.go b/node/impl/client/client.go index c912d93fb..b59fcdf1e 100644 --- a/node/impl/client/client.go +++ b/node/impl/client/client.go @@ -85,7 +85,7 @@ func (a *API) ClientStartDeal(ctx context.Context, params *api.StartDealParams) return nil, xerrors.Errorf("failed checking miners sector size: %w", err) } - rt, _, err := ffiwrapper.ProofTypeFromSectorSize(ssize) + rt, _, err := ffiwrapper.SealProofTypeFromSectorSize(ssize) if err != nil { return nil, xerrors.Errorf("bad sector size: %w", err) } diff --git a/node/modules/storageminer.go b/node/modules/storageminer.go index c705268c0..5221e129f 100644 --- a/node/modules/storageminer.go +++ b/node/modules/storageminer.go @@ -96,14 +96,13 @@ func ProofsConfig(maddr dtypes.MinerAddress, fnapi lapi.FullNode) (*ffiwrapper.C return nil, err } - ppt, spt, err := ffiwrapper.ProofTypeFromSectorSize(ssize) + _, spt, err := ffiwrapper.SealProofTypeFromSectorSize(ssize) if err != nil { return nil, xerrors.Errorf("bad sector size: %w", err) } sb := &ffiwrapper.Config{ SealProofType: spt, - PoStProofType: ppt, } return sb, nil @@ -136,7 +135,7 @@ func StorageMiner(mctx helpers.MetricsCtx, lc fx.Lifecycle, api lapi.FullNode, h return nil, err } - ppt, _, err := ffiwrapper.ProofTypeFromSectorSize(sealer.SectorSize()) // TODO: this changes + ppt, _, err := ffiwrapper.SealProofTypeFromSectorSize(sealer.SectorSize()) // TODO: this changes if err != nil { return nil, xerrors.Errorf("bad sector size: %w", err) } @@ -256,7 +255,7 @@ func StagingGraphsync(mctx helpers.MetricsCtx, lc fx.Lifecycle, ibs dtypes.Stagi return gs } -func SetupBlockProducer(lc fx.Lifecycle, ds dtypes.MetadataDS, api lapi.FullNode, epp gen.ElectionPoStProver, beacon beacon.RandomBeacon) (*miner.Miner, error) { +func SetupBlockProducer(lc fx.Lifecycle, ds dtypes.MetadataDS, api lapi.FullNode, epp gen.WinningPoStProver, beacon beacon.RandomBeacon) (*miner.Miner, error) { minerAddr, err := minerAddrFromDS(ds) if err != nil { return nil, err @@ -320,7 +319,7 @@ func StorageProvider(ctx helpers.MetricsCtx, fapi lapi.FullNode, h host.Host, ds return nil, err } - rt, _, err := ffiwrapper.ProofTypeFromSectorSize(ssize) + rt, _, err := ffiwrapper.SealProofTypeFromSectorSize(ssize) if err != nil { return nil, err } diff --git a/storage/miner.go b/storage/miner.go index 6d0d6f569..61b2ecc16 100644 --- a/storage/miner.go +++ b/storage/miner.go @@ -125,22 +125,22 @@ func (m *Miner) runPreflightChecks(ctx context.Context) error { return nil } -type StorageEpp struct { - prover storage.Prover - miner abi.ActorID +type StorageWpp struct { + prover storage.Prover + miner abi.ActorID + winnRpt abi.RegisteredProof } -func NewElectionPoStProver(sb storage.Prover, miner dtypes.MinerID) *StorageEpp { - return &StorageEpp{sb, abi.ActorID(miner)} +func NewElectionPoStProver(sb storage.Prover, miner dtypes.MinerID, winnRpt abi.RegisteredProof) *StorageWpp { + return &StorageWpp{sb, abi.ActorID(miner), winnRpt} } -var _ gen.ElectionPoStProver = (*StorageEpp)(nil) +var _ gen.WinningPoStProver = (*StorageWpp)(nil) -func (epp *StorageEpp) GenerateCandidates(ctx context.Context, ssi []abi.SectorInfo, rand abi.PoStRandomness) ([]storage.PoStCandidateWithTicket, error) { +func (wpp *StorageWpp) GenerateCandidates(ctx context.Context, randomness abi.PoStRandomness, eligibleSectorCount uint64) ([]uint64, error) { start := time.Now() - var faults []abi.SectorNumber // TODO - cds, err := epp.prover.GenerateEPostCandidates(ctx, epp.miner, ssi, rand, faults) + cds, err := wpp.prover.GenerateWinningPoStSectorChallenge(ctx, wpp.winnRpt, wpp.miner, randomness, eligibleSectorCount) if err != nil { return nil, xerrors.Errorf("failed to generate candidates: %w", err) } @@ -148,19 +148,14 @@ func (epp *StorageEpp) GenerateCandidates(ctx context.Context, ssi []abi.SectorI return cds, nil } -func (epp *StorageEpp) ComputeProof(ctx context.Context, ssi []abi.SectorInfo, rand []byte, winners []storage.PoStCandidateWithTicket) ([]abi.PoStProof, error) { +func (wpp *StorageWpp) ComputeProof(ctx context.Context, ssi []abi.SectorInfo, rand []byte) ([]abi.PoStProof, error) { if build.InsecurePoStValidation { log.Warn("Generating fake EPost proof! You should only see this while running tests!") return []abi.PoStProof{{ProofBytes: []byte("valid proof")}}, nil } - owins := make([]abi.PoStCandidate, 0, len(winners)) - for _, w := range winners { - owins = append(owins, w.Candidate) - } - start := time.Now() - proof, err := epp.prover.ComputeElectionPoSt(ctx, epp.miner, ssi, rand, owins) + proof, err := wpp.prover.GenerateWinningPoSt(ctx, wpp.miner, ssi, rand) if err != nil { return nil, err } diff --git a/storage/mockstorage/preseal.go b/storage/mockstorage/preseal.go index 4cc6be178..1a2c01e8b 100644 --- a/storage/mockstorage/preseal.go +++ b/storage/mockstorage/preseal.go @@ -31,7 +31,7 @@ func PreSeal(ssize abi.SectorSize, maddr address.Address, sectors int) (*genesis Sectors: make([]*genesis.PreSeal, sectors), } - _, st, err := ffiwrapper.ProofTypeFromSectorSize(ssize) + _, st, err := ffiwrapper.SealProofTypeFromSectorSize(ssize) if err != nil { return nil, nil, err } diff --git a/storage/wdpost_run.go b/storage/wdpost_run.go index 8bf47d081..4aaecf33f 100644 --- a/storage/wdpost_run.go +++ b/storage/wdpost_run.go @@ -39,7 +39,7 @@ func (s *WindowPoStScheduler) doPost(ctx context.Context, deadline *Deadline, ts ctx, span := trace.StartSpan(ctx, "WindowPoStScheduler.doPost") defer span.End() - proof, err := s.runPost(ctx, deadline, ts) + proof, err := s.runPost(ctx, *deadline, ts) if err != nil { log.Errorf("runPost failed: %+v", err) s.failPost(deadline) @@ -144,7 +144,7 @@ func (s *WindowPoStScheduler) checkFaults(ctx context.Context, ssi []abi.SectorN return faultIDs, nil } -func (s *WindowPoStScheduler) runPost(ctx context.Context, deadline Deadline, ts *types.TipSet) (*abi.OnChainPoStVerifyInfo, error) { +func (s *WindowPoStScheduler) runPost(ctx context.Context, deadline Deadline, ts *types.TipSet) (*abi.OnChainWindowPoStVerifyInfo, error) { ctx, span := trace.StartSpan(ctx, "storage.runPost") defer span.End() @@ -199,38 +199,21 @@ func (s *WindowPoStScheduler) runPost(ctx context.Context, deadline Deadline, ts return nil, err } - postOut, err := s.prover.GenerateFallbackPoSt(ctx, abi.ActorID(mid), ssi, abi.PoStRandomness(rand), faults) + // TODO: Faults! + postOut, err := s.prover.GenerateWindowPoSt(ctx, abi.ActorID(mid), ssi, abi.PoStRandomness(rand)) if err != nil { return nil, xerrors.Errorf("running post failed: %w", err) } - if len(postOut.PoStInputs) == 0 { - return nil, xerrors.Errorf("received zero candidates back from generate fallback post") + if len(postOut) == 0 { + return nil, xerrors.Errorf("received proofs back from generate window post") } - // TODO: until we figure out how fallback post is really supposed to work, - // let's just pass a single candidate... - scandidates := postOut.PoStInputs[:1] - proof := postOut.Proof[:1] - elapsed := time.Since(tsStart) - log.Infow("submitting PoSt", "pLen", len(proof), "elapsed", elapsed) + log.Infow("submitting PoSt", "elapsed", elapsed) - candidates := make([]abi.PoStCandidate, len(scandidates)) - for i, sc := range scandidates { - part := make([]byte, 32) - copy(part, sc.Candidate.PartialTicket[:]) - candidates[i] = abi.PoStCandidate{ - RegisteredProof: s.proofType, - PartialTicket: part, - SectorID: sc.Candidate.SectorID, - ChallengeIndex: sc.Candidate.ChallengeIndex, - } - } - - return &abi.OnChainPoStVerifyInfo{ - Proofs: proof, - Candidates: candidates, + return &abi.OnChainWindowPoStVerifyInfo{ + Proofs: postOut, }, nil } @@ -252,7 +235,7 @@ func (s *WindowPoStScheduler) sortedSectorInfo(ctx context.Context, partitions [ return sbsi, nil } -func (s *WindowPoStScheduler) submitPost(ctx context.Context, proof *abi.OnChainPoStVerifyInfo) error { +func (s *WindowPoStScheduler) submitPost(ctx context.Context, proof *abi.OnChainWindowPoStVerifyInfo) error { ctx, span := trace.StartSpan(ctx, "storage.commitPost") defer span.End() diff --git a/storage/wdpost_sched.go b/storage/wdpost_sched.go index 252f0c80e..406c90c77 100644 --- a/storage/wdpost_sched.go +++ b/storage/wdpost_sched.go @@ -30,7 +30,7 @@ type WindowPoStScheduler struct { // if a post is in progress, this indicates for which ElectionPeriodStart activeDeadline *Deadline - abort context.CancelFunc + abort context.CancelFunc //failed abi.ChainEpoch // eps //failLk sync.Mutex @@ -40,14 +40,13 @@ func NewWindowedPoStScheduler(api storageMinerApi, sb storage.Prover, actor addr return &WindowPoStScheduler{api: api, prover: sb, actor: actor, worker: worker, proofType: rt} } -const ProvingDeadlineEpochs = (30*60) / build.BlockDelay +const ProvingDeadlineEpochs = (30 * 60) / build.BlockDelay const ProvingPeriodDeadlines = 48 const ProvingPeriodEpochs = ProvingDeadlineEpochs * ProvingDeadlineEpochs type Deadline struct { // ID start abi.ChainEpoch - } func (Deadline) Equals(other Deadline) bool { @@ -183,8 +182,6 @@ func (s *WindowPoStScheduler) update(ctx context.Context, new *types.TipSet) err } s.failLk.Unlock()*/ - - s.abortActivePoSt() if newDeadline != nil {