diff --git a/.circleci/config.yml b/.circleci/config.yml index e9e43c656..e91c41129 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -912,6 +912,8 @@ workflows: - build suite: itest-sector_pledge target: "./itests/sector_pledge_test.go" + get-params: true + - test: name: test-itest-sector_terminate requires: diff --git a/.circleci/template.yml b/.circleci/template.yml index 52086239a..71616f05f 100644 --- a/.circleci/template.yml +++ b/.circleci/template.yml @@ -545,7 +545,7 @@ workflows: [[- if or (eq $name "worker") (eq $name "deals_concurrent") (eq $name "wdpost_worker_config")]] executor: golang-2xl [[- end]] - [[- if (eq $name "wdpost")]] + [[- if or (eq $name "wdpost") (eq $name "sector_pledge")]] get-params: true [[end]] [[- end ]][[- end]] diff --git a/CHANGELOG.md b/CHANGELOG.md index e0811bc4b..e6d540adf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ - fix: Add time slicing to splitstore purging step during compaction to reduce lock congestion [filecoin-project/lotus#11269](https://github.com/filecoin-project/lotus/pull/11269) - feat: Added instructions on how to setup Prometheus/Grafana for monitoring a local Lotus node [filecoin-project/lotus#11276](https://github.com/filecoin-project/lotus/pull/11276) +## New features +- feat: Add move-partition command ([filecoin-project/lotus#11290](https://github.com/filecoin-project/lotus/pull/11290)) + # v1.23.3 / 2023-08-01 This feature release of Lotus includes numerous improvements and enhancements for node operators, ETH RPC-providers and storage providers. diff --git a/api/api_full.go b/api/api_full.go index 55dcc23df..f919bc13b 100644 --- a/api/api_full.go +++ b/api/api_full.go @@ -21,7 +21,6 @@ import ( "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" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" 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" @@ -29,7 +28,7 @@ import ( apitypes "github.com/filecoin-project/lotus/api/types" "github.com/filecoin-project/lotus/chain/actors/builtin" - lminer "github.com/filecoin-project/lotus/chain/actors/builtin/miner" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/actors/builtin/power" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types/ethtypes" @@ -499,9 +498,9 @@ type FullNode interface { // expiration epoch StateSectorGetInfo(context.Context, address.Address, abi.SectorNumber, types.TipSetKey) (*miner.SectorOnChainInfo, error) //perm:read // StateSectorExpiration returns epoch at which given sector will expire - StateSectorExpiration(context.Context, address.Address, abi.SectorNumber, types.TipSetKey) (*lminer.SectorExpiration, error) //perm:read + StateSectorExpiration(context.Context, address.Address, abi.SectorNumber, types.TipSetKey) (*miner.SectorExpiration, error) //perm:read // StateSectorPartition finds deadline/partition with the specified sector - StateSectorPartition(ctx context.Context, maddr address.Address, sectorNumber abi.SectorNumber, tok types.TipSetKey) (*lminer.SectorLocation, error) //perm:read + StateSectorPartition(ctx context.Context, maddr address.Address, sectorNumber abi.SectorNumber, tok types.TipSetKey) (*miner.SectorLocation, error) //perm:read // StateSearchMsg looks back up to limit epochs in the chain for a message, and returns its receipt and the tipset where it was executed // // NOTE: If a replacing message is found on chain, this method will return diff --git a/api/api_gateway.go b/api/api_gateway.go index 08199564d..27e725457 100644 --- a/api/api_gateway.go +++ b/api/api_gateway.go @@ -9,11 +9,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-jsonrpc" "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/go-state-types/dline" apitypes "github.com/filecoin-project/lotus/api/types" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types/ethtypes" "github.com/filecoin-project/lotus/node/modules/dtypes" diff --git a/api/api_storage.go b/api/api_storage.go index a9e632998..d5b3d5c1d 100644 --- a/api/api_storage.go +++ b/api/api_storage.go @@ -19,10 +19,10 @@ 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/v9/market" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" abinetwork "github.com/filecoin-project/go-state-types/network" 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/sealiface" "github.com/filecoin-project/lotus/storage/sealer/fsutil" @@ -461,10 +461,15 @@ type SectorOffset struct { // 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 } diff --git a/api/cbor_gen.go b/api/cbor_gen.go index 80392b212..fd2cb30b4 100644 --- a/api/cbor_gen.go +++ b/api/cbor_gen.go @@ -42,7 +42,7 @@ func (t *PaymentInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Channel"))); err != nil { return err } - if _, err := io.WriteString(w, string("Channel")); err != nil { + if _, err := cw.WriteString(string("Channel")); err != nil { return err } @@ -58,7 +58,7 @@ func (t *PaymentInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Vouchers"))); err != nil { return err } - if _, err := io.WriteString(w, string("Vouchers")); err != nil { + if _, err := cw.WriteString(string("Vouchers")); err != nil { return err } @@ -83,7 +83,7 @@ func (t *PaymentInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("WaitSentinel"))); err != nil { return err } - if _, err := io.WriteString(w, string("WaitSentinel")); err != nil { + if _, err := cw.WriteString(string("WaitSentinel")); err != nil { return err } @@ -163,13 +163,32 @@ func (t *PaymentInfo) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v paych.SignedVoucher - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + b, err := cr.ReadByte() + if err != nil { + return err + } + if b != cbg.CborNull[0] { + if err := cr.UnreadByte(); err != nil { + return err + } + t.Vouchers[i] = new(paych.SignedVoucher) + if err := t.Vouchers[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Vouchers[i] pointer: %w", err) + } + } + + } } - - t.Vouchers[i] = &v } // t.WaitSentinel (cid.Cid) (struct) @@ -214,7 +233,7 @@ func (t *SealedRef) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Size"))); err != nil { return err } - if _, err := io.WriteString(w, string("Size")); err != nil { + if _, err := cw.WriteString(string("Size")); err != nil { return err } @@ -230,7 +249,7 @@ func (t *SealedRef) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Offset"))); err != nil { return err } - if _, err := io.WriteString(w, string("Offset")); err != nil { + if _, err := cw.WriteString(string("Offset")); err != nil { return err } @@ -246,7 +265,7 @@ func (t *SealedRef) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("SectorID"))); err != nil { return err } - if _, err := io.WriteString(w, string("SectorID")); err != nil { + if _, err := cw.WriteString(string("SectorID")); err != nil { return err } @@ -369,7 +388,7 @@ func (t *SealedRefs) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Refs"))); err != nil { return err } - if _, err := io.WriteString(w, string("Refs")); err != nil { + if _, err := cw.WriteString(string("Refs")); err != nil { return err } @@ -447,13 +466,22 @@ func (t *SealedRefs) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v SealedRef - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + if err := t.Refs[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Refs[i]: %w", err) + } + + } } - - t.Refs[i] = v } default: @@ -484,7 +512,7 @@ func (t *SealTicket) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Epoch"))); err != nil { return err } - if _, err := io.WriteString(w, string("Epoch")); err != nil { + if _, err := cw.WriteString(string("Epoch")); err != nil { return err } @@ -506,7 +534,7 @@ func (t *SealTicket) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Value"))); err != nil { return err } - if _, err := io.WriteString(w, string("Value")); err != nil { + if _, err := cw.WriteString(string("Value")); err != nil { return err } @@ -639,7 +667,7 @@ func (t *SealSeed) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Epoch"))); err != nil { return err } - if _, err := io.WriteString(w, string("Epoch")); err != nil { + if _, err := cw.WriteString(string("Epoch")); err != nil { return err } @@ -661,7 +689,7 @@ func (t *SealSeed) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Value"))); err != nil { return err } - if _, err := io.WriteString(w, string("Value")); err != nil { + if _, err := cw.WriteString(string("Value")); err != nil { return err } @@ -794,7 +822,7 @@ func (t *PieceDealInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("DealID"))); err != nil { return err } - if _, err := io.WriteString(w, string("DealID")); err != nil { + if _, err := cw.WriteString(string("DealID")); err != nil { return err } @@ -810,7 +838,7 @@ func (t *PieceDealInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("PublishCid"))); err != nil { return err } - if _, err := io.WriteString(w, string("PublishCid")); err != nil { + if _, err := cw.WriteString(string("PublishCid")); err != nil { return err } @@ -832,7 +860,7 @@ func (t *PieceDealInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("DealProposal"))); err != nil { return err } - if _, err := io.WriteString(w, string("DealProposal")); err != nil { + if _, err := cw.WriteString(string("DealProposal")); err != nil { return err } @@ -848,7 +876,7 @@ func (t *PieceDealInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("DealSchedule"))); err != nil { return err } - if _, err := io.WriteString(w, string("DealSchedule")); err != nil { + if _, err := cw.WriteString(string("DealSchedule")); err != nil { return err } @@ -864,7 +892,7 @@ func (t *PieceDealInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("KeepUnsealed"))); err != nil { return err } - if _, err := io.WriteString(w, string("KeepUnsealed")); err != nil { + if _, err := cw.WriteString(string("KeepUnsealed")); err != nil { return err } @@ -1027,7 +1055,7 @@ func (t *SectorPiece) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Piece"))); err != nil { return err } - if _, err := io.WriteString(w, string("Piece")); err != nil { + if _, err := cw.WriteString(string("Piece")); err != nil { return err } @@ -1043,7 +1071,7 @@ func (t *SectorPiece) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("DealInfo"))); err != nil { return err } - if _, err := io.WriteString(w, string("DealInfo")); err != nil { + if _, err := cw.WriteString(string("DealInfo")); err != nil { return err } @@ -1150,7 +1178,7 @@ func (t *DealSchedule) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("EndEpoch"))); err != nil { return err } - if _, err := io.WriteString(w, string("EndEpoch")); err != nil { + if _, err := cw.WriteString(string("EndEpoch")); err != nil { return err } @@ -1172,7 +1200,7 @@ func (t *DealSchedule) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("StartEpoch"))); err != nil { return err } - if _, err := io.WriteString(w, string("StartEpoch")); err != nil { + if _, err := cw.WriteString(string("StartEpoch")); err != nil { return err } diff --git a/api/proxy_gen.go b/api/proxy_gen.go index 1082e8f4c..2d1333495 100644 --- a/api/proxy_gen.go +++ b/api/proxy_gen.go @@ -26,7 +26,6 @@ import ( "github.com/filecoin-project/go-jsonrpc/auth" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/builtin/v8/paych" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" 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" @@ -35,7 +34,7 @@ import ( apitypes "github.com/filecoin-project/lotus/api/types" builtinactors "github.com/filecoin-project/lotus/chain/actors/builtin" - lminer "github.com/filecoin-project/lotus/chain/actors/builtin/miner" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types/ethtypes" "github.com/filecoin-project/lotus/journal/alerting" @@ -564,11 +563,11 @@ type FullNodeMethods struct { StateSearchMsg func(p0 context.Context, p1 types.TipSetKey, p2 cid.Cid, p3 abi.ChainEpoch, p4 bool) (*MsgLookup, error) `perm:"read"` - StateSectorExpiration func(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*lminer.SectorExpiration, error) `perm:"read"` + StateSectorExpiration func(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorExpiration, error) `perm:"read"` StateSectorGetInfo func(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorOnChainInfo, error) `perm:"read"` - StateSectorPartition func(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*lminer.SectorLocation, error) `perm:"read"` + StateSectorPartition func(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorLocation, error) `perm:"read"` StateSectorPreCommitInfo func(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorPreCommitOnChainInfo, error) `perm:"read"` @@ -3829,14 +3828,14 @@ func (s *FullNodeStub) StateSearchMsg(p0 context.Context, p1 types.TipSetKey, p2 return nil, ErrNotSupported } -func (s *FullNodeStruct) StateSectorExpiration(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*lminer.SectorExpiration, error) { +func (s *FullNodeStruct) StateSectorExpiration(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorExpiration, error) { if s.Internal.StateSectorExpiration == nil { return nil, ErrNotSupported } return s.Internal.StateSectorExpiration(p0, p1, p2, p3) } -func (s *FullNodeStub) StateSectorExpiration(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*lminer.SectorExpiration, error) { +func (s *FullNodeStub) StateSectorExpiration(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorExpiration, error) { return nil, ErrNotSupported } @@ -3851,14 +3850,14 @@ func (s *FullNodeStub) StateSectorGetInfo(p0 context.Context, p1 address.Address return nil, ErrNotSupported } -func (s *FullNodeStruct) StateSectorPartition(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*lminer.SectorLocation, error) { +func (s *FullNodeStruct) StateSectorPartition(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorLocation, error) { if s.Internal.StateSectorPartition == nil { return nil, ErrNotSupported } return s.Internal.StateSectorPartition(p0, p1, p2, p3) } -func (s *FullNodeStub) StateSectorPartition(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*lminer.SectorLocation, error) { +func (s *FullNodeStub) StateSectorPartition(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorLocation, error) { return nil, ErrNotSupported } diff --git a/api/types.go b/api/types.go index fd7ce0187..93ed4083f 100644 --- a/api/types.go +++ b/api/types.go @@ -19,8 +19,8 @@ import ( datatransfer "github.com/filecoin-project/go-data-transfer/v2" "github.com/filecoin-project/go-fil-markets/retrievalmarket" "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/node/modules/dtypes" ) diff --git a/api/v0api/full.go b/api/v0api/full.go index 322f72449..d92d5a95c 100644 --- a/api/v0api/full.go +++ b/api/v0api/full.go @@ -15,7 +15,6 @@ import ( "github.com/filecoin-project/go-fil-markets/storagemarket" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/builtin/v8/paych" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" 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" @@ -23,7 +22,7 @@ import ( "github.com/filecoin-project/lotus/api" apitypes "github.com/filecoin-project/lotus/api/types" - lminer "github.com/filecoin-project/lotus/chain/actors/builtin/miner" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/types" marketevents "github.com/filecoin-project/lotus/markets/loggers" "github.com/filecoin-project/lotus/node/modules/dtypes" @@ -450,9 +449,9 @@ type FullNode interface { // expiration epoch StateSectorGetInfo(context.Context, address.Address, abi.SectorNumber, types.TipSetKey) (*miner.SectorOnChainInfo, error) //perm:read // StateSectorExpiration returns epoch at which given sector will expire - StateSectorExpiration(context.Context, address.Address, abi.SectorNumber, types.TipSetKey) (*lminer.SectorExpiration, error) //perm:read + StateSectorExpiration(context.Context, address.Address, abi.SectorNumber, types.TipSetKey) (*miner.SectorExpiration, error) //perm:read // StateSectorPartition finds deadline/partition with the specified sector - StateSectorPartition(ctx context.Context, maddr address.Address, sectorNumber abi.SectorNumber, tok types.TipSetKey) (*lminer.SectorLocation, error) //perm:read + StateSectorPartition(ctx context.Context, maddr address.Address, sectorNumber abi.SectorNumber, tok types.TipSetKey) (*miner.SectorLocation, error) //perm:read // StateSearchMsg searches for a message in the chain, and returns its receipt and the tipset where it was executed // // NOTE: If a replacing message is found on chain, this method will return diff --git a/api/v0api/gateway.go b/api/v0api/gateway.go index df9153b8d..1a7f7d3ac 100644 --- a/api/v0api/gateway.go +++ b/api/v0api/gateway.go @@ -8,12 +8,12 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/go-state-types/dline" abinetwork "github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/lotus/api" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/node/modules/dtypes" ) diff --git a/api/v0api/proxy_gen.go b/api/v0api/proxy_gen.go index 22faa3acc..bd37f6429 100644 --- a/api/v0api/proxy_gen.go +++ b/api/v0api/proxy_gen.go @@ -17,7 +17,6 @@ import ( "github.com/filecoin-project/go-fil-markets/storagemarket" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/builtin/v8/paych" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" 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" @@ -25,7 +24,7 @@ import ( "github.com/filecoin-project/lotus/api" apitypes "github.com/filecoin-project/lotus/api/types" - lminer "github.com/filecoin-project/lotus/chain/actors/builtin/miner" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/types" marketevents "github.com/filecoin-project/lotus/markets/loggers" "github.com/filecoin-project/lotus/node/modules/dtypes" @@ -355,11 +354,11 @@ type FullNodeMethods struct { StateSearchMsgLimited func(p0 context.Context, p1 cid.Cid, p2 abi.ChainEpoch) (*api.MsgLookup, error) `perm:"read"` - StateSectorExpiration func(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*lminer.SectorExpiration, error) `perm:"read"` + StateSectorExpiration func(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorExpiration, error) `perm:"read"` StateSectorGetInfo func(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorOnChainInfo, error) `perm:"read"` - StateSectorPartition func(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*lminer.SectorLocation, error) `perm:"read"` + StateSectorPartition func(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorLocation, error) `perm:"read"` StateSectorPreCommitInfo func(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (miner.SectorPreCommitOnChainInfo, error) `perm:"read"` @@ -2245,14 +2244,14 @@ func (s *FullNodeStub) StateSearchMsgLimited(p0 context.Context, p1 cid.Cid, p2 return nil, ErrNotSupported } -func (s *FullNodeStruct) StateSectorExpiration(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*lminer.SectorExpiration, error) { +func (s *FullNodeStruct) StateSectorExpiration(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorExpiration, error) { if s.Internal.StateSectorExpiration == nil { return nil, ErrNotSupported } return s.Internal.StateSectorExpiration(p0, p1, p2, p3) } -func (s *FullNodeStub) StateSectorExpiration(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*lminer.SectorExpiration, error) { +func (s *FullNodeStub) StateSectorExpiration(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorExpiration, error) { return nil, ErrNotSupported } @@ -2267,14 +2266,14 @@ func (s *FullNodeStub) StateSectorGetInfo(p0 context.Context, p1 address.Address return nil, ErrNotSupported } -func (s *FullNodeStruct) StateSectorPartition(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*lminer.SectorLocation, error) { +func (s *FullNodeStruct) StateSectorPartition(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorLocation, error) { if s.Internal.StateSectorPartition == nil { return nil, ErrNotSupported } return s.Internal.StateSectorPartition(p0, p1, p2, p3) } -func (s *FullNodeStub) StateSectorPartition(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*lminer.SectorLocation, error) { +func (s *FullNodeStub) StateSectorPartition(p0 context.Context, p1 address.Address, p2 abi.SectorNumber, p3 types.TipSetKey) (*miner.SectorLocation, error) { return nil, ErrNotSupported } diff --git a/api/v0api/v1_wrapper.go b/api/v0api/v1_wrapper.go index f58b0420f..265674e71 100644 --- a/api/v0api/v1_wrapper.go +++ b/api/v0api/v1_wrapper.go @@ -12,11 +12,11 @@ import ( "github.com/filecoin-project/go-fil-markets/storagemarket" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/crypto" "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/api/v1api" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/types" marketevents "github.com/filecoin-project/lotus/markets/loggers" ) diff --git a/blockstore/cbor_gen.go b/blockstore/cbor_gen.go index b8ebdb474..221f13676 100644 --- a/blockstore/cbor_gen.go +++ b/blockstore/cbor_gen.go @@ -52,9 +52,11 @@ func (t *NetRpcReq) MarshalCBOR(w io.Writer) error { return err } for _, v := range t.Cid { - if err := cbg.WriteCid(w, v); err != nil { - return xerrors.Errorf("failed writing cid field t.Cid: %w", err) + + if err := cbg.WriteCid(cw, v); err != nil { + return xerrors.Errorf("failed to write cid field v: %w", err) } + } // t.Data ([][]uint8) (slice) @@ -151,12 +153,25 @@ func (t *NetRpcReq) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - c, err := cbg.ReadCid(cr) - if err != nil { - return xerrors.Errorf("reading cid field t.Cid failed: %w", err) + { + + c, err := cbg.ReadCid(cr) + if err != nil { + return xerrors.Errorf("failed to read cid field t.Cid[i]: %w", err) + } + + t.Cid[i] = c + + } } - t.Cid[i] = c } // t.Data ([][]uint8) (slice) @@ -183,6 +198,9 @@ func (t *NetRpcReq) UnmarshalCBOR(r io.Reader) (err error) { var maj byte var extra uint64 var err error + _ = maj + _ = extra + _ = err maj, extra, err = cr.ReadHeader() if err != nil { @@ -350,7 +368,7 @@ func (t *NetRpcErr) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Msg))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Msg)); err != nil { + if _, err := cw.WriteString(string(t.Msg)); err != nil { return err } diff --git a/build/actors/v12.tar.zst b/build/actors/v12.tar.zst index def521bd7..38cb85160 100644 Binary files a/build/actors/v12.tar.zst and b/build/actors/v12.tar.zst differ diff --git a/build/bootstrap/butterflynet.pi b/build/bootstrap/butterflynet.pi index c7e9b2e92..3f5033361 100644 --- a/build/bootstrap/butterflynet.pi +++ b/build/bootstrap/butterflynet.pi @@ -1,2 +1,2 @@ -/dns4/bootstrap-0.butterfly.fildev.network/tcp/1347/p2p/12D3KooWD5mtdmjHQ1Puj9Md7SEfoa7kWMpwqUhAKsyYsBP56LQC -/dns4/bootstrap-1.butterfly.fildev.network/tcp/1347/p2p/12D3KooWEoYPkm6o87ES6AppFY7d7WHJUQg7XVPRAyQZjEU31efQ +/dns4/bootstrap-0.butterfly.fildev.network/tcp/1347/p2p/12D3KooWRaoPgwJuZdPSN4A2iTeh8xzkZGCEBxan9vMkidHisUgn +/dns4/bootstrap-1.butterfly.fildev.network/tcp/1347/p2p/12D3KooWMjLCZeEf3VzSWvQYuhe9VzCcrN6RENX9FgmQqiJfQDWs diff --git a/build/builtin_actors_gen.go b/build/builtin_actors_gen.go index 3eed5bcf7..0e1f4fe20 100644 --- a/build/builtin_actors_gen.go +++ b/build/builtin_actors_gen.go @@ -97,25 +97,25 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet }, { Network: "butterflynet", Version: 12, - BundleGitTag: "v11.0.0", - ManifestCid: MustParseCid("bafy2bzaceaiy4dsxxus5xp5n5i4tjzkb7sc54mjz7qnk2efhgmsrobjesxnza"), + BundleGitTag: "v12.0.0-rc.1", + ManifestCid: MustParseCid("bafy2bzaceb7s3k6zyuubqil7s2rwdcdyslqqx2fn2cj536yh3hexlyi4syyk6"), Actors: map[string]cid.Cid{ - "account": MustParseCid("bafk2bzacecfdqb7p3jakhaa3cqnzpt7hxmhghrbxvafsylqno3febx55fnidw"), - "cron": MustParseCid("bafk2bzaceavmqu2qihgbe3xdaotgypuzvdpiifnm7ll6rolks2u4lac6voosk"), - "datacap": MustParseCid("bafk2bzacealtvh65rzb34fmyzw4m2np2htnio4w3pn4alzqovwxkdbf23dvpo"), - "eam": MustParseCid("bafk2bzacedko6hcjmwpuwgma5pb4gr2wgyvregk3nqqjxit7dv4es6vh5cjoc"), - "ethaccount": MustParseCid("bafk2bzacedhcei2xnr34poxr4xziypm2obqlibke4cs2cjfnr3sz6nf6h7fyy"), - "evm": MustParseCid("bafk2bzacebn5lwxboiikhz67ajwa34v2lc4qevnhpwdnipbmrnutkvrrqkb46"), - "init": MustParseCid("bafk2bzacea6vw4esh5tg7mprv5jkbx5xcyilcy4vvf64lss32mjyuvv2mh5ng"), - "multisig": MustParseCid("bafk2bzacedq2afnwcfipay5twv5mgzjoio5bbjvyo4yqchdwqcr7wrareyx54"), - "paymentchannel": MustParseCid("bafk2bzacebbsvr7i7mqmaadyjibe5wxnv7bwvvec2wlgknuwda6ep45amnd5w"), + "account": MustParseCid("bafk2bzacebp7anjdtg2sohyt6lromx4xs7nujtwdfcsffnptphaayabx7ysxs"), + "cron": MustParseCid("bafk2bzacecu2y3awtemmglpkroiglulc2fj3gpdn6eazdqr6avcautiaighrg"), + "datacap": MustParseCid("bafk2bzacebbh5aynu3v3fluqqrcdsphleodoig42xkid2ccwdnff3avhbdop4"), + "eam": MustParseCid("bafk2bzacebzwt4v4hqoltiblhliwrnttxpr2dggbu3wsrvq4pwzisp7idu5w4"), + "ethaccount": MustParseCid("bafk2bzaceb5f6vgjkl7ic6ry5sjspqm2iij6qlcdovwi3haodb7wn37pgebii"), + "evm": MustParseCid("bafk2bzacebygt6zh6p52rkg2ugehm4k5yuu6f56i2pu6ywrmjez4n4zsje4p4"), + "init": MustParseCid("bafk2bzaceagyf3pwsthod7klfi25ow2zf2i5isfrrgr5ua3lvkgfojalrdbhw"), + "multisig": MustParseCid("bafk2bzacedgfo5mw2zqjwi37lah27sfxj4cw2abylgtxf3ucep4dyhgnppmqe"), + "paymentchannel": MustParseCid("bafk2bzacebm37tgu52cgzmiln6iip6etfmq73fd3qqz2j5gxlhtvachs7kw4c"), "placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), - "reward": MustParseCid("bafk2bzaceafuh6idvaqqkj353vs4qdl42tcmvnymewu5zf4rq2nruxdyunses"), - "storagemarket": MustParseCid("bafk2bzaceb7bx4honi3byjllpdk6fea32dpu3vqvil3okodybdk5m3erlnwjw"), - "storageminer": MustParseCid("bafk2bzacebxjhofdr3sb2uhy2ky2vcijh4nhmwkh5xijtbgk6dzkknji2kn7a"), - "storagepower": MustParseCid("bafk2bzaceabskmmkas6njbowols7t4ib3bipa5abpomk3jtgfwojtzd7mjzfm"), - "system": MustParseCid("bafk2bzacedtuh7cht3fud7fb4avl4g2zbz57lc4ohiaufpaex6dkmdokn5rgo"), - "verifiedregistry": MustParseCid("bafk2bzaceb37hxeuoo5rgf6ansrdl2ykm5v5zp6kireubn4orcopr67jbxv6k"), + "reward": MustParseCid("bafk2bzacedebvitdsztwebi44t5es4ls3p3hor252igzawr3s6uznmbvzh2ou"), + "storagemarket": MustParseCid("bafk2bzaceb2tdeqtt2eqpzeb3gezuchb7g7uzbd52bgvcdt6bg3ckq7oisb74"), + "storageminer": MustParseCid("bafk2bzaceaaztuglvw6pw5xohwfekbw47iyugbyftxrp6hwygsaiu6rebtcty"), + "storagepower": MustParseCid("bafk2bzacedxvlj5xmhytdjrjqyonz37duvxb2ioyzk75c27yypkqalxuh3xh6"), + "system": MustParseCid("bafk2bzacec3vwj2chzaram3iqupkbfiein5h2l5qiltlrngbju2vg5umelclm"), + "verifiedregistry": MustParseCid("bafk2bzacedv2irkql7nil3w5v3ohqq3e54w62pxeoppjmaktzokolaaoh5ksu"), }, }, { Network: "calibrationnet", @@ -203,25 +203,25 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet }, { Network: "calibrationnet", Version: 12, - BundleGitTag: "v11.0.0", - ManifestCid: MustParseCid("bafy2bzacec5fl7crmxyw234qsmijvffhssgqwuphyaejulbryhel2pxxrxgey"), + BundleGitTag: "v12.0.0-rc.1", + ManifestCid: MustParseCid("bafy2bzacedrunxfqta5skb7q7x32lnp4efz2oq7fn226ffm7fu5iqs62jkmvs"), Actors: map[string]cid.Cid{ - "account": MustParseCid("bafk2bzacecrjovyiuh4jryepy4pxddzqjyrg2hfinxzbv37bpzlci54r5mkr6"), - "cron": MustParseCid("bafk2bzacedy76woxmtalmsuaji4kog6wmq4h2kcgcyv5wpxbdz7f2ls2tjjmw"), - "datacap": MustParseCid("bafk2bzacec2inqddxpfm3rufwqr752d2ok3ve4cxfhmloyosy6rj2krtkpwus"), - "eam": MustParseCid("bafk2bzacea6sxno66egkqz5rqjq4e22obkeblxl7e3funjifljuinmrc2ztzg"), - "ethaccount": MustParseCid("bafk2bzacecdsvs7xm3ncm66lsjqh65uzhr3rmu3dlux7qzdgpg737r4kslhxm"), - "evm": MustParseCid("bafk2bzaceaz3b66m2znt27clmbp2zi5jsobw6g2x6fiezynyijgtkehgqhq3a"), - "init": MustParseCid("bafk2bzacecdrw7uedx456hnowtyyhm63mkekdlkh3vmlhvqlya6pn6pokiq5y"), - "multisig": MustParseCid("bafk2bzaceaxyxvmng5cel5huzy5nezscm34s7wuzn2fhndexurs3xjtp7xg5i"), - "paymentchannel": MustParseCid("bafk2bzacedrmyc4c6u6ipdo7hwaagx3urr47r4pw6lwv257wqbj6roumwfvky"), + "account": MustParseCid("bafk2bzacechwwxdqvggkdylm37zldjsra2ivkdzwp7fee56bzxbzs544wv6u6"), + "cron": MustParseCid("bafk2bzacec4gdxxkqwxqqodsv6ug5dmdbqdfqwyqfek3yhxc2wweh5psxaeq6"), + "datacap": MustParseCid("bafk2bzacecq5ppfskxgv3iea3jarsix6jdduuhwsn4fbvngtbmzelzmlygorm"), + "eam": MustParseCid("bafk2bzacecb6cnwftvavpph4p34zs4psuy5xvbrhf7vszkva4npw6mw3c42xe"), + "ethaccount": MustParseCid("bafk2bzaceajmc3y3sedsqymfla3dzzqzmbu5kmr2iskm26ga2u34ll5fpztfw"), + "evm": MustParseCid("bafk2bzaced4sozr7m6rzcgpobzeiupghthfw6afumysu3oz6bxxirv74uo3vw"), + "init": MustParseCid("bafk2bzaceaewh7b6zl2egclm7fqzx2lsqr57i75lb6cj43ndoa4mal3k5ld3m"), + "multisig": MustParseCid("bafk2bzacednkwcpw5yzxjceoaliajgupzj6iqxe7ks2ll3unspbprbo5f2now"), + "paymentchannel": MustParseCid("bafk2bzacebaxhk4itfiuvbftg7kz5zxugqnvdgerobitjq4vl6q4orcwk6wqg"), "placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), - "reward": MustParseCid("bafk2bzacecq3bhrkatwash5zhy2275ksaj3criqb6rox5e3hsyvz7mrl2jh3o"), - "storagemarket": MustParseCid("bafk2bzacedswrpkbh7jmttskllbblym7oj2ynxp7bxtj2fpbxsx55mraog6sc"), - "storageminer": MustParseCid("bafk2bzacecki6ckm7gf4uje3fxvw6x5f77ukaqctvcsfha6oaecvl67veh3sg"), - "storagepower": MustParseCid("bafk2bzacecjcvxwibkgpufeah33gfd2jzlqjx5rn2pguvvch2squon23u6kne"), - "system": MustParseCid("bafk2bzaceavvlgqbcwhy3c24aa24z23wcbzggmb66gj7x5if7o3fbvddaocc4"), - "verifiedregistry": MustParseCid("bafk2bzacedmxdtnpy2mc63b6bi2h4vp4dfc6hxjckqnwaxyijgkpmangygcmk"), + "reward": MustParseCid("bafk2bzacedra77pcglf7vdca2itcaa4vd6xrxynxmgfgdjdxqxfwqyhtoxehy"), + "storagemarket": MustParseCid("bafk2bzacea7g46y7xxu2zjq2h75x6mmx3utz2uxnlvnwi6tzpsvulna3bmiva"), + "storageminer": MustParseCid("bafk2bzacecnh2ouohmonvebq7uughh4h3ppmg4cjsk74dzxlbbtlcij4xbzxq"), + "storagepower": MustParseCid("bafk2bzacedd3ka44k7d46ckbinjhv3diyuu2epgbyvhqqyjkc64qlrg3wlgzi"), + "system": MustParseCid("bafk2bzacecioupndtcnyw6iq2hbrxag3aufvczlv5nobnfbkbywqzcyfaa376"), + "verifiedregistry": MustParseCid("bafk2bzaceavldupmf7bimeeacs67z5xdfdlfca6p7sn6bev3mt5ggepfqvhqo"), }, }, { Network: "caterpillarnet", @@ -318,25 +318,25 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet }, { Network: "caterpillarnet", Version: 12, - BundleGitTag: "v11.0.0", - ManifestCid: MustParseCid("bafy2bzacebexc2jgzwr5ngn6jdnkwdqwwmcapajuypdgvopoe6bnvp4yxm4o2"), + BundleGitTag: "v12.0.0-rc.1", + ManifestCid: MustParseCid("bafy2bzacedrimdbavexkdqldjwczbhlx4k5byshl363z62rrt6vkt7mbvnulu"), Actors: map[string]cid.Cid{ - "account": MustParseCid("bafk2bzaceanjiq5m3feytue5m7hhxfkob2ofg2greoct5tr77reuhrjglo66g"), - "cron": MustParseCid("bafk2bzaceavgd5qj6n744tukhdrvxejygzs3jnlizmcvjsdnxkgiimrd5jrys"), - "datacap": MustParseCid("bafk2bzacedmdywxwrzop2gmf4ys5stydlmvbe35j3nyr2efmf273briksuvse"), - "eam": MustParseCid("bafk2bzacec7qo7s72li7tqysllstlrxxm2dhfqv2w32pytel2e775cki4ozqm"), - "ethaccount": MustParseCid("bafk2bzaceaygtkliu26ubb7ivljrvaeesp5sbjlis5okzl35ishxioa2tlx4w"), - "evm": MustParseCid("bafk2bzacebo7iqzy2ophz4f3civzwlltec7q5fut7kmtfckr6vy33r6ic5eqe"), - "init": MustParseCid("bafk2bzaceb7uzzlsquqwrqhb2vpbvk3jgr4wp5i3smu2splnag2v5sppdehns"), - "multisig": MustParseCid("bafk2bzacebwibfqrytobl4pjtny244zkmfoomazbap3r5gddjryckx5js4csi"), - "paymentchannel": MustParseCid("bafk2bzacecuaa5esuxpouigxoamyl5gire2qqqhvyhewsig2x2j73f6ksh7go"), + "account": MustParseCid("bafk2bzacecereuhejfvodut5357cai4lmhsyr7uenhcxvmw6jpmhe6auuly32"), + "cron": MustParseCid("bafk2bzacebo2whgy6jla4jsf5j4ovlqm2e4eepedlpw5wadas33yxmunis4b4"), + "datacap": MustParseCid("bafk2bzacecjjncl7ftgj4mrzxxfxld74pt3pyfrxmcru7a5auab25b3aoixm6"), + "eam": MustParseCid("bafk2bzacebyvawfzoxy7k4yxrj5nd3amg4rcopmnslxdwpzumfhsz5ezk4sws"), + "ethaccount": MustParseCid("bafk2bzaceaccs76uc6osvb2iy6w2pumqei3wdjtxq7rgtsotobncmqoi7kzcg"), + "evm": MustParseCid("bafk2bzaceawxgjzjkhbqwj36wzxeqbtngdh6y2tp4wsi27k7tbg2ujhw5rsjg"), + "init": MustParseCid("bafk2bzacedws5od7o6ktqyo2hudmipxuubsv2lwxz45xxjn2zguze72t6zoik"), + "multisig": MustParseCid("bafk2bzacecb4wk6n4lrmml3tssn6cszd4dc7ttux3kzjatrawhg4o6ovrng6w"), + "paymentchannel": MustParseCid("bafk2bzacea3eb556mkjvosfbqfbyfg6dgu52rfnuctwzjy3b2bh2azredxzbo"), "placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), - "reward": MustParseCid("bafk2bzaced4xxqhv63njf2ibvsqshlwikafctxev7aho5lgsfxyt2javjwvtw"), - "storagemarket": MustParseCid("bafk2bzacedwtx3xokqmbgkgkoqkdt6lam4ymdjb3eznlbtec5wcrtx74l2bpc"), - "storageminer": MustParseCid("bafk2bzacebbbe4sdo3xxkez7x7lkl6j46w34vx7eg7xswmdzhp7moa44p3wjg"), - "storagepower": MustParseCid("bafk2bzacedfgz6n24tjsor4pcayomim2f5f3a3fgyatmjgwxxeejna7okndda"), - "system": MustParseCid("bafk2bzacebxfzeom3d7ahcz2n2nlwp7ncv767bdbbrisugks4l6v7lcu2tmyg"), - "verifiedregistry": MustParseCid("bafk2bzacedaws3or3twy45ltcxucgvqijsje4x675ph6vup2w35smlfneamno"), + "reward": MustParseCid("bafk2bzaceb2x5zgkrho373l3ippp6krs7brugssg6hj2tib22xmqjzdm2o25a"), + "storagemarket": MustParseCid("bafk2bzaced5j6drzmsebpxbf2dtptrc5tyidlbftdljqxavxqb57s2qpbvdek"), + "storageminer": MustParseCid("bafk2bzacedozwxc3c6nqqajafs3hsjviyijhthysd5two5ptm5fcdbwh224ag"), + "storagepower": MustParseCid("bafk2bzaceagp6ilkltsltwii66nz6a4zen4qtfk7rdkvdv3gzq7fbv4ivox3u"), + "system": MustParseCid("bafk2bzacedye5j5uxox7knb6zlnhseaadztyav76mjbyk5qslhhbpiy5cdtt2"), + "verifiedregistry": MustParseCid("bafk2bzacecduww5pirr7dvaijjijw4gf6ygf7vipgxh4scvv6vseo46gueb46"), }, }, { Network: "devnet", @@ -424,25 +424,25 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet }, { Network: "devnet", Version: 12, - BundleGitTag: "v11.0.0", - ManifestCid: MustParseCid("bafy2bzaceay35go4xbjb45km6o46e5bib3bi46panhovcbedrynzwmm3drr4i"), + BundleGitTag: "v12.0.0-rc.1", + ManifestCid: MustParseCid("bafy2bzacebk6yiirh4ennphzyka7b6g6jzn3lt4lr5ht7rjwulnrcthjihapo"), Actors: map[string]cid.Cid{ - "account": MustParseCid("bafk2bzacecf2pprkbdlpm4e2xz3ufunxtgrgyh2ie3stuqiyhibsvdze7kvri"), - "cron": MustParseCid("bafk2bzaceasr5d2skowvzv5mzsyak6waqrgc46ewj6rzbapkfi5woom6n6bwa"), - "datacap": MustParseCid("bafk2bzaceaqd77gptubupda7rp7daxkxbkzwc253dxhiyoezxvj2tljmkgpny"), - "eam": MustParseCid("bafk2bzacedve6p4ye6zxydjbfs4ode5r2equ7rqzpyltujsq2lu6wyxnijfx4"), - "ethaccount": MustParseCid("bafk2bzacea25xfsxwew3h2crer6jlb4c5vwu2gtch2jh73ocuxjhupenyrugy"), - "evm": MustParseCid("bafk2bzacece5hivtkmi757lyfahgti7xuqgofodb2u65pxgf6oizfwiiwlcsi"), - "init": MustParseCid("bafk2bzacecxnr5y7qifzdqqiwfbjxv2yr7lbkcyu3e2mf5zjdncteupxdlquu"), - "multisig": MustParseCid("bafk2bzaceayap4k4u3lbysaeeixct5fvhmafy3fa5eagvdpk3i4a7ubfdpobe"), - "paymentchannel": MustParseCid("bafk2bzaceafgrz5wepbein35gie7rnsu7zttxvgllgdneuefmmy4j5izydtza"), + "account": MustParseCid("bafk2bzacedki4apynvdxxuoigmqkgaktgy2erjftoxqxqaklnelgveyaqknfu"), + "cron": MustParseCid("bafk2bzacebjpczf7qtcisy3zdp3sqoohxe75tgupmdo5dr26vh7orzrsjn3b2"), + "datacap": MustParseCid("bafk2bzacecz4esatk7gizdc7yvl6soigkelhix7izbc75q6eqtb7gjzavpcqc"), + "eam": MustParseCid("bafk2bzacebhtpd5mxfyovi7fgsfj62nhtmh4t5guob4sgq73ymgsk7473ltig"), + "ethaccount": MustParseCid("bafk2bzacebvdbbw5ag4qnxd7cif5mtakrw4wzv63diwl7awta5plaidfay4vg"), + "evm": MustParseCid("bafk2bzacebb7vrhprnshn52bzfmypjdpcrcfecapk232a6gapk3kghu2mp67q"), + "init": MustParseCid("bafk2bzaceaw4iouukgqxmwukfpt3sakdvsu75ftjvw47swnwtdftz5oszbt4w"), + "multisig": MustParseCid("bafk2bzaceahyjwf6re4mnuwhopglo3qzh6aboluboncpijm7vuiz3u4bkazho"), + "paymentchannel": MustParseCid("bafk2bzaceaupjw3djghaqw3g3hd4tw7uuas3njkszgzx2fhmgqh5eh4e6q2by"), "placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), - "reward": MustParseCid("bafk2bzacedwbtfqlx47fdkxjrb5mwiatheci44x3zkpx33smybc2cme23ymuo"), - "storagemarket": MustParseCid("bafk2bzaceaj74fmooaf3gj3ebwon64ky7hhdh7kytdr3agclqfrqzmpzykh7g"), - "storageminer": MustParseCid("bafk2bzacedb7bokkzzs7hnbhivp74pgcpermuy7j6b3ncodylksukkxtnn7ze"), - "storagepower": MustParseCid("bafk2bzacedilnkegizkxz3nuutib4d4wwlk4bkla22loepia2h53yf4hysmq6"), - "system": MustParseCid("bafk2bzacedpyoncjbl4oxkjm5e77ngvpy2xfajjc4myfsv2vltvzxioattlu2"), - "verifiedregistry": MustParseCid("bafk2bzacebdqi5tr5pjnem5nylg2zbqcugvi7oxi35bhnrfudx4y4ufhlit2k"), + "reward": MustParseCid("bafk2bzacebzso6xkjxdscbpncw7el2d4hap6lfkgwqzrbc76lzp33vkwk6obc"), + "storagemarket": MustParseCid("bafk2bzacebzg74vyk3gzbhnz4zviwvxblyar574mtd6ayognmsvlkriejmunu"), + "storageminer": MustParseCid("bafk2bzaceajgt523lr2sf6cacvzo3goyalljlkaoeehyhxlv57wevkljw2cps"), + "storagepower": MustParseCid("bafk2bzacebbtj2m2ajawfuzxqz5nmdep7xevjo2qfjqa5tx3vr5m6qojolya4"), + "system": MustParseCid("bafk2bzacecnau5wddulbsvwn75tc3w75jrlvkybgrlxs4ngonqab6xq3eowvg"), + "verifiedregistry": MustParseCid("bafk2bzacec37mddea65nvh4htsagtryfa3sq6i67utcupslyhzbhjhoy6hopa"), }, }, { Network: "hyperspace", @@ -553,25 +553,25 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet }, { Network: "mainnet", Version: 12, - BundleGitTag: "v11.0.0", - ManifestCid: MustParseCid("bafy2bzacecnhaiwcrpyjvzl4uv4q3jzoif26okl3m66q3cijp3dfwlcxwztwo"), + BundleGitTag: "v12.0.0-rc.1", + ManifestCid: MustParseCid("bafy2bzacebxmnxdgt2usdrcrpotgodr75culawwv4eklaun4lu6vlxecql6h2"), Actors: map[string]cid.Cid{ - "account": MustParseCid("bafk2bzacealnlr7st6lkwoh6wxpf2hnrlex5sknaopgmkr2tuhg7vmbfy45so"), - "cron": MustParseCid("bafk2bzacebpewdvvgt6tk2o2u4rcovdgym67tadiis5usemlbejg7k3kt567o"), - "datacap": MustParseCid("bafk2bzacebslykoyrb2hm7aacjngqgd5n2wmeii2goadrs5zaya3pvdf6pdnq"), - "eam": MustParseCid("bafk2bzaceaelwt4yfsfvsu3pa3miwalsvy3cfkcjvmt4sqoeopsppnrmj2mf2"), - "ethaccount": MustParseCid("bafk2bzaceclkmc4yidxc6lgcjpfypbde2eddnevcveo4j5kmh4ek6inqysz2k"), - "evm": MustParseCid("bafk2bzacediwh6etwzwmb5pivtclpdplewdjzphouwqpppce6opisjv2fjqfe"), - "init": MustParseCid("bafk2bzaceckwf3w6n2nw6eh77ktmsxqgsvshonvgnyk5q5syyngtetxvasfxg"), - "multisig": MustParseCid("bafk2bzaceafajceqwg5ybiz7xw6rxammuirkgtuv625gzaehsqfprm4bazjmk"), - "paymentchannel": MustParseCid("bafk2bzaceb4e6cnsnviegmqvsmoxzncruvhra54piq7bwiqfqevle6oob2gvo"), + "account": MustParseCid("bafk2bzaceboftg75mdiba7xbo2i3uvgtca4brhnr3u5ptihonixgpnrvhpxoa"), + "cron": MustParseCid("bafk2bzacechxjkfe2cehx4s7skj3wzfpzf7zolds64khrrrs66bhazsemktls"), + "datacap": MustParseCid("bafk2bzacebpiwb2ml4qbnnaayxumtk43ryhc63exdgnhivy3hwgmzemawsmpq"), + "eam": MustParseCid("bafk2bzaceb3elj4hfbbjp7g5bptc7su7mptszl4nlqfedilxvstjo5ungm6oe"), + "ethaccount": MustParseCid("bafk2bzaceb4gkau2vgsijcxpfuq33bd7w3efr2rrhxrwiacjmns2ntdiamswq"), + "evm": MustParseCid("bafk2bzacecmnyfiwb52tkbwmm2dsd7ysi3nvuxl3lmspy7pl26wxj4zj7w4wi"), + "init": MustParseCid("bafk2bzacebllyegx5r6lggf6ymyetbp7amacwpuxakhtjvjtvoy2bfkzk3vms"), + "multisig": MustParseCid("bafk2bzacecw5lyp3n3t67xdwrmo36h4z7afc3lobmmr6wg55w6yjzg5jhmh42"), + "paymentchannel": MustParseCid("bafk2bzacectv4cm47bnhga5febf3lo3fq47g72kmmp2xd5s6tcxz7hiqdywa4"), "placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), - "reward": MustParseCid("bafk2bzacebwjw2vxkobs7r2kwjdqqb42h2kucyuk6flbnyzw4odg5s4mogamo"), - "storagemarket": MustParseCid("bafk2bzaceazu2j2zu4p24tr22btnqzkhzjvyjltlvsagaj6w3syevikeb5d7m"), - "storageminer": MustParseCid("bafk2bzacec24okjqrp7c7rj3hbrs5ez5apvwah2ruka6haesgfngf37mhk6us"), - "storagepower": MustParseCid("bafk2bzaceaxgloxuzg35vu7l7tohdgaq2frsfp4ejmuo7tkoxjp5zqrze6sf4"), - "system": MustParseCid("bafk2bzaced7npe5mt5nh72jxr2igi2sofoa7gedt4w6kueeke7i3xxugqpjfm"), - "verifiedregistry": MustParseCid("bafk2bzacedej3dnr62g2je2abmyjg3xqv4otvh6e26du5fcrhvw7zgcaaez3a"), + "reward": MustParseCid("bafk2bzacealqnxn5lwzwexd6reav4dppypquklx2ujlnvaxiqk2tzstyvkp5u"), + "storagemarket": MustParseCid("bafk2bzacedylkg5am446lcuih4voyzdn4yjeqfsxfzh5b6mcuhx4mok5ph5c4"), + "storageminer": MustParseCid("bafk2bzacea56yi2khvvorofkf2t4rb5fbmltahrjtauszirdjz4jbunt55xsk"), + "storagepower": MustParseCid("bafk2bzacecsij5tpfzjpfuckxvccv2p3bdqjklkrfyyoei6lx5dyj5j4fvjm6"), + "system": MustParseCid("bafk2bzacebfqrja2hip7esf4eafxjmu6xcogoqu5xxtgdg7xa5szgvvdguchu"), + "verifiedregistry": MustParseCid("bafk2bzacedudgflxc75c77c6zkmfyq4u2xuk7k6xw6dfdccarjrvxx453b77q"), }, }, { Network: "testing", @@ -659,25 +659,25 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet }, { Network: "testing", Version: 12, - BundleGitTag: "v11.0.0", - ManifestCid: MustParseCid("bafy2bzacea2vxre32tg3xhpejrktiuzx4d3pcoe7yyazgscfibmegmchr6n42"), + BundleGitTag: "v12.0.0-rc.1", + ManifestCid: MustParseCid("bafy2bzacebzcqzzlb5iwrledyuyy7pvob3xwzoxqsrvrbrnpaiejb52na5eza"), Actors: map[string]cid.Cid{ - "account": MustParseCid("bafk2bzaceccerssb3tgel6ukdghlwvs7dxsolj4fpkgn7dh7owzwapqb6ejpw"), - "cron": MustParseCid("bafk2bzacebtfl6fczxnitrqqjhyefskf3asyn3gzuvqcddieoqfsaddk5fd4q"), - "datacap": MustParseCid("bafk2bzacediikc55y6uzmnhucf4mik6rqpjulwvgp5gdibogxjhgbvusmzff2"), - "eam": MustParseCid("bafk2bzaceazqi5ezossp6kvqogaaba6hxlfarqgniktmb7iy5qonha3eflz6m"), - "ethaccount": MustParseCid("bafk2bzaceb77ospgfqqmf67v23wkyeg7lr2mu53ybaacu3bslx7s7nhttdueo"), - "evm": MustParseCid("bafk2bzacedvgt7mv22hux4vrnklylq7qmw43kfrqwam6wdsfzkdnaewr33qbu"), - "init": MustParseCid("bafk2bzacealzb3nk2oypway5ubz3hs5py5ok5tuw545454vg4d3mwbslef4js"), - "multisig": MustParseCid("bafk2bzacec45ppn4hrwizmopp2v2atkxw35tb6yem6uqhqilrv7aiaknnnxmu"), - "paymentchannel": MustParseCid("bafk2bzaceajbr3t6cngzh3katqteflbcrtwtdgbthnlfemon5tg6rytf2uonw"), + "account": MustParseCid("bafk2bzacea74qqkfvacykmq5emzqblh4f4nmxdkiyixxpzs7kkcfnbfa7cb6m"), + "cron": MustParseCid("bafk2bzacecotbu7k6awdzfzakf7g5iaas6gswtunjnnb2xm2klqoshjgb4imy"), + "datacap": MustParseCid("bafk2bzaceduhmqcyailiwdupt2ottfzh5hcrjoyeyiaipf3idk3mu7y3uz2mc"), + "eam": MustParseCid("bafk2bzaceb2yzzw6dcmcmhnt3mqnm4kah66f23pc4escnto3vwa552t6ctr7i"), + "ethaccount": MustParseCid("bafk2bzacebwkvvbmttkcjjlicp4ineozc52i5sc6d46pcoq6lzzs2p5i2youa"), + "evm": MustParseCid("bafk2bzacedetwacs6wmoksxwjlbpp4442uav7fd3pagadejm2cph7ucym7eck"), + "init": MustParseCid("bafk2bzacedhpoycn4sz7dragmbo5yqjspqriydxhplqdeguaqck2hmq5hgwqg"), + "multisig": MustParseCid("bafk2bzaceacc3m23yvnpzoeekstqtr2acutfv4zvsgncorjdrsucymjohzxs4"), + "paymentchannel": MustParseCid("bafk2bzaceac6i76vfexefqf6qgebkhkf2cb4g664d5nmfh2dric5spgykevd2"), "placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), - "reward": MustParseCid("bafk2bzacea7ycf53kbq4robcuh3ziy7qwwhaqamc5krn3lugypgpxhlewdaiq"), - "storagemarket": MustParseCid("bafk2bzacedskmbcpaeb6bezs32szh52jrukvihobluadauayroo5gzrt32tkm"), - "storageminer": MustParseCid("bafk2bzaced3yg5lctmswnbkxyd6cleg3llyux7fu2vbddyd2ho36fpym423mq"), - "storagepower": MustParseCid("bafk2bzacebvpdf372fzxgixztbz2r7ayxyvx7jmdxwlfuqt2cq7tnqgie3klw"), - "system": MustParseCid("bafk2bzaceaatvscbnkv36ixhtt2zel4er5oskxevgumh5gegqkv7uzah36f24"), - "verifiedregistry": MustParseCid("bafk2bzacebp2r56wxadvfzpfbmqwfi3dlnwpmoc5u4tau2hfftbkuafkhye64"), + "reward": MustParseCid("bafk2bzaceaajyncjxcrl7wbb6ukzkueyqz4uyekxpmtn4mpndkf7ksmggopzq"), + "storagemarket": MustParseCid("bafk2bzaced6cexdcinwjhtfvuxgkxukiejp3goylaxtvhqfd24rs5z7g2z7dm"), + "storageminer": MustParseCid("bafk2bzacecw6jvvfu62jkwsa4vzmn262cjrrxh6wza6nvjsyg5aeix7rzgmbe"), + "storagepower": MustParseCid("bafk2bzacedexrf5qplrrl5xzijfrthjdqwodfs5e6zj5kpztc7qnywbqdyiii"), + "system": MustParseCid("bafk2bzacecp4roanbxq3bflftlkipsoqqxio5etjjnzxus5pcu7lq43fnxb34"), + "verifiedregistry": MustParseCid("bafk2bzaceandytrgcnuvizfi47sijbqh6c243vjtzlzumexm6kjv7s7hye45g"), }, }, { Network: "testing-fake-proofs", @@ -765,24 +765,24 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet }, { Network: "testing-fake-proofs", Version: 12, - BundleGitTag: "v11.0.0", - ManifestCid: MustParseCid("bafy2bzacecojemqglhzzhjnhgtrcbsgkyv67ziytvtbhwlr4ym4oxqofv7zui"), + BundleGitTag: "v12.0.0-rc.1", + ManifestCid: MustParseCid("bafy2bzacedtskkmrkkzairdi66syrmvfpydg63ro4dlmmqeta5krnur4hcp3a"), Actors: map[string]cid.Cid{ - "account": MustParseCid("bafk2bzaceccerssb3tgel6ukdghlwvs7dxsolj4fpkgn7dh7owzwapqb6ejpw"), - "cron": MustParseCid("bafk2bzacebtfl6fczxnitrqqjhyefskf3asyn3gzuvqcddieoqfsaddk5fd4q"), - "datacap": MustParseCid("bafk2bzacediikc55y6uzmnhucf4mik6rqpjulwvgp5gdibogxjhgbvusmzff2"), - "eam": MustParseCid("bafk2bzaceazqi5ezossp6kvqogaaba6hxlfarqgniktmb7iy5qonha3eflz6m"), - "ethaccount": MustParseCid("bafk2bzaceb77ospgfqqmf67v23wkyeg7lr2mu53ybaacu3bslx7s7nhttdueo"), - "evm": MustParseCid("bafk2bzacedvgt7mv22hux4vrnklylq7qmw43kfrqwam6wdsfzkdnaewr33qbu"), - "init": MustParseCid("bafk2bzacealzb3nk2oypway5ubz3hs5py5ok5tuw545454vg4d3mwbslef4js"), - "multisig": MustParseCid("bafk2bzacec45ppn4hrwizmopp2v2atkxw35tb6yem6uqhqilrv7aiaknnnxmu"), - "paymentchannel": MustParseCid("bafk2bzaceajbr3t6cngzh3katqteflbcrtwtdgbthnlfemon5tg6rytf2uonw"), + "account": MustParseCid("bafk2bzacea74qqkfvacykmq5emzqblh4f4nmxdkiyixxpzs7kkcfnbfa7cb6m"), + "cron": MustParseCid("bafk2bzacecotbu7k6awdzfzakf7g5iaas6gswtunjnnb2xm2klqoshjgb4imy"), + "datacap": MustParseCid("bafk2bzaceduhmqcyailiwdupt2ottfzh5hcrjoyeyiaipf3idk3mu7y3uz2mc"), + "eam": MustParseCid("bafk2bzaceb2yzzw6dcmcmhnt3mqnm4kah66f23pc4escnto3vwa552t6ctr7i"), + "ethaccount": MustParseCid("bafk2bzacebwkvvbmttkcjjlicp4ineozc52i5sc6d46pcoq6lzzs2p5i2youa"), + "evm": MustParseCid("bafk2bzacedetwacs6wmoksxwjlbpp4442uav7fd3pagadejm2cph7ucym7eck"), + "init": MustParseCid("bafk2bzacedhpoycn4sz7dragmbo5yqjspqriydxhplqdeguaqck2hmq5hgwqg"), + "multisig": MustParseCid("bafk2bzaceacc3m23yvnpzoeekstqtr2acutfv4zvsgncorjdrsucymjohzxs4"), + "paymentchannel": MustParseCid("bafk2bzaceac6i76vfexefqf6qgebkhkf2cb4g664d5nmfh2dric5spgykevd2"), "placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), - "reward": MustParseCid("bafk2bzacea7ycf53kbq4robcuh3ziy7qwwhaqamc5krn3lugypgpxhlewdaiq"), - "storagemarket": MustParseCid("bafk2bzacedskmbcpaeb6bezs32szh52jrukvihobluadauayroo5gzrt32tkm"), - "storageminer": MustParseCid("bafk2bzacebqeztpa5exztccqjwqhan5droiy7ga6zekm6f2gzxoe655vneczm"), - "storagepower": MustParseCid("bafk2bzaceb2tlyuwxncdxsh3hc4fwcjnpxaijkiv54ustwdjbrqabxdsc27km"), - "system": MustParseCid("bafk2bzaceaatvscbnkv36ixhtt2zel4er5oskxevgumh5gegqkv7uzah36f24"), - "verifiedregistry": MustParseCid("bafk2bzacebp2r56wxadvfzpfbmqwfi3dlnwpmoc5u4tau2hfftbkuafkhye64"), + "reward": MustParseCid("bafk2bzaceaajyncjxcrl7wbb6ukzkueyqz4uyekxpmtn4mpndkf7ksmggopzq"), + "storagemarket": MustParseCid("bafk2bzaced6cexdcinwjhtfvuxgkxukiejp3goylaxtvhqfd24rs5z7g2z7dm"), + "storageminer": MustParseCid("bafk2bzacea54x727xteh3tl46mitigy6cldqusqjxiwni65wrpofidh62k2ds"), + "storagepower": MustParseCid("bafk2bzacecdwijcbbryinjtm27pdinqqkyzoskri24pwsvsadwcq2alkkjpnc"), + "system": MustParseCid("bafk2bzacecp4roanbxq3bflftlkipsoqqxio5etjjnzxus5pcu7lq43fnxb34"), + "verifiedregistry": MustParseCid("bafk2bzaceandytrgcnuvizfi47sijbqh6c243vjtzlzumexm6kjv7s7hye45g"), }, }} diff --git a/build/genesis/butterflynet.car b/build/genesis/butterflynet.car index 30ec609ec..962964c35 100644 Binary files a/build/genesis/butterflynet.car and b/build/genesis/butterflynet.car differ diff --git a/build/openrpc/full.json.gz b/build/openrpc/full.json.gz index b4c139b97..9bcb54b58 100644 Binary files a/build/openrpc/full.json.gz and b/build/openrpc/full.json.gz differ diff --git a/build/openrpc/gateway.json.gz b/build/openrpc/gateway.json.gz index 1c6f717c0..e0c6c61b8 100644 Binary files a/build/openrpc/gateway.json.gz and b/build/openrpc/gateway.json.gz differ diff --git a/build/openrpc/miner.json.gz b/build/openrpc/miner.json.gz index 3696821da..817595c7b 100644 Binary files a/build/openrpc/miner.json.gz and b/build/openrpc/miner.json.gz differ diff --git a/build/openrpc/worker.json.gz b/build/openrpc/worker.json.gz index 207ba656e..6adce6cb9 100644 Binary files a/build/openrpc/worker.json.gz and b/build/openrpc/worker.json.gz differ diff --git a/build/params_butterfly.go b/build/params_butterfly.go index 7d3b613c9..96b71d3c0 100644 --- a/build/params_butterfly.go +++ b/build/params_butterfly.go @@ -19,7 +19,7 @@ var DrandSchedule = map[abi.ChainEpoch]DrandEnum{ 0: DrandMainnet, } -const GenesisNetworkVersion = network.Version18 +const GenesisNetworkVersion = network.Version20 var NetworkBundle = "butterflynet" var BundleOverrides map[actorstypes.Version]string @@ -52,13 +52,10 @@ const UpgradeOhSnapHeight = -18 const UpgradeSkyrHeight = -19 const UpgradeSharkHeight = -20 const UpgradeHyggeHeight = -21 +const UpgradeLightningHeight = -22 +const UpgradeThunderHeight = -23 -const UpgradeLightningHeight = 50 - -const UpgradeThunderHeight = UpgradeLightningHeight + 360 - -// ?????????? -const UpgradeWatermelonHeight = 999999999999999 +const UpgradeWatermelonHeight = 400 var SupportedProofTypes = []abi.RegisteredSealProof{ abi.RegisteredSealProof_StackedDrg512MiBV1, diff --git a/build/params_calibnet.go b/build/params_calibnet.go index 4081d4c1d..5831d30bb 100644 --- a/build/params_calibnet.go +++ b/build/params_calibnet.go @@ -79,8 +79,8 @@ const UpgradeLightningHeight = 489094 // 2023-04-21T16:00:00Z const UpgradeThunderHeight = UpgradeLightningHeight + 3120 -// ?????????? -const UpgradeWatermelonHeight = 999999999999999 +// 2023-10-19T13:00:00Z +const UpgradeWatermelonHeight = 1013134 var SupportedProofTypes = []abi.RegisteredSealProof{ abi.RegisteredSealProof_StackedDrg32GiBV1, diff --git a/chain/actors/builtin/market/state.go.template b/chain/actors/builtin/market/state.go.template index bbaa5c775..1eab9d743 100644 --- a/chain/actors/builtin/market/state.go.template +++ b/chain/actors/builtin/market/state.go.template @@ -19,7 +19,7 @@ import ( "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/types" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + verifregtypes "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/go-state-types/manifest" {{if (le .v 7)}} diff --git a/chain/actors/builtin/market/v0.go b/chain/actors/builtin/market/v0.go index c0a628b47..ca6970dfa 100644 --- a/chain/actors/builtin/market/v0.go +++ b/chain/actors/builtin/market/v0.go @@ -11,13 +11,13 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" actorstypes "github.com/filecoin-project/go-state-types/actors" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/go-state-types/manifest" market0 "github.com/filecoin-project/specs-actors/actors/builtin/market" adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + verifregtypes "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/types" ) diff --git a/chain/actors/builtin/market/v10.go b/chain/actors/builtin/market/v10.go index aaa0ee0f1..878f0d465 100644 --- a/chain/actors/builtin/market/v10.go +++ b/chain/actors/builtin/market/v10.go @@ -17,11 +17,11 @@ import ( market10 "github.com/filecoin-project/go-state-types/builtin/v10/market" adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" markettypes "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/manifest" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + verifregtypes "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/types" ) diff --git a/chain/actors/builtin/market/v11.go b/chain/actors/builtin/market/v11.go index a816e3409..a64272209 100644 --- a/chain/actors/builtin/market/v11.go +++ b/chain/actors/builtin/market/v11.go @@ -17,11 +17,11 @@ import ( market11 "github.com/filecoin-project/go-state-types/builtin/v11/market" adt11 "github.com/filecoin-project/go-state-types/builtin/v11/util/adt" markettypes "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/manifest" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + verifregtypes "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/types" ) diff --git a/chain/actors/builtin/market/v12.go b/chain/actors/builtin/market/v12.go index 3532fc4f4..56e651a9b 100644 --- a/chain/actors/builtin/market/v12.go +++ b/chain/actors/builtin/market/v12.go @@ -17,11 +17,11 @@ import ( market12 "github.com/filecoin-project/go-state-types/builtin/v12/market" adt12 "github.com/filecoin-project/go-state-types/builtin/v12/util/adt" markettypes "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/manifest" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + verifregtypes "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/types" ) diff --git a/chain/actors/builtin/market/v2.go b/chain/actors/builtin/market/v2.go index 89ffdde8f..ba84e3b03 100644 --- a/chain/actors/builtin/market/v2.go +++ b/chain/actors/builtin/market/v2.go @@ -11,13 +11,13 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" actorstypes "github.com/filecoin-project/go-state-types/actors" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/go-state-types/manifest" market2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/market" adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + verifregtypes "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/types" ) diff --git a/chain/actors/builtin/market/v3.go b/chain/actors/builtin/market/v3.go index f4d073ed8..f6a0891e7 100644 --- a/chain/actors/builtin/market/v3.go +++ b/chain/actors/builtin/market/v3.go @@ -11,13 +11,13 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" actorstypes "github.com/filecoin-project/go-state-types/actors" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/go-state-types/manifest" market3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/market" adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + verifregtypes "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/types" ) diff --git a/chain/actors/builtin/market/v4.go b/chain/actors/builtin/market/v4.go index 422a30cbb..629e833b6 100644 --- a/chain/actors/builtin/market/v4.go +++ b/chain/actors/builtin/market/v4.go @@ -11,13 +11,13 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" actorstypes "github.com/filecoin-project/go-state-types/actors" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/go-state-types/manifest" market4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/market" adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + verifregtypes "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/types" ) diff --git a/chain/actors/builtin/market/v5.go b/chain/actors/builtin/market/v5.go index b30decb03..892588979 100644 --- a/chain/actors/builtin/market/v5.go +++ b/chain/actors/builtin/market/v5.go @@ -11,13 +11,13 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" actorstypes "github.com/filecoin-project/go-state-types/actors" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/go-state-types/manifest" market5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/market" adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + verifregtypes "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/types" ) diff --git a/chain/actors/builtin/market/v6.go b/chain/actors/builtin/market/v6.go index 377b278ae..b57d49f91 100644 --- a/chain/actors/builtin/market/v6.go +++ b/chain/actors/builtin/market/v6.go @@ -13,13 +13,13 @@ import ( rlepluslazy "github.com/filecoin-project/go-bitfield/rle" "github.com/filecoin-project/go-state-types/abi" actorstypes "github.com/filecoin-project/go-state-types/actors" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/go-state-types/manifest" market6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/market" adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + verifregtypes "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/types" ) diff --git a/chain/actors/builtin/market/v7.go b/chain/actors/builtin/market/v7.go index cd4607cbe..56a1db328 100644 --- a/chain/actors/builtin/market/v7.go +++ b/chain/actors/builtin/market/v7.go @@ -13,13 +13,13 @@ import ( rlepluslazy "github.com/filecoin-project/go-bitfield/rle" "github.com/filecoin-project/go-state-types/abi" actorstypes "github.com/filecoin-project/go-state-types/actors" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/go-state-types/manifest" market7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/market" adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + verifregtypes "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/types" ) diff --git a/chain/actors/builtin/market/v8.go b/chain/actors/builtin/market/v8.go index 5cce06d3a..9c68ee1fd 100644 --- a/chain/actors/builtin/market/v8.go +++ b/chain/actors/builtin/market/v8.go @@ -16,11 +16,11 @@ import ( market8 "github.com/filecoin-project/go-state-types/builtin/v8/market" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" markettypes "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/manifest" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + verifregtypes "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/types" ) diff --git a/chain/actors/builtin/market/v9.go b/chain/actors/builtin/market/v9.go index 095c20850..d692c15cc 100644 --- a/chain/actors/builtin/market/v9.go +++ b/chain/actors/builtin/market/v9.go @@ -17,11 +17,11 @@ import ( market9 "github.com/filecoin-project/go-state-types/builtin/v9/market" markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/go-state-types/manifest" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + verifregtypes "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/types" ) diff --git a/chain/actors/builtin/miner/actor.go.template b/chain/actors/builtin/miner/actor.go.template index 7319ee9c5..b4ad3a4b5 100644 --- a/chain/actors/builtin/miner/actor.go.template +++ b/chain/actors/builtin/miner/actor.go.template @@ -154,7 +154,7 @@ type Partition interface { type SectorOnChainInfo = minertypes.SectorOnChainInfo -func PreferredSealProofTypeFromWindowPoStType(nver network.Version, proof abi.RegisteredPoStProof) (abi.RegisteredSealProof, error) { +func PreferredSealProofTypeFromWindowPoStType(nver network.Version, proof abi.RegisteredPoStProof, configWantSynthetic bool) (abi.RegisteredSealProof, error) { // We added support for the new proofs in network version 7, and removed support for the old // ones in network version 8. if nver < network.Version7 { @@ -174,17 +174,34 @@ func PreferredSealProofTypeFromWindowPoStType(nver network.Version, proof abi.Re } } + if nver < MinSyntheticPoRepVersion || !configWantSynthetic { + switch proof { + case abi.RegisteredPoStProof_StackedDrgWindow2KiBV1, abi.RegisteredPoStProof_StackedDrgWindow2KiBV1_1: + return abi.RegisteredSealProof_StackedDrg2KiBV1_1, nil + case abi.RegisteredPoStProof_StackedDrgWindow8MiBV1, abi.RegisteredPoStProof_StackedDrgWindow8MiBV1_1: + return abi.RegisteredSealProof_StackedDrg8MiBV1_1, nil + case abi.RegisteredPoStProof_StackedDrgWindow512MiBV1, abi.RegisteredPoStProof_StackedDrgWindow512MiBV1_1: + return abi.RegisteredSealProof_StackedDrg512MiBV1_1, nil + case abi.RegisteredPoStProof_StackedDrgWindow32GiBV1, abi.RegisteredPoStProof_StackedDrgWindow32GiBV1_1: + return abi.RegisteredSealProof_StackedDrg32GiBV1_1, nil + case abi.RegisteredPoStProof_StackedDrgWindow64GiBV1, abi.RegisteredPoStProof_StackedDrgWindow64GiBV1_1: + return abi.RegisteredSealProof_StackedDrg64GiBV1_1, nil + default: + return -1, xerrors.Errorf("unrecognized window post type: %d", proof) + } + } + switch proof { case abi.RegisteredPoStProof_StackedDrgWindow2KiBV1, abi.RegisteredPoStProof_StackedDrgWindow2KiBV1_1: - return abi.RegisteredSealProof_StackedDrg2KiBV1_1, nil + return abi.RegisteredSealProof_StackedDrg2KiBV1_1_Feat_SyntheticPoRep, nil case abi.RegisteredPoStProof_StackedDrgWindow8MiBV1, abi.RegisteredPoStProof_StackedDrgWindow8MiBV1_1: - return abi.RegisteredSealProof_StackedDrg8MiBV1_1, nil + return abi.RegisteredSealProof_StackedDrg8MiBV1_1_Feat_SyntheticPoRep, nil case abi.RegisteredPoStProof_StackedDrgWindow512MiBV1, abi.RegisteredPoStProof_StackedDrgWindow512MiBV1_1: - return abi.RegisteredSealProof_StackedDrg512MiBV1_1, nil + return abi.RegisteredSealProof_StackedDrg512MiBV1_1_Feat_SyntheticPoRep, nil case abi.RegisteredPoStProof_StackedDrgWindow32GiBV1, abi.RegisteredPoStProof_StackedDrgWindow32GiBV1_1: - return abi.RegisteredSealProof_StackedDrg32GiBV1_1, nil + return abi.RegisteredSealProof_StackedDrg32GiBV1_1_Feat_SyntheticPoRep, nil case abi.RegisteredPoStProof_StackedDrgWindow64GiBV1, abi.RegisteredPoStProof_StackedDrgWindow64GiBV1_1: - return abi.RegisteredSealProof_StackedDrg64GiBV1_1, nil + return abi.RegisteredSealProof_StackedDrg64GiBV1_1_Feat_SyntheticPoRep, nil default: return -1, xerrors.Errorf("unrecognized window post type: %d", proof) } @@ -213,8 +230,37 @@ type PendingBeneficiaryChange = minertypes.PendingBeneficiaryChange type WorkerKeyChange = minertypes.WorkerKeyChange type SectorPreCommitOnChainInfo = minertypes.SectorPreCommitOnChainInfo type SectorPreCommitInfo = minertypes.SectorPreCommitInfo +type SubmitWindowedPoStParams = minertypes.SubmitWindowedPoStParams +type PoStPartition = minertypes.PoStPartition +type RecoveryDeclaration = minertypes.RecoveryDeclaration +type FaultDeclaration = minertypes.FaultDeclaration +type DeclareFaultsRecoveredParams = minertypes.DeclareFaultsRecoveredParams +type DeclareFaultsParams = minertypes.DeclareFaultsParams +type ProveCommitAggregateParams = minertypes.ProveCommitAggregateParams +type ProveCommitSectorParams = minertypes.ProveCommitSectorParams +type ProveReplicaUpdatesParams = minertypes.ProveReplicaUpdatesParams +type ReplicaUpdate = minertypes.ReplicaUpdate +type PreCommitSectorBatchParams = minertypes.PreCommitSectorBatchParams +type PreCommitSectorBatchParams2 = minertypes.PreCommitSectorBatchParams2 +type ExtendSectorExpiration2Params = minertypes.ExtendSectorExpiration2Params +type SectorClaim = minertypes.SectorClaim +type ExpirationExtension2 = minertypes.ExpirationExtension2 +type CompactPartitionsParams = minertypes.CompactPartitionsParams +type WithdrawBalanceParams = minertypes.WithdrawBalanceParams + +var QAPowerMax = minertypes.QAPowerMax + type WindowPostVerifyInfo = proof.WindowPoStVerifyInfo +var WPoStProvingPeriod = func() abi.ChainEpoch { return minertypes.WPoStProvingPeriod } +var WPoStChallengeWindow = func() abi.ChainEpoch { return minertypes.WPoStChallengeWindow } + +const WPoStPeriodDeadlines = minertypes.WPoStPeriodDeadlines +const WPoStChallengeLookback = minertypes.WPoStChallengeLookback +const FaultDeclarationCutoff = minertypes.FaultDeclarationCutoff +const MinAggregatedSectors = minertypes.MinAggregatedSectors +const MinSectorExpiration = minertypes.MinSectorExpiration + type SectorExpiration struct { OnTime abi.ChainEpoch diff --git a/chain/actors/builtin/miner/miner.go b/chain/actors/builtin/miner/miner.go index 3ad17b033..1637cdade 100644 --- a/chain/actors/builtin/miner/miner.go +++ b/chain/actors/builtin/miner/miner.go @@ -214,7 +214,7 @@ type Partition interface { type SectorOnChainInfo = minertypes.SectorOnChainInfo -func PreferredSealProofTypeFromWindowPoStType(nver network.Version, proof abi.RegisteredPoStProof) (abi.RegisteredSealProof, error) { +func PreferredSealProofTypeFromWindowPoStType(nver network.Version, proof abi.RegisteredPoStProof, configWantSynthetic bool) (abi.RegisteredSealProof, error) { // We added support for the new proofs in network version 7, and removed support for the old // ones in network version 8. if nver < network.Version7 { @@ -234,17 +234,34 @@ func PreferredSealProofTypeFromWindowPoStType(nver network.Version, proof abi.Re } } + if nver < MinSyntheticPoRepVersion || !configWantSynthetic { + switch proof { + case abi.RegisteredPoStProof_StackedDrgWindow2KiBV1, abi.RegisteredPoStProof_StackedDrgWindow2KiBV1_1: + return abi.RegisteredSealProof_StackedDrg2KiBV1_1, nil + case abi.RegisteredPoStProof_StackedDrgWindow8MiBV1, abi.RegisteredPoStProof_StackedDrgWindow8MiBV1_1: + return abi.RegisteredSealProof_StackedDrg8MiBV1_1, nil + case abi.RegisteredPoStProof_StackedDrgWindow512MiBV1, abi.RegisteredPoStProof_StackedDrgWindow512MiBV1_1: + return abi.RegisteredSealProof_StackedDrg512MiBV1_1, nil + case abi.RegisteredPoStProof_StackedDrgWindow32GiBV1, abi.RegisteredPoStProof_StackedDrgWindow32GiBV1_1: + return abi.RegisteredSealProof_StackedDrg32GiBV1_1, nil + case abi.RegisteredPoStProof_StackedDrgWindow64GiBV1, abi.RegisteredPoStProof_StackedDrgWindow64GiBV1_1: + return abi.RegisteredSealProof_StackedDrg64GiBV1_1, nil + default: + return -1, xerrors.Errorf("unrecognized window post type: %d", proof) + } + } + switch proof { case abi.RegisteredPoStProof_StackedDrgWindow2KiBV1, abi.RegisteredPoStProof_StackedDrgWindow2KiBV1_1: - return abi.RegisteredSealProof_StackedDrg2KiBV1_1, nil + return abi.RegisteredSealProof_StackedDrg2KiBV1_1_Feat_SyntheticPoRep, nil case abi.RegisteredPoStProof_StackedDrgWindow8MiBV1, abi.RegisteredPoStProof_StackedDrgWindow8MiBV1_1: - return abi.RegisteredSealProof_StackedDrg8MiBV1_1, nil + return abi.RegisteredSealProof_StackedDrg8MiBV1_1_Feat_SyntheticPoRep, nil case abi.RegisteredPoStProof_StackedDrgWindow512MiBV1, abi.RegisteredPoStProof_StackedDrgWindow512MiBV1_1: - return abi.RegisteredSealProof_StackedDrg512MiBV1_1, nil + return abi.RegisteredSealProof_StackedDrg512MiBV1_1_Feat_SyntheticPoRep, nil case abi.RegisteredPoStProof_StackedDrgWindow32GiBV1, abi.RegisteredPoStProof_StackedDrgWindow32GiBV1_1: - return abi.RegisteredSealProof_StackedDrg32GiBV1_1, nil + return abi.RegisteredSealProof_StackedDrg32GiBV1_1_Feat_SyntheticPoRep, nil case abi.RegisteredPoStProof_StackedDrgWindow64GiBV1, abi.RegisteredPoStProof_StackedDrgWindow64GiBV1_1: - return abi.RegisteredSealProof_StackedDrg64GiBV1_1, nil + return abi.RegisteredSealProof_StackedDrg64GiBV1_1_Feat_SyntheticPoRep, nil default: return -1, xerrors.Errorf("unrecognized window post type: %d", proof) } @@ -273,8 +290,37 @@ type PendingBeneficiaryChange = minertypes.PendingBeneficiaryChange type WorkerKeyChange = minertypes.WorkerKeyChange type SectorPreCommitOnChainInfo = minertypes.SectorPreCommitOnChainInfo type SectorPreCommitInfo = minertypes.SectorPreCommitInfo +type SubmitWindowedPoStParams = minertypes.SubmitWindowedPoStParams +type PoStPartition = minertypes.PoStPartition +type RecoveryDeclaration = minertypes.RecoveryDeclaration +type FaultDeclaration = minertypes.FaultDeclaration +type DeclareFaultsRecoveredParams = minertypes.DeclareFaultsRecoveredParams +type DeclareFaultsParams = minertypes.DeclareFaultsParams +type ProveCommitAggregateParams = minertypes.ProveCommitAggregateParams +type ProveCommitSectorParams = minertypes.ProveCommitSectorParams +type ProveReplicaUpdatesParams = minertypes.ProveReplicaUpdatesParams +type ReplicaUpdate = minertypes.ReplicaUpdate +type PreCommitSectorBatchParams = minertypes.PreCommitSectorBatchParams +type PreCommitSectorBatchParams2 = minertypes.PreCommitSectorBatchParams2 +type ExtendSectorExpiration2Params = minertypes.ExtendSectorExpiration2Params +type SectorClaim = minertypes.SectorClaim +type ExpirationExtension2 = minertypes.ExpirationExtension2 +type CompactPartitionsParams = minertypes.CompactPartitionsParams +type WithdrawBalanceParams = minertypes.WithdrawBalanceParams + +var QAPowerMax = minertypes.QAPowerMax + type WindowPostVerifyInfo = proof.WindowPoStVerifyInfo +var WPoStProvingPeriod = func() abi.ChainEpoch { return minertypes.WPoStProvingPeriod } +var WPoStChallengeWindow = func() abi.ChainEpoch { return minertypes.WPoStChallengeWindow } + +const WPoStPeriodDeadlines = minertypes.WPoStPeriodDeadlines +const WPoStChallengeLookback = minertypes.WPoStChallengeLookback +const FaultDeclarationCutoff = minertypes.FaultDeclarationCutoff +const MinAggregatedSectors = minertypes.MinAggregatedSectors +const MinSectorExpiration = minertypes.MinSectorExpiration + type SectorExpiration struct { OnTime abi.ChainEpoch diff --git a/chain/actors/builtin/miner/utils.go b/chain/actors/builtin/miner/utils.go index dae3d3bc2..072eab986 100644 --- a/chain/actors/builtin/miner/utils.go +++ b/chain/actors/builtin/miner/utils.go @@ -8,6 +8,8 @@ import ( "github.com/filecoin-project/go-state-types/network" ) +var MinSyntheticPoRepVersion = network.Version21 + func AllPartSectors(mas State, sget func(Partition) (bitfield.BitField, error)) (bitfield.BitField, error) { var parts []bitfield.BitField @@ -31,7 +33,7 @@ func AllPartSectors(mas State, sget func(Partition) (bitfield.BitField, error)) // SealProofTypeFromSectorSize returns preferred seal proof type for creating // new miner actors and new sectors -func SealProofTypeFromSectorSize(ssize abi.SectorSize, nv network.Version) (abi.RegisteredSealProof, error) { +func SealProofTypeFromSectorSize(ssize abi.SectorSize, nv network.Version, synthetic bool) (abi.RegisteredSealProof, error) { switch { case nv < network.Version7: switch ssize { @@ -49,25 +51,49 @@ func SealProofTypeFromSectorSize(ssize abi.SectorSize, nv network.Version) (abi. return 0, xerrors.Errorf("unsupported sector size for miner: %v", ssize) } case nv >= network.Version7: + var v abi.RegisteredSealProof switch ssize { case 2 << 10: - return abi.RegisteredSealProof_StackedDrg2KiBV1_1, nil + v = abi.RegisteredSealProof_StackedDrg2KiBV1_1 case 8 << 20: - return abi.RegisteredSealProof_StackedDrg8MiBV1_1, nil + v = abi.RegisteredSealProof_StackedDrg8MiBV1_1 case 512 << 20: - return abi.RegisteredSealProof_StackedDrg512MiBV1_1, nil + v = abi.RegisteredSealProof_StackedDrg512MiBV1_1 case 32 << 30: - return abi.RegisteredSealProof_StackedDrg32GiBV1_1, nil + v = abi.RegisteredSealProof_StackedDrg32GiBV1_1 case 64 << 30: - return abi.RegisteredSealProof_StackedDrg64GiBV1_1, nil + v = abi.RegisteredSealProof_StackedDrg64GiBV1_1 default: return 0, xerrors.Errorf("unsupported sector size for miner: %v", ssize) } + + if nv >= MinSyntheticPoRepVersion && synthetic { + return toSynthetic(v) + } else { + return v, nil + } } return 0, xerrors.Errorf("unsupported network version") } +func toSynthetic(in abi.RegisteredSealProof) (abi.RegisteredSealProof, error) { + switch in { + case abi.RegisteredSealProof_StackedDrg2KiBV1_1: + return abi.RegisteredSealProof_StackedDrg2KiBV1_1_Feat_SyntheticPoRep, nil + case abi.RegisteredSealProof_StackedDrg8MiBV1_1: + return abi.RegisteredSealProof_StackedDrg8MiBV1_1_Feat_SyntheticPoRep, nil + case abi.RegisteredSealProof_StackedDrg512MiBV1_1: + return abi.RegisteredSealProof_StackedDrg512MiBV1_1_Feat_SyntheticPoRep, nil + case abi.RegisteredSealProof_StackedDrg32GiBV1_1: + return abi.RegisteredSealProof_StackedDrg32GiBV1_1_Feat_SyntheticPoRep, nil + case abi.RegisteredSealProof_StackedDrg64GiBV1_1: + return abi.RegisteredSealProof_StackedDrg64GiBV1_1_Feat_SyntheticPoRep, nil + default: + return 0, xerrors.Errorf("unsupported conversion to synthetic: %v", in) + } +} + // WindowPoStProofTypeFromSectorSize returns preferred post proof type for creating // new miner actors and new sectors func WindowPoStProofTypeFromSectorSize(ssize abi.SectorSize, nv network.Version) (abi.RegisteredPoStProof, error) { diff --git a/chain/actors/builtin/verifreg/actor.go.template b/chain/actors/builtin/verifreg/actor.go.template index 9b779a68d..991c6717b 100644 --- a/chain/actors/builtin/verifreg/actor.go.template +++ b/chain/actors/builtin/verifreg/actor.go.template @@ -97,4 +97,6 @@ func AllCodes() []cid.Cid { type Allocation = verifregtypes.Allocation type AllocationId = verifregtypes.AllocationId type Claim = verifregtypes.Claim -type ClaimId = verifregtypes.ClaimId \ No newline at end of file +type ClaimId = verifregtypes.ClaimId + +const NoAllocationID = verifregtypes.NoAllocationID diff --git a/chain/actors/builtin/verifreg/verifreg.go b/chain/actors/builtin/verifreg/verifreg.go index e79a790c7..de906f521 100644 --- a/chain/actors/builtin/verifreg/verifreg.go +++ b/chain/actors/builtin/verifreg/verifreg.go @@ -168,3 +168,5 @@ type Allocation = verifregtypes.Allocation type AllocationId = verifregtypes.AllocationId type Claim = verifregtypes.Claim type ClaimId = verifregtypes.ClaimId + +const NoAllocationID = verifregtypes.NoAllocationID diff --git a/chain/actors/policy/policy.go b/chain/actors/policy/policy.go index d680def37..a0e4728fe 100644 --- a/chain/actors/policy/policy.go +++ b/chain/actors/policy/policy.go @@ -560,8 +560,53 @@ func GetWinningPoStSectorSetLookback(nwVer network.Version) abi.ChainEpoch { return ChainFinality } -func GetMaxSectorExpirationExtension() abi.ChainEpoch { - return miner12.MaxSectorExpirationExtension +func GetMaxSectorExpirationExtension(nv network.Version) (abi.ChainEpoch, error) { + v, err := actorstypes.VersionForNetwork(nv) + if err != nil { + return 0, xerrors.Errorf("failed to get actors version: %w", err) + } + switch v { + + case actorstypes.Version0: + return miner0.MaxSectorExpirationExtension, nil + + case actorstypes.Version2: + return miner2.MaxSectorExpirationExtension, nil + + case actorstypes.Version3: + return miner3.MaxSectorExpirationExtension, nil + + case actorstypes.Version4: + return miner4.MaxSectorExpirationExtension, nil + + case actorstypes.Version5: + return miner5.MaxSectorExpirationExtension, nil + + case actorstypes.Version6: + return miner6.MaxSectorExpirationExtension, nil + + case actorstypes.Version7: + return miner7.MaxSectorExpirationExtension, nil + + case actorstypes.Version8: + return miner8.MaxSectorExpirationExtension, nil + + case actorstypes.Version9: + return miner9.MaxSectorExpirationExtension, nil + + case actorstypes.Version10: + return miner10.MaxSectorExpirationExtension, nil + + case actorstypes.Version11: + return miner11.MaxSectorExpirationExtension, nil + + case actorstypes.Version12: + return miner12.MaxSectorExpirationExtension, nil + + default: + return 0, xerrors.Errorf("unsupported network version") + } + } func GetMinSectorExpiration() abi.ChainEpoch { @@ -577,7 +622,8 @@ func GetMaxPoStPartitions(nv network.Version, p abi.RegisteredPoStProof) (int, e if err != nil { return 0, err } - return int(uint64(maxSectors) / sectorsPerPart), nil + + return min(miner12.PoStedPartitionsMax, int(uint64(maxSectors)/sectorsPerPart)), nil } func GetDefaultAggregationProof() abi.RegisteredAggregationProof { @@ -820,3 +866,10 @@ func AggregatePreCommitNetworkFee(nwVer network.Version, aggregateSize int, base return big.Zero(), xerrors.Errorf("unsupported network version") } } + +func min(a, b int) int { + if a < b { + return a + } + return b +} diff --git a/chain/actors/policy/policy.go.template b/chain/actors/policy/policy.go.template index 3eb39836a..8803c97e6 100644 --- a/chain/actors/policy/policy.go.template +++ b/chain/actors/policy/policy.go.template @@ -223,8 +223,20 @@ func GetWinningPoStSectorSetLookback(nwVer network.Version) abi.ChainEpoch { return ChainFinality } -func GetMaxSectorExpirationExtension() abi.ChainEpoch { - return miner{{.latestVersion}}.MaxSectorExpirationExtension +func GetMaxSectorExpirationExtension(nv network.Version) (abi.ChainEpoch, error) { + v, err := actorstypes.VersionForNetwork(nv) + if err != nil { + return 0, xerrors.Errorf("failed to get actors version: %w", err) + } + switch v { + {{range .versions}} + case actorstypes.Version{{.}}: + return miner{{.}}.MaxSectorExpirationExtension, nil + {{end}} + default: + return 0, xerrors.Errorf("unsupported network version") + } + } func GetMinSectorExpiration() abi.ChainEpoch { @@ -240,7 +252,8 @@ func GetMaxPoStPartitions(nv network.Version, p abi.RegisteredPoStProof) (int, e if err != nil { return 0, err } - return int(uint64(maxSectors) / sectorsPerPart), nil + + return min(miner{{.latestVersion}}.PoStedPartitionsMax, int(uint64(maxSectors) / sectorsPerPart)), nil } func GetDefaultAggregationProof() abi.RegisteredAggregationProof { @@ -329,3 +342,10 @@ func AggregatePreCommitNetworkFee(nwVer network.Version, aggregateSize int, base return big.Zero(), xerrors.Errorf("unsupported network version") } } + +func min(a, b int) int { + if a < b { + return a + } + return b +} \ No newline at end of file diff --git a/chain/actors/policy/policy_test.go b/chain/actors/policy/policy_test.go index 726fca95a..5fd4bd7b0 100644 --- a/chain/actors/policy/policy_test.go +++ b/chain/actors/policy/policy_test.go @@ -7,7 +7,6 @@ import ( "github.com/stretchr/testify/require" "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/network" builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" miner0 "github.com/filecoin-project/specs-actors/actors/builtin/miner" paych0 "github.com/filecoin-project/specs-actors/actors/builtin/paych" @@ -74,13 +73,3 @@ func TestPartitionSizes(t *testing.T) { require.Equal(t, sizeOld, sizeNew) } } - -func TestPoStSize(t *testing.T) { - //stm: @BLOCKCHAIN_POLICY_GET_MAX_POST_PARTITIONS_001 - v12PoStSize, err := GetMaxPoStPartitions(network.Version12, abi.RegisteredPoStProof_StackedDrgWindow64GiBV1) - require.Equal(t, 4, v12PoStSize) - require.NoError(t, err) - v13PoStSize, err := GetMaxPoStPartitions(network.Version13, abi.RegisteredPoStProof_StackedDrgWindow64GiBV1) - require.NoError(t, err) - require.Equal(t, 10, v13PoStSize) -} diff --git a/chain/exchange/cbor_gen.go b/chain/exchange/cbor_gen.go index d1eb271e9..e66b6d798 100644 --- a/chain/exchange/cbor_gen.go +++ b/chain/exchange/cbor_gen.go @@ -43,9 +43,11 @@ func (t *Request) MarshalCBOR(w io.Writer) error { return err } for _, v := range t.Head { - if err := cbg.WriteCid(w, v); err != nil { - return xerrors.Errorf("failed writing cid field t.Head: %w", err) + + if err := cbg.WriteCid(cw, v); err != nil { + return xerrors.Errorf("failed to write cid field v: %w", err) } + } // t.Length (uint64) (uint64) @@ -106,12 +108,25 @@ func (t *Request) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - c, err := cbg.ReadCid(cr) - if err != nil { - return xerrors.Errorf("reading cid field t.Head failed: %w", err) + { + + c, err := cbg.ReadCid(cr) + if err != nil { + return xerrors.Errorf("failed to read cid field t.Head[i]: %w", err) + } + + t.Head[i] = c + + } } - t.Head[i] = c } // t.Length (uint64) (uint64) @@ -173,7 +188,7 @@ func (t *Response) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.ErrorMessage))); err != nil { return err } - if _, err := io.WriteString(w, string(t.ErrorMessage)); err != nil { + if _, err := cw.WriteString(string(t.ErrorMessage)); err != nil { return err } @@ -260,13 +275,32 @@ func (t *Response) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v BSTipSet - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + b, err := cr.ReadByte() + if err != nil { + return err + } + if b != cbg.CborNull[0] { + if err := cr.UnreadByte(); err != nil { + return err + } + t.Chain[i] = new(BSTipSet) + if err := t.Chain[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Chain[i] pointer: %w", err) + } + } + + } } - - t.Chain[i] = &v } return nil @@ -317,9 +351,11 @@ func (t *CompactedMessages) MarshalCBOR(w io.Writer) error { return err } for _, v := range v { - if err := cw.CborWriteHeader(cbg.MajUnsignedInt, uint64(v)); err != nil { + + if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(v)); err != nil { return err } + } } @@ -354,9 +390,11 @@ func (t *CompactedMessages) MarshalCBOR(w io.Writer) error { return err } for _, v := range v { - if err := cw.CborWriteHeader(cbg.MajUnsignedInt, uint64(v)); err != nil { + + if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(v)); err != nil { return err } + } } return nil @@ -405,13 +443,32 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v types.Message - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + b, err := cr.ReadByte() + if err != nil { + return err + } + if b != cbg.CborNull[0] { + if err := cr.UnreadByte(); err != nil { + return err + } + t.Bls[i] = new(types.Message) + if err := t.Bls[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Bls[i] pointer: %w", err) + } + } + + } } - - t.Bls[i] = &v } // t.BlsIncludes ([][]uint64) (slice) @@ -438,6 +495,9 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) (err error) { var maj byte var extra uint64 var err error + _ = maj + _ = extra + _ = err maj, extra, err = cr.ReadHeader() if err != nil { @@ -457,17 +517,27 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) (err error) { } for j := 0; j < int(extra); j++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - maj, val, err := cr.ReadHeader() - if err != nil { - return xerrors.Errorf("failed to read uint64 for t.BlsIncludes[i] slice: %w", err) + { + + maj, extra, err = cr.ReadHeader() + if err != nil { + return err + } + if maj != cbg.MajUnsignedInt { + return fmt.Errorf("wrong type for uint64 field") + } + t.BlsIncludes[i][j] = uint64(extra) + + } } - - if maj != cbg.MajUnsignedInt { - return xerrors.Errorf("value read for array t.BlsIncludes[i] was not a uint, instead got %d", maj) - } - - t.BlsIncludes[i][j] = uint64(val) } } @@ -493,13 +563,32 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v types.SignedMessage - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + b, err := cr.ReadByte() + if err != nil { + return err + } + if b != cbg.CborNull[0] { + if err := cr.UnreadByte(); err != nil { + return err + } + t.Secpk[i] = new(types.SignedMessage) + if err := t.Secpk[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Secpk[i] pointer: %w", err) + } + } + + } } - - t.Secpk[i] = &v } // t.SecpkIncludes ([][]uint64) (slice) @@ -526,6 +615,9 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) (err error) { var maj byte var extra uint64 var err error + _ = maj + _ = extra + _ = err maj, extra, err = cr.ReadHeader() if err != nil { @@ -545,17 +637,27 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) (err error) { } for j := 0; j < int(extra); j++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - maj, val, err := cr.ReadHeader() - if err != nil { - return xerrors.Errorf("failed to read uint64 for t.SecpkIncludes[i] slice: %w", err) + { + + maj, extra, err = cr.ReadHeader() + if err != nil { + return err + } + if maj != cbg.MajUnsignedInt { + return fmt.Errorf("wrong type for uint64 field") + } + t.SecpkIncludes[i][j] = uint64(extra) + + } } - - if maj != cbg.MajUnsignedInt { - return xerrors.Errorf("value read for array t.SecpkIncludes[i] was not a uint, instead got %d", maj) - } - - t.SecpkIncludes[i][j] = uint64(val) } } @@ -642,13 +744,32 @@ func (t *BSTipSet) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v types.BlockHeader - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + b, err := cr.ReadByte() + if err != nil { + return err + } + if b != cbg.CborNull[0] { + if err := cr.UnreadByte(); err != nil { + return err + } + t.Blocks[i] = new(types.BlockHeader) + if err := t.Blocks[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Blocks[i] pointer: %w", err) + } + } + + } } - - t.Blocks[i] = &v } // t.Messages (exchange.CompactedMessages) (struct) diff --git a/chain/gen/genesis/genesis.go b/chain/gen/genesis/genesis.go index 3e8848021..8ec657479 100644 --- a/chain/gen/genesis/genesis.go +++ b/chain/gen/genesis/genesis.go @@ -578,7 +578,7 @@ func MakeGenesisBlock(ctx context.Context, j journal.Journal, bs bstore.Blocksto } // setup Storage Miners - stateroot, err = SetupStorageMiners(ctx, cs, sys, stateroot, template.Miners, template.NetworkVersion) + stateroot, err = SetupStorageMiners(ctx, cs, sys, stateroot, template.Miners, template.NetworkVersion, false) if err != nil { return nil, xerrors.Errorf("setup miners failed: %w", err) } diff --git a/chain/gen/genesis/miners.go b/chain/gen/genesis/miners.go index 2d9942464..0bac282d2 100644 --- a/chain/gen/genesis/miners.go +++ b/chain/gen/genesis/miners.go @@ -79,7 +79,7 @@ func mkFakedSigSyscalls(base vm.SyscallBuilder) vm.SyscallBuilder { } // Note: Much of this is brittle, if the methodNum / param / return changes, it will break things -func SetupStorageMiners(ctx context.Context, cs *store.ChainStore, sys vm.SyscallBuilder, sroot cid.Cid, miners []genesis.Miner, nv network.Version) (cid.Cid, error) { +func SetupStorageMiners(ctx context.Context, cs *store.ChainStore, sys vm.SyscallBuilder, sroot cid.Cid, miners []genesis.Miner, nv network.Version, synthetic bool) (cid.Cid, error) { cst := cbor.NewCborStore(cs.StateBlockstore()) av, err := actorstypes.VersionForNetwork(nv) @@ -125,14 +125,18 @@ func SetupStorageMiners(ctx context.Context, cs *store.ChainStore, sys vm.Syscal sectorWeight []abi.StoragePower }, len(miners)) - maxPeriods := policy.GetMaxSectorExpirationExtension() / minertypes.WPoStProvingPeriod + maxLifetime, err := policy.GetMaxSectorExpirationExtension(nv) + if err != nil { + return cid.Undef, xerrors.Errorf("failed to get max extension: %w", err) + } + maxPeriods := maxLifetime / minertypes.WPoStProvingPeriod rawPow, qaPow := big.NewInt(0), big.NewInt(0) for i, m := range miners { // Create miner through power actor i := i m := m - spt, err := miner.SealProofTypeFromSectorSize(m.SectorSize, nv) + spt, err := miner.SealProofTypeFromSectorSize(m.SectorSize, nv, synthetic) if err != nil { return cid.Undef, err } diff --git a/chain/types/cbor_gen.go b/chain/types/cbor_gen.go index a9040613f..fe8e7e3fe 100644 --- a/chain/types/cbor_gen.go +++ b/chain/types/cbor_gen.go @@ -91,9 +91,11 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error { return err } for _, v := range t.Parents { - if err := cbg.WriteCid(w, v); err != nil { - return xerrors.Errorf("failed writing cid field t.Parents: %w", err) + + if err := cbg.WriteCid(cw, v); err != nil { + return xerrors.Errorf("failed to write cid field v: %w", err) } + } // t.ParentWeight (big.Int) (struct) @@ -249,13 +251,22 @@ func (t *BlockHeader) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v BeaconEntry - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + if err := t.BeaconEntries[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.BeaconEntries[i]: %w", err) + } + + } } - - t.BeaconEntries[i] = v } // t.WinPoStProof ([]proof.PoStProof) (slice) @@ -278,13 +289,22 @@ func (t *BlockHeader) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v proof.PoStProof - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + if err := t.WinPoStProof[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.WinPoStProof[i]: %w", err) + } + + } } - - t.WinPoStProof[i] = v } // t.Parents ([]cid.Cid) (slice) @@ -307,12 +327,25 @@ func (t *BlockHeader) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - c, err := cbg.ReadCid(cr) - if err != nil { - return xerrors.Errorf("reading cid field t.Parents failed: %w", err) + { + + c, err := cbg.ReadCid(cr) + if err != nil { + return xerrors.Errorf("failed to read cid field t.Parents[i]: %w", err) + } + + t.Parents[i] = c + + } } - t.Parents[i] = c } // t.ParentWeight (big.Int) (struct) @@ -1318,9 +1351,11 @@ func (t *BlockMsg) MarshalCBOR(w io.Writer) error { return err } for _, v := range t.BlsMessages { - if err := cbg.WriteCid(w, v); err != nil { - return xerrors.Errorf("failed writing cid field t.BlsMessages: %w", err) + + if err := cbg.WriteCid(cw, v); err != nil { + return xerrors.Errorf("failed to write cid field v: %w", err) } + } // t.SecpkMessages ([]cid.Cid) (slice) @@ -1332,9 +1367,11 @@ func (t *BlockMsg) MarshalCBOR(w io.Writer) error { return err } for _, v := range t.SecpkMessages { - if err := cbg.WriteCid(w, v); err != nil { - return xerrors.Errorf("failed writing cid field t.SecpkMessages: %w", err) + + if err := cbg.WriteCid(cw, v); err != nil { + return xerrors.Errorf("failed to write cid field v: %w", err) } + } return nil } @@ -1401,12 +1438,25 @@ func (t *BlockMsg) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - c, err := cbg.ReadCid(cr) - if err != nil { - return xerrors.Errorf("reading cid field t.BlsMessages failed: %w", err) + { + + c, err := cbg.ReadCid(cr) + if err != nil { + return xerrors.Errorf("failed to read cid field t.BlsMessages[i]: %w", err) + } + + t.BlsMessages[i] = c + + } } - t.BlsMessages[i] = c } // t.SecpkMessages ([]cid.Cid) (slice) @@ -1429,12 +1479,25 @@ func (t *BlockMsg) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - c, err := cbg.ReadCid(cr) - if err != nil { - return xerrors.Errorf("reading cid field t.SecpkMessages failed: %w", err) + { + + c, err := cbg.ReadCid(cr) + if err != nil { + return xerrors.Errorf("failed to read cid field t.SecpkMessages[i]: %w", err) + } + + t.SecpkMessages[i] = c + + } } - t.SecpkMessages[i] = c } return nil @@ -1463,9 +1526,11 @@ func (t *ExpTipSet) MarshalCBOR(w io.Writer) error { return err } for _, v := range t.Cids { - if err := cbg.WriteCid(w, v); err != nil { - return xerrors.Errorf("failed writing cid field t.Cids: %w", err) + + if err := cbg.WriteCid(cw, v); err != nil { + return xerrors.Errorf("failed to write cid field v: %w", err) } + } // t.Blocks ([]*types.BlockHeader) (slice) @@ -1538,12 +1603,25 @@ func (t *ExpTipSet) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - c, err := cbg.ReadCid(cr) - if err != nil { - return xerrors.Errorf("reading cid field t.Cids failed: %w", err) + { + + c, err := cbg.ReadCid(cr) + if err != nil { + return xerrors.Errorf("failed to read cid field t.Cids[i]: %w", err) + } + + t.Cids[i] = c + + } } - t.Cids[i] = c } // t.Blocks ([]*types.BlockHeader) (slice) @@ -1566,13 +1644,32 @@ func (t *ExpTipSet) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v BlockHeader - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + b, err := cr.ReadByte() + if err != nil { + return err + } + if b != cbg.CborNull[0] { + if err := cr.UnreadByte(); err != nil { + return err + } + t.Blocks[i] = new(BlockHeader) + if err := t.Blocks[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Blocks[i] pointer: %w", err) + } + } + + } } - - t.Blocks[i] = &v } // t.Height (abi.ChainEpoch) (int64) @@ -1933,13 +2030,22 @@ func (t *Event) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v EventEntry - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + if err := t.Entries[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Entries[i]: %w", err) + } + + } } - - t.Entries[i] = v } return nil @@ -1972,7 +2078,7 @@ func (t *EventEntry) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Key))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Key)); err != nil { + if _, err := cw.WriteString(string(t.Key)); err != nil { return err } @@ -2103,7 +2209,7 @@ func (t *GasTrace) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Name))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Name)); err != nil { + if _, err := cw.WriteString(string(t.Name)); err != nil { return err } @@ -2756,13 +2862,32 @@ func (t *ExecutionTrace) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v GasTrace - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + b, err := cr.ReadByte() + if err != nil { + return err + } + if b != cbg.CborNull[0] { + if err := cr.UnreadByte(); err != nil { + return err + } + t.GasCharges[i] = new(GasTrace) + if err := t.GasCharges[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.GasCharges[i] pointer: %w", err) + } + } + + } } - - t.GasCharges[i] = &v } // t.Subcalls ([]types.ExecutionTrace) (slice) @@ -2785,13 +2910,22 @@ func (t *ExecutionTrace) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v ExecutionTrace - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + if err := t.Subcalls[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Subcalls[i]: %w", err) + } + + } } - - t.Subcalls[i] = v } return nil diff --git a/cmd/lotus-bench/main.go b/cmd/lotus-bench/main.go index f9cbe0d8b..1db788498 100644 --- a/cmd/lotus-bench/main.go +++ b/cmd/lotus-bench/main.go @@ -553,7 +553,7 @@ var sealBenchCmd = &cli.Command{ if !skipc2 { log.Info("generating winning post candidates") - wipt, err := spt(sectorSize).RegisteredWinningPoStProof() + wipt, err := spt(sectorSize, false).RegisteredWinningPoStProof() if err != nil { return err } @@ -771,7 +771,7 @@ func runSeals(sb *ffiwrapper.Sealer, sbfs *basicfs.Provider, numSectors int, par Miner: mid, Number: i, }, - ProofType: spt(sectorSize), + ProofType: spt(sectorSize, false), } start := time.Now() @@ -803,7 +803,7 @@ func runSeals(sb *ffiwrapper.Sealer, sbfs *basicfs.Provider, numSectors int, par Miner: mid, Number: i, }, - ProofType: spt(sectorSize), + ProofType: spt(sectorSize, false), } start := time.Now() @@ -1014,7 +1014,7 @@ var proveCmd = &cli.Command{ Miner: abi.ActorID(mid), Number: abi.SectorNumber(c2in.SectorNum), }, - ProofType: spt(abi.SectorSize(c2in.SectorSize)), + ProofType: spt(abi.SectorSize(c2in.SectorSize), false), } fmt.Printf("----\nstart proof computation\n") @@ -1045,8 +1045,8 @@ func bps(sectorSize abi.SectorSize, sectorNum int, d time.Duration) string { return types.SizeStr(types.BigInt{Int: bps}) + "/s" } -func spt(ssize abi.SectorSize) abi.RegisteredSealProof { - spt, err := miner.SealProofTypeFromSectorSize(ssize, build.TestNetworkVersion) +func spt(ssize abi.SectorSize, synth bool) abi.RegisteredSealProof { + spt, err := miner.SealProofTypeFromSectorSize(ssize, build.TestNetworkVersion, synth) if err != nil { panic(err) } diff --git a/cmd/lotus-bench/simple.go b/cmd/lotus-bench/simple.go index 6e1dea0db..8ae5713ad 100644 --- a/cmd/lotus-bench/simple.go +++ b/cmd/lotus-bench/simple.go @@ -186,7 +186,7 @@ var simpleAddPiece = &cli.Command{ Miner: mid, Number: 1, }, - ProofType: spt(sectorSize), + ProofType: spt(sectorSize, false), } data, err := os.Open(cctx.Args().First()) @@ -223,6 +223,10 @@ var simplePreCommit1 = &cli.Command{ Usage: "pass miner address (only necessary if using existing sectorbuilder)", Value: "t01000", }, + &cli.BoolFlag{ + Name: "synthetic", + Usage: "generate synthetic PoRep proofs", + }, }, ArgsUsage: "[unsealed] [sealed] [cache] [[piece cid] [piece size]]...", Action: func(cctx *cli.Context) error { @@ -259,7 +263,7 @@ var simplePreCommit1 = &cli.Command{ Miner: mid, Number: 1, }, - ProofType: spt(sectorSize), + ProofType: spt(sectorSize, cctx.Bool("synthetic")), } var ticket [32]byte // all zero @@ -297,6 +301,10 @@ var simplePreCommit2 = &cli.Command{ Usage: "pass miner address (only necessary if using existing sectorbuilder)", Value: "t01000", }, + &cli.BoolFlag{ + Name: "synthetic", + Usage: "generate synthetic PoRep proofs", + }, }, ArgsUsage: "[sealed] [cache] [pc1 out]", Action: func(cctx *cli.Context) error { @@ -337,7 +345,7 @@ var simplePreCommit2 = &cli.Command{ Miner: mid, Number: 1, }, - ProofType: spt(sectorSize), + ProofType: spt(sectorSize, cctx.Bool("synthetic")), } start := time.Now() @@ -368,6 +376,10 @@ var simpleCommit1 = &cli.Command{ Usage: "pass miner address (only necessary if using existing sectorbuilder)", Value: "t01000", }, + &cli.BoolFlag{ + Name: "synthetic", + Usage: "generate synthetic PoRep proofs", + }, }, ArgsUsage: "[sealed] [cache] [comm D] [comm R] [c1out.json]", Action: func(cctx *cli.Context) error { @@ -403,7 +415,7 @@ var simpleCommit1 = &cli.Command{ Miner: mid, Number: 1, }, - ProofType: spt(sectorSize), + ProofType: spt(sectorSize, cctx.Bool("synthetic")), } start := time.Now() @@ -469,6 +481,10 @@ var simpleCommit2 = &cli.Command{ Usage: "pass miner address (only necessary if using existing sectorbuilder)", Value: "t01000", }, + &cli.BoolFlag{ + Name: "synthetic", + Usage: "generate synthetic PoRep proofs", + }, }, Action: func(c *cli.Context) error { if c.Bool("no-gpu") { @@ -515,7 +531,7 @@ var simpleCommit2 = &cli.Command{ Miner: abi.ActorID(mid), Number: abi.SectorNumber(c2in.SectorNum), }, - ProofType: spt(abi.SectorSize(c2in.SectorSize)), + ProofType: spt(abi.SectorSize(c2in.SectorSize), c.Bool("synthetic")), } start := time.Now() @@ -573,7 +589,7 @@ var simpleWindowPost = &cli.Command{ return xerrors.Errorf("parse commr: %w", err) } - wpt, err := spt(sectorSize).RegisteredWindowPoStProof() + wpt, err := spt(sectorSize, false).RegisteredWindowPoStProof() if err != nil { return err } @@ -593,7 +609,7 @@ var simpleWindowPost = &cli.Command{ vp, err := ffi.GenerateSingleVanillaProof(ffi.PrivateSectorInfo{ SectorInfo: prf.SectorInfo{ - SealProof: spt(sectorSize), + SealProof: spt(sectorSize, false), SectorNumber: sn, SealedCID: commr, }, @@ -660,7 +676,7 @@ var simpleWinningPost = &cli.Command{ return xerrors.Errorf("parse commr: %w", err) } - wpt, err := spt(sectorSize).RegisteredWinningPoStProof() + wpt, err := spt(sectorSize, false).RegisteredWinningPoStProof() if err != nil { return err } @@ -680,7 +696,7 @@ var simpleWinningPost = &cli.Command{ vp, err := ffi.GenerateSingleVanillaProof(ffi.PrivateSectorInfo{ SectorInfo: prf.SectorInfo{ - SealProof: spt(sectorSize), + SealProof: spt(sectorSize, false), SectorNumber: sn, SealedCID: commr, }, @@ -763,7 +779,7 @@ var simpleReplicaUpdate = &cli.Command{ Miner: mid, Number: 1, }, - ProofType: spt(sectorSize), + ProofType: spt(sectorSize, false), } start := time.Now() @@ -831,7 +847,7 @@ var simpleProveReplicaUpdate1 = &cli.Command{ Miner: mid, Number: 1, }, - ProofType: spt(sectorSize), + ProofType: spt(sectorSize, false), } start := time.Now() @@ -918,7 +934,7 @@ var simpleProveReplicaUpdate2 = &cli.Command{ Miner: mid, Number: 1, }, - ProofType: spt(sectorSize), + ProofType: spt(sectorSize, false), } start := time.Now() diff --git a/cmd/lotus-miner/actor.go b/cmd/lotus-miner/actor.go index f0c52278a..320c4e6de 100644 --- a/cmd/lotus-miner/actor.go +++ b/cmd/lotus-miner/actor.go @@ -21,6 +21,7 @@ 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" + minerV12 "github.com/filecoin-project/go-state-types/builtin/v12/miner" "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/network" @@ -49,6 +50,7 @@ var actorCmd = &cli.Command{ actorProposeChangeWorker, actorConfirmChangeWorker, actorCompactAllocatedCmd, + actorMovePartitionsCmd, actorProposeChangeBeneficiary, actorConfirmChangeBeneficiary, }, @@ -1286,13 +1288,149 @@ var actorConfirmChangeBeneficiary = &cli.Command{ }, } +var actorMovePartitionsCmd = &cli.Command{ + Name: "move-partitions", + Usage: "move deadline of specified partitions from one to another", + Flags: []cli.Flag{ + &cli.Int64SliceFlag{ + Name: "partition-indices", + Usage: "Indices of partitions to update, separated by comma", + }, + &cli.Uint64Flag{ + Name: "orig-deadline", + Usage: "Deadline to move partition from", + }, + &cli.Uint64Flag{ + Name: "dest-deadline", + Usage: "Deadline to move partition to", + }, + &cli.BoolFlag{ + Name: "really-do-it", + Usage: "Actually send transaction performing the action", + Value: false, + }, + }, + Action: func(cctx *cli.Context) error { + if !cctx.Bool("really-do-it") { + fmt.Println("Pass --really-do-it to actually execute this action") + return nil + } + + if cctx.Args().Present() { + return fmt.Errorf("please use flags to provide arguments") + } + + ctx := lcli.ReqContext(cctx) + + minerApi, closer, err := lcli.GetStorageMinerAPI(cctx) + if err != nil { + return err + } + defer closer() + + maddr, err := minerApi.ActorAddress(ctx) + if err != nil { + return err + } + + fmt.Printf("Miner: %s\n", color.BlueString("%s", maddr)) + + fullNodeApi, acloser, err := lcli.GetFullNodeAPI(cctx) + if err != nil { + return err + } + defer acloser() + + minfo, err := fullNodeApi.StateMinerInfo(ctx, maddr, types.EmptyTSK) + if err != nil { + return err + } + + origDeadline := cctx.Uint64("orig-deadline") + if origDeadline > miner.WPoStPeriodDeadlines { + return fmt.Errorf("orig-deadline %d out of range", origDeadline) + } + destDeadline := cctx.Uint64("dest-deadline") + if destDeadline > miner.WPoStPeriodDeadlines { + return fmt.Errorf("dest-deadline %d out of range", destDeadline) + } + if origDeadline == destDeadline { + return fmt.Errorf("dest-desdline cannot be the same as orig-deadline") + } + + partitions := cctx.Int64Slice("partition-indices") + if len(partitions) == 0 { + return fmt.Errorf("must include at least one partition to move") + } + + curPartitions, err := fullNodeApi.StateMinerPartitions(ctx, maddr, origDeadline, types.EmptyTSK) + if err != nil { + return fmt.Errorf("getting partitions for deadline %d: %w", origDeadline, err) + } + if len(partitions) > len(curPartitions) { + return fmt.Errorf("partition size(%d) cannot be bigger than current partition size(%d) for deadline %d", len(partitions), len(curPartitions), origDeadline) + } + + fmt.Printf("Moving %d paritions\n", len(partitions)) + + partitionsBf := bitfield.New() + for _, partition := range partitions { + if partition >= int64(len(curPartitions)) { + return fmt.Errorf("partition index(%d) doesn't exist", partition) + } + partitionsBf.Set(uint64(partition)) + } + + params := minerV12.MovePartitionsParams{ + OrigDeadline: origDeadline, + DestDeadline: destDeadline, + Partitions: partitionsBf, + } + + serializedParams, err := actors.SerializeParams(¶ms) + if err != nil { + return fmt.Errorf("serializing params: %w", err) + } + + smsg, err := fullNodeApi.MpoolPushMessage(ctx, &types.Message{ + From: minfo.Worker, + To: maddr, + Method: builtin.MethodsMiner.MovePartitions, + Value: big.Zero(), + Params: serializedParams, + }, nil) + if err != nil { + return fmt.Errorf("mpool push: %w", err) + } + + fmt.Println("MovePartitions Message CID:", smsg.Cid()) + + // wait for it to get mined into a block + fmt.Println("Waiting for block confirmation...") + wait, err := fullNodeApi.StateWaitMsg(ctx, smsg.Cid(), build.MessageConfidence) + if err != nil { + return err + } + + // check it executed successfully + if wait.Receipt.ExitCode.IsError() { + fmt.Println("Moving partitions failed!") + return err + } + + fmt.Println("Move partition confirmed") + + return nil + }, +} + var actorCompactAllocatedCmd = &cli.Command{ Name: "compact-allocated", Usage: "compact allocated sectors bitfield", Flags: []cli.Flag{ &cli.Uint64Flag{ Name: "mask-last-offset", - Usage: "Mask sector IDs from 0 to 'higest_allocated - offset'", + Usage: "Mask sector IDs from 0 to 'highest_allocated - offset'", }, &cli.Uint64Flag{ Name: "mask-upto-n", diff --git a/cmd/lotus-miner/precommits-info.go b/cmd/lotus-miner/precommits-info.go index 0ce757537..3f9e8c927 100644 --- a/cmd/lotus-miner/precommits-info.go +++ b/cmd/lotus-miner/precommits-info.go @@ -7,7 +7,6 @@ import ( cbor "github.com/ipfs/go-ipld-cbor" "github.com/urfave/cli/v2" - minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/specs-actors/v7/actors/util/adt" "github.com/filecoin-project/lotus/blockstore" @@ -39,8 +38,8 @@ var sectorPreCommitsCmd = &cli.Command{ if err != nil { return err } - preCommitSector := make([]minertypes.SectorPreCommitOnChainInfo, 0) - err = mst.ForEachPrecommittedSector(func(info minertypes.SectorPreCommitOnChainInfo) error { + preCommitSector := make([]miner.SectorPreCommitOnChainInfo, 0) + err = mst.ForEachPrecommittedSector(func(info miner.SectorPreCommitOnChainInfo) error { preCommitSector = append(preCommitSector, info) return err }) diff --git a/cmd/lotus-miner/sectors.go b/cmd/lotus-miner/sectors.go index 96e132bbd..07cc2e795 100644 --- a/cmd/lotus-miner/sectors.go +++ b/cmd/lotus-miner/sectors.go @@ -24,14 +24,13 @@ 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" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/blockstore" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" - lminer "github.com/filecoin-project/lotus/chain/actors/builtin/miner" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/actors/policy" "github.com/filecoin-project/lotus/chain/types" @@ -193,14 +192,14 @@ var sectorsStatusCmd = &cli.Command{ } tbs := blockstore.NewTieredBstore(blockstore.NewAPIBlockstore(fullApi), blockstore.NewMemory()) - mas, err := lminer.Load(adt.WrapStore(ctx, cbor.NewCborStore(tbs)), mact) + mas, err := miner.Load(adt.WrapStore(ctx, cbor.NewCborStore(tbs)), mact) if err != nil { return err } errFound := errors.New("found") - if err := mas.ForEachDeadline(func(dlIdx uint64, dl lminer.Deadline) error { - return dl.ForEachPartition(func(partIdx uint64, part lminer.Partition) error { + if err := mas.ForEachDeadline(func(dlIdx uint64, dl miner.Deadline) error { + return dl.ForEachPartition(func(partIdx uint64, part miner.Partition) error { pas, err := part.AllSectors() if err != nil { return err @@ -847,7 +846,12 @@ var sectorsCheckExpireCmd = &cli.Command{ for _, sector := range sectors { MaxExpiration := sector.Activation + policy.GetSectorMaxLifetime(sector.SealProof, nv) - MaxExtendNow := currEpoch + policy.GetMaxSectorExpirationExtension() + maxExtension, err := policy.GetMaxSectorExpirationExtension(nv) + if err != nil { + return xerrors.Errorf("failed to get max extension: %w", err) + } + + MaxExtendNow := currEpoch + maxExtension if MaxExtendNow > MaxExpiration { MaxExtendNow = MaxExpiration @@ -1075,22 +1079,22 @@ var sectorsExtendCmd = &cli.Command{ tbs := blockstore.NewTieredBstore(blockstore.NewAPIBlockstore(fullApi), blockstore.NewMemory()) adtStore := adt.WrapStore(ctx, cbor.NewCborStore(tbs)) - mas, err := lminer.Load(adtStore, mact) + mas, err := miner.Load(adtStore, mact) if err != nil { return err } - activeSectorsLocation := make(map[abi.SectorNumber]*lminer.SectorLocation, len(activeSet)) + activeSectorsLocation := make(map[abi.SectorNumber]*miner.SectorLocation, len(activeSet)) - if err := mas.ForEachDeadline(func(dlIdx uint64, dl lminer.Deadline) error { - return dl.ForEachPartition(func(partIdx uint64, part lminer.Partition) error { + if err := mas.ForEachDeadline(func(dlIdx uint64, dl miner.Deadline) error { + return dl.ForEachPartition(func(partIdx uint64, part miner.Partition) error { pas, err := part.ActiveSectors() if err != nil { return err } return pas.ForEach(func(i uint64) error { - activeSectorsLocation[abi.SectorNumber(i)] = &lminer.SectorLocation{ + activeSectorsLocation[abi.SectorNumber(i)] = &miner.SectorLocation{ Deadline: dlIdx, Partition: partIdx, } @@ -1177,7 +1181,7 @@ var sectorsExtendCmd = &cli.Command{ return diff <= abi.ChainEpoch(cctx.Int64("tolerance")) } - extensions := map[lminer.SectorLocation]map[abi.ChainEpoch][]abi.SectorNumber{} + extensions := map[miner.SectorLocation]map[abi.ChainEpoch][]abi.SectorNumber{} for _, si := range sis { extension := abi.ChainEpoch(cctx.Int64("extension")) newExp := si.Expiration + extension @@ -1186,7 +1190,12 @@ var sectorsExtendCmd = &cli.Command{ newExp = abi.ChainEpoch(cctx.Int64("new-expiration")) } - maxExtendNow := currEpoch + policy.GetMaxSectorExpirationExtension() + maxExtension, err := policy.GetMaxSectorExpirationExtension(nv) + if err != nil { + return xerrors.Errorf("failed to get max extension: %w", err) + } + + maxExtendNow := currEpoch + maxExtension if newExp > maxExtendNow { newExp = maxExtendNow } @@ -1741,7 +1750,7 @@ var sectorsCapacityCollateralCmd = &cli.Command{ return err } - spt, err := lminer.PreferredSealProofTypeFromWindowPoStType(nv, mi.WindowPoStProofType) + spt, err := miner.PreferredSealProofTypeFromWindowPoStType(nv, mi.WindowPoStProofType, false) if err != nil { return err } @@ -1756,7 +1765,12 @@ var sectorsCapacityCollateralCmd = &cli.Command{ return err } - pci.Expiration = policy.GetMaxSectorExpirationExtension() + h.Height() + maxExtension, err := policy.GetMaxSectorExpirationExtension(nv) + if err != nil { + return xerrors.Errorf("failed to get max extension: %w", err) + } + + pci.Expiration = maxExtension + h.Height() } pc, err := nApi.StateMinerInitialPledgeCollateral(ctx, maddr, pci, types.EmptyTSK) @@ -1910,7 +1924,7 @@ var sectorsExpiredCmd = &cli.Command{ } tbs := blockstore.NewTieredBstore(blockstore.NewAPIBlockstore(fullApi), blockstore.NewMemory()) - mas, err := lminer.Load(adt.WrapStore(ctx, cbor.NewCborStore(tbs)), mact) + mas, err := miner.Load(adt.WrapStore(ctx, cbor.NewCborStore(tbs)), mact) if err != nil { return err } @@ -1926,8 +1940,8 @@ var sectorsExpiredCmd = &cli.Command{ return xerrors.Errorf("intersecting bitfields: %w", err) } - if err := mas.ForEachDeadline(func(dlIdx uint64, dl lminer.Deadline) error { - return dl.ForEachPartition(func(partIdx uint64, part lminer.Partition) error { + if err := mas.ForEachDeadline(func(dlIdx uint64, dl miner.Deadline) error { + return dl.ForEachPartition(func(partIdx uint64, part miner.Partition) error { live, err := part.LiveSectors() if err != nil { return err diff --git a/cmd/lotus-seed/main.go b/cmd/lotus-seed/main.go index 863a508f2..d362804c9 100644 --- a/cmd/lotus-seed/main.go +++ b/cmd/lotus-seed/main.go @@ -137,7 +137,9 @@ var preSealCmd = &cli.Command{ nv = network.Version(c.Uint64("network-version")) } - spt, err := miner.SealProofTypeFromSectorSize(sectorSize, nv) + var synthetic = false // there's little reason to have this for a seed. + + spt, err := miner.SealProofTypeFromSectorSize(sectorSize, nv, synthetic) if err != nil { return err } diff --git a/cmd/lotus-shed/main.go b/cmd/lotus-shed/main.go index aab3d1ef3..a5b66a096 100644 --- a/cmd/lotus-shed/main.go +++ b/cmd/lotus-shed/main.go @@ -5,6 +5,7 @@ import ( "fmt" "os" "os/signal" + "runtime/pprof" logging "github.com/ipfs/go-log/v2" "github.com/urfave/cli/v2" @@ -116,10 +117,31 @@ func main() { Name: "log-level", Value: "info", }, + &cli.StringFlag{ + Name: "pprof", + Usage: "specify name of file for writing cpu profile to", + }, }, Before: func(cctx *cli.Context) error { + if prof := cctx.String("pprof"); prof != "" { + profile, err := os.Create(prof) + if err != nil { + return err + } + + if err := pprof.StartCPUProfile(profile); err != nil { + return err + } + } + return logging.SetLogLevel("lotus-shed", cctx.String("log-level")) }, + After: func(cctx *cli.Context) error { + if prof := cctx.String("pprof"); prof != "" { + pprof.StopCPUProfile() + } + return nil + }, } // terminate early on ctrl+c diff --git a/cmd/lotus-shed/migrations.go b/cmd/lotus-shed/migrations.go index 82a1afddf..96e4747b7 100644 --- a/cmd/lotus-shed/migrations.go +++ b/cmd/lotus-shed/migrations.go @@ -21,6 +21,7 @@ import ( "github.com/filecoin-project/go-state-types/builtin" v10 "github.com/filecoin-project/go-state-types/builtin/v10" v11 "github.com/filecoin-project/go-state-types/builtin/v11" + v12 "github.com/filecoin-project/go-state-types/builtin/v12" market8 "github.com/filecoin-project/go-state-types/builtin/v8/market" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" v9 "github.com/filecoin-project/go-state-types/builtin/v9" @@ -243,6 +244,8 @@ func getMigrationFuncsForNetwork(nv network.Version) (UpgradeActorsFunc, PreUpgr return filcns.UpgradeActorsV10, filcns.PreUpgradeActorsV10, checkNv18Invariants, nil case network.Version19: return filcns.UpgradeActorsV11, filcns.PreUpgradeActorsV11, checkNv19Invariants, nil + case network.Version21: + return filcns.UpgradeActorsV12, filcns.PreUpgradeActorsV12, checkNv21Invariants, nil default: return nil, nil, nil, xerrors.Errorf("migration not implemented for nv%d", nv) } @@ -252,6 +255,38 @@ type UpgradeActorsFunc = func(context.Context, *stmgr.StateManager, stmgr.Migrat type PreUpgradeActorsFunc = func(context.Context, *stmgr.StateManager, stmgr.MigrationCache, cid.Cid, abi.ChainEpoch, *types.TipSet) error type CheckInvariantsFunc = func(context.Context, cid.Cid, cid.Cid, blockstore.Blockstore, abi.ChainEpoch) error +func checkNv21Invariants(ctx context.Context, oldStateRootCid cid.Cid, newStateRootCid cid.Cid, bs blockstore.Blockstore, epoch abi.ChainEpoch) error { + + actorStore := store.ActorStore(ctx, bs) + startTime := time.Now() + + // Load the new state root. + var newStateRoot types.StateRoot + if err := actorStore.Get(ctx, newStateRootCid, &newStateRoot); err != nil { + return xerrors.Errorf("failed to decode state root: %w", err) + } + + actorCodeCids, err := actors.GetActorCodeIDs(actorstypes.Version12) + if err != nil { + return err + } + newActorTree, err := builtin.LoadTree(actorStore, newStateRoot.Actors) + if err != nil { + return err + } + messages, err := v12.CheckStateInvariants(newActorTree, epoch, actorCodeCids) + if err != nil { + return xerrors.Errorf("checking state invariants: %w", err) + } + + for _, message := range messages.Messages() { + fmt.Println("got the following error: ", message) + } + + fmt.Println("completed invariant checks, took ", time.Since(startTime)) + + return nil +} func checkNv19Invariants(ctx context.Context, oldStateRootCid cid.Cid, newStateRootCid cid.Cid, bs blockstore.Blockstore, epoch abi.ChainEpoch) error { actorStore := store.ActorStore(ctx, bs) diff --git a/cmd/lotus-shed/shedgen/cbor_gen.go b/cmd/lotus-shed/shedgen/cbor_gen.go index a04d52c8e..f2a79fe7d 100644 --- a/cmd/lotus-shed/shedgen/cbor_gen.go +++ b/cmd/lotus-shed/shedgen/cbor_gen.go @@ -38,7 +38,7 @@ func (t *CarbNode) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Sub"))); err != nil { return err } - if _, err := io.WriteString(w, string("Sub")); err != nil { + if _, err := cw.WriteString(string("Sub")); err != nil { return err } @@ -50,9 +50,11 @@ func (t *CarbNode) MarshalCBOR(w io.Writer) error { return err } for _, v := range t.Sub { - if err := cbg.WriteCid(w, v); err != nil { - return xerrors.Errorf("failed writing cid field t.Sub: %w", err) + + if err := cbg.WriteCid(cw, v); err != nil { + return xerrors.Errorf("failed to write cid field v: %w", err) } + } return nil } @@ -116,12 +118,25 @@ func (t *CarbNode) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - c, err := cbg.ReadCid(cr) - if err != nil { - return xerrors.Errorf("reading cid field t.Sub failed: %w", err) + { + + c, err := cbg.ReadCid(cr) + if err != nil { + return xerrors.Errorf("failed to read cid field t.Sub[i]: %w", err) + } + + t.Sub[i] = c + + } } - t.Sub[i] = c } default: diff --git a/cmd/lotus-sim/simulation/stages/precommit_stage.go b/cmd/lotus-sim/simulation/stages/precommit_stage.go index 8f82d8988..1a89413d7 100644 --- a/cmd/lotus-sim/simulation/stages/precommit_stage.go +++ b/cmd/lotus-sim/simulation/stages/precommit_stage.go @@ -165,7 +165,7 @@ func (stage *PreCommitStage) packMiner( // Generate pre-commits. sealType, err := miner.PreferredSealProofTypeFromWindowPoStType( - nv, minerInfo.WindowPoStProofType, + nv, minerInfo.WindowPoStProofType, false, ) if err != nil { return 0, false, err @@ -176,7 +176,12 @@ func (stage *PreCommitStage) packMiner( return 0, false, err } - expiration := epoch + policy.GetMaxSectorExpirationExtension() + maxExtension, err := policy.GetMaxSectorExpirationExtension(nv) + if err != nil { + return 0, false, xerrors.Errorf("failed to get max extension: %w", err) + } + + expiration := epoch + maxExtension infos := make([]minertypes.PreCommitSectorParams, len(sectorNos)) for i, sno := range sectorNos { infos[i] = minertypes.PreCommitSectorParams{ diff --git a/conformance/chaos/cbor_gen.go b/conformance/chaos/cbor_gen.go index 5da16e16f..d74ae0946 100644 --- a/conformance/chaos/cbor_gen.go +++ b/conformance/chaos/cbor_gen.go @@ -44,7 +44,7 @@ func (t *State) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Value))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Value)); err != nil { + if _, err := cw.WriteString(string(t.Value)); err != nil { return err } @@ -117,13 +117,32 @@ func (t *State) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v UnmarshallableCBOR - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + b, err := cr.ReadByte() + if err != nil { + return err + } + if b != cbg.CborNull[0] { + if err := cr.UnreadByte(); err != nil { + return err + } + t.Unmarshallable[i] = new(UnmarshallableCBOR) + if err := t.Unmarshallable[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Unmarshallable[i] pointer: %w", err) + } + } + + } } - - t.Unmarshallable[i] = &v } return nil @@ -177,9 +196,11 @@ func (t *CallerValidationArgs) MarshalCBOR(w io.Writer) error { return err } for _, v := range t.Types { - if err := cbg.WriteCid(w, v); err != nil { - return xerrors.Errorf("failed writing cid field t.Types: %w", err) + + if err := cbg.WriteCid(cw, v); err != nil { + return xerrors.Errorf("failed to write cid field v: %w", err) } + } return nil } @@ -252,13 +273,22 @@ func (t *CallerValidationArgs) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v address.Address - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + if err := t.Addrs[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Addrs[i]: %w", err) + } + + } } - - t.Addrs[i] = v } // t.Types ([]cid.Cid) (slice) @@ -281,12 +311,25 @@ func (t *CallerValidationArgs) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - c, err := cbg.ReadCid(cr) - if err != nil { - return xerrors.Errorf("reading cid field t.Types failed: %w", err) + { + + c, err := cbg.ReadCid(cr) + if err != nil { + return xerrors.Errorf("failed to read cid field t.Types[i]: %w", err) + } + + t.Types[i] = c + + } } - t.Types[i] = c } return nil @@ -746,7 +789,7 @@ func (t *MutateStateArgs) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Value))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Value)); err != nil { + if _, err := cw.WriteString(string(t.Value)); err != nil { return err } @@ -857,7 +900,7 @@ func (t *AbortWithArgs) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Message))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Message)); err != nil { + if _, err := cw.WriteString(string(t.Message)); err != nil { return err } diff --git a/documentation/en/api-v0-methods-miner.md b/documentation/en/api-v0-methods-miner.md index 04c037bc5..57070caed 100644 --- a/documentation/en/api-v0-methods-miner.md +++ b/documentation/en/api-v0-methods-miner.md @@ -4213,6 +4213,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1610612736, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10737418240, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 32212254720, + "MaxMemory": 103079215104, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 34359738368, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 64424509440, + "MaxMemory": 128849018880, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 68719476736, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1610612736, @@ -4305,6 +4350,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10737418240, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 34359738368, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 68719476736, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 2048, "MaxMemory": 2048, @@ -4397,6 +4487,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 8589934592, + "MaxMemory": 8589934592, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1073741824, @@ -4489,6 +4624,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1073741824, @@ -4581,6 +4761,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1610612736, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10737418240, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 32212254720, + "MaxMemory": 161061273600, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 34359738368, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 64424509440, + "MaxMemory": 204010946560, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 68719476736, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1610612736, @@ -4673,6 +4898,51 @@ Response: "BaseMinMemory": 1073741824, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 4294967296, "MaxMemory": 4294967296, @@ -4765,6 +5035,51 @@ Response: "BaseMinMemory": 0, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 1048576, + "MaxMemory": 1048576, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 0, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 1048576, + "MaxMemory": 1048576, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 0, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1048576, + "MaxMemory": 1048576, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 0, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 1048576, + "MaxMemory": 1048576, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 0, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 1048576, + "MaxMemory": 1048576, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 0, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1048576, "MaxMemory": 1048576, @@ -4857,6 +5172,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 805306368, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1048576, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 60129542144, + "MaxMemory": 68719476736, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10485760, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 120259084288, + "MaxMemory": 137438953472, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10485760, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 805306368, "MaxMemory": 1073741824, @@ -4949,6 +5309,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 0, + "MaxParallelism": -1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 0, + "MaxParallelism": -1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1610612736, + "GPUUtilization": 0, + "MaxParallelism": -1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 16106127360, + "MaxMemory": 16106127360, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 32212254720, + "MaxMemory": 32212254720, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1610612736, @@ -5041,6 +5446,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1073741824, @@ -5133,6 +5583,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1610612736, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10737418240, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 32212254720, + "MaxMemory": 161061273600, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 34359738368, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 64424509440, + "MaxMemory": 204010946560, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 68719476736, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1610612736, @@ -5225,6 +5720,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 8589934592, + "MaxMemory": 8589934592, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1073741824, @@ -5317,6 +5857,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 8589934592, + "MaxMemory": 8589934592, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1073741824, @@ -5409,6 +5994,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 805306368, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1048576, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 60129542144, + "MaxMemory": 68719476736, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10485760, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 120259084288, + "MaxMemory": 137438953472, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10485760, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 805306368, "MaxMemory": 1073741824, diff --git a/documentation/en/api-v0-methods-worker.md b/documentation/en/api-v0-methods-worker.md index d7d0f092e..1c2100c9c 100644 --- a/documentation/en/api-v0-methods-worker.md +++ b/documentation/en/api-v0-methods-worker.md @@ -138,6 +138,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1610612736, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10737418240, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 32212254720, + "MaxMemory": 103079215104, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 34359738368, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 64424509440, + "MaxMemory": 128849018880, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 68719476736, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1610612736, @@ -230,6 +275,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10737418240, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 34359738368, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 68719476736, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 2048, "MaxMemory": 2048, @@ -322,6 +412,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 8589934592, + "MaxMemory": 8589934592, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1073741824, @@ -414,6 +549,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1073741824, @@ -506,6 +686,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1610612736, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10737418240, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 32212254720, + "MaxMemory": 161061273600, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 34359738368, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 64424509440, + "MaxMemory": 204010946560, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 68719476736, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1610612736, @@ -598,6 +823,51 @@ Response: "BaseMinMemory": 1073741824, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 4294967296, "MaxMemory": 4294967296, @@ -690,6 +960,51 @@ Response: "BaseMinMemory": 0, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 1048576, + "MaxMemory": 1048576, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 0, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 1048576, + "MaxMemory": 1048576, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 0, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1048576, + "MaxMemory": 1048576, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 0, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 1048576, + "MaxMemory": 1048576, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 0, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 1048576, + "MaxMemory": 1048576, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 0, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1048576, "MaxMemory": 1048576, @@ -782,6 +1097,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 805306368, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1048576, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 60129542144, + "MaxMemory": 68719476736, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10485760, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 120259084288, + "MaxMemory": 137438953472, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10485760, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 805306368, "MaxMemory": 1073741824, @@ -874,6 +1234,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 0, + "MaxParallelism": -1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 0, + "MaxParallelism": -1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1610612736, + "GPUUtilization": 0, + "MaxParallelism": -1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 16106127360, + "MaxMemory": 16106127360, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 32212254720, + "MaxMemory": 32212254720, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1610612736, @@ -966,6 +1371,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 0, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1073741824, @@ -1058,6 +1508,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1610612736, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10737418240, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 32212254720, + "MaxMemory": 161061273600, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 34359738368, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 64424509440, + "MaxMemory": 204010946560, + "GPUUtilization": 1, + "MaxParallelism": -1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 68719476736, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1610612736, @@ -1150,6 +1645,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 8589934592, + "MaxMemory": 8589934592, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1073741824, @@ -1242,6 +1782,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 1073741824, + "MaxMemory": 1073741824, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 4294967296, + "MaxMemory": 4294967296, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 8589934592, + "MaxMemory": 8589934592, + "GPUUtilization": 1, + "MaxParallelism": 1, + "MaxParallelismGPU": 6, + "BaseMinMemory": 1073741824, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 1073741824, "MaxMemory": 1073741824, @@ -1334,6 +1919,51 @@ Response: "BaseMinMemory": 8388608, "MaxConcurrent": 0 }, + "10": { + "MinMemory": 2048, + "MaxMemory": 2048, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 2048, + "MaxConcurrent": 0 + }, + "11": { + "MinMemory": 8388608, + "MaxMemory": 8388608, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 8388608, + "MaxConcurrent": 0 + }, + "12": { + "MinMemory": 805306368, + "MaxMemory": 1073741824, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 1048576, + "MaxConcurrent": 0 + }, + "13": { + "MinMemory": 60129542144, + "MaxMemory": 68719476736, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10485760, + "MaxConcurrent": 0 + }, + "14": { + "MinMemory": 120259084288, + "MaxMemory": 137438953472, + "GPUUtilization": 0, + "MaxParallelism": 1, + "MaxParallelismGPU": 0, + "BaseMinMemory": 10485760, + "MaxConcurrent": 0 + }, "2": { "MinMemory": 805306368, "MaxMemory": 1073741824, diff --git a/documentation/en/cli-lotus-miner.md b/documentation/en/cli-lotus-miner.md index 8406b07cc..6e5942eb2 100644 --- a/documentation/en/cli-lotus-miner.md +++ b/documentation/en/cli-lotus-miner.md @@ -223,6 +223,7 @@ COMMANDS: propose-change-worker Propose a worker address change confirm-change-worker Confirm a worker address change compact-allocated compact allocated sectors bitfield + move-partitions move deadline of specified partitions from one to another propose-change-beneficiary Propose a beneficiary address change confirm-change-beneficiary Confirm a beneficiary address change help, h Shows a list of commands or help for one command @@ -366,12 +367,28 @@ USAGE: lotus-miner actor compact-allocated [command options] [arguments...] OPTIONS: - --mask-last-offset value Mask sector IDs from 0 to 'higest_allocated - offset' (default: 0) + --mask-last-offset value Mask sector IDs from 0 to 'highest_allocated - offset' (default: 0) --mask-upto-n value Mask sector IDs from 0 to 'n' (default: 0) --really-do-it Actually send transaction performing the action (default: false) --help, -h show help ``` +### lotus-miner actor move-partitions +``` +NAME: + lotus-miner actor move-partitions - move deadline of specified partitions from one to another + +USAGE: + lotus-miner actor move-partitions [command options] [arguments...] + +OPTIONS: + --partition-indices value [ --partition-indices value ] Indices of partitions to update, separated by comma + --orig-deadline value Deadline to move partition from (default: 0) + --dest-deadline value Deadline to move partition to (default: 0) + --really-do-it Actually send transaction performing the action (default: false) + --help, -h show help +``` + ### lotus-miner actor propose-change-beneficiary ``` NAME: diff --git a/documentation/en/default-lotus-miner-config.toml b/documentation/en/default-lotus-miner-config.toml index 68bb76f1a..f0e3fa3f0 100644 --- a/documentation/en/default-lotus-miner-config.toml +++ b/documentation/en/default-lotus-miner-config.toml @@ -427,13 +427,10 @@ # env var: LOTUS_PROVING_DISABLEWDPOSTPRECHECKS #DisableWDPoStPreChecks = false - # Maximum number of partitions to prove in a single SubmitWindowPoSt messace. 0 = network limit (10 in nv16) + # Maximum number of partitions to prove in a single SubmitWindowPoSt messace. 0 = network limit (3 in nv21) # # A single partition may contain up to 2349 32GiB sectors, or 2300 64GiB sectors. - # - # The maximum number of sectors which can be proven in a single PoSt message is 25000 in network version 16, which - # means that a single message can prove at most 10 partitions - # + # // # Note that setting this value lower may result in less efficient gas use - more messages will be sent, # to prove each deadline, resulting in more total gas use (but each message will have lower gas limit) # @@ -523,7 +520,7 @@ # CommittedCapacitySectorLifetime is the duration a Committed Capacity (CC) sector will # live before it must be extended or converted into sector containing deals before it is - # terminated. Value must be between 180-540 days inclusive + # terminated. Value must be between 180-1278 days (1278 in nv21, 540 before nv21). # # type: Duration # env var: LOTUS_SEALING_COMMITTEDCAPACITYSECTORLIFETIME @@ -666,6 +663,12 @@ # env var: LOTUS_SEALING_TERMINATEBATCHWAIT #TerminateBatchWait = "5m0s" + # UseSyntheticPoRep, when set to true, will reduce the amount of cache data held on disk after the completion of PreCommit 2 to 11GiB. + # + # type: bool + # env var: LOTUS_SEALING_USESYNTHETICPOREP + #UseSyntheticPoRep = false + [Storage] # type: int diff --git a/extern/filecoin-ffi b/extern/filecoin-ffi index bf5edd551..441fa8e61 160000 --- a/extern/filecoin-ffi +++ b/extern/filecoin-ffi @@ -1 +1 @@ -Subproject commit bf5edd551d23901fa565aac4ce94433afe0c278e +Subproject commit 441fa8e61189dc32c2960c1f8d8ba56269f20366 diff --git a/go.mod b/go.mod index bf8f912ba..ab9e5d4fa 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,7 @@ require ( github.com/filecoin-project/go-jsonrpc v0.3.1 github.com/filecoin-project/go-padreader v0.0.1 github.com/filecoin-project/go-paramfetch v0.0.4 - github.com/filecoin-project/go-state-types v0.12.1 + github.com/filecoin-project/go-state-types v0.12.4 github.com/filecoin-project/go-statemachine v1.0.3 github.com/filecoin-project/go-statestore v0.2.0 github.com/filecoin-project/go-storedcounter v0.1.0 @@ -138,7 +138,7 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 github.com/urfave/cli/v2 v2.25.5 github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba - github.com/whyrusleeping/cbor-gen v0.0.0-20230126041949-52956bd4c9aa + github.com/whyrusleeping/cbor-gen v0.0.0-20230923211252-36a87e1ba72f github.com/whyrusleeping/ledger-filecoin-go v0.9.1-0.20201010031517-c3dcc1bddce4 github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 github.com/xeipuuv/gojsonschema v1.2.0 diff --git a/go.sum b/go.sum index b5020432d..4a3f99cbc 100644 --- a/go.sum +++ b/go.sum @@ -337,9 +337,9 @@ github.com/filecoin-project/go-state-types v0.0.0-20201102161440-c8033295a1fc/go github.com/filecoin-project/go-state-types v0.1.0/go.mod h1:ezYnPf0bNkTsDibL/psSz5dy4B5awOJ/E7P2Saeep8g= github.com/filecoin-project/go-state-types v0.1.6/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q= github.com/filecoin-project/go-state-types v0.1.10/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q= -github.com/filecoin-project/go-state-types v0.11.1/go.mod h1:SyNPwTsU7I22gL2r0OAPcImvLoTVfgRwdK/Y5rR1zz8= -github.com/filecoin-project/go-state-types v0.12.1 h1:/1ip/jXIP4QzWd3hlaQ7RGp1DHKKYG3+NOhd/r08UJY= -github.com/filecoin-project/go-state-types v0.12.1/go.mod h1:KOBGyvCalT8uHBS7KSKOVbjsilD90bBZHgLAqrzz6gU= +github.com/filecoin-project/go-state-types v0.11.2-0.20230712101859-8f37624fa540/go.mod h1:SyNPwTsU7I22gL2r0OAPcImvLoTVfgRwdK/Y5rR1zz8= +github.com/filecoin-project/go-state-types v0.12.4 h1:F1yQRCgFGvg+UmBGWxskHcvNswjh061Ok/kOk0OWhQY= +github.com/filecoin-project/go-state-types v0.12.4/go.mod h1:iJTqGdWDvzXhuVf64Lw0hzt4TIoitMo0VgHdxdjNDZI= github.com/filecoin-project/go-statemachine v0.0.0-20200925024713-05bd7c71fbfe/go.mod h1:FGwQgZAt2Gh5mjlwJUlVB62JeYdo+if0xWxSEfBD9ig= github.com/filecoin-project/go-statemachine v1.0.3 h1:N07o6alys+V1tNoSTi4WuuoeNC4erS/6jE74+NsgQuk= github.com/filecoin-project/go-statemachine v1.0.3/go.mod h1:jZdXXiHa61n4NmgWFG4w8tnqgvZVHYbJ3yW7+y8bF54= @@ -1637,8 +1637,8 @@ github.com/whyrusleeping/cbor-gen v0.0.0-20200826160007-0b9f6c5fb163/go.mod h1:f github.com/whyrusleeping/cbor-gen v0.0.0-20210118024343-169e9d70c0c2/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/cbor-gen v0.0.0-20210303213153-67a261a1d291/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/cbor-gen v0.0.0-20220323183124-98fa8256a799/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= -github.com/whyrusleeping/cbor-gen v0.0.0-20230126041949-52956bd4c9aa h1:EyA027ZAkuaCLoxVX4r1TZMPy1d31fM6hbfQ4OU4I5o= -github.com/whyrusleeping/cbor-gen v0.0.0-20230126041949-52956bd4c9aa/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= +github.com/whyrusleeping/cbor-gen v0.0.0-20230923211252-36a87e1ba72f h1:SBuSxXJL0/ZJMtTxbXZgHZkThl9dNrzyaNhlyaqscRo= +github.com/whyrusleeping/cbor-gen v0.0.0-20230923211252-36a87e1ba72f/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k= @@ -2265,6 +2265,7 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= diff --git a/itests/fevm_test.go b/itests/fevm_test.go index 1512c3277..cb69c036c 100644 --- a/itests/fevm_test.go +++ b/itests/fevm_test.go @@ -618,9 +618,9 @@ func TestFEVMRecursiveActorCall(t *testing.T) { t.Run("n=251,r=32", testN(251, 32, exitcode.Ok)) t.Run("n=0,r=252", testN(0, 252, exitcode.Ok)) - t.Run("n=251,r=166", testN(251, 166, exitcode.Ok)) + t.Run("n=251,r=164", testN(251, 164, exitcode.Ok)) - t.Run("n=0,r=253-fails", testN(0, 254, exitcode.ExitCode(33))) // 33 means transaction reverted + t.Run("n=0,r=255-fails", testN(0, 255, exitcode.ExitCode(33))) // 33 means transaction reverted t.Run("n=251,r=167-fails", testN(251, 167, exitcode.ExitCode(33))) } diff --git a/itests/kit/ensemble.go b/itests/kit/ensemble.go index 18b8fd734..45f21786d 100644 --- a/itests/kit/ensemble.go +++ b/itests/kit/ensemble.go @@ -260,7 +260,7 @@ func (n *Ensemble) MinerEnroll(minerNode *TestMiner, full *TestFullNode, opts .. ) // Will use 2KiB sectors by default (default value of sectorSize). - proofType, err := miner.SealProofTypeFromSectorSize(options.sectorSize, n.genesis.version) + proofType, err := miner.SealProofTypeFromSectorSize(options.sectorSize, n.genesis.version, false) require.NoError(n.t, err) // Create the preseal commitment. diff --git a/itests/migration_test.go b/itests/migration_test.go index 4082792ce..68991a579 100644 --- a/itests/migration_test.go +++ b/itests/migration_test.go @@ -34,6 +34,7 @@ import ( "github.com/filecoin-project/lotus/chain/actors/builtin/datacap" "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/system" "github.com/filecoin-project/lotus/chain/actors/builtin/verifreg" "github.com/filecoin-project/lotus/chain/consensus/filcns" "github.com/filecoin-project/lotus/chain/state" @@ -301,7 +302,7 @@ func TestMigrationNV17(t *testing.T) { minerInfo, err := testClient.StateMinerInfo(ctx, testMiner.ActorAddr, types.EmptyTSK) require.NoError(t, err) - spt, err := miner.SealProofTypeFromSectorSize(minerInfo.SectorSize, network.Version17) + spt, err := miner.SealProofTypeFromSectorSize(minerInfo.SectorSize, network.Version17, false) require.NoError(t, err) preCommitParams := miner9.PreCommitSectorParams{ @@ -762,3 +763,68 @@ waitForProof20: require.Equal(t, v1proof, minerInfo.WindowPoStProofType) } + +func TestMigrationNV21(t *testing.T) { + kit.QuietMiningLogs() + + nv21epoch := abi.ChainEpoch(100) + testClient, _, ens := kit.EnsembleMinimal(t, kit.MockProofs(), + kit.UpgradeSchedule(stmgr.Upgrade{ + Network: network.Version20, + Height: -1, + }, stmgr.Upgrade{ + Network: network.Version21, + Height: nv21epoch, + Migration: filcns.UpgradeActorsV12, + }, + )) + + ens.InterconnectAll().BeginMining(10 * time.Millisecond) + + clientApi := testClient.FullNode.(*impl.FullNodeAPI) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + testClient.WaitTillChain(ctx, kit.HeightAtLeast(nv21epoch+5)) + + // Now that we have upgraded, we need to verify: + // - Sector info changes executed successfully + // - Direct data onboarding correct + + bs := blockstore.NewAPIBlockstore(testClient) + ctxStore := gstStore.WrapBlockStore(ctx, bs) + + currTs, err := clientApi.ChainHead(ctx) + require.NoError(t, err) + + newStateTree, err := state.LoadStateTree(ctxStore, currTs.Blocks()[0].ParentStateRoot) + require.NoError(t, err) + + require.Equal(t, types.StateTreeVersion5, newStateTree.Version()) + + // check the system actor + systemAct, err := newStateTree.GetActor(builtin.SystemActorAddr) + require.NoError(t, err) + + systemCode, ok := actors.GetActorCodeID(actorstypes.Version12, manifest.SystemKey) + require.True(t, ok) + + require.Equal(t, systemCode, systemAct.Code) + + systemSt, err := system.Load(ctxStore, systemAct) + require.NoError(t, err) + + manifest12Cid, ok := actors.GetManifest(actorstypes.Version12) + require.True(t, ok) + + manifest12, err := actors.LoadManifest(ctx, manifest12Cid, ctxStore) + require.NoError(t, err) + require.Equal(t, manifest12.Data, systemSt.GetBuiltinActors()) + + // start post migration checks + + //todo @aayush sector info changes + + //todo @zen Direct data onboarding tests + +} diff --git a/itests/sector_import_full_test.go b/itests/sector_import_full_test.go index e4ec5e141..c9bd96afd 100644 --- a/itests/sector_import_full_test.go +++ b/itests/sector_import_full_test.go @@ -88,7 +88,7 @@ func TestSectorImport(t *testing.T) { require.NoError(t, err) ver, err := client.StateNetworkVersion(ctx, types.EmptyTSK) require.NoError(t, err) - spt, err := lminer.PreferredSealProofTypeFromWindowPoStType(ver, mi.WindowPoStProofType) + spt, err := lminer.PreferredSealProofTypeFromWindowPoStType(ver, mi.WindowPoStProofType, false) require.NoError(t, err) ssize, err := spt.SectorSize() diff --git a/itests/sector_import_simple_test.go b/itests/sector_import_simple_test.go index f34438694..fb1a77a14 100644 --- a/itests/sector_import_simple_test.go +++ b/itests/sector_import_simple_test.go @@ -63,7 +63,7 @@ func TestSectorImportAfterPC2(t *testing.T) { require.NoError(t, err) ver, err := client.StateNetworkVersion(ctx, types.EmptyTSK) require.NoError(t, err) - spt, err := lminer.PreferredSealProofTypeFromWindowPoStType(ver, mi.WindowPoStProofType) + spt, err := lminer.PreferredSealProofTypeFromWindowPoStType(ver, mi.WindowPoStProofType, false) require.NoError(t, err) ssize, err := spt.SectorSize() diff --git a/itests/sector_pledge_test.go b/itests/sector_pledge_test.go index a2e74ef72..1e045c79d 100644 --- a/itests/sector_pledge_test.go +++ b/itests/sector_pledge_test.go @@ -18,6 +18,7 @@ import ( "github.com/filecoin-project/lotus/build" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/itests/kit" + "github.com/filecoin-project/lotus/node/config" "github.com/filecoin-project/lotus/node/impl" sealing "github.com/filecoin-project/lotus/storage/pipeline" ) @@ -195,3 +196,30 @@ func TestPledgeMaxBatching(t *testing.T) { t.Run("Force max prove commit aggregate size", runTest) } + +func TestPledgeSynth(t *testing.T) { + kit.QuietMiningLogs() + + blockTime := 50 * time.Millisecond + + runTest := func(t *testing.T, nSectors int) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + _, miner, ens := kit.EnsembleMinimal(t, kit.MutateSealingConfig(func(sc *config.SealingConfig) { + sc.UseSyntheticPoRep = true + })) // no mock proofs + + ens.InterconnectAll().BeginMiningMustPost(blockTime) + + miner.PledgeSectors(ctx, nSectors, 0, nil) + } + + t.Run("1", func(t *testing.T) { + runTest(t, 1) + }) + + t.Run("3", func(t *testing.T) { + runTest(t, 3) + }) +} diff --git a/markets/storageadapter/provider.go b/markets/storageadapter/provider.go index a5022613b..bdfce6f55 100644 --- a/markets/storageadapter/provider.go +++ b/markets/storageadapter/provider.go @@ -186,7 +186,10 @@ func (n *ProviderNodeAdapter) GetProofType(ctx context.Context, maddr address.Ad return 0, err } - return miner.PreferredSealProofTypeFromWindowPoStType(nver, mi.WindowPoStProofType) + // false because this variance is not consumed. + const configWantSynthetic = false + + return miner.PreferredSealProofTypeFromWindowPoStType(nver, mi.WindowPoStProofType, configWantSynthetic) } func (n *ProviderNodeAdapter) SignBytes(ctx context.Context, signer address.Address, b []byte) (*crypto.Signature, error) { diff --git a/node/config/def.go b/node/config/def.go index d85b44f69..47c0df98f 100644 --- a/node/config/def.go +++ b/node/config/def.go @@ -10,6 +10,7 @@ import ( "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" + "github.com/filecoin-project/go-state-types/network" miner5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/actors/builtin" @@ -122,6 +123,8 @@ func DefaultFullNode() *FullNode { } func DefaultStorageMiner() *StorageMiner { + // TODO: Should we increase this to nv21, which would push it to 3.5 years? + maxSectorExtentsion, _ := policy.GetMaxSectorExpirationExtension(network.Version20) cfg := &StorageMiner{ Common: defCommon(), @@ -143,7 +146,7 @@ func DefaultStorageMiner() *StorageMiner { // XXX snap deals wait deals slack if first PreCommitBatchSlack: Duration(3 * time.Hour), // time buffer for forceful batch submission before sectors/deals in batch would start expiring, higher value will lower the chances for message fail due to expiration - CommittedCapacitySectorLifetime: Duration(builtin.EpochDurationSeconds * uint64(policy.GetMaxSectorExpirationExtension()) * uint64(time.Second)), + CommittedCapacitySectorLifetime: Duration(builtin.EpochDurationSeconds * uint64(maxSectorExtentsion) * uint64(time.Second)), AggregateCommits: true, MinCommitBatch: miner5.MinAggregatedSectors, // per FIP13, we must have at least four proofs to aggregate, where 4 is the cross over point where aggregation wins out on single provecommit gas costs @@ -158,6 +161,7 @@ func DefaultStorageMiner() *StorageMiner { TerminateBatchMax: 100, TerminateBatchWait: Duration(5 * time.Minute), MaxSectorProveCommitsSubmittedPerEpoch: 20, + UseSyntheticPoRep: false, }, Proving: ProvingConfig{ diff --git a/node/config/doc_gen.go b/node/config/doc_gen.go index 26bcdd073..5a5bd4a8c 100644 --- a/node/config/doc_gen.go +++ b/node/config/doc_gen.go @@ -859,13 +859,10 @@ After changing this option, confirm that the new value works in your setup by in Name: "MaxPartitionsPerPoStMessage", Type: "int", - Comment: `Maximum number of partitions to prove in a single SubmitWindowPoSt messace. 0 = network limit (10 in nv16) + Comment: `Maximum number of partitions to prove in a single SubmitWindowPoSt messace. 0 = network limit (3 in nv21) A single partition may contain up to 2349 32GiB sectors, or 2300 64GiB sectors. - -The maximum number of sectors which can be proven in a single PoSt message is 25000 in network version 16, which -means that a single message can prove at most 10 partitions - +// Note that setting this value lower may result in less efficient gas use - more messages will be sent, to prove each deadline, resulting in more total gas use (but each message will have lower gas limit) @@ -1156,7 +1153,7 @@ required to have expiration of at least the soonest-ending deal`, Comment: `CommittedCapacitySectorLifetime is the duration a Committed Capacity (CC) sector will live before it must be extended or converted into sector containing deals before it is -terminated. Value must be between 180-540 days inclusive`, +terminated. Value must be between 180-1278 days (1278 in nv21, 540 before nv21).`, }, { Name: "WaitDealsDelay", @@ -1301,6 +1298,12 @@ Submitting a smaller number of prove commits per epoch would reduce the possibil Comment: ``, }, + { + Name: "UseSyntheticPoRep", + Type: "bool", + + Comment: `UseSyntheticPoRep, when set to true, will reduce the amount of cache data held on disk after the completion of PreCommit 2 to 11GiB.`, + }, }, "Splitstore": []DocField{ { diff --git a/node/config/types.go b/node/config/types.go index bec3a0bc9..013e2db1a 100644 --- a/node/config/types.go +++ b/node/config/types.go @@ -290,13 +290,10 @@ type ProvingConfig struct { // 'lotus-miner proving compute window-post 0' DisableWDPoStPreChecks bool - // Maximum number of partitions to prove in a single SubmitWindowPoSt messace. 0 = network limit (10 in nv16) + // Maximum number of partitions to prove in a single SubmitWindowPoSt messace. 0 = network limit (3 in nv21) // // A single partition may contain up to 2349 32GiB sectors, or 2300 64GiB sectors. - // - // The maximum number of sectors which can be proven in a single PoSt message is 25000 in network version 16, which - // means that a single message can prove at most 10 partitions - // + // // // Note that setting this value lower may result in less efficient gas use - more messages will be sent, // to prove each deadline, resulting in more total gas use (but each message will have lower gas limit) // @@ -358,7 +355,7 @@ type SealingConfig struct { // CommittedCapacitySectorLifetime is the duration a Committed Capacity (CC) sector will // live before it must be extended or converted into sector containing deals before it is - // terminated. Value must be between 180-540 days inclusive + // terminated. Value must be between 180-1278 days (1278 in nv21, 540 before nv21). CommittedCapacitySectorLifetime Duration // Period of time that a newly created sector will wait for more deals to be packed in to before it starts to seal. @@ -429,6 +426,9 @@ type SealingConfig struct { // todo TargetSealingSectors uint64 // todo TargetSectors - stop auto-pleding new sectors after this many sectors are sealed, default CC upgrade for deals sectors if above + + // UseSyntheticPoRep, when set to true, will reduce the amount of cache data held on disk after the completion of PreCommit 2 to 11GiB. + UseSyntheticPoRep bool } type SealerConfig struct { diff --git a/node/hello/cbor_gen.go b/node/hello/cbor_gen.go index 5b0697f55..78e950f6f 100644 --- a/node/hello/cbor_gen.go +++ b/node/hello/cbor_gen.go @@ -43,9 +43,11 @@ func (t *HelloMessage) MarshalCBOR(w io.Writer) error { return err } for _, v := range t.HeaviestTipSet { - if err := cbg.WriteCid(w, v); err != nil { - return xerrors.Errorf("failed writing cid field t.HeaviestTipSet: %w", err) + + if err := cbg.WriteCid(cw, v); err != nil { + return xerrors.Errorf("failed to write cid field v: %w", err) } + } // t.HeaviestTipSetHeight (abi.ChainEpoch) (int64) @@ -116,12 +118,25 @@ func (t *HelloMessage) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - c, err := cbg.ReadCid(cr) - if err != nil { - return xerrors.Errorf("reading cid field t.HeaviestTipSet failed: %w", err) + { + + c, err := cbg.ReadCid(cr) + if err != nil { + return xerrors.Errorf("failed to read cid field t.HeaviestTipSet[i]: %w", err) + } + + t.HeaviestTipSet[i] = c + + } } - t.HeaviestTipSet[i] = c } // t.HeaviestTipSetHeight (abi.ChainEpoch) (int64) diff --git a/node/impl/client/client.go b/node/impl/client/client.go index fff46acc7..c7bb252a1 100644 --- a/node/impl/client/client.go +++ b/node/impl/client/client.go @@ -197,7 +197,7 @@ func (a *API) dealStarter(ctx context.Context, params *api.StartDealParams, isSt return nil, xerrors.Errorf("failed to get network version: %w", err) } - st, err := miner.PreferredSealProofTypeFromWindowPoStType(networkVersion, mi.WindowPoStProofType) + st, err := miner.PreferredSealProofTypeFromWindowPoStType(networkVersion, mi.WindowPoStProofType, false) if err != nil { return nil, xerrors.Errorf("failed to get seal proof type: %w", err) } diff --git a/node/impl/full/state.go b/node/impl/full/state.go index 514951675..0e92c8e5b 100644 --- a/node/impl/full/state.go +++ b/node/impl/full/state.go @@ -6,6 +6,7 @@ import ( "encoding/json" "errors" "fmt" + "math" "strconv" "github.com/ipfs/go-cid" @@ -19,8 +20,7 @@ import ( "github.com/filecoin-project/go-state-types/abi" actorstypes "github.com/filecoin-project/go-state-types/actors" "github.com/filecoin-project/go-state-types/big" - minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + market12 "github.com/filecoin-project/go-state-types/builtin/v12/market" "github.com/filecoin-project/go-state-types/cbor" "github.com/filecoin-project/go-state-types/crypto" "github.com/filecoin-project/go-state-types/dline" @@ -794,7 +794,7 @@ func (a *StateAPI) StateGetAllocationForPendingDeal(ctx context.Context, dealId if err != nil { return nil, err } - if allocationId == verifregtypes.NoAllocationID { + if allocationId == verifreg.NoAllocationID { return nil, nil } @@ -914,32 +914,31 @@ func (a *StateAPI) StateComputeDataCID(ctx context.Context, maddr address.Addres return cid.Cid{}, err } - var ccparams []byte if nv < network.Version13 { - ccparams, err = actors.SerializeParams(&market2.ComputeDataCommitmentParams{ - DealIDs: deals, - SectorType: sectorType, - }) + return a.stateComputeDataCIDv1(ctx, maddr, sectorType, deals, tsk) + } else if nv < network.Version21 { + return a.stateComputeDataCIDv2(ctx, maddr, sectorType, deals, tsk) } else { - ccparams, err = actors.SerializeParams(&market5.ComputeDataCommitmentParams{ - Inputs: []*market5.SectorDataSpec{ - { - DealIDs: deals, - SectorType: sectorType, - }, - }, - }) + return a.stateComputeDataCIDv3(ctx, maddr, sectorType, deals, tsk) } +} + +func (a *StateAPI) stateComputeDataCIDv1(ctx context.Context, maddr address.Address, sectorType abi.RegisteredSealProof, deals []abi.DealID, tsk types.TipSetKey) (cid.Cid, error) { + var err error + ccparams, err := actors.SerializeParams(&market2.ComputeDataCommitmentParams{ + DealIDs: deals, + SectorType: sectorType, + }) if err != nil { return cid.Undef, xerrors.Errorf("computing params for ComputeDataCommitment: %w", err) } - ccmt := &types.Message{ - To: market.Address, - From: maddr, - Value: types.NewInt(0), - Method: market.Methods.ComputeDataCommitment, + To: market.Address, + From: maddr, + Value: types.NewInt(0), + // Hard coded, because the method has since been deprecated + Method: 8, Params: ccparams, } r, err := a.StateCall(ctx, ccmt, tsk) @@ -950,13 +949,42 @@ func (a *StateAPI) StateComputeDataCID(ctx context.Context, maddr address.Addres return cid.Undef, xerrors.Errorf("receipt for ComputeDataCommitment had exit code %d", r.MsgRct.ExitCode) } - if nv < network.Version13 { - var c cbg.CborCid - if err := c.UnmarshalCBOR(bytes.NewReader(r.MsgRct.Return)); err != nil { - return cid.Undef, xerrors.Errorf("failed to unmarshal CBOR to CborCid: %w", err) - } + var c cbg.CborCid + if err := c.UnmarshalCBOR(bytes.NewReader(r.MsgRct.Return)); err != nil { + return cid.Undef, xerrors.Errorf("failed to unmarshal CBOR to CborCid: %w", err) + } - return cid.Cid(c), nil + return cid.Cid(c), nil +} + +func (a *StateAPI) stateComputeDataCIDv2(ctx context.Context, maddr address.Address, sectorType abi.RegisteredSealProof, deals []abi.DealID, tsk types.TipSetKey) (cid.Cid, error) { + var err error + ccparams, err := actors.SerializeParams(&market5.ComputeDataCommitmentParams{ + Inputs: []*market5.SectorDataSpec{ + { + DealIDs: deals, + SectorType: sectorType, + }, + }, + }) + + if err != nil { + return cid.Undef, xerrors.Errorf("computing params for ComputeDataCommitment: %w", err) + } + ccmt := &types.Message{ + To: market.Address, + From: maddr, + Value: types.NewInt(0), + // Hard coded, because the method has since been deprecated + Method: 8, + Params: ccparams, + } + r, err := a.StateCall(ctx, ccmt, tsk) + if err != nil { + return cid.Undef, xerrors.Errorf("calling ComputeDataCommitment: %w", err) + } + if r.MsgRct.ExitCode != 0 { + return cid.Undef, xerrors.Errorf("receipt for ComputeDataCommitment had exit code %d", r.MsgRct.ExitCode) } var cr market5.ComputeDataCommitmentReturn @@ -971,6 +999,52 @@ func (a *StateAPI) StateComputeDataCID(ctx context.Context, maddr address.Addres return cid.Cid(cr.CommDs[0]), nil } +func (a *StateAPI) stateComputeDataCIDv3(ctx context.Context, maddr address.Address, sectorType abi.RegisteredSealProof, deals []abi.DealID, tsk types.TipSetKey) (cid.Cid, error) { + if len(deals) == 0 { + return cid.Undef, nil + } + + var err error + ccparams, err := actors.SerializeParams(&market12.VerifyDealsForActivationParams{ + Sectors: []market12.SectorDeals{{ + SectorType: sectorType, + SectorExpiry: math.MaxInt64, + DealIDs: deals, + }}, + }) + + if err != nil { + return cid.Undef, xerrors.Errorf("computing params for VerifyDealsForActivation: %w", err) + } + ccmt := &types.Message{ + To: market.Address, + From: maddr, + Value: types.NewInt(0), + Method: market.Methods.VerifyDealsForActivation, + Params: ccparams, + } + r, err := a.StateCall(ctx, ccmt, tsk) + if err != nil { + return cid.Undef, xerrors.Errorf("calling VerifyDealsForActivation: %w", err) + } + if r.MsgRct.ExitCode != 0 { + return cid.Undef, xerrors.Errorf("receipt for VerifyDealsForActivation had exit code %d", r.MsgRct.ExitCode) + } + + var cr market12.VerifyDealsForActivationReturn + if err := cr.UnmarshalCBOR(bytes.NewReader(r.MsgRct.Return)); err != nil { + return cid.Undef, xerrors.Errorf("failed to unmarshal CBOR to VerifyDealsForActivationReturn: %w", err) + } + if len(cr.UnsealedCIDs) != 1 { + return cid.Undef, xerrors.Errorf("Sectors output must have 1 entry") + } + ucid := cr.UnsealedCIDs[0] + if ucid == nil { + return cid.Undef, xerrors.Errorf("computed data CID is nil") + } + return *ucid, nil +} + func (a *StateAPI) StateChangedActors(ctx context.Context, old cid.Cid, new cid.Cid) (map[string]types.Actor, error) { store := a.Chain.ActorStore(ctx) @@ -1040,7 +1114,7 @@ func (a *StateAPI) StateMinerAllocated(ctx context.Context, addr address.Address return mas.GetAllocatedSectors() } -func (a *StateAPI) StateSectorPreCommitInfo(ctx context.Context, maddr address.Address, n abi.SectorNumber, tsk types.TipSetKey) (*minertypes.SectorPreCommitOnChainInfo, error) { +func (a *StateAPI) StateSectorPreCommitInfo(ctx context.Context, maddr address.Address, n abi.SectorNumber, tsk types.TipSetKey) (*miner.SectorPreCommitOnChainInfo, error) { ts, err := a.Chain.GetTipSetFromKey(ctx, tsk) if err != nil { return nil, xerrors.Errorf("loading tipset %s: %w", tsk, err) @@ -1315,7 +1389,7 @@ func (m *StateModule) MsigGetPending(ctx context.Context, addr address.Address, var initialPledgeNum = types.NewInt(110) var initialPledgeDen = types.NewInt(100) -func (a *StateAPI) StateMinerPreCommitDepositForPower(ctx context.Context, maddr address.Address, pci minertypes.SectorPreCommitInfo, tsk types.TipSetKey) (types.BigInt, error) { +func (a *StateAPI) StateMinerPreCommitDepositForPower(ctx context.Context, maddr address.Address, pci miner.SectorPreCommitInfo, tsk types.TipSetKey) (types.BigInt, error) { ts, err := a.Chain.GetTipSetFromKey(ctx, tsk) if err != nil { return types.EmptyInt, xerrors.Errorf("loading tipset %s: %w", tsk, err) @@ -1347,7 +1421,7 @@ func (a *StateAPI) StateMinerPreCommitDepositForPower(ctx context.Context, maddr sectorWeight = builtin.QAPowerForWeight(ssize, duration, w, vw) } } else { - sectorWeight = minertypes.QAPowerMax(ssize) + sectorWeight = miner.QAPowerMax(ssize) } var powerSmoothed builtin.FilterEstimate @@ -1379,7 +1453,7 @@ func (a *StateAPI) StateMinerPreCommitDepositForPower(ctx context.Context, maddr return types.BigDiv(types.BigMul(deposit, initialPledgeNum), initialPledgeDen), nil } -func (a *StateAPI) StateMinerInitialPledgeCollateral(ctx context.Context, maddr address.Address, pci minertypes.SectorPreCommitInfo, tsk types.TipSetKey) (types.BigInt, error) { +func (a *StateAPI) StateMinerInitialPledgeCollateral(ctx context.Context, maddr address.Address, pci miner.SectorPreCommitInfo, tsk types.TipSetKey) (types.BigInt, error) { // TODO: this repeats a lot of the previous function. Fix that. ts, err := a.Chain.GetTipSetFromKey(ctx, tsk) if err != nil { diff --git a/node/impl/storminer.go b/node/impl/storminer.go index 069cdff7f..6fd6045b4 100644 --- a/node/impl/storminer.go +++ b/node/impl/storminer.go @@ -35,7 +35,6 @@ import ( "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" builtintypes "github.com/filecoin-project/go-state-types/builtin" - minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/lotus/api" @@ -43,6 +42,7 @@ import ( "github.com/filecoin-project/lotus/build" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/builtin" + lminer "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/gen" "github.com/filecoin-project/lotus/chain/types" mktsdagstore "github.com/filecoin-project/lotus/markets/dagstore" @@ -497,7 +497,7 @@ func (sm *StorageMinerAPI) SectorReceive(ctx context.Context, meta api.RemoteSec return err } -func (sm *StorageMinerAPI) ComputeWindowPoSt(ctx context.Context, dlIdx uint64, tsk types.TipSetKey) ([]minertypes.SubmitWindowedPoStParams, error) { +func (sm *StorageMinerAPI) ComputeWindowPoSt(ctx context.Context, dlIdx uint64, tsk types.TipSetKey) ([]lminer.SubmitWindowedPoStParams, error) { var ts *types.TipSet var err error if tsk == types.EmptyTSK { @@ -1404,7 +1404,7 @@ func (sm *StorageMinerAPI) withdrawBalance(ctx context.Context, amount abi.Token amount = available } - params, err := actors.SerializeParams(&minertypes.WithdrawBalanceParams{ + params, err := actors.SerializeParams(&lminer.WithdrawBalanceParams{ AmountRequested: amount, }) if err != nil { diff --git a/node/modules/storageminer.go b/node/modules/storageminer.go index 29345d035..12879cd64 100644 --- a/node/modules/storageminer.go +++ b/node/modules/storageminer.go @@ -157,7 +157,8 @@ func SealProofType(maddr dtypes.MinerAddress, fnapi v1api.FullNode) (abi.Registe return 0, err } - return miner.PreferredSealProofTypeFromWindowPoStType(networkVersion, mi.WindowPoStProofType) + // node seal proof type does not decide whether or not we use synthetic porep + return miner.PreferredSealProofTypeFromWindowPoStType(networkVersion, mi.WindowPoStProofType, false) } func AddressSelector(addrConf *config.MinerAddressConfig) func() (*ctladdr.AddressSelector, error) { @@ -1016,6 +1017,7 @@ func NewSetSealConfigFunc(r repo.LockedRepo) (dtypes.SetSealingConfigFunc, error TerminateBatchMin: cfg.TerminateBatchMin, TerminateBatchWait: config.Duration(cfg.TerminateBatchWait), MaxSectorProveCommitsSubmittedPerEpoch: cfg.MaxSectorProveCommitsSubmittedPerEpoch, + UseSyntheticPoRep: cfg.UseSyntheticPoRep, } c.SetSealingConfig(newCfg) }) @@ -1060,6 +1062,7 @@ func ToSealingConfig(dealmakingCfg config.DealmakingConfig, sealingCfg config.Se TerminateBatchMax: sealingCfg.TerminateBatchMax, TerminateBatchMin: sealingCfg.TerminateBatchMin, TerminateBatchWait: time.Duration(sealingCfg.TerminateBatchWait), + UseSyntheticPoRep: sealingCfg.UseSyntheticPoRep, } } diff --git a/paychmgr/cbor_gen.go b/paychmgr/cbor_gen.go index b3880aa10..f97c176a3 100644 --- a/paychmgr/cbor_gen.go +++ b/paychmgr/cbor_gen.go @@ -41,7 +41,7 @@ func (t *VoucherInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Proof"))); err != nil { return err } - if _, err := io.WriteString(w, string("Proof")); err != nil { + if _, err := cw.WriteString(string("Proof")); err != nil { return err } @@ -65,7 +65,7 @@ func (t *VoucherInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Voucher"))); err != nil { return err } - if _, err := io.WriteString(w, string("Voucher")); err != nil { + if _, err := cw.WriteString(string("Voucher")); err != nil { return err } @@ -81,7 +81,7 @@ func (t *VoucherInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Submitted"))); err != nil { return err } - if _, err := io.WriteString(w, string("Submitted")); err != nil { + if _, err := cw.WriteString(string("Submitted")); err != nil { return err } @@ -218,7 +218,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Amount"))); err != nil { return err } - if _, err := io.WriteString(w, string("Amount")); err != nil { + if _, err := cw.WriteString(string("Amount")); err != nil { return err } @@ -234,7 +234,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Target"))); err != nil { return err } - if _, err := io.WriteString(w, string("Target")); err != nil { + if _, err := cw.WriteString(string("Target")); err != nil { return err } @@ -250,7 +250,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Channel"))); err != nil { return err } - if _, err := io.WriteString(w, string("Channel")); err != nil { + if _, err := cw.WriteString(string("Channel")); err != nil { return err } @@ -266,7 +266,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Control"))); err != nil { return err } - if _, err := io.WriteString(w, string("Control")); err != nil { + if _, err := cw.WriteString(string("Control")); err != nil { return err } @@ -282,7 +282,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("NextLane"))); err != nil { return err } - if _, err := io.WriteString(w, string("NextLane")); err != nil { + if _, err := cw.WriteString(string("NextLane")); err != nil { return err } @@ -298,7 +298,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Settling"))); err != nil { return err } - if _, err := io.WriteString(w, string("Settling")); err != nil { + if _, err := cw.WriteString(string("Settling")); err != nil { return err } @@ -314,7 +314,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Vouchers"))); err != nil { return err } - if _, err := io.WriteString(w, string("Vouchers")); err != nil { + if _, err := cw.WriteString(string("Vouchers")); err != nil { return err } @@ -339,7 +339,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("ChannelID"))); err != nil { return err } - if _, err := io.WriteString(w, string("ChannelID")); err != nil { + if _, err := cw.WriteString(string("ChannelID")); err != nil { return err } @@ -350,7 +350,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.ChannelID))); err != nil { return err } - if _, err := io.WriteString(w, string(t.ChannelID)); err != nil { + if _, err := cw.WriteString(string(t.ChannelID)); err != nil { return err } @@ -362,7 +362,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("CreateMsg"))); err != nil { return err } - if _, err := io.WriteString(w, string("CreateMsg")); err != nil { + if _, err := cw.WriteString(string("CreateMsg")); err != nil { return err } @@ -384,7 +384,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Direction"))); err != nil { return err } - if _, err := io.WriteString(w, string("Direction")); err != nil { + if _, err := cw.WriteString(string("Direction")); err != nil { return err } @@ -400,7 +400,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("AddFundsMsg"))); err != nil { return err } - if _, err := io.WriteString(w, string("AddFundsMsg")); err != nil { + if _, err := cw.WriteString(string("AddFundsMsg")); err != nil { return err } @@ -422,7 +422,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("PendingAmount"))); err != nil { return err } - if _, err := io.WriteString(w, string("PendingAmount")); err != nil { + if _, err := cw.WriteString(string("PendingAmount")); err != nil { return err } @@ -438,7 +438,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("AvailableAmount"))); err != nil { return err } - if _, err := io.WriteString(w, string("AvailableAmount")); err != nil { + if _, err := cw.WriteString(string("AvailableAmount")); err != nil { return err } @@ -454,7 +454,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("PendingAvailableAmount"))); err != nil { return err } - if _, err := io.WriteString(w, string("PendingAvailableAmount")); err != nil { + if _, err := cw.WriteString(string("PendingAvailableAmount")); err != nil { return err } @@ -606,13 +606,32 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v VoucherInfo - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + b, err := cr.ReadByte() + if err != nil { + return err + } + if b != cbg.CborNull[0] { + if err := cr.UnreadByte(); err != nil { + return err + } + t.Vouchers[i] = new(VoucherInfo) + if err := t.Vouchers[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Vouchers[i] pointer: %w", err) + } + } + + } } - - t.Vouchers[i] = &v } // t.ChannelID (string) (string) @@ -746,7 +765,7 @@ func (t *MsgInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Err"))); err != nil { return err } - if _, err := io.WriteString(w, string("Err")); err != nil { + if _, err := cw.WriteString(string("Err")); err != nil { return err } @@ -757,7 +776,7 @@ func (t *MsgInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Err))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Err)); err != nil { + if _, err := cw.WriteString(string(t.Err)); err != nil { return err } @@ -769,7 +788,7 @@ func (t *MsgInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("MsgCid"))); err != nil { return err } - if _, err := io.WriteString(w, string("MsgCid")); err != nil { + if _, err := cw.WriteString(string("MsgCid")); err != nil { return err } @@ -785,7 +804,7 @@ func (t *MsgInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Received"))); err != nil { return err } - if _, err := io.WriteString(w, string("Received")); err != nil { + if _, err := cw.WriteString(string("Received")); err != nil { return err } @@ -801,7 +820,7 @@ func (t *MsgInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("ChannelID"))); err != nil { return err } - if _, err := io.WriteString(w, string("ChannelID")); err != nil { + if _, err := cw.WriteString(string("ChannelID")); err != nil { return err } @@ -812,7 +831,7 @@ func (t *MsgInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.ChannelID))); err != nil { return err } - if _, err := io.WriteString(w, string(t.ChannelID)); err != nil { + if _, err := cw.WriteString(string(t.ChannelID)); err != nil { return err } return nil diff --git a/storage/pipeline/cbor_gen.go b/storage/pipeline/cbor_gen.go index 57a668ae6..c832f8a14 100644 --- a/storage/pipeline/cbor_gen.go +++ b/storage/pipeline/cbor_gen.go @@ -43,7 +43,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Log"))); err != nil { return err } - if _, err := io.WriteString(w, string("Log")); err != nil { + if _, err := cw.WriteString(string("Log")); err != nil { return err } @@ -68,7 +68,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("CommD"))); err != nil { return err } - if _, err := io.WriteString(w, string("CommD")); err != nil { + if _, err := cw.WriteString(string("CommD")); err != nil { return err } @@ -90,7 +90,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("CommR"))); err != nil { return err } - if _, err := io.WriteString(w, string("CommR")); err != nil { + if _, err := cw.WriteString(string("CommR")); err != nil { return err } @@ -112,7 +112,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Proof"))); err != nil { return err } - if _, err := io.WriteString(w, string("Proof")); err != nil { + if _, err := cw.WriteString(string("Proof")); err != nil { return err } @@ -136,7 +136,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("State"))); err != nil { return err } - if _, err := io.WriteString(w, string("State")); err != nil { + if _, err := cw.WriteString(string("State")); err != nil { return err } @@ -147,7 +147,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.State))); err != nil { return err } - if _, err := io.WriteString(w, string(t.State)); err != nil { + if _, err := cw.WriteString(string(t.State)); err != nil { return err } @@ -159,7 +159,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Pieces"))); err != nil { return err } - if _, err := io.WriteString(w, string("Pieces")); err != nil { + if _, err := cw.WriteString(string("Pieces")); err != nil { return err } @@ -184,7 +184,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Return"))); err != nil { return err } - if _, err := io.WriteString(w, string("Return")); err != nil { + if _, err := cw.WriteString(string("Return")); err != nil { return err } @@ -195,7 +195,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Return))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Return)); err != nil { + if _, err := cw.WriteString(string(t.Return)); err != nil { return err } @@ -207,7 +207,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("LastErr"))); err != nil { return err } - if _, err := io.WriteString(w, string("LastErr")); err != nil { + if _, err := cw.WriteString(string("LastErr")); err != nil { return err } @@ -218,7 +218,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.LastErr))); err != nil { return err } - if _, err := io.WriteString(w, string(t.LastErr)); err != nil { + if _, err := cw.WriteString(string(t.LastErr)); err != nil { return err } @@ -230,7 +230,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("CCPieces"))); err != nil { return err } - if _, err := io.WriteString(w, string("CCPieces")); err != nil { + if _, err := cw.WriteString(string("CCPieces")); err != nil { return err } @@ -255,7 +255,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("CCUpdate"))); err != nil { return err } - if _, err := io.WriteString(w, string("CCUpdate")); err != nil { + if _, err := cw.WriteString(string("CCUpdate")); err != nil { return err } @@ -271,7 +271,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("SeedEpoch"))); err != nil { return err } - if _, err := io.WriteString(w, string("SeedEpoch")); err != nil { + if _, err := cw.WriteString(string("SeedEpoch")); err != nil { return err } @@ -293,7 +293,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("SeedValue"))); err != nil { return err } - if _, err := io.WriteString(w, string("SeedValue")); err != nil { + if _, err := cw.WriteString(string("SeedValue")); err != nil { return err } @@ -317,7 +317,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("SectorType"))); err != nil { return err } - if _, err := io.WriteString(w, string("SectorType")); err != nil { + if _, err := cw.WriteString(string("SectorType")); err != nil { return err } @@ -339,7 +339,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("TicketEpoch"))); err != nil { return err } - if _, err := io.WriteString(w, string("TicketEpoch")); err != nil { + if _, err := cw.WriteString(string("TicketEpoch")); err != nil { return err } @@ -361,7 +361,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("TicketValue"))); err != nil { return err } - if _, err := io.WriteString(w, string("TicketValue")); err != nil { + if _, err := cw.WriteString(string("TicketValue")); err != nil { return err } @@ -385,7 +385,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("CreationTime"))); err != nil { return err } - if _, err := io.WriteString(w, string("CreationTime")); err != nil { + if _, err := cw.WriteString(string("CreationTime")); err != nil { return err } @@ -407,7 +407,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("SectorNumber"))); err != nil { return err } - if _, err := io.WriteString(w, string("SectorNumber")); err != nil { + if _, err := cw.WriteString(string("SectorNumber")); err != nil { return err } @@ -423,7 +423,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("TerminatedAt"))); err != nil { return err } - if _, err := io.WriteString(w, string("TerminatedAt")); err != nil { + if _, err := cw.WriteString(string("TerminatedAt")); err != nil { return err } @@ -445,7 +445,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("UpdateSealed"))); err != nil { return err } - if _, err := io.WriteString(w, string("UpdateSealed")); err != nil { + if _, err := cw.WriteString(string("UpdateSealed")); err != nil { return err } @@ -467,7 +467,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("CommitMessage"))); err != nil { return err } - if _, err := io.WriteString(w, string("CommitMessage")); err != nil { + if _, err := cw.WriteString(string("CommitMessage")); err != nil { return err } @@ -489,7 +489,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("InvalidProofs"))); err != nil { return err } - if _, err := io.WriteString(w, string("InvalidProofs")); err != nil { + if _, err := cw.WriteString(string("InvalidProofs")); err != nil { return err } @@ -505,7 +505,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("PreCommit1Out"))); err != nil { return err } - if _, err := io.WriteString(w, string("PreCommit1Out")); err != nil { + if _, err := cw.WriteString(string("PreCommit1Out")); err != nil { return err } @@ -529,7 +529,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("FaultReportMsg"))); err != nil { return err } - if _, err := io.WriteString(w, string("FaultReportMsg")); err != nil { + if _, err := cw.WriteString(string("FaultReportMsg")); err != nil { return err } @@ -551,7 +551,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("UpdateUnsealed"))); err != nil { return err } - if _, err := io.WriteString(w, string("UpdateUnsealed")); err != nil { + if _, err := cw.WriteString(string("UpdateUnsealed")); err != nil { return err } @@ -573,7 +573,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("PreCommit1Fails"))); err != nil { return err } - if _, err := io.WriteString(w, string("PreCommit1Fails")); err != nil { + if _, err := cw.WriteString(string("PreCommit1Fails")); err != nil { return err } @@ -589,7 +589,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("PreCommit2Fails"))); err != nil { return err } - if _, err := io.WriteString(w, string("PreCommit2Fails")); err != nil { + if _, err := cw.WriteString(string("PreCommit2Fails")); err != nil { return err } @@ -605,7 +605,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("PreCommitTipSet"))); err != nil { return err } - if _, err := io.WriteString(w, string("PreCommitTipSet")); err != nil { + if _, err := cw.WriteString(string("PreCommitTipSet")); err != nil { return err } @@ -621,7 +621,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("RemoteDataCache"))); err != nil { return err } - if _, err := io.WriteString(w, string("RemoteDataCache")); err != nil { + if _, err := cw.WriteString(string("RemoteDataCache")); err != nil { return err } @@ -637,7 +637,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("PreCommitDeposit"))); err != nil { return err } - if _, err := io.WriteString(w, string("PreCommitDeposit")); err != nil { + if _, err := cw.WriteString(string("PreCommitDeposit")); err != nil { return err } @@ -653,7 +653,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("PreCommitMessage"))); err != nil { return err } - if _, err := io.WriteString(w, string("PreCommitMessage")); err != nil { + if _, err := cw.WriteString(string("PreCommitMessage")); err != nil { return err } @@ -675,7 +675,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("RemoteDataSealed"))); err != nil { return err } - if _, err := io.WriteString(w, string("RemoteDataSealed")); err != nil { + if _, err := cw.WriteString(string("RemoteDataSealed")); err != nil { return err } @@ -691,7 +691,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("TerminateMessage"))); err != nil { return err } - if _, err := io.WriteString(w, string("TerminateMessage")); err != nil { + if _, err := cw.WriteString(string("TerminateMessage")); err != nil { return err } @@ -713,7 +713,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("RemoteDataUnsealed"))); err != nil { return err } - if _, err := io.WriteString(w, string("RemoteDataUnsealed")); err != nil { + if _, err := cw.WriteString(string("RemoteDataUnsealed")); err != nil { return err } @@ -729,7 +729,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("ReplicaUpdateProof"))); err != nil { return err } - if _, err := io.WriteString(w, string("ReplicaUpdateProof")); err != nil { + if _, err := cw.WriteString(string("ReplicaUpdateProof")); err != nil { return err } @@ -753,7 +753,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("RemoteDataFinalized"))); err != nil { return err } - if _, err := io.WriteString(w, string("RemoteDataFinalized")); err != nil { + if _, err := cw.WriteString(string("RemoteDataFinalized")); err != nil { return err } @@ -769,7 +769,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("ReplicaUpdateMessage"))); err != nil { return err } - if _, err := io.WriteString(w, string("ReplicaUpdateMessage")); err != nil { + if _, err := cw.WriteString(string("ReplicaUpdateMessage")); err != nil { return err } @@ -791,7 +791,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("RemoteCommit1Endpoint"))); err != nil { return err } - if _, err := io.WriteString(w, string("RemoteCommit1Endpoint")); err != nil { + if _, err := cw.WriteString(string("RemoteCommit1Endpoint")); err != nil { return err } @@ -802,7 +802,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.RemoteCommit1Endpoint))); err != nil { return err } - if _, err := io.WriteString(w, string(t.RemoteCommit1Endpoint)); err != nil { + if _, err := cw.WriteString(string(t.RemoteCommit1Endpoint)); err != nil { return err } @@ -814,7 +814,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("RemoteCommit2Endpoint"))); err != nil { return err } - if _, err := io.WriteString(w, string("RemoteCommit2Endpoint")); err != nil { + if _, err := cw.WriteString(string("RemoteCommit2Endpoint")); err != nil { return err } @@ -825,7 +825,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.RemoteCommit2Endpoint))); err != nil { return err } - if _, err := io.WriteString(w, string(t.RemoteCommit2Endpoint)); err != nil { + if _, err := cw.WriteString(string(t.RemoteCommit2Endpoint)); err != nil { return err } @@ -837,7 +837,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("RemoteSealingDoneEndpoint"))); err != nil { return err } - if _, err := io.WriteString(w, string("RemoteSealingDoneEndpoint")); err != nil { + if _, err := cw.WriteString(string("RemoteSealingDoneEndpoint")); err != nil { return err } @@ -848,7 +848,7 @@ func (t *SectorInfo) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.RemoteSealingDoneEndpoint))); err != nil { return err } - if _, err := io.WriteString(w, string(t.RemoteSealingDoneEndpoint)); err != nil { + if _, err := cw.WriteString(string(t.RemoteSealingDoneEndpoint)); err != nil { return err } return nil @@ -913,13 +913,22 @@ func (t *SectorInfo) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v Log - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + if err := t.Log[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Log[i]: %w", err) + } + + } } - - t.Log[i] = v } // t.CommD (cid.Cid) (struct) @@ -1022,13 +1031,22 @@ func (t *SectorInfo) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v api.SectorPiece - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + if err := t.Pieces[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Pieces[i]: %w", err) + } + + } } - - t.Pieces[i] = v } // t.Return (sealing.ReturnState) (string) @@ -1074,13 +1092,22 @@ func (t *SectorInfo) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v api.SectorPiece - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + if err := t.CCPieces[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.CCPieces[i]: %w", err) + } + + } } - - t.CCPieces[i] = v } // t.CCUpdate (bool) (bool) @@ -1700,7 +1727,7 @@ func (t *Log) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Kind"))); err != nil { return err } - if _, err := io.WriteString(w, string("Kind")); err != nil { + if _, err := cw.WriteString(string("Kind")); err != nil { return err } @@ -1711,7 +1738,7 @@ func (t *Log) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Kind))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Kind)); err != nil { + if _, err := cw.WriteString(string(t.Kind)); err != nil { return err } @@ -1723,7 +1750,7 @@ func (t *Log) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Trace"))); err != nil { return err } - if _, err := io.WriteString(w, string("Trace")); err != nil { + if _, err := cw.WriteString(string("Trace")); err != nil { return err } @@ -1734,7 +1761,7 @@ func (t *Log) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Trace))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Trace)); err != nil { + if _, err := cw.WriteString(string(t.Trace)); err != nil { return err } @@ -1746,7 +1773,7 @@ func (t *Log) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Message"))); err != nil { return err } - if _, err := io.WriteString(w, string("Message")); err != nil { + if _, err := cw.WriteString(string("Message")); err != nil { return err } @@ -1757,7 +1784,7 @@ func (t *Log) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Message))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Message)); err != nil { + if _, err := cw.WriteString(string(t.Message)); err != nil { return err } @@ -1769,7 +1796,7 @@ func (t *Log) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Timestamp"))); err != nil { return err } - if _, err := io.WriteString(w, string("Timestamp")); err != nil { + if _, err := cw.WriteString(string("Timestamp")); err != nil { return err } diff --git a/storage/pipeline/checks.go b/storage/pipeline/checks.go index b243804cc..ecd160231 100644 --- a/storage/pipeline/checks.go +++ b/storage/pipeline/checks.go @@ -106,13 +106,15 @@ func checkPrecommit(ctx context.Context, maddr address.Address, si SectorInfo, t return err } - commD, err := api.StateComputeDataCID(ctx, maddr, si.SectorType, si.dealIDs(), tsk) - if err != nil { - return &ErrApi{xerrors.Errorf("calling StateComputeDataCommitment: %w", err)} - } + if si.hasDeals() { + commD, err := api.StateComputeDataCID(ctx, maddr, si.SectorType, si.dealIDs(), tsk) + if err != nil { + return &ErrApi{xerrors.Errorf("calling StateComputeDataCommitment: %w", err)} + } - if si.CommD == nil || !commD.Equals(*si.CommD) { - return &ErrBadCommD{xerrors.Errorf("on chain CommD differs from sector: %s != %s", commD, si.CommD)} + if si.CommD == nil || !commD.Equals(*si.CommD) { + return &ErrBadCommD{xerrors.Errorf("on chain CommD differs from sector: %s != %s", commD, si.CommD)} + } } pci, err := api.StateSectorPreCommitInfo(ctx, maddr, si.SectorNumber, tsk) diff --git a/storage/pipeline/commit_batch.go b/storage/pipeline/commit_batch.go index 9948b5432..754f31763 100644 --- a/storage/pipeline/commit_batch.go +++ b/storage/pipeline/commit_batch.go @@ -16,12 +16,12 @@ import ( actorstypes "github.com/filecoin-project/go-state-types/actors" "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/builtin" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/go-state-types/proof" "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/build" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/actors/policy" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/node/config" diff --git a/storage/pipeline/precommit_batch.go b/storage/pipeline/precommit_batch.go index 7e25d500b..3a86c8628 100644 --- a/storage/pipeline/precommit_batch.go +++ b/storage/pipeline/precommit_batch.go @@ -13,12 +13,12 @@ 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" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/build" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/actors/policy" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/node/config" diff --git a/storage/pipeline/precommit_policy.go b/storage/pipeline/precommit_policy.go index e1b6e6be7..6e234f930 100644 --- a/storage/pipeline/precommit_policy.go +++ b/storage/pipeline/precommit_policy.go @@ -85,10 +85,15 @@ func (p *BasicPreCommitPolicy) Expiration(ctx context.Context, ps ...api.SectorP } if end == nil { - // no deal pieces, get expiration for committed capacity sector - expirationDuration, err := p.getCCSectorLifetime() + nv, err := p.api.StateNetworkVersion(ctx, types.EmptyTSK) if err != nil { - return 0, err + return 0, xerrors.Errorf("failed to get network version: %w", err) + } + + // no deal pieces, get expiration for committed capacity sector + expirationDuration, err := p.getCCSectorLifetime(nv) + if err != nil { + return 0, xerrors.Errorf("failed to get cc sector lifetime: %w", err) } tmp := ts.Height() + expirationDuration @@ -105,25 +110,30 @@ func (p *BasicPreCommitPolicy) Expiration(ctx context.Context, ps ...api.SectorP return *end, nil } -func (p *BasicPreCommitPolicy) getCCSectorLifetime() (abi.ChainEpoch, error) { +func (p *BasicPreCommitPolicy) getCCSectorLifetime(nv network.Version) (abi.ChainEpoch, error) { c, err := p.getSealingConfig() if err != nil { return 0, xerrors.Errorf("sealing config load error: %w", err) } + maxCommitment, err := policy.GetMaxSectorExpirationExtension(nv) + if err != nil { + return 0, xerrors.Errorf("failed to get max extension: %w", err) + } + var ccLifetimeEpochs = abi.ChainEpoch(uint64(c.CommittedCapacitySectorLifetime.Seconds()) / builtin.EpochDurationSeconds) // if zero value in config, assume default sector extension if ccLifetimeEpochs == 0 { - ccLifetimeEpochs = policy.GetMaxSectorExpirationExtension() + ccLifetimeEpochs = maxCommitment } if minExpiration := abi.ChainEpoch(miner.MinSectorExpiration); ccLifetimeEpochs < minExpiration { log.Warnf("value for CommittedCapacitySectorLiftime is too short, using default minimum (%d epochs)", minExpiration) return minExpiration, nil } - if maxExpiration := policy.GetMaxSectorExpirationExtension(); ccLifetimeEpochs > maxExpiration { - log.Warnf("value for CommittedCapacitySectorLiftime is too long, using default maximum (%d epochs)", maxExpiration) - return maxExpiration, nil + if ccLifetimeEpochs > maxCommitment { + log.Warnf("value for CommittedCapacitySectorLiftime is too long, using default maximum (%d epochs)", maxCommitment) + return maxCommitment, nil } return ccLifetimeEpochs - p.provingBuffer, nil diff --git a/storage/pipeline/precommit_policy_test.go b/storage/pipeline/precommit_policy_test.go index 9f23e58d6..7865560de 100644 --- a/storage/pipeline/precommit_policy_test.go +++ b/storage/pipeline/precommit_policy_test.go @@ -68,7 +68,9 @@ func TestBasicPolicyEmptySector(t *testing.T) { require.NoError(t, err) // as set when there are no deal pieces - expected := h + policy.GetMaxSectorExpirationExtension() - pBuffer + maxExtension, err := policy.GetMaxSectorExpirationExtension(build.TestNetworkVersion) + assert.NoError(t, err) + expected := h + maxExtension - pBuffer assert.Equal(t, int(expected), int(exp)) } @@ -132,7 +134,7 @@ func TestBasicPolicyMostConstrictiveSchedule(t *testing.T) { func TestBasicPolicyIgnoresExistingScheduleIfExpired(t *testing.T) { cfg := fakeConfigGetter(nil) - policy := pipeline.NewBasicPreCommitPolicy(&fakeChain{ + pcp := pipeline.NewBasicPreCommitPolicy(&fakeChain{ h: abi.ChainEpoch(55), }, cfg, 0) @@ -152,11 +154,14 @@ func TestBasicPolicyIgnoresExistingScheduleIfExpired(t *testing.T) { }, } - exp, err := policy.Expiration(context.Background(), pieces...) + exp, err := pcp.Expiration(context.Background(), pieces...) + require.NoError(t, err) + + maxLifetime, err := policy.GetMaxSectorExpirationExtension(build.TestNetworkVersion) require.NoError(t, err) // Treated as a CC sector, so expiration becomes currEpoch + maxLifetime = 55 + 1555200 - assert.Equal(t, 1555255, int(exp)) + assert.Equal(t, 55+maxLifetime, exp) } func TestMissingDealIsIgnored(t *testing.T) { diff --git a/storage/pipeline/sealiface/config.go b/storage/pipeline/sealiface/config.go index 99715fc28..e41b143ec 100644 --- a/storage/pipeline/sealiface/config.go +++ b/storage/pipeline/sealiface/config.go @@ -60,4 +60,6 @@ type Config struct { TerminateBatchMax uint64 TerminateBatchMin uint64 TerminateBatchWait time.Duration + + UseSyntheticPoRep bool } diff --git a/storage/pipeline/sealing.go b/storage/pipeline/sealing.go index d664de1e2..65d3fb14b 100644 --- a/storage/pipeline/sealing.go +++ b/storage/pipeline/sealing.go @@ -15,7 +15,6 @@ import ( "github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" 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" @@ -24,6 +23,7 @@ import ( "github.com/filecoin-project/go-storedcounter" "github.com/filecoin-project/lotus/api" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" lminer "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/events" "github.com/filecoin-project/lotus/chain/types" @@ -339,7 +339,12 @@ func (m *Sealing) currentSealProof(ctx context.Context) (abi.RegisteredSealProof return 0, err } - return lminer.PreferredSealProofTypeFromWindowPoStType(ver, mi.WindowPoStProofType) + c, err := m.getConfig() + if err != nil { + return 0, err + } + + return lminer.PreferredSealProofTypeFromWindowPoStType(ver, mi.WindowPoStProofType, c.UseSyntheticPoRep) } func (m *Sealing) minerSector(spt abi.RegisteredSealProof, num abi.SectorNumber) storiface.SectorRef { diff --git a/storage/pipeline/states_failed.go b/storage/pipeline/states_failed.go index 203f14910..3323c4c9b 100644 --- a/storage/pipeline/states_failed.go +++ b/storage/pipeline/states_failed.go @@ -10,12 +10,12 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-commp-utils/zerocomm" "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/exitcode" "github.com/filecoin-project/go-statemachine" "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/chain/actors/builtin/market" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/storage/sealer/storiface" ) diff --git a/storage/pipeline/states_replica_update.go b/storage/pipeline/states_replica_update.go index e1b9cfc30..6717f49a6 100644 --- a/storage/pipeline/states_replica_update.go +++ b/storage/pipeline/states_replica_update.go @@ -10,12 +10,12 @@ 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" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/exitcode" "github.com/filecoin-project/go-statemachine" "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/build" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/actors/policy" "github.com/filecoin-project/lotus/chain/types" ) diff --git a/storage/pipeline/states_sealing.go b/storage/pipeline/states_sealing.go index 48d024f85..a562e635c 100644 --- a/storage/pipeline/states_sealing.go +++ b/storage/pipeline/states_sealing.go @@ -17,7 +17,6 @@ import ( actorstypes "github.com/filecoin-project/go-state-types/actors" "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/builtin" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/crypto" "github.com/filecoin-project/go-state-types/exitcode" "github.com/filecoin-project/go-state-types/network" @@ -26,6 +25,7 @@ import ( "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/build" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/actors/policy" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/storage/pipeline/lib/nullreader" @@ -399,7 +399,12 @@ func (m *Sealing) preCommitInfo(ctx statemachine.Context, sector SectorInfo) (*m } // Assume: both precommit msg & commit msg land on chain as early as possible - maxExpiration := ts.Height() + policy.GetPreCommitChallengeDelay() + policy.GetMaxSectorExpirationExtension() + maxExtension, err := policy.GetMaxSectorExpirationExtension(nv) + if err != nil { + return nil, big.Zero(), types.EmptyTSK, ctx.Send(SectorSealPreCommit1Failed{xerrors.Errorf("failed to get max extension: %w", err)}) + } + + maxExpiration := ts.Height() + policy.GetPreCommitChallengeDelay() + maxExtension if expiration > maxExpiration { expiration = maxExpiration } @@ -630,6 +635,7 @@ func (m *Sealing) handleCommitting(ctx statemachine.Context, sector SectorInfo) porepProof, err = m.sealer.SealCommit2(sector.sealingCtx(ctx.Context()), m.minerSector(sector.SectorType, sector.SectorNumber), c2in) if err != nil { + log.Errorw("Commit2 error", "error", err) return ctx.Send(SectorComputeProofFailed{xerrors.Errorf("computing seal proof failed(2): %w", err)}) } } else { diff --git a/storage/sealer/cbor_gen.go b/storage/sealer/cbor_gen.go index 4fa7fd980..22da1b520 100644 --- a/storage/sealer/cbor_gen.go +++ b/storage/sealer/cbor_gen.go @@ -40,7 +40,7 @@ func (t *Call) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("ID"))); err != nil { return err } - if _, err := io.WriteString(w, string("ID")); err != nil { + if _, err := cw.WriteString(string("ID")); err != nil { return err } @@ -56,7 +56,7 @@ func (t *Call) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("State"))); err != nil { return err } - if _, err := io.WriteString(w, string("State")); err != nil { + if _, err := cw.WriteString(string("State")); err != nil { return err } @@ -72,7 +72,7 @@ func (t *Call) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Result"))); err != nil { return err } - if _, err := io.WriteString(w, string("Result")); err != nil { + if _, err := cw.WriteString(string("Result")); err != nil { return err } @@ -88,7 +88,7 @@ func (t *Call) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("RetType"))); err != nil { return err } - if _, err := io.WriteString(w, string("RetType")); err != nil { + if _, err := cw.WriteString(string("RetType")); err != nil { return err } @@ -99,7 +99,7 @@ func (t *Call) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.RetType))); err != nil { return err } - if _, err := io.WriteString(w, string(t.RetType)); err != nil { + if _, err := cw.WriteString(string(t.RetType)); err != nil { return err } return nil @@ -228,7 +228,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("ID"))); err != nil { return err } - if _, err := io.WriteString(w, string("ID")); err != nil { + if _, err := cw.WriteString(string("ID")); err != nil { return err } @@ -244,7 +244,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Status"))); err != nil { return err } - if _, err := io.WriteString(w, string("Status")); err != nil { + if _, err := cw.WriteString(string("Status")); err != nil { return err } @@ -255,7 +255,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Status))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Status)); err != nil { + if _, err := cw.WriteString(string(t.Status)); err != nil { return err } @@ -267,7 +267,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("StartTime"))); err != nil { return err } - if _, err := io.WriteString(w, string("StartTime")); err != nil { + if _, err := cw.WriteString(string("StartTime")); err != nil { return err } @@ -289,7 +289,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("WorkError"))); err != nil { return err } - if _, err := io.WriteString(w, string("WorkError")); err != nil { + if _, err := cw.WriteString(string("WorkError")); err != nil { return err } @@ -300,7 +300,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.WorkError))); err != nil { return err } - if _, err := io.WriteString(w, string(t.WorkError)); err != nil { + if _, err := cw.WriteString(string(t.WorkError)); err != nil { return err } @@ -312,7 +312,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("WorkerCall"))); err != nil { return err } - if _, err := io.WriteString(w, string("WorkerCall")); err != nil { + if _, err := cw.WriteString(string("WorkerCall")); err != nil { return err } @@ -328,7 +328,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("WorkerHostname"))); err != nil { return err } - if _, err := io.WriteString(w, string("WorkerHostname")); err != nil { + if _, err := cw.WriteString(string("WorkerHostname")); err != nil { return err } @@ -339,7 +339,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.WorkerHostname))); err != nil { return err } - if _, err := io.WriteString(w, string(t.WorkerHostname)); err != nil { + if _, err := cw.WriteString(string(t.WorkerHostname)); err != nil { return err } return nil @@ -491,7 +491,7 @@ func (t *WorkID) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Method"))); err != nil { return err } - if _, err := io.WriteString(w, string("Method")); err != nil { + if _, err := cw.WriteString(string("Method")); err != nil { return err } @@ -502,7 +502,7 @@ func (t *WorkID) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Method))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Method)); err != nil { + if _, err := cw.WriteString(string(t.Method)); err != nil { return err } @@ -514,7 +514,7 @@ func (t *WorkID) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Params"))); err != nil { return err } - if _, err := io.WriteString(w, string("Params")); err != nil { + if _, err := cw.WriteString(string("Params")); err != nil { return err } @@ -525,7 +525,7 @@ func (t *WorkID) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Params))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Params)); err != nil { + if _, err := cw.WriteString(string(t.Params)); err != nil { return err } return nil diff --git a/storage/sealer/ffiwrapper/sealer_cgo.go b/storage/sealer/ffiwrapper/sealer_cgo.go index b11dec9ce..fec12f231 100644 --- a/storage/sealer/ffiwrapper/sealer_cgo.go +++ b/storage/sealer/ffiwrapper/sealer_cgo.go @@ -896,15 +896,49 @@ func (sb *Sealer) SealPreCommit2(ctx context.Context, sector storiface.SectorRef return storiface.SectorCids{}, xerrors.Errorf("unmarshaling pc1 output: %w", err) } - var ticket abi.SealRandomness ti, found := p1odec["_lotus_SealRandomness"] + if abi.Synthetic[sector.ProofType] { + if !found { + return storiface.SectorCids{}, xerrors.Errorf("synthetic mode: ticket not found") + } + } + if found { - ticket, err = base64.StdEncoding.DecodeString(ti.(string)) + ticket, err := base64.StdEncoding.DecodeString(ti.(string)) if err != nil { return storiface.SectorCids{}, xerrors.Errorf("decoding ticket: %w", err) } + if abi.Synthetic[sector.ProofType] { + // note: we generate synth porep challenges first because the C1 check below reads from those + + err = ffi.GenerateSynthProofs( + sector.ProofType, + sealedCID, + unsealedCID, + paths.Cache, + paths.Sealed, + sector.ID.Number, + sector.ID.Miner, ticket, + []abi.PieceInfo{{Size: abi.PaddedPieceSize(ssize), PieceCID: unsealedCID}}) + if err != nil { + log.Warn("GenerateSynthProofs() failed: ", err) + log.Warnf("num:%d tkt:%v, sealedCID:%v, unsealedCID:%v", sector.ID.Number, ticket, sealedCID, unsealedCID) + return storiface.SectorCids{}, xerrors.Errorf("generate synth proofs: %w", err) + } + + if err = ffi.ClearLayerData(ssize, paths.Cache); err != nil { + log.Warn("failed to GenerateSynthProofs(): ", err) + log.Warnf("num:%d tkt:%v, sealedCID:%v, unsealedCID:%v", sector.ID.Number, ticket, sealedCID, unsealedCID) + return storiface.SectorCids{ + Unsealed: unsealedCID, + Sealed: sealedCID, + }, nil + // Note: non-fatal error. + } + } + for i := 0; i < PC2CheckRounds; i++ { var sd [32]byte _, _ = rand.Read(sd[:]) @@ -960,6 +994,7 @@ func (sb *Sealer) SealCommit1(ctx context.Context, sector storiface.SectorRef, t return nil, xerrors.Errorf("StandaloneSealCommit: %w", err) } + return output, nil } @@ -1149,6 +1184,13 @@ func (sb *Sealer) FinalizeSector(ctx context.Context, sector storiface.SectorRef } defer done() + if abi.Synthetic[sector.ProofType] { + if err = ffi.ClearSyntheticProofs(uint64(ssize), paths.Cache); err != nil { + log.Warn("Unable to delete Synth cache:", err) + // Pass-Thru on error. + } + } + return ffi.ClearCache(uint64(ssize), paths.Cache) } @@ -1187,6 +1229,13 @@ func (sb *Sealer) FinalizeSectorInto(ctx context.Context, sector storiface.Secto } } + if abi.Synthetic[sector.ProofType] { + if err = ffi.ClearSyntheticProofs(uint64(ssize), dest); err != nil { + log.Warn("Unable to delete Synth cache:", err) + // Pass-Thru on error. + } + } + return ffi.ClearCache(uint64(ssize), dest) } @@ -1203,6 +1252,12 @@ func (sb *Sealer) FinalizeReplicaUpdate(ctx context.Context, sector storiface.Se } defer done() + if abi.Synthetic[sector.ProofType] { + if err = ffi.ClearSyntheticProofs(uint64(ssize), paths.Cache); err != nil { + return xerrors.Errorf("clear synth cache: %w", err) + } + } + if err := ffi.ClearCache(uint64(ssize), paths.Cache); err != nil { return xerrors.Errorf("clear cache: %w", err) } @@ -1215,6 +1270,8 @@ func (sb *Sealer) FinalizeReplicaUpdate(ctx context.Context, sector storiface.Se } defer done() + // note: synth cache is not a thing for snapdeals + if err := ffi.ClearCache(uint64(ssize), paths.UpdateCache); err != nil { return xerrors.Errorf("clear cache: %w", err) } diff --git a/storage/sealer/ffiwrapper/sealer_test.go b/storage/sealer/ffiwrapper/sealer_test.go index 78c0ffb06..745cc7375 100644 --- a/storage/sealer/ffiwrapper/sealer_test.go +++ b/storage/sealer/ffiwrapper/sealer_test.go @@ -1087,7 +1087,111 @@ func TestDCAPCloses(t *testing.T) { require.Equal(t, "baga6ea4seaqeje7jy4hufnybpo7ckxzujaigqbcxhdjq7ojb4b6xzgqdugkyciq", c.PieceCID.String()) require.True(t, clr.closed) }) +} +func TestSealAndVerifySynth(t *testing.T) { + sealProofType = abi.RegisteredSealProof_StackedDrg2KiBV1_1_Feat_SyntheticPoRep + + if testing.Short() { + t.Skip("skipping test in short mode") + } + + defer requireFDsClosed(t, openFDs(t)) + + if runtime.NumCPU() < 10 && os.Getenv("CI") == "" { // don't bother on slow hardware + t.Skip("this is slow") + } + _ = os.Setenv("RUST_LOG", "info") + + getGrothParamFileAndVerifyingKeys(sectorSize) + + cdir, err := os.MkdirTemp("", "sbtest-c-") + if err != nil { + t.Fatal(err) + } + miner := abi.ActorID(123) + + synthPorRepVProofsName := "syn-porep-vanilla-proofs.dat" + + printFileList := func(stage string, expectSynthPorep bool) { + var hasSynthPorep bool + + fmt.Println("----file list:", stage) + err := filepath.Walk(cdir, func(path string, info os.FileInfo, err error) error { + if strings.Contains(path, synthPorRepVProofsName) { + hasSynthPorep = true + } + fmt.Println(path) + return nil + }) + if err != nil { + t.Fatal(err) + } + + require.Equal(t, expectSynthPorep, hasSynthPorep) + + fmt.Println("----") + } + + sp := &basicfs.Provider{ + Root: cdir, + } + sb, err := New(sp) + if err != nil { + t.Fatalf("%+v", err) + } + t.Cleanup(func() { + if t.Failed() { + fmt.Printf("not removing %s\n", cdir) + return + } + if err := os.RemoveAll(cdir); err != nil { + t.Error(err) + } + }) + + si := storiface.SectorRef{ + ID: abi.SectorID{Miner: miner, Number: 1}, + ProofType: sealProofType, + } + + s := seal{ref: si} + + start := time.Now() + + s.precommit(t, sb, si, func() {}) + + printFileList("precommit", true) + + precommit := time.Now() + + s.commit(t, sb, func() {}) + + printFileList("commit", true) + + commit := time.Now() + + post(t, sb, nil, s) + + printFileList("post", true) + + epost := time.Now() + + post(t, sb, nil, s) + + if err := sb.FinalizeSector(context.TODO(), si); err != nil { + t.Fatalf("%+v", err) + } + + printFileList("finalize", false) + + s.unseal(t, sb, sp, si, func() {}) + + printFileList("unseal", false) + + fmt.Printf("PreCommit: %s\n", precommit.Sub(start).String()) + fmt.Printf("Commit: %s\n", commit.Sub(precommit).String()) + fmt.Printf("EPoSt: %s\n", epost.Sub(commit).String()) } type closeAssertReader struct { diff --git a/storage/sealer/storiface/cbor_gen.go b/storage/sealer/storiface/cbor_gen.go index 2f82da3e6..0b42136ea 100644 --- a/storage/sealer/storiface/cbor_gen.go +++ b/storage/sealer/storiface/cbor_gen.go @@ -38,7 +38,7 @@ func (t *CallID) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("ID"))); err != nil { return err } - if _, err := io.WriteString(w, string("ID")); err != nil { + if _, err := cw.WriteString(string("ID")); err != nil { return err } @@ -62,7 +62,7 @@ func (t *CallID) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Sector"))); err != nil { return err } - if _, err := io.WriteString(w, string("Sector")); err != nil { + if _, err := cw.WriteString(string("Sector")); err != nil { return err } @@ -173,7 +173,7 @@ func (t *SecDataHttpHeader) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Key"))); err != nil { return err } - if _, err := io.WriteString(w, string("Key")); err != nil { + if _, err := cw.WriteString(string("Key")); err != nil { return err } @@ -184,7 +184,7 @@ func (t *SecDataHttpHeader) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Key))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Key)); err != nil { + if _, err := cw.WriteString(string(t.Key)); err != nil { return err } @@ -196,7 +196,7 @@ func (t *SecDataHttpHeader) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Value"))); err != nil { return err } - if _, err := io.WriteString(w, string("Value")); err != nil { + if _, err := cw.WriteString(string("Value")); err != nil { return err } @@ -207,7 +207,7 @@ func (t *SecDataHttpHeader) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Value))); err != nil { return err } - if _, err := io.WriteString(w, string(t.Value)); err != nil { + if _, err := cw.WriteString(string(t.Value)); err != nil { return err } return nil @@ -302,7 +302,7 @@ func (t *SectorLocation) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("URL"))); err != nil { return err } - if _, err := io.WriteString(w, string("URL")); err != nil { + if _, err := cw.WriteString(string("URL")); err != nil { return err } @@ -313,7 +313,7 @@ func (t *SectorLocation) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.URL))); err != nil { return err } - if _, err := io.WriteString(w, string(t.URL)); err != nil { + if _, err := cw.WriteString(string(t.URL)); err != nil { return err } @@ -325,7 +325,7 @@ func (t *SectorLocation) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Local"))); err != nil { return err } - if _, err := io.WriteString(w, string("Local")); err != nil { + if _, err := cw.WriteString(string("Local")); err != nil { return err } @@ -341,7 +341,7 @@ func (t *SectorLocation) MarshalCBOR(w io.Writer) error { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Headers"))); err != nil { return err } - if _, err := io.WriteString(w, string("Headers")); err != nil { + if _, err := cw.WriteString(string("Headers")); err != nil { return err } @@ -448,13 +448,22 @@ func (t *SectorLocation) UnmarshalCBOR(r io.Reader) (err error) { } for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err - var v SecDataHttpHeader - if err := v.UnmarshalCBOR(cr); err != nil { - return err + { + + if err := t.Headers[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Headers[i]: %w", err) + } + + } } - - t.Headers[i] = v } default: diff --git a/storage/sealer/storiface/resources.go b/storage/sealer/storiface/resources.go index 0fd80d79a..6f8d83265 100644 --- a/storage/sealer/storiface/resources.go +++ b/storage/sealer/storiface/resources.go @@ -587,13 +587,18 @@ func init() { ResourceTable[sealtasks.TTDataCid][proof] = ResourceTable[sealtasks.TTAddPiece][abi.RegisteredSealProof_StackedDrg32GiBV1] } - // V1_1 is the same as V1 + // V1_1 and SynthethicpoRep is the same as V1 for _, m := range ResourceTable { m[abi.RegisteredSealProof_StackedDrg2KiBV1_1] = m[abi.RegisteredSealProof_StackedDrg2KiBV1] + m[abi.RegisteredSealProof_StackedDrg2KiBV1_1_Feat_SyntheticPoRep] = m[abi.RegisteredSealProof_StackedDrg2KiBV1] m[abi.RegisteredSealProof_StackedDrg8MiBV1_1] = m[abi.RegisteredSealProof_StackedDrg8MiBV1] + m[abi.RegisteredSealProof_StackedDrg8MiBV1_1_Feat_SyntheticPoRep] = m[abi.RegisteredSealProof_StackedDrg8MiBV1] m[abi.RegisteredSealProof_StackedDrg512MiBV1_1] = m[abi.RegisteredSealProof_StackedDrg512MiBV1] + m[abi.RegisteredSealProof_StackedDrg512MiBV1_1_Feat_SyntheticPoRep] = m[abi.RegisteredSealProof_StackedDrg512MiBV1] m[abi.RegisteredSealProof_StackedDrg32GiBV1_1] = m[abi.RegisteredSealProof_StackedDrg32GiBV1] + m[abi.RegisteredSealProof_StackedDrg32GiBV1_1_Feat_SyntheticPoRep] = m[abi.RegisteredSealProof_StackedDrg32GiBV1] m[abi.RegisteredSealProof_StackedDrg64GiBV1_1] = m[abi.RegisteredSealProof_StackedDrg64GiBV1] + m[abi.RegisteredSealProof_StackedDrg64GiBV1_1_Feat_SyntheticPoRep] = m[abi.RegisteredSealProof_StackedDrg64GiBV1] } } diff --git a/storage/wdpost/wdpost_changehandler.go b/storage/wdpost/wdpost_changehandler.go index 266b8b042..5f4b0ca0c 100644 --- a/storage/wdpost/wdpost_changehandler.go +++ b/storage/wdpost/wdpost_changehandler.go @@ -6,9 +6,9 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/dline" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/types" ) @@ -531,12 +531,12 @@ func nextDeadline(currentDeadline *dline.Info) *dline.Info { newDeadline := currentDeadline.Index + 1 if newDeadline == miner.WPoStPeriodDeadlines { newDeadline = 0 - periodStart = periodStart + miner.WPoStProvingPeriod + periodStart = periodStart + miner.WPoStProvingPeriod() } return NewDeadlineInfo(periodStart, newDeadline, currentDeadline.CurrentEpoch) } func NewDeadlineInfo(periodStart abi.ChainEpoch, deadlineIdx uint64, currEpoch abi.ChainEpoch) *dline.Info { - return dline.NewInfo(periodStart, deadlineIdx, currEpoch, miner.WPoStPeriodDeadlines, miner.WPoStProvingPeriod, miner.WPoStChallengeWindow, miner.WPoStChallengeLookback, miner.FaultDeclarationCutoff) + return dline.NewInfo(periodStart, deadlineIdx, currEpoch, miner.WPoStPeriodDeadlines, miner.WPoStProvingPeriod(), miner.WPoStChallengeWindow(), miner.WPoStChallengeLookback, miner.FaultDeclarationCutoff) } diff --git a/storage/wdpost/wdpost_journal.go b/storage/wdpost/wdpost_journal.go index 406628f68..68cad3fcf 100644 --- a/storage/wdpost/wdpost_journal.go +++ b/storage/wdpost/wdpost_journal.go @@ -4,8 +4,9 @@ import ( "github.com/ipfs/go-cid" "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/dline" + + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" ) // SchedulerState defines the possible states in which the scheduler could be, diff --git a/storage/wdpost/wdpost_run.go b/storage/wdpost/wdpost_run.go index 8871d832d..e8a59f629 100644 --- a/storage/wdpost/wdpost_run.go +++ b/storage/wdpost/wdpost_run.go @@ -15,7 +15,6 @@ 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" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/crypto" "github.com/filecoin-project/go-state-types/dline" "github.com/filecoin-project/go-state-types/network" @@ -25,6 +24,7 @@ import ( "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/build" "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/actors/policy" "github.com/filecoin-project/lotus/chain/messagepool" "github.com/filecoin-project/lotus/chain/types" diff --git a/storage/wdpost/wdpost_run_faults.go b/storage/wdpost/wdpost_run_faults.go index 582e61f9d..3a41cc4cc 100644 --- a/storage/wdpost/wdpost_run_faults.go +++ b/storage/wdpost/wdpost_run_faults.go @@ -14,12 +14,12 @@ import ( "github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/builtin" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/dline" "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/build" "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/types" ) diff --git a/storage/wdpost/wdpost_run_test.go b/storage/wdpost/wdpost_run_test.go index bfc9ef9c1..a3847a6f6 100644 --- a/storage/wdpost/wdpost_run_test.go +++ b/storage/wdpost/wdpost_run_test.go @@ -298,7 +298,7 @@ func TestWDPostDoPostPartLimitConfig(t *testing.T) { //stm: @CHAIN_SYNCER_COLLECT_CHAIN_001, @CHAIN_SYNCER_COLLECT_HEADERS_001, @CHAIN_SYNCER_VALIDATE_TIPSET_001 //stm: @CHAIN_SYNCER_NEW_PEER_HEAD_001, @CHAIN_SYNCER_VALIDATE_MESSAGE_META_001, @CHAIN_SYNCER_STOP_001 ctx := context.Background() - expectedMsgCount := 364 + expectedMsgCount := 8 proofType := abi.RegisteredPoStProof_StackedDrgWindow2KiBV1 postAct := tutils.NewIDAddr(t, 100) @@ -318,15 +318,15 @@ func TestWDPostDoPostPartLimitConfig(t *testing.T) { partitionsPerMsg = minertypes.AddressedPartitionsMax } - partitionCount := 4 * partitionsPerMsg + partitionCount := 5 * partitionsPerMsg // Assert that user config is less than network limit - userPartLimit := 33 - lastMsgParts := 21 - require.Greater(t, partitionCount, userPartLimit) + userPartLimit := 2 + lastMsgParts := 1 + require.Greater(t, partitionsPerMsg, userPartLimit) // Assert that we consts are correct - require.Equal(t, (expectedMsgCount-1)*userPartLimit+lastMsgParts, 4*partitionsPerMsg) + require.Equal(t, (expectedMsgCount-1)*userPartLimit+lastMsgParts, partitionCount) var partitions []api.Partition for p := 0; p < partitionCount; p++ { @@ -398,7 +398,7 @@ func TestBatchPartitionsRecoverySectors(t *testing.T) { mockStgMinerAPI := newMockStorageMinerAPI() - userPartLimit := 4 + userPartLimit := 2 scheduler := &WindowPoStScheduler{ api: mockStgMinerAPI, @@ -426,12 +426,12 @@ func TestBatchPartitionsRecoverySectors(t *testing.T) { } partitions = append(partitions, generatePartition(100, 10)) - expectedBatchLens := []int{4, 1, 1, 4, 2, 1} + expectedBatchLens := []int{2, 2, 1, 1, 2, 2, 2, 1} - batches, err := scheduler.BatchPartitions(partitions, network.Version16) + batches, err := scheduler.BatchPartitions(partitions, network.Version21) require.NoError(t, err) - require.Equal(t, len(batches), 6) + require.Equal(t, len(batches), len(expectedBatchLens)) for i, batch := range batches { require.Equal(t, len(batch), expectedBatchLens[i]) diff --git a/storage/wdpost/wdpost_sched.go b/storage/wdpost/wdpost_sched.go index 059b1bf0c..aaa7361b4 100644 --- a/storage/wdpost/wdpost_sched.go +++ b/storage/wdpost/wdpost_sched.go @@ -12,14 +12,13 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/crypto" "github.com/filecoin-project/go-state-types/dline" "github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/build" - lminer "github.com/filecoin-project/lotus/chain/actors/builtin/miner" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/store" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/journal" @@ -45,7 +44,7 @@ type NodeAPI interface { StateMinerPartitions(context.Context, address.Address, uint64, types.TipSetKey) ([]api.Partition, error) StateLookupID(context.Context, address.Address, types.TipSetKey) (address.Address, error) StateAccountKey(context.Context, address.Address, types.TipSetKey) (address.Address, error) - StateSectorPartition(ctx context.Context, maddr address.Address, sectorNumber abi.SectorNumber, tok types.TipSetKey) (*lminer.SectorLocation, error) + StateSectorPartition(ctx context.Context, maddr address.Address, sectorNumber abi.SectorNumber, tok types.TipSetKey) (*miner.SectorLocation, error) MpoolPushMessage(context.Context, *types.Message, *api.MessageSendSpec) (*types.SignedMessage, error)