Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: sealing: Support nv22 DDO features in the sealing pipeline #11226

Merged
merged 70 commits into from
Jan 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
5cc5cc4
Initial work supporting DDO pieces in lotus-miner
magik6k Aug 29, 2023
2da5d90
sealing: Update pipeline input to operate on UniversalPiece
magik6k Aug 30, 2023
9b2412a
sealing: Update pipeline checks/sealing states to operate on Universa…
magik6k Aug 30, 2023
746ddac
sealing: Make pipeline build with UniversalPiece
magik6k Aug 30, 2023
5747bbd
move PieceDealInfo out of api
magik6k Aug 30, 2023
bbaa12d
make gen
magik6k Aug 30, 2023
40c2f1b
make sealing pipeline unit tests pass
magik6k Aug 30, 2023
12c474f
fix itest ensemble build
magik6k Aug 30, 2023
b5a8b43
don't panic in SectorsStatus with deals
magik6k Aug 30, 2023
62dc44d
stop linter from complaining about checkPieces
magik6k Aug 30, 2023
9cb0e74
fix sector import tests
magik6k Aug 30, 2023
fd310cc
mod tidy
magik6k Aug 30, 2023
fe27ce8
sealing: Add logic for (pre)committing DDO sectors
magik6k Aug 31, 2023
ce3294c
sealing: state-types with method defs
magik6k Aug 31, 2023
eeec223
DDO non-snap pipeline works(?), DDO Itests
magik6k Aug 31, 2023
fbdfa9f
DDO support in snapdeals pipeline
magik6k Aug 31, 2023
7f71e5f
make gen
magik6k Aug 31, 2023
3ccc28b
update actor bundles
magik6k Sep 1, 2023
cd22f3b
update the gst market fix
jennijuju Sep 4, 2023
5022c22
fix: chain: use PreCommitSectorsBatch2 when setting up genesis
arajasek Sep 5, 2023
016d0a1
some bug fixes
Sep 6, 2023
23cee2c
integration working changes
Sep 10, 2023
9cdb49e
update actor bundles
magik6k Sep 13, 2023
9fccf0c
Make TestOnboardRawPieceSnap pass
magik6k Sep 13, 2023
b5db71d
Appease the linter
magik6k Sep 13, 2023
a8c9487
Make deadlines test pass with v12 actors
magik6k Sep 13, 2023
7280d4a
Update go-state-types, abstract market DealState
magik6k Sep 13, 2023
2e6432c
make gen
magik6k Sep 13, 2023
b384a42
mod tidy, lint fixes
magik6k Sep 13, 2023
19f3839
Fix some more tests
magik6k Sep 13, 2023
8db6e73
Bump version in master
rjan90 Dec 4, 2023
c9f1325
Make gen
rjan90 Dec 5, 2023
271a011
Merge pull request #11475 from filecoin-project/phi-bump-master-v
magik6k Dec 5, 2023
538039f
fix sender
snadrus Dec 5, 2023
956ac8a
Merge pull request #11480 from filecoin-project/lpSenderBug
magik6k Dec 5, 2023
943c223
fix: lotus-provider: Fix winning PoSt
magik6k Dec 5, 2023
2d75cc5
Merge pull request #11482 from filecoin-project/fix/lp-winning
snadrus Dec 5, 2023
685934a
fix: sql Scan cannot write to an object
snadrus Dec 5, 2023
e0a8fe3
Merge pull request #11485 from filecoin-project/sqlGptHard
magik6k Dec 5, 2023
3d30ded
Actually show miner-addrs in info-log
rjan90 Dec 6, 2023
9dd9458
Merge pull request #11490 from filecoin-project/phi-fix-lp-info-log
snadrus Dec 6, 2023
b078e1c
[WIP] feat: Add nv22 skeleton
Nov 20, 2023
a0d54cd
update FFI
arajasek Dec 5, 2023
d7f418d
Merge remote-tracking branch 'origin/feat/nv22' into feat/ddo-integra…
magik6k Dec 7, 2023
1b0ece1
ddo is now nv22
magik6k Dec 8, 2023
a2b30ae
make gen
magik6k Dec 8, 2023
33b52a6
temp actor bundle with ddo
magik6k Dec 13, 2023
2826ec0
use working go-state-types
magik6k Dec 13, 2023
5e2f124
gst with v13 market migration
magik6k Jan 3, 2024
c0b1bde
update bundle, builtin.MethodsMiner.ProveCommitSectors2 -> 3
magik6k Jan 3, 2024
737bf0d
actually working v13 migration, v13 migration itest
magik6k Jan 3, 2024
9de0882
Address review
magik6k Jan 8, 2024
11d2bd4
sealing: Correct DDO snap pledge math
magik6k Jan 9, 2024
9048031
itests: Mixed ddo itest
magik6k Jan 9, 2024
ec964c6
pipeline: Fix sectorWeight
magik6k Jan 9, 2024
10ec311
sealing: convert market deals into PAMs in mixed sectors
magik6k Jan 9, 2024
54cdad4
sealing: make market to ddo conversion work
magik6k Jan 9, 2024
a78501e
fix lint
magik6k Jan 9, 2024
631d59e
Merge remote-tracking branch 'origin/feat/nv22' into feat/ddo-integra…
magik6k Jan 23, 2024
1e60878
update gst
magik6k Jan 23, 2024
0f75286
Update actors and GST to lastest integ branch
magik6k Jan 24, 2024
9062297
commit batcher: Update ProveCommitSectors3Params builder logic
magik6k Jan 24, 2024
76aa2e8
make gen
magik6k Jan 24, 2024
d8f47df
use builtin-actors master
magik6k Jan 24, 2024
eec6df0
ddo: address review
magik6k Jan 24, 2024
3389e26
itests: Add commd assertions to ddo tests
magik6k Jan 24, 2024
f7e6831
make gen
magik6k Jan 24, 2024
52361f7
gst with fixed types
magik6k Jan 25, 2024
aa13b5a
config knobs for RequireActivationSuccess
magik6k Jan 25, 2024
ebd3b65
storage: Drop obsolete flaky tasts
magik6k Jan 25, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -663,6 +663,12 @@ workflows:
- build
suite: itest-decode_params
target: "./itests/decode_params_test.go"
- test:
name: test-itest-direct_data_onboard
requires:
- build
suite: itest-direct_data_onboard
target: "./itests/direct_data_onboard_test.go"
- test:
name: test-itest-dup_mpool_messages
requires:
Expand Down
45 changes: 43 additions & 2 deletions api/api_full.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,17 @@ import (
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/go-state-types/big"
"github.com/filecoin-project/go-state-types/builtin/v8/paych"
"github.com/filecoin-project/go-state-types/builtin/v9/market"
verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg"
"github.com/filecoin-project/go-state-types/crypto"
"github.com/filecoin-project/go-state-types/dline"
abinetwork "github.com/filecoin-project/go-state-types/network"

apitypes "github.com/filecoin-project/lotus/api/types"
"github.com/filecoin-project/lotus/chain/actors/builtin"
"github.com/filecoin-project/lotus/chain/actors/builtin/market"
"github.com/filecoin-project/lotus/chain/actors/builtin/miner"
"github.com/filecoin-project/lotus/chain/actors/builtin/power"
"github.com/filecoin-project/lotus/chain/actors/builtin/verifreg"
"github.com/filecoin-project/lotus/chain/types"
"github.com/filecoin-project/lotus/chain/types/ethtypes"
"github.com/filecoin-project/lotus/node/modules/dtypes"
Expand Down Expand Up @@ -552,6 +553,8 @@ type FullNode interface {
// StateGetAllocationForPendingDeal returns the allocation for a given deal ID of a pending deal. Returns nil if
// pending allocation is not found.
StateGetAllocationForPendingDeal(ctx context.Context, dealId abi.DealID, tsk types.TipSetKey) (*verifregtypes.Allocation, error) //perm:read
// StateGetAllocationIdForPendingDeal is like StateGetAllocationForPendingDeal except it returns the allocation ID
StateGetAllocationIdForPendingDeal(ctx context.Context, dealId abi.DealID, tsk types.TipSetKey) (verifreg.AllocationId, error) //perm:read
// StateGetAllocation returns the allocation for a given address and allocation ID.
StateGetAllocation(ctx context.Context, clientAddr address.Address, allocationId verifregtypes.AllocationId, tsk types.TipSetKey) (*verifregtypes.Allocation, error) //perm:read
// StateGetAllocations returns the all the allocations for a given client.
Expand Down Expand Up @@ -1117,9 +1120,47 @@ type MarketBalance struct {
Locked big.Int
}

type MarketDealState struct {
SectorStartEpoch abi.ChainEpoch // -1 if not yet included in proven sector
LastUpdatedEpoch abi.ChainEpoch // -1 if deal state never updated
SlashEpoch abi.ChainEpoch // -1 if deal never slashed
}

func MakeDealState(mds market.DealState) MarketDealState {
return MarketDealState{
SectorStartEpoch: mds.SectorStartEpoch(),
LastUpdatedEpoch: mds.LastUpdatedEpoch(),
SlashEpoch: mds.SlashEpoch(),
}
}

type mstate struct {
s MarketDealState
}

func (m mstate) SectorStartEpoch() abi.ChainEpoch {
return m.s.SectorStartEpoch
}

func (m mstate) LastUpdatedEpoch() abi.ChainEpoch {
return m.s.LastUpdatedEpoch
}

func (m mstate) SlashEpoch() abi.ChainEpoch {
return m.s.SlashEpoch
}

func (m mstate) Equals(o market.DealState) bool {
return market.DealStatesEqual(m, o)
}

func (m MarketDealState) Iface() market.DealState {
return mstate{m}
}

type MarketDeal struct {
Proposal market.DealProposal
State market.DealState
State MarketDealState
}

type RetrievalOrder struct {
Expand Down
40 changes: 15 additions & 25 deletions api/api_storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
builtinactors "github.com/filecoin-project/lotus/chain/actors/builtin"
"github.com/filecoin-project/lotus/chain/actors/builtin/miner"
"github.com/filecoin-project/lotus/chain/types"
"github.com/filecoin-project/lotus/storage/pipeline/piece"
"github.com/filecoin-project/lotus/storage/pipeline/sealiface"
"github.com/filecoin-project/lotus/storage/sealer/fsutil"
"github.com/filecoin-project/lotus/storage/sealer/storiface"
Expand Down Expand Up @@ -75,7 +76,7 @@ type StorageMiner interface {
// Add piece to an open sector. If no sectors with enough space are open,
// either a new sector will be created, or this call will block until more
// sectors can be created.
SectorAddPieceToAny(ctx context.Context, size abi.UnpaddedPieceSize, r storiface.Data, d PieceDealInfo) (SectorOffset, error) //perm:admin
SectorAddPieceToAny(ctx context.Context, size abi.UnpaddedPieceSize, r storiface.Data, d piece.PieceDealInfo) (SectorOffset, error) //perm:admin

SectorsUnsealPiece(ctx context.Context, sector storiface.SectorRef, offset storiface.UnpaddedByteIndex, size abi.UnpaddedPieceSize, randomness abi.SealRandomness, commd *cid.Cid) error //perm:admin

Expand Down Expand Up @@ -353,10 +354,21 @@ type SectorLog struct {
}

type SectorPiece struct {
Piece abi.PieceInfo
DealInfo *PieceDealInfo // nil for pieces which do not appear in deals (e.g. filler pieces)
Piece abi.PieceInfo

// DealInfo is nil for pieces which do not appear in deals (e.g. filler pieces)
// NOTE: DDO pieces which aren't associated with a market deal and have no
// verified allocation will still have a non-nil DealInfo.
// nil DealInfo indicates that the piece is a filler, and has zero piece commitment.
DealInfo *piece.PieceDealInfo
}

// DEPRECATED: Use piece.PieceDealInfo instead
type PieceDealInfo = piece.PieceDealInfo

// DEPRECATED: Use piece.DealSchedule instead
type DealSchedule = piece.DealSchedule

type SectorInfo struct {
SectorID abi.SectorNumber
State SectorState
Expand Down Expand Up @@ -459,28 +471,6 @@ type SectorOffset struct {
Offset abi.PaddedPieceSize
}

// DealInfo is a tuple of deal identity and its schedule
type PieceDealInfo struct {
// "Old" builtin-market deal info
PublishCid *cid.Cid
DealID abi.DealID
DealProposal *market.DealProposal

// Common deal info
DealSchedule DealSchedule

// Best-effort deal asks
KeepUnsealed bool
}

// DealSchedule communicates the time interval of a storage deal. The deal must
// appear in a sealed (proven) sector no later than StartEpoch, otherwise it
// is invalid.
type DealSchedule struct {
StartEpoch abi.ChainEpoch
EndEpoch abi.ChainEpoch
}

// DagstoreShardInfo is the serialized form of dagstore.DagstoreShardInfo that
// we expose through JSON-RPC to avoid clients having to depend on the
// dagstore lib.
Expand Down
Loading