From 5a2ee69fd5fb460bd7c27023fa51bf79776b470a Mon Sep 17 00:00:00 2001 From: LexLuthr <88259624+LexLuthr@users.noreply.github.com> Date: Wed, 24 Jul 2024 21:02:29 +0400 Subject: [PATCH 01/18] fix: lotus-miner: remove provecommit1 method (#12251) * remove provecommit1 * add changelog * update precommit and commit params * fix lint error * fix commit params --- storage/pipeline/commit_batch.go | 338 ++-------------------- storage/pipeline/states_replica_update.go | 74 +---- storage/pipeline/states_sealing.go | 165 +++-------- 3 files changed, 79 insertions(+), 498 deletions(-) diff --git a/storage/pipeline/commit_batch.go b/storage/pipeline/commit_batch.go index ba09ef38f50..a1431fbcca5 100644 --- a/storage/pipeline/commit_batch.go +++ b/storage/pipeline/commit_batch.go @@ -7,11 +7,9 @@ import ( "sync" "time" - "github.com/ipfs/go-cid" "golang.org/x/xerrors" "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-bitfield" "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" @@ -215,7 +213,7 @@ func (b *CommitBatcher) maybeStartBatch(notif bool) ([]sealiface.CommitBatchRes, return nil, nil } - var res, resV1 []sealiface.CommitBatchRes + var res []sealiface.CommitBatchRes ts, err := b.api.ChainHead(b.mctx) if err != nil { @@ -243,67 +241,22 @@ func (b *CommitBatcher) maybeStartBatch(notif bool) ([]sealiface.CommitBatchRes, } } - if nv >= MinDDONetworkVersion { - // After nv21, we have a new ProveCommitSectors2 method, which supports - // batching without aggregation, but it doesn't support onboarding - // sectors which were precommitted with DealIDs in the precommit message. - // We prefer it for all other sectors, so first we use the new processBatchV2 - - var sectors []abi.SectorNumber - for sn := range b.todo { - sectors = append(sectors, sn) - } - res, err = b.processBatchV2(cfg, sectors, nv, !individual) - if err != nil { - err = xerrors.Errorf("processBatchV2: %w", err) - } - - // Mark sectors as done - for _, r := range res { - if err != nil { - r.Error = err.Error() - } - - for _, sn := range r.Sectors { - for _, ch := range b.waiting[sn] { - ch <- r // buffered - } - - delete(b.waiting, sn) - delete(b.todo, sn) - delete(b.cutoffs, sn) - } - } - } - - if err != nil { - log.Warnf("CommitBatcher maybeStartBatch processBatch-ddo %v", err) - } + // After nv21, we have a new ProveCommitSectors2 method, which supports + // batching without aggregation, but it doesn't support onboarding + // sectors which were precommitted with DealIDs in the precommit message. + // We prefer it for all other sectors, so first we use the new processBatchV2 - if err != nil && len(res) == 0 { - return nil, err - } - - if individual { - resV1, err = b.processIndividually(cfg) - } else { - var sectors []abi.SectorNumber - for sn := range b.todo { - sectors = append(sectors, sn) - } - resV1, err = b.processBatchV1(cfg, sectors, nv) + var sectors []abi.SectorNumber + for sn := range b.todo { + sectors = append(sectors, sn) } - + res, err = b.processBatchV2(cfg, sectors, nv, !individual) if err != nil { - log.Warnf("CommitBatcher maybeStartBatch individual:%v processBatch %v", individual, err) + err = xerrors.Errorf("processBatchV2: %w", err) } - if err != nil && len(resV1) == 0 { - return nil, err - } - - // Mark the rest as processed - for _, r := range resV1 { + // Mark sectors as done + for _, r := range res { if err != nil { r.Error = err.Error() } @@ -319,7 +272,13 @@ func (b *CommitBatcher) maybeStartBatch(notif bool) ([]sealiface.CommitBatchRes, } } - res = append(res, resV1...) + if err != nil { + log.Warnf("CommitBatcher maybeStartBatch processBatch-ddo %v", err) + } + + if err != nil && len(res) == 0 { + return nil, err + } return res, nil } @@ -357,7 +316,6 @@ func (b *CommitBatcher) processBatchV2(cfg sealiface.Config, sectors []abi.Secto for _, sector := range sectors { if b.todo[sector].DealIDPrecommit { - // can't process sectors precommitted with deal IDs with ProveCommitSectors2 continue } @@ -499,263 +457,7 @@ func (b *CommitBatcher) processBatchV2(cfg sealiface.Config, sectors []abi.Secto return []sealiface.CommitBatchRes{res}, nil } -// processBatchV1 processes a batch of sectors before nv22. It always sends out an aggregate message. -func (b *CommitBatcher) processBatchV1(cfg sealiface.Config, sectors []abi.SectorNumber, nv network.Version) ([]sealiface.CommitBatchRes, error) { - ts, err := b.api.ChainHead(b.mctx) - if err != nil { - return nil, err - } - - total := len(sectors) - - res := sealiface.CommitBatchRes{ - FailedSectors: map[abi.SectorNumber]string{}, - } - - params := miner.ProveCommitAggregateParams{ - SectorNumbers: bitfield.New(), - } - - proofs := make([][]byte, 0, total) - infos := make([]proof.AggregateSealVerifyInfo, 0, total) - collateral := big.Zero() - - for _, sector := range sectors { - res.Sectors = append(res.Sectors, sector) - - sc, err := b.getSectorCollateral(sector, ts.Key()) - if err != nil { - res.FailedSectors[sector] = err.Error() - continue - } - - collateral = big.Add(collateral, sc) - - params.SectorNumbers.Set(uint64(sector)) - infos = append(infos, b.todo[sector].Info) - } - - if len(infos) == 0 { - return nil, nil - } - - sort.Slice(infos, func(i, j int) bool { - return infos[i].Number < infos[j].Number - }) - - for _, info := range infos { - proofs = append(proofs, b.todo[info.Number].Proof) - } - - mid, err := address.IDFromAddress(b.maddr) - if err != nil { - res.Error = err.Error() - return []sealiface.CommitBatchRes{res}, xerrors.Errorf("getting miner id: %w", err) - } - - arp, err := b.aggregateProofType(nv) - if err != nil { - res.Error = err.Error() - return []sealiface.CommitBatchRes{res}, xerrors.Errorf("getting aggregate proof type: %w", err) - } - - params.AggregateProof, err = b.prover.AggregateSealProofs(proof.AggregateSealVerifyProofAndInfos{ - Miner: abi.ActorID(mid), - SealProof: b.todo[infos[0].Number].Spt, - AggregateProof: arp, - Infos: infos, - }, proofs) - if err != nil { - res.Error = err.Error() - return []sealiface.CommitBatchRes{res}, xerrors.Errorf("aggregating proofs: %w", err) - } - - enc := new(bytes.Buffer) - if err := params.MarshalCBOR(enc); err != nil { - res.Error = err.Error() - return []sealiface.CommitBatchRes{res}, xerrors.Errorf("couldn't serialize ProveCommitAggregateParams: %w", err) - } - - mi, err := b.api.StateMinerInfo(b.mctx, b.maddr, types.EmptyTSK) - if err != nil { - res.Error = err.Error() - return []sealiface.CommitBatchRes{res}, xerrors.Errorf("couldn't get miner info: %w", err) - } - - maxFee := b.feeCfg.MaxCommitBatchGasFee.FeeForSectors(len(infos)) - - aggFeeRaw, err := policy.AggregateProveCommitNetworkFee(nv, len(infos), ts.MinTicketBlock().ParentBaseFee) - if err != nil { - res.Error = err.Error() - log.Errorf("getting aggregate commit network fee: %s", err) - return []sealiface.CommitBatchRes{res}, xerrors.Errorf("getting aggregate commit network fee: %s", err) - } - - aggFee := big.Div(big.Mul(aggFeeRaw, aggFeeNum), aggFeeDen) - - needFunds := big.Add(collateral, aggFee) - needFunds, err = collateralSendAmount(b.mctx, b.api, b.maddr, cfg, needFunds) - if err != nil { - res.Error = err.Error() - return []sealiface.CommitBatchRes{res}, err - } - - goodFunds := big.Add(maxFee, needFunds) - - from, _, err := b.addrSel.AddressFor(b.mctx, b.api, mi, api.CommitAddr, goodFunds, needFunds) - if err != nil { - res.Error = err.Error() - return []sealiface.CommitBatchRes{res}, xerrors.Errorf("no good address found: %w", err) - } - - _, err = simulateMsgGas(b.mctx, b.api, from, b.maddr, builtin.MethodsMiner.ProveCommitAggregate, needFunds, maxFee, enc.Bytes()) - - if err != nil && (!api.ErrorIsIn(err, []error{&api.ErrOutOfGas{}}) || len(sectors) < miner.MinAggregatedSectors*2) { - log.Errorf("simulating CommitBatch %s", err) - res.Error = err.Error() - return []sealiface.CommitBatchRes{res}, xerrors.Errorf("simulating CommitBatch %w", err) - } - - // If we're out of gas, split the batch in half and evaluate again - if api.ErrorIsIn(err, []error{&api.ErrOutOfGas{}}) { - log.Warnf("CommitAggregate message ran out of gas, splitting batch in half and trying again (sectors: %d)", len(sectors)) - mid := len(sectors) / 2 - ret0, _ := b.processBatchV1(cfg, sectors[:mid], nv) - ret1, _ := b.processBatchV1(cfg, sectors[mid:], nv) - - return append(ret0, ret1...), nil - } - - mcid, err := sendMsg(b.mctx, b.api, from, b.maddr, builtin.MethodsMiner.ProveCommitAggregate, needFunds, maxFee, enc.Bytes()) - if err != nil { - return []sealiface.CommitBatchRes{res}, xerrors.Errorf("sending message failed: %w", err) - } - - res.Msg = &mcid - - log.Infow("Sent ProveCommitAggregate message", "cid", mcid, "from", from, "todo", total, "sectors", len(infos)) - - return []sealiface.CommitBatchRes{res}, nil -} - -func (b *CommitBatcher) processIndividually(cfg sealiface.Config) ([]sealiface.CommitBatchRes, error) { - - mi, err := b.api.StateMinerInfo(b.mctx, b.maddr, types.EmptyTSK) - if err != nil { - return nil, xerrors.Errorf("couldn't get miner info: %w", err) - } - - avail := types.TotalFilecoinInt - - if cfg.CollateralFromMinerBalance && !cfg.DisableCollateralFallback { - avail, err = b.api.StateMinerAvailableBalance(b.mctx, b.maddr, types.EmptyTSK) - if err != nil { - return nil, xerrors.Errorf("getting available miner balance: %w", err) - } - - avail = big.Sub(avail, cfg.AvailableBalanceBuffer) - if avail.LessThan(big.Zero()) { - avail = big.Zero() - } - } - - ts, err := b.api.ChainHead(b.mctx) - if err != nil { - return nil, err - } - - var res []sealiface.CommitBatchRes - - sectorsProcessed := 0 - - for sn, info := range b.todo { - r := sealiface.CommitBatchRes{ - Sectors: []abi.SectorNumber{sn}, - FailedSectors: map[abi.SectorNumber]string{}, - } - - if cfg.MaxSectorProveCommitsSubmittedPerEpoch > 0 && - uint64(sectorsProcessed) >= cfg.MaxSectorProveCommitsSubmittedPerEpoch { - - tmp := ts - for tmp.Height() <= ts.Height() { - tmp, err = b.api.ChainHead(b.mctx) - if err != nil { - log.Errorf("getting chain head: %+v", err) - return nil, err - } - time.Sleep(3 * time.Second) - } - - sectorsProcessed = 0 - ts = tmp - } - - mcid, err := b.processSingle(cfg, mi, &avail, sn, info, ts.Key()) - if err != nil { - log.Errorf("process single error: %+v", err) // todo: return to user - r.FailedSectors[sn] = err.Error() - } else { - r.Msg = &mcid - } - - res = append(res, r) - - sectorsProcessed++ - } - - return res, nil -} - -func (b *CommitBatcher) processSingle(cfg sealiface.Config, mi api.MinerInfo, avail *abi.TokenAmount, sn abi.SectorNumber, info AggregateInput, tsk types.TipSetKey) (cid.Cid, error) { - return b.processSingleV1(cfg, mi, avail, sn, info, tsk) -} - -func (b *CommitBatcher) processSingleV1(cfg sealiface.Config, mi api.MinerInfo, avail *abi.TokenAmount, sn abi.SectorNumber, info AggregateInput, tsk types.TipSetKey) (cid.Cid, error) { - enc := new(bytes.Buffer) - params := &miner.ProveCommitSectorParams{ - SectorNumber: sn, - Proof: info.Proof, - } - - if err := params.MarshalCBOR(enc); err != nil { - return cid.Undef, xerrors.Errorf("marshaling commit params: %w", err) - } - - collateral, err := b.getSectorCollateral(sn, tsk) - if err != nil { - return cid.Undef, err - } - - if cfg.CollateralFromMinerBalance { - c := big.Sub(collateral, *avail) - *avail = big.Sub(*avail, collateral) - collateral = c - - if collateral.LessThan(big.Zero()) { - collateral = big.Zero() - } - if (*avail).LessThan(big.Zero()) { - *avail = big.Zero() - } - } - - goodFunds := big.Add(collateral, big.Int(b.feeCfg.MaxCommitGasFee)) - - from, _, err := b.addrSel.AddressFor(b.mctx, b.api, mi, api.CommitAddr, goodFunds, collateral) - if err != nil { - return cid.Undef, xerrors.Errorf("no good address to send commit message from: %w", err) - } - - mcid, err := sendMsg(b.mctx, b.api, from, b.maddr, builtin.MethodsMiner.ProveCommitSector, collateral, big.Int(b.feeCfg.MaxCommitGasFee), enc.Bytes()) - if err != nil { - return cid.Undef, xerrors.Errorf("pushing message to mpool: %w", err) - } - - return mcid, nil -} - -// register commit, wait for batch message, return message CID +// AddCommit registers commit, wait for batch message, return message CID func (b *CommitBatcher) AddCommit(ctx context.Context, s SectorInfo, in AggregateInput) (res sealiface.CommitBatchRes, err error) { sn := s.SectorNumber diff --git a/storage/pipeline/states_replica_update.go b/storage/pipeline/states_replica_update.go index 85e3fabee79..0c743f9db0a 100644 --- a/storage/pipeline/states_replica_update.go +++ b/storage/pipeline/states_replica_update.go @@ -11,7 +11,6 @@ import ( "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/exitcode" - "github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/go-statemachine" "github.com/filecoin-project/lotus/api" @@ -169,70 +168,28 @@ func (m *Sealing) handleSubmitReplicaUpdate(ctx statemachine.Context, sector Sec return ctx.Send(SectorSubmitReplicaUpdateFailed{}) } - // figure out message type - - nv, err := m.Api.StateNetworkVersion(ctx.Context(), ts.Key()) - if err != nil { - log.Errorf("failed to get network version: %+v", err) - return ctx.Send(SectorSubmitReplicaUpdateFailed{}) - } - - pams, deals, err := m.processPieces(ctx.Context(), sector, nv >= network.Version22) + pams, err := m.processPieces(ctx.Context(), sector) if err != nil { log.Errorf("failed to process pieces: %+v", err) return ctx.Send(SectorSubmitReplicaUpdateFailed{}) } - if len(pams) > 0 { - // PRU3 - - params := &miner.ProveReplicaUpdates3Params{ - SectorUpdates: []miner.SectorUpdateManifest{ - { - Sector: sector.SectorNumber, - Deadline: sl.Deadline, - Partition: sl.Partition, - NewSealedCID: *sector.UpdateSealed, - Pieces: pams, - }, - }, - SectorProofs: [][]byte{sector.ReplicaUpdateProof}, - UpdateProofsType: updateProof, - //AggregateProof - //AggregateProofType - RequireActivationSuccess: cfg.RequireActivationSuccessUpdate, - RequireNotificationSuccess: cfg.RequireNotificationSuccessUpdate, - } - - enc := new(bytes.Buffer) - if err := params.MarshalCBOR(enc); err != nil { - log.Errorf("failed to serialize update replica params: %w", err) - return ctx.Send(SectorSubmitReplicaUpdateFailed{}) - } - - mcid, err := sendMsg(ctx.Context(), m.Api, from, m.maddr, builtin.MethodsMiner.ProveReplicaUpdates3, collateral, big.Int(m.feeCfg.MaxCommitGasFee), enc.Bytes()) - if err != nil { - log.Errorf("handleSubmitReplicaUpdate: error sending message: %+v", err) - return ctx.Send(SectorSubmitReplicaUpdateFailed{}) - } - - return ctx.Send(SectorReplicaUpdateSubmitted{Message: mcid}) - } - - // PRU2 - params := &miner.ProveReplicaUpdatesParams2{ - Updates: []miner.ReplicaUpdate2{ + params := &miner.ProveReplicaUpdates3Params{ + SectorUpdates: []miner.SectorUpdateManifest{ { - SectorID: sector.SectorNumber, - Deadline: sl.Deadline, - Partition: sl.Partition, - NewSealedSectorCID: *sector.UpdateSealed, - NewUnsealedSectorCID: *sector.UpdateUnsealed, - UpdateProofType: updateProof, - ReplicaProof: sector.ReplicaUpdateProof, - Deals: deals, + Sector: sector.SectorNumber, + Deadline: sl.Deadline, + Partition: sl.Partition, + NewSealedCID: *sector.UpdateSealed, + Pieces: pams, }, }, + SectorProofs: [][]byte{sector.ReplicaUpdateProof}, + UpdateProofsType: updateProof, + //AggregateProof + //AggregateProofType + RequireActivationSuccess: cfg.RequireActivationSuccessUpdate, + RequireNotificationSuccess: cfg.RequireNotificationSuccessUpdate, } enc := new(bytes.Buffer) @@ -241,14 +198,13 @@ func (m *Sealing) handleSubmitReplicaUpdate(ctx statemachine.Context, sector Sec return ctx.Send(SectorSubmitReplicaUpdateFailed{}) } - mcid, err := sendMsg(ctx.Context(), m.Api, from, m.maddr, builtin.MethodsMiner.ProveReplicaUpdates2, collateral, big.Int(m.feeCfg.MaxCommitGasFee), enc.Bytes()) + mcid, err := sendMsg(ctx.Context(), m.Api, from, m.maddr, builtin.MethodsMiner.ProveReplicaUpdates3, collateral, big.Int(m.feeCfg.MaxCommitGasFee), enc.Bytes()) if err != nil { log.Errorf("handleSubmitReplicaUpdate: error sending message: %+v", err) return ctx.Send(SectorSubmitReplicaUpdateFailed{}) } return ctx.Send(SectorReplicaUpdateSubmitted{Message: mcid}) - } func (m *Sealing) handleWaitMutable(ctx statemachine.Context, sector SectorInfo) error { diff --git a/storage/pipeline/states_sealing.go b/storage/pipeline/states_sealing.go index 795cabdb34d..5d6928fba88 100644 --- a/storage/pipeline/states_sealing.go +++ b/storage/pipeline/states_sealing.go @@ -430,42 +430,6 @@ func (m *Sealing) preCommitInfo(ctx statemachine.Context, sector SectorInfo) (*m if sector.hasData() { // only CC sectors don't have UnsealedCID params.UnsealedCid = sector.CommD - - // true when the sector has non-builtin-marked data - sectorIsDDO := false - - for _, piece := range sector.Pieces { - err := piece.handleDealInfo(handleDealInfoParams{ - FillerHandler: func(info UniversalPieceInfo) error { - return nil // ignore - }, - BuiltinMarketHandler: func(info UniversalPieceInfo) error { - if sectorIsDDO { - return nil // will be passed later in the Commit message - } - params.DealIDs = append(params.DealIDs, info.Impl().DealID) - return nil - }, - DDOHandler: func(info UniversalPieceInfo) error { - if nv < MinDDONetworkVersion { - return xerrors.Errorf("DDO sectors are not supported on network version %d", nv) - } - - log.Infow("DDO piece in sector", "sector", sector.SectorNumber, "piece", info.String()) - - sectorIsDDO = true - - // DDO sectors don't carry DealIDs, we will pass those - // deals in the Commit message later - params.DealIDs = nil - return nil - }, - }) - - if err != nil { - return nil, big.Zero(), types.EmptyTSK, xerrors.Errorf("handleDealInfo: %w", err) - } - } } collateral, err := m.Api.StateMinerPreCommitDepositForPower(ctx.Context(), m.maddr, *params, ts.Key()) @@ -749,101 +713,61 @@ func (m *Sealing) handleSubmitCommit(ctx statemachine.Context, sector SectorInfo // processPieces returns either: // - a list of piece activation manifests // - a list of deal IDs, if all non-filler pieces are deal-id pieces -func (m *Sealing) processPieces(ctx context.Context, sector SectorInfo, forceDDO bool) ([]miner.PieceActivationManifest, []abi.DealID, error) { +func (m *Sealing) processPieces(ctx context.Context, sector SectorInfo) ([]miner.PieceActivationManifest, error) { pams := make([]miner.PieceActivationManifest, 0, len(sector.Pieces)) - dealIDs := make([]abi.DealID, 0, len(sector.Pieces)) - hasDDO := forceDDO - - if !forceDDO { - // if not forcing DDO, check if we have any DDO pieces - for _, piece := range sector.Pieces { - piece := piece - - // first figure out if this is a ddo sector - err := piece.handleDealInfo(handleDealInfoParams{ - FillerHandler: func(info UniversalPieceInfo) error { - // Fillers are implicit (todo review: Are they??) - return nil - }, - BuiltinMarketHandler: func(info UniversalPieceInfo) error { - return nil - }, - DDOHandler: func(info UniversalPieceInfo) error { - hasDDO = true - return nil - }, - }) - if err != nil { - return nil, nil, xerrors.Errorf("handleDealInfo: %w", err) - } - } - } + for _, piece := range sector.Pieces { piece := piece + if piece.HasDealInfo() { + info := piece.DealInfo() + // If we have a dealID then covert to PAM + if info.Impl().DealID > 0 { + alloc, err := m.Api.StateGetAllocationIdForPendingDeal(ctx, info.Impl().DealID, types.EmptyTSK) + if err != nil { + return nil, xerrors.Errorf("getting allocation for deal %d: %w", info.Impl().DealID, err) + } + clid, err := m.Api.StateLookupID(ctx, info.Impl().DealProposal.Client, types.EmptyTSK) + if err != nil { + return nil, xerrors.Errorf("getting client address for deal %d: %w", info.Impl().DealID, err) + } - err := piece.handleDealInfo(handleDealInfoParams{ - FillerHandler: func(info UniversalPieceInfo) error { - // Fillers are implicit (todo review: Are they??) - return nil - }, - BuiltinMarketHandler: func(info UniversalPieceInfo) error { - if hasDDO { - alloc, err := m.Api.StateGetAllocationIdForPendingDeal(ctx, info.Impl().DealID, types.EmptyTSK) - if err != nil { - return xerrors.Errorf("getting allocation for deal %d: %w", info.Impl().DealID, err) - } - clid, err := m.Api.StateLookupID(ctx, info.Impl().DealProposal.Client, types.EmptyTSK) - if err != nil { - return xerrors.Errorf("getting client address for deal %d: %w", info.Impl().DealID, err) - } - - clientId, err := address.IDFromAddress(clid) - if err != nil { - return xerrors.Errorf("getting client address for deal %d: %w", info.Impl().DealID, err) - } - - var vac *miner2.VerifiedAllocationKey - if alloc != verifreg.NoAllocationID { - vac = &miner2.VerifiedAllocationKey{ - Client: abi.ActorID(clientId), - ID: verifreg13.AllocationId(alloc), - } - } + clientId, err := address.IDFromAddress(clid) + if err != nil { + return nil, xerrors.Errorf("getting client address for deal %d: %w", info.Impl().DealID, err) + } - payload, err := cborutil.Dump(info.Impl().DealID) - if err != nil { - return xerrors.Errorf("serializing deal id: %w", err) + var vac *miner2.VerifiedAllocationKey + if alloc != verifreg.NoAllocationID { + vac = &miner2.VerifiedAllocationKey{ + Client: abi.ActorID(clientId), + ID: verifreg13.AllocationId(alloc), } + } - pams = append(pams, miner.PieceActivationManifest{ - CID: piece.Piece().PieceCID, - Size: piece.Piece().Size, - VerifiedAllocationKey: vac, - Notify: []miner2.DataActivationNotification{ - { - Address: market.Address, - Payload: payload, - }, - }, - }) - - return nil + payload, err := cborutil.Dump(info.Impl().DealID) + if err != nil { + return nil, xerrors.Errorf("serializing deal id: %w", err) } - dealIDs = append(dealIDs, info.Impl().DealID) - return nil - }, - DDOHandler: func(info UniversalPieceInfo) error { - pams = append(pams, *piece.Impl().PieceActivationManifest) - return nil - }, - }) - if err != nil { - return nil, nil, xerrors.Errorf("handleDealInfo: %w", err) + pams = append(pams, miner.PieceActivationManifest{ + CID: piece.Piece().PieceCID, + Size: piece.Piece().Size, + VerifiedAllocationKey: vac, + Notify: []miner2.DataActivationNotification{ + { + Address: market.Address, + Payload: payload, + }, + }, + }) + } else { + // Add PAM directly + pams = append(pams, *info.Impl().PieceActivationManifest) + } } } - return pams, dealIDs, nil + return pams, nil } func (m *Sealing) handleSubmitCommitAggregate(ctx statemachine.Context, sector SectorInfo) error { @@ -851,7 +775,7 @@ func (m *Sealing) handleSubmitCommitAggregate(ctx statemachine.Context, sector S return ctx.Send(SectorCommitFailed{xerrors.Errorf("sector had nil commR or commD")}) } - pams, dealIDs, err := m.processPieces(ctx.Context(), sector, false) + pams, err := m.processPieces(ctx.Context(), sector) if err != nil { return err } @@ -871,7 +795,6 @@ func (m *Sealing) handleSubmitCommitAggregate(ctx statemachine.Context, sector S SectorNumber: sector.SectorNumber, Pieces: pams, }, - DealIDPrecommit: len(dealIDs) > 0, }) if err != nil || res.Error != "" { From 4bf5115efbfe601b93fd5ebcaab0ec6365b39f9c Mon Sep 17 00:00:00 2001 From: Jakub Sztandera Date: Wed, 24 Jul 2024 19:48:54 +0200 Subject: [PATCH 02/18] dep: f3: Update go-f3 to 0.0.6, enable it on mainnet (#12295) * Update go-f3 to 0.0.6 Signed-off-by: Jakub Sztandera * Enable F3 in passive configuration in mainnet config Signed-off-by: Jakub Sztandera * Add changelog Signed-off-by: Jakub Sztandera * add new butterfly assets --------- Signed-off-by: Jakub Sztandera Co-authored-by: Jennifer Wang --- build/bootstrap/butterflynet.pi | 4 ++-- build/genesis/butterflynet.car | Bin 8768237 -> 8768237 bytes build/params_mainnet.go | 2 +- build/params_shared_funcs.go | 2 +- go.mod | 2 +- go.sum | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/build/bootstrap/butterflynet.pi b/build/bootstrap/butterflynet.pi index ac17495d71d..a8f5d50b374 100644 --- a/build/bootstrap/butterflynet.pi +++ b/build/bootstrap/butterflynet.pi @@ -1,2 +1,2 @@ -/dns4/bootstrap-0.butterfly.fildev.network/tcp/1347/p2p/12D3KooWFDd8o5vxQ191fquVqMcXjT2Gc1uYPmgfD3ZF5VHhRXQ9 -/dns4/bootstrap-1.butterfly.fildev.network/tcp/1347/p2p/12D3KooWM51uUDv1MkR3LduP27pvXPUFD4HuBa1UjBQEVKFg4yM2 +/dns4/bootstrap-0.butterfly.fildev.network/tcp/1347/p2p/12D3KooWL5bactqSPNTw5tqyWgaAFDFXBF4vskdcPHZDTQSsqPVY +/dns4/bootstrap-1.butterfly.fildev.network/tcp/1347/p2p/12D3KooWD4LgpLFUmHdjABn3sdXMYJ6we1H65hKTGwA9XWbgd3hx diff --git a/build/genesis/butterflynet.car b/build/genesis/butterflynet.car index c73e64efd6c7f251c324e420ec1de8d0d1c1b2df..fd94559d2d37f2ead04ec659218e37a6e0ac88a2 100644 GIT binary patch delta 1936 zcmbW%YgE&97zgl;4RB))x#>WJArld%0*aF|E}E!IBw)z6%*k*YAadVi0gi2S#>HSd zNzDsdh$k-uhjEZIGVc-;2fQQ#X(W_|q6e>eiN2_(ZS3SAdtfyOgdk#(dm%&2P zQ6@D)xp|EKnQ-INlj{lR4T7lazE!)TqHb6i9O_mb4iV|uq1R(^FGhcKhH^Wg3( zqg|oF?Asr-T#wAovGcs|j1pesL-GVNGsmfdmUDM#nZ=&TI*r_pZzT;|h~J?WJ# zqQiFFPk$r#wJy{aJs%z@cB(xsSGLIlBenVjY7jH8ltZYA=A@+8b>|Hi1k=4k3PiR{ z*24@%<8(rIPLsw+)f%ZpFar{h!5l2W5+(oz#^bDj1`~k})-VZdz!vPl9vomYOaTTs zf)h*yXPDM(q`Ji4;Fx+>RWvd2RFlx>o^zta@Aqr@a{Kb$c^h@wun`w<1tz$`bZ`e2 z%xDf9@uSM{<6Y0)z_XqD6-)j(i?$FcA97(s*M6%pmakeB) zkuJ_1eRbU4kf(f+s9w@TsVP;dqs`Xz$fk*&*VpV_eJV$Bac8B>;3sn={i0I;k3Wea zevx+2V8csQm494d)CfYmp57^qwhHXt+MD3!wMO9N>*8HhySX=YLjNbd(r2O8CAT-N zWJu7-->wBCPNmi>DO1cHNy94jcHb4jla&nVc;9zt?l0WY{Bzr7Y8NlSJH@&Eianm= z*B1>`Ogt!joVWE%O{?@`J7u6#Ybj5?otq7;BuPkYWG$o3y;owMw#W2xG-W_cwf=*tJL_oOGM2Kngk;YSYS9wuAjeBiNzyFNDSO)ehYvpN?(pIF>AC**x$pbAud8=oA*&a1 zZBzwpXY0j-`H_zKobp!2o$8XV6OSJMEZFay;+}F{c_KDVmbx)6If;IXL6?_4We_$- z0=e^PG*V1t2A7>0(A=@s3Nm_i?=I8`1w@Jba^3FVbxdaVLJNP2=0{RAF_D)qCgyE4 zG$qoO)m1pp3vbU7cohn#RVw99;!-h@(Hj!5LTf>fV3r1j)~u(8(?!Or)$F^jVrSZi z-RhJANkvIBJ10drInAPL#=ESV1}Ev@nc6)0wW8{1f9*)q$u6CipIN+`sUw0!;J8*=OV8-jok^pD*hQ9UHGTm<172s3DPCZQse|ZKhW= z0vWB@UE}G$WYXT0kcUGq7N*y=S|-fqs#7IhTEho95eF=IqQoB1GLSw-_6vN{m; zq#!I=UC+_fbLhYTCa{1FCSVF9zzl}#%)tV_f{`!^EWrv!gEfo+8{mR1@PH3?Fc!Xs zadq_^`^YEW#_p92qd(0!T3oPQUu|u@DCuqOL7Hb=wuMIY(jFXu07r0wZ(ux3s1v=M zn9~+&?1zwI4`yC4@gVWkEt{i(C(43%$DDUH`*F62znb(ikKIfjRwY_qa zOA0evM5Z1Zf!-NhU=p~(WN?Ei;0{wk0K>J@z!ScO>EH$4FavyGCd`7_FbC#>FZjVc zm=FFSgar@)-@!r%gdkW1i$MgzumnP2DJ+BK5DHVKI5g>s`SP4I@S5ClXDVZSSADGf>DQMeT;2HobF)*v`xMdo^9uUtjv{!Tdi5r2~BCi-dKX6be~tOoB2= zrZ9XQZvT^8^*%@mGhOUiKaf-yNwJ-k)AE$jZ~h?W7XpZLt@B&AiE*%mHYOPSa)xW9$B-|p=0aVR>J-evIJ zo9cOZ0iW4LQiUFYeq0qVmZI=lPio`Nt2%ZK7H}Il(GDxRxzEzZu4!Fl`>Mw-UfBA0 zYGyuPUwLU%TVrf7Wi`EbJTLlvs+{rMTGt%tRCP$~rEM^+Y(Cz%?d&FZLh9e0Ep> diff --git a/build/params_mainnet.go b/build/params_mainnet.go index 967c620820f..613be9edf0f 100644 --- a/build/params_mainnet.go +++ b/build/params_mainnet.go @@ -169,6 +169,6 @@ const Eip155ChainId = 314 // WhitelistedBlock skips checks on message validity in this block to sidestep the zero-bls signature var WhitelistedBlock = MustParseCid("bafy2bzaceapyg2uyzk7vueh3xccxkuwbz3nxewjyguoxvhx77malc2lzn2ybi") -const f3Enabled = false +const F3Enabled = true const ManifestServerID = "12D3KooWENMwUF9YxvQxar7uBWJtZkA6amvK4xWmKXfSiHUo2Qq7" const F3BootstrapEpoch abi.ChainEpoch = -1 diff --git a/build/params_shared_funcs.go b/build/params_shared_funcs.go index 84ffd6f4513..6989c61879d 100644 --- a/build/params_shared_funcs.go +++ b/build/params_shared_funcs.go @@ -54,5 +54,5 @@ func MustParseCid(c string) cid.Cid { func IsF3Enabled() bool { const F3DisableEnvKey = "LOTUS_DISABLE_F3" - return f3Enabled && len(os.Getenv(F3DisableEnvKey)) == 0 + return F3Enabled && len(os.Getenv(F3DisableEnvKey)) == 0 } diff --git a/go.mod b/go.mod index 282a2472abb..07113e56ba3 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,7 @@ require ( github.com/filecoin-project/go-commp-utils v0.1.3 github.com/filecoin-project/go-commp-utils/nonffi v0.0.0-20220905160352-62059082a837 github.com/filecoin-project/go-crypto v0.0.1 - github.com/filecoin-project/go-f3 v0.0.5 + github.com/filecoin-project/go-f3 v0.0.6 github.com/filecoin-project/go-fil-commcid v0.1.0 github.com/filecoin-project/go-hamt-ipld/v3 v3.1.0 github.com/filecoin-project/go-jsonrpc v0.3.2 diff --git a/go.sum b/go.sum index caa7c4ca2d5..00d711d5c7e 100644 --- a/go.sum +++ b/go.sum @@ -272,8 +272,8 @@ github.com/filecoin-project/go-commp-utils/nonffi v0.0.0-20220905160352-62059082 github.com/filecoin-project/go-crypto v0.0.0-20191218222705-effae4ea9f03/go.mod h1:+viYnvGtUTgJRdy6oaeF4MTFKAfatX071MPDPBL11EQ= github.com/filecoin-project/go-crypto v0.0.1 h1:AcvpSGGCgjaY8y1az6AMfKQWreF/pWO2JJGLl6gCq6o= github.com/filecoin-project/go-crypto v0.0.1/go.mod h1:+viYnvGtUTgJRdy6oaeF4MTFKAfatX071MPDPBL11EQ= -github.com/filecoin-project/go-f3 v0.0.5 h1:864MIl3EsqK8toKg+pNjMDN1SShgE7zibyQzLUSq8xA= -github.com/filecoin-project/go-f3 v0.0.5/go.mod h1:oO+Ch7aa6GRp9xRRLbdQBsrte0oGg7+hsA8PZ9Zy6xc= +github.com/filecoin-project/go-f3 v0.0.6 h1:j+HfGT8OMxq/Y7GhT2B7FTcM4ci7i5AV27OFog5sIwI= +github.com/filecoin-project/go-f3 v0.0.6/go.mod h1:oO+Ch7aa6GRp9xRRLbdQBsrte0oGg7+hsA8PZ9Zy6xc= github.com/filecoin-project/go-fil-commcid v0.0.0-20201016201715-d41df56b4f6a/go.mod h1:Eaox7Hvus1JgPrL5+M3+h7aSPHc0cVqpSxA+TxIEpZQ= github.com/filecoin-project/go-fil-commcid v0.1.0 h1:3R4ds1A9r6cr8mvZBfMYxTS88OqLYEo6roi+GiIeOh8= github.com/filecoin-project/go-fil-commcid v0.1.0/go.mod h1:Eaox7Hvus1JgPrL5+M3+h7aSPHc0cVqpSxA+TxIEpZQ= From 5be3af6f51f25844f911b4331b4d574d193ae84c Mon Sep 17 00:00:00 2001 From: Jennifer Wang Date: Wed, 24 Jul 2024 21:03:44 -0400 Subject: [PATCH 03/18] retract v1.28.0 --- go.mod | 2 ++ 1 file changed, 2 insertions(+) diff --git a/go.mod b/go.mod index 07113e56ba3..17f7c84f79d 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,8 @@ retract v1.14.0 // Accidentally force-pushed tag, use v1.14.1+ instead. retract v1.20.2 // Wrongfully cherry picked PR, use v1.20.2+ instead. +retract v1.28.0 // miss some bug fixes and featires, use v1.28.1+ instead + replace github.com/filecoin-project/test-vectors => ./extern/test-vectors // provided via a git submodule replace github.com/filecoin-project/filecoin-ffi => ./extern/filecoin-ffi // provided via a git submodule From 1fd3164f200aa5120de39bc38170897b4f02c345 Mon Sep 17 00:00:00 2001 From: Jennifer Wang Date: Wed, 24 Jul 2024 21:04:11 -0400 Subject: [PATCH 04/18] update v1.28.0 changelog and add v1.28.1 --- CHANGELOG.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b192456ab4..f7cbb4cd3d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,13 @@ # Lotus changelog -# v1.28.0 / 2024-07-23 -This is the MANDATORY Lotus v1.28.0 release, which will deliver the Filecoin network version 23, codenamed Waffle 🧇. +# v1.28.1 / 2024-07-24 -**This release sets the Mainnet to upgrade at epoch 4154640, corresponding to 2024-08-06T12:00:00Z.** +This is the MANDATORY Lotus v1.28.1 release, which will deliver the Filecoin network version 23, codenamed Waffle 🧇. v1.28.1 is also the minimal version that supports nv23. +**This release sets the Mainnet to upgrade at epoch 4154640, corresponding to 2024-08-06T12:00:00Z.** ## ☢️ Upgrade Warnings ☢️ - If you are running the `v1.26.x` version of Lotus, please go through the `Upgrade Warnings` section for the `v1.27.*` releases, before upgrading to this RC. - +- Note that v1.28.0 misses a critical feature removal and a bug fix and was retracted. Please update your node to v1.28.1 or above before the nv23 upgrade! - This upgrade includes an additional migration to the events database. Node operators running Lotus with events turned on (off by default) may experience some delay in initial start-up of Lotus as a minor database migration takes place. See [filecoin-project/lotus#12080](https://github.com/filecoin-project/lotus/pull/12080) for full details. ## The Filecoin network version 23 delivers the following FIPs: @@ -15,6 +15,7 @@ This is the MANDATORY Lotus v1.28.0 release, which will deliver the Filecoin net - [FIP-0065: Ignore built-in market locked balance in circulating supply calculation](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0065.md) - [FIP-0079: Add BLS Aggregate Signatures to FVM](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0079.md) - [FIP-0084: Remove Storage Miner Actor Method ProveCommitSectors](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0084.md) + - :warning: Note that ProveCommitSectors is deprecated in favour of ProveCommitSectors3, that was introduced in FIP-0076. ProveCommitSectors3 will reject activation of sectors that were precommitted with deal IDs. Storage provider should need to make sure that their pipeline is updated to adopt ProveCommitSector3 flow ASAP, otherwise they may in risk of losing deal collateral, PCD & sealing work for sectors that were not fully committed onchain before the upgrade yet have deal ID in the precommitted sector onchain info. This release removes the pipeline that uses the deprecated ProveCommit pipeline and the new pipeline was fully supported. If you have any questions, please don't feel hesitant to reach out in #fil-curio-dev. - [FIP-0085: Convert f090 Mining Reserve Actor to Keyless Account Actor](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0085.md) - [FIP-0091: Add support for legacy Ethereum transactions](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0091.md) - [FIP-0092: NI-PoRep](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0092.md) @@ -59,7 +60,7 @@ All node operators, including storage providers, should be aware that ONE pre-mi - The migration is expected to take less than 30 seconds on a node with an NVMe drive and a newer CPU. For nodes running on slower disks/CPU, it is still expected to take less than 1 minute. - Max memory usage during benchmarking the migration in "offline mode" (i.e., node not syncing) was 23GiB. - Max memory usage when benchmarking the migration in "online mode" (i.e., while the node is syncing) was 30GiB. Numbers here might vary depending on the load your node is under. -More details on the migration benchmarking can be found in https://github.com/filecoin-project/lotus/issues/12128 + More details on the migration benchmarking can be found in https://github.com/filecoin-project/lotus/issues/12128 We recommend node operators (who haven't enabled splitstore discard mode) that do not care about historical chain states, to prune the chain blockstore by syncing from a snapshot 1-2 days before the upgrade. @@ -67,7 +68,7 @@ For certain node operators, such as full archival nodes or systems that need to ## Fast Finality for Filecoin (f3) soft launch -We are one step closer to reduce Filecoin's finality from 7.5 hours to a minute or so, you can checkout the [FIP](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0086.md) for more details. Changing the consensus protocol is not trivial, and the f3 implementation team has designed a [passive testing plan to verify the protocol](https://github.com/filecoin-project/go-f3/issues/213) and give time for client implementation teams to integrate and test F3 before it is fully activated in the network consensus. That said, the lotus team has implemented f3 & the manifest for passive testing in this release, and we would like to ask node operators, especially storage providers, to participate in the testing by participating in F3 on the mainnet (which is enabled by default in this release)! We will keep updating [this discussion](https://github.com/filecoin-project/lotus/discussions/12287) to capture "what can you expect" & testing status. If you notice any unexpected behaviour caused by f3, please do not hesitate to reach out to us in #fil-fast-finality. +We are one step closer to reduce Filecoin's finality from 7.5 hours to a minute or so, you can checkout the [FIP](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0086.md) for more details. Changing the consensus protocol is not trivial, and the f3 implementation team has designed a [passive testing plan to verify the protocol](https://github.com/filecoin-project/go-f3/issues/213) and give time for client implementation teams to integrate and test F3 before it is fully activated in the network consensus. That said, the lotus team has implemented f3 & the manifest for passive testing in this release, and we would like to ask node operators, especially storage providers, to participate in the testing by participating in F3 on the mainnet (which is enabled by default in this release)! We will keep updating [this discussion](https://github.com/filecoin-project/lotus/discussions/12287) to capture "what can you expect" & testing status. If you notice any unexpected behaviour caused by f3, please do not hesitate to reach out to us in #fil-fast-finality. F3 (Fast Finality) is experimental in this release. All the new F3 APIs are unstable and subject to until nv24 release (assuming f3 will be fully activated in this upgrade). @@ -105,7 +106,13 @@ Exchanges and RPC providers are recommended to opt-out of F3 functionality for n - fix: exchange bug #12275 - chore: deps: Update GST, Filecoin-FFI and Actors to final versions NV23 #12276 - metrics: f3: Set up otel metrics reporting to prometheus #12285 -- Upgrade to go-f3 v0.0.5 #12279 +- dep: f3: Update go-f3 to 0.0.6, enable it on mainnet #12295 +- fix: lotus-miner: remove provecommit1 method #12251 + +# v1.28.0 / 2024-07-23 + +Update on 2027-07-24 +This release is retracted, please refer to v1.28.1 for more details # v1.27.1 / 2024-06-24 From 5fb93a96a6d22e808383b6c78c8f5ef5d9ed02d6 Mon Sep 17 00:00:00 2001 From: Jiaying Wang <42981373+jennijuju@users.noreply.github.com> Date: Wed, 24 Jul 2024 21:10:39 -0400 Subject: [PATCH 05/18] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7cbb4cd3d2..fbf308f7f2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ This is the MANDATORY Lotus v1.28.1 release, which will deliver the Filecoin net - [FIP-0065: Ignore built-in market locked balance in circulating supply calculation](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0065.md) - [FIP-0079: Add BLS Aggregate Signatures to FVM](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0079.md) - [FIP-0084: Remove Storage Miner Actor Method ProveCommitSectors](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0084.md) - - :warning: Note that ProveCommitSectors is deprecated in favour of ProveCommitSectors3, that was introduced in FIP-0076. ProveCommitSectors3 will reject activation of sectors that were precommitted with deal IDs. Storage provider should need to make sure that their pipeline is updated to adopt ProveCommitSector3 flow ASAP, otherwise they may in risk of losing deal collateral, PCD & sealing work for sectors that were not fully committed onchain before the upgrade yet have deal ID in the precommitted sector onchain info. This release removes the pipeline that uses the deprecated ProveCommit pipeline and the new pipeline was fully supported. If you have any questions, please don't feel hesitant to reach out in #fil-curio-dev. + - :warning: Please note that ProveCommitSectors is deprecated in favor of ProveCommitSectors3, which was introduced in FIP-0076. ProveCommitSectors3 will reject the activation of sectors that were precommitted with deal IDs. Storage providers should ensure that their pipeline is updated to adopt the ProveCommitSector3 flow as soon as possible. Otherwise, they risk losing deal collateral, PCD, and sealing work for sectors that were not fully committed on-chain before the upgrade yet have deal IDs in the precommitted sector on-chain info. This release removes the deprecated ProveCommit pipeline, and the new pipeline is fully supported. If you have any questions, please don't hesitate to reach out in #fil-curio-dev. - [FIP-0085: Convert f090 Mining Reserve Actor to Keyless Account Actor](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0085.md) - [FIP-0091: Add support for legacy Ethereum transactions](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0091.md) - [FIP-0092: NI-PoRep](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0092.md) From 65d33af782fc21920a6460a2d4a5251812057637 Mon Sep 17 00:00:00 2001 From: jennijuju Date: Wed, 24 Jul 2024 22:13:16 -0400 Subject: [PATCH 06/18] wip - update f3 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 17f7c84f79d..18e7bc3ae26 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( github.com/filecoin-project/go-commp-utils v0.1.3 github.com/filecoin-project/go-commp-utils/nonffi v0.0.0-20220905160352-62059082a837 github.com/filecoin-project/go-crypto v0.0.1 - github.com/filecoin-project/go-f3 v0.0.6 + github.com/filecoin-project/go-f3 v0.0.7-0.20240725021258-9894f299541f github.com/filecoin-project/go-fil-commcid v0.1.0 github.com/filecoin-project/go-hamt-ipld/v3 v3.1.0 github.com/filecoin-project/go-jsonrpc v0.3.2 diff --git a/go.sum b/go.sum index 00d711d5c7e..a8703017b82 100644 --- a/go.sum +++ b/go.sum @@ -272,8 +272,8 @@ github.com/filecoin-project/go-commp-utils/nonffi v0.0.0-20220905160352-62059082 github.com/filecoin-project/go-crypto v0.0.0-20191218222705-effae4ea9f03/go.mod h1:+viYnvGtUTgJRdy6oaeF4MTFKAfatX071MPDPBL11EQ= github.com/filecoin-project/go-crypto v0.0.1 h1:AcvpSGGCgjaY8y1az6AMfKQWreF/pWO2JJGLl6gCq6o= github.com/filecoin-project/go-crypto v0.0.1/go.mod h1:+viYnvGtUTgJRdy6oaeF4MTFKAfatX071MPDPBL11EQ= -github.com/filecoin-project/go-f3 v0.0.6 h1:j+HfGT8OMxq/Y7GhT2B7FTcM4ci7i5AV27OFog5sIwI= -github.com/filecoin-project/go-f3 v0.0.6/go.mod h1:oO+Ch7aa6GRp9xRRLbdQBsrte0oGg7+hsA8PZ9Zy6xc= +github.com/filecoin-project/go-f3 v0.0.7-0.20240725021258-9894f299541f h1:Ov3hc7jx4/GESELTYJeb+BSMuDat8Lw80lCmKB/6Rho= +github.com/filecoin-project/go-f3 v0.0.7-0.20240725021258-9894f299541f/go.mod h1:ihW5IGLBEuW8pVc9t5MQiAhdzv95EBBfnnrGfMfEbTY= github.com/filecoin-project/go-fil-commcid v0.0.0-20201016201715-d41df56b4f6a/go.mod h1:Eaox7Hvus1JgPrL5+M3+h7aSPHc0cVqpSxA+TxIEpZQ= github.com/filecoin-project/go-fil-commcid v0.1.0 h1:3R4ds1A9r6cr8mvZBfMYxTS88OqLYEo6roi+GiIeOh8= github.com/filecoin-project/go-fil-commcid v0.1.0/go.mod h1:Eaox7Hvus1JgPrL5+M3+h7aSPHc0cVqpSxA+TxIEpZQ= From bbc1df8b93a9f8ebe817766e8e3c46a6073391fc Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Wed, 24 Jul 2024 19:30:11 -0700 Subject: [PATCH 07/18] don't convert bigint type We now use the same one in GPBFT. --- chain/lf3/ec.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chain/lf3/ec.go b/chain/lf3/ec.go index baa483e16e6..69095bab8d3 100644 --- a/chain/lf3/ec.go +++ b/chain/lf3/ec.go @@ -172,7 +172,7 @@ func (ec *ecWrapper) getPowerTableLotusTSK(ctx context.Context, tsk types.TipSet pe := gpbft.PowerEntry{ ID: gpbft.ActorID(id), - Power: claim.QualityAdjPower.Int, + Power: claim.QualityAdjPower, } act, err := state.GetActor(minerAddr) From 005e92941ea1290d564e1ea6b93fd850147d2744 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Wed, 24 Jul 2024 19:33:22 -0700 Subject: [PATCH 08/18] update docs --- build/openrpc/full.json | 4 ++-- documentation/en/api-v1-unstable-methods.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build/openrpc/full.json b/build/openrpc/full.json index 90fb8cbbd3a..14f81e30fdc 100644 --- a/build/openrpc/full.json +++ b/build/openrpc/full.json @@ -6370,7 +6370,7 @@ [ { "ID": 1000, - "Power": 0, + "Power": "0", "PubKey": "Bw==" } ] @@ -6453,7 +6453,7 @@ [ { "ID": 1000, - "Power": 0, + "Power": "0", "PubKey": "Bw==" } ] diff --git a/documentation/en/api-v1-unstable-methods.md b/documentation/en/api-v1-unstable-methods.md index 91f1da2006b..74eeb8f42ed 100644 --- a/documentation/en/api-v1-unstable-methods.md +++ b/documentation/en/api-v1-unstable-methods.md @@ -2259,7 +2259,7 @@ Response: [ { "ID": 1000, - "Power": 0, + "Power": "0", "PubKey": "Bw==" } ] @@ -2290,7 +2290,7 @@ Response: [ { "ID": 1000, - "Power": 0, + "Power": "0", "PubKey": "Bw==" } ] From b40a697435663f75d6face6ea16c06038f0529f6 Mon Sep 17 00:00:00 2001 From: jennijuju Date: Wed, 24 Jul 2024 22:44:18 -0400 Subject: [PATCH 09/18] fix wrong param name --- build/params_mainnet.go | 2 +- build/params_shared_funcs.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/params_mainnet.go b/build/params_mainnet.go index 613be9edf0f..78f4c53bf7f 100644 --- a/build/params_mainnet.go +++ b/build/params_mainnet.go @@ -169,6 +169,6 @@ const Eip155ChainId = 314 // WhitelistedBlock skips checks on message validity in this block to sidestep the zero-bls signature var WhitelistedBlock = MustParseCid("bafy2bzaceapyg2uyzk7vueh3xccxkuwbz3nxewjyguoxvhx77malc2lzn2ybi") -const F3Enabled = true +const f3Enabled = true const ManifestServerID = "12D3KooWENMwUF9YxvQxar7uBWJtZkA6amvK4xWmKXfSiHUo2Qq7" const F3BootstrapEpoch abi.ChainEpoch = -1 diff --git a/build/params_shared_funcs.go b/build/params_shared_funcs.go index 6989c61879d..84ffd6f4513 100644 --- a/build/params_shared_funcs.go +++ b/build/params_shared_funcs.go @@ -54,5 +54,5 @@ func MustParseCid(c string) cid.Cid { func IsF3Enabled() bool { const F3DisableEnvKey = "LOTUS_DISABLE_F3" - return F3Enabled && len(os.Getenv(F3DisableEnvKey)) == 0 + return f3Enabled && len(os.Getenv(F3DisableEnvKey)) == 0 } From 22b43397c6e1c60438179eeaff4c640effff4c70 Mon Sep 17 00:00:00 2001 From: jennijuju Date: Wed, 24 Jul 2024 23:06:53 -0400 Subject: [PATCH 10/18] update butterfy assets --- build/bootstrap/butterflynet.pi | 4 ++-- build/genesis/butterflynet.car | Bin 8768237 -> 8768236 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/bootstrap/butterflynet.pi b/build/bootstrap/butterflynet.pi index a8f5d50b374..7289b5d95f8 100644 --- a/build/bootstrap/butterflynet.pi +++ b/build/bootstrap/butterflynet.pi @@ -1,2 +1,2 @@ -/dns4/bootstrap-0.butterfly.fildev.network/tcp/1347/p2p/12D3KooWL5bactqSPNTw5tqyWgaAFDFXBF4vskdcPHZDTQSsqPVY -/dns4/bootstrap-1.butterfly.fildev.network/tcp/1347/p2p/12D3KooWD4LgpLFUmHdjABn3sdXMYJ6we1H65hKTGwA9XWbgd3hx +/dns4/bootstrap-0.butterfly.fildev.network/tcp/1347/p2p/12D3KooWGW6xMTpjEBqndYkqytbu8PWfJmpK4wKLLLNSkXL2QZtD +/dns4/bootstrap-1.butterfly.fildev.network/tcp/1347/p2p/12D3KooWFGz9HegR3Rjrtm8b9WXTM6E3kN1sdd6X1JztuCgQaZSB diff --git a/build/genesis/butterflynet.car b/build/genesis/butterflynet.car index fd94559d2d37f2ead04ec659218e37a6e0ac88a2..910e7629156f78d26e1e57bd0ba7fa07535d58bc 100644 GIT binary patch delta 1933 zcmb8vdo&by6bJBmF@xk4&CH@%HX_xGSEPiiLGc3V zrSec^Q#Hrd@=DXRxL7_k?tU&#SXy|6B-pe61(izcbCDq#~ZKfR@_mw`YohEndwbu+r%LyJbIU%w{5yg_}#@2K5 zT^rq0IVoS2-3Y7eGI1-qA2+6F)jihkl&z_lM~o(2q&06RMi7J41?OrE*+yCu-kz25 z(lhUlnM;-Btj?>!Q(8B>Y9EO%a|S#*lGe>0=3lK;%%?70a##O<2FH?5vtF)wb>c>t zAk&n6ZfL^USY-1>myf~2_HCUZj^AA|4=hpGQR-QymyB+1>J_IQAMO98hNtMu>J=wB zt^d9M8?MR8>nAu5n`bCA3QML;p4L?fN1yjv9%yJG?BSU;-aOw^@2;n-IcodByi#GV z)xz?KRS6mg@*-8))MSh0;tiV1>~*|`a&j$t`;7}%)#)joXa%qi1$QecK@)9*H-@Lq zx32L#sMAT89P{m%&b>A{R@5qo~jfKAQL3g+al z14%Q9{ka|51s&Q%AORUDpaGgd1sZ6w9RAgtW@`|vT$N~=jGy=Bh19RmU1Cg^d;wPB86EH^uQbz0Si6`3$TPwU~yZ} z1FNFJFm)dyi{y|`|J_^^m2q8@@A_kQxhl9Xdq#8ihhw}bN5-`FK6^(uL&IzC7s{A< zwbu7(ft?Y31?(PcSOPX+3roQcmcepZ0c_xaJve|PIDs>)1Q&3HRp17zVGX#$TJQi* z@Pc*V4L-0Qe8CU=ApkZ&AOt}$guq7F1fN1Egh4oLh6sp+D2Rp_;KCNz3bF7RYy%#| zK|CZtBJg252p|cPAq7$)4R*jzNQVr_1R-RB2*j`pc7p`=KsMySUXa4)ZR{S|@FA(X zY03T9*!zn&GUn+Ahq~})yc=^esLFcfu|LFT0<4zW6&n{0@EGKKDZDJ9Fd-u`Wp`SF z@bSCV_8)oDH;Hm@8g0K_flQ8mX;~EiI^=kTX;qJEu*4KUw3Dhb795#bIId_c@ZF_oxOkTn9_b`#t z`8XNr*Hh1vQ{#X0;s}ICuQ~`DrVk&!#UTF`{dT9STVHd7_n|NHuC!F$)|;zc8`WKP zWci}0EkoO;z76Ret2g1?Dpg6iWQK2Dth2(R)~J$wdUEzDZD_ov;K@MiyV~k@j| a4{d;IqT;o-Re@og9CBe_n_*nu2>&1Ud2Xlx delta 1940 zcmbW%dsGv26bJCV05@0d^*aZ87fHJ(0q(9r*w_u=BN8&V?HMsqKC?8?#-LN!`~aI-Ov zee}>08TaYM#7_6Z-CO5{Gd@3OG{uGlx15!weRs^E<63oF#|A$mk2r%gZB}CnF_su% zDMDw}oNX@vf%c-^zMHH5P!QS^;~svXhMx2#Q0b;}NgNsL^|LAEESpr)NinB02) zz|JbOW08sU&G&k~ch>olvx0BUGC|`oWekO#>r!Et`=D=;^{(*-ozhXr$SAtVSu8#7 z=@`qjJISpzx>HST)8xY&qX@o?nuXg>y4Bk;e~jb!TG!M+a_V!SRW+)F#z88d{j79X zMrDiSkR$(-UnxDUbM(b8`frxF>_4egw<|)T^u|QmJa&E=k5C)KOU=jn`uNK0U0P@1=e5#V}J^y=WM|a#sVGeVH_~P0UUt|PB0!O z01KSK1tx+kxHX$;?g_VemflqpLrgl+B=&#knj{PS?RtTdxv_iZI)gr9z#Tk*4W2Lw zynq9fn0 zAOz+?D1^a$SOD+BLI{UNuo#vAAKrtd5CO{|65fa95Czd7fEZW-u^@yvh=&A71QDzR zF|2|lkU%o51}Vru4k?fdX|M*;VJ&1pCS*Z2I;KD{8mtUR9vk7j(Su^7YN$ z*9?5t>d}m|PE}qW7pWMLb=s>|^v&iF&w1~4Cf|vFwN(GuU+RBYV56h=UoU>0+tS(_ zO*``^^9aK=%A#Tk-VWt{yQS=VN3u3 From d5ce73aa3d122ef6eed2318f896a1704f02ae70a Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Wed, 24 Jul 2024 21:16:42 -0700 Subject: [PATCH 11/18] update go-f3 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 18e7bc3ae26..a6623b1b9c6 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( github.com/filecoin-project/go-commp-utils v0.1.3 github.com/filecoin-project/go-commp-utils/nonffi v0.0.0-20220905160352-62059082a837 github.com/filecoin-project/go-crypto v0.0.1 - github.com/filecoin-project/go-f3 v0.0.7-0.20240725021258-9894f299541f + github.com/filecoin-project/go-f3 v0.0.7 github.com/filecoin-project/go-fil-commcid v0.1.0 github.com/filecoin-project/go-hamt-ipld/v3 v3.1.0 github.com/filecoin-project/go-jsonrpc v0.3.2 diff --git a/go.sum b/go.sum index a8703017b82..c6e2bcbb48b 100644 --- a/go.sum +++ b/go.sum @@ -272,8 +272,8 @@ github.com/filecoin-project/go-commp-utils/nonffi v0.0.0-20220905160352-62059082 github.com/filecoin-project/go-crypto v0.0.0-20191218222705-effae4ea9f03/go.mod h1:+viYnvGtUTgJRdy6oaeF4MTFKAfatX071MPDPBL11EQ= github.com/filecoin-project/go-crypto v0.0.1 h1:AcvpSGGCgjaY8y1az6AMfKQWreF/pWO2JJGLl6gCq6o= github.com/filecoin-project/go-crypto v0.0.1/go.mod h1:+viYnvGtUTgJRdy6oaeF4MTFKAfatX071MPDPBL11EQ= -github.com/filecoin-project/go-f3 v0.0.7-0.20240725021258-9894f299541f h1:Ov3hc7jx4/GESELTYJeb+BSMuDat8Lw80lCmKB/6Rho= -github.com/filecoin-project/go-f3 v0.0.7-0.20240725021258-9894f299541f/go.mod h1:ihW5IGLBEuW8pVc9t5MQiAhdzv95EBBfnnrGfMfEbTY= +github.com/filecoin-project/go-f3 v0.0.7 h1:dqmxtQXfX1r3hhFZvCszqryg80MZJmfcPFL3nhyHCVA= +github.com/filecoin-project/go-f3 v0.0.7/go.mod h1:ihW5IGLBEuW8pVc9t5MQiAhdzv95EBBfnnrGfMfEbTY= github.com/filecoin-project/go-fil-commcid v0.0.0-20201016201715-d41df56b4f6a/go.mod h1:Eaox7Hvus1JgPrL5+M3+h7aSPHc0cVqpSxA+TxIEpZQ= github.com/filecoin-project/go-fil-commcid v0.1.0 h1:3R4ds1A9r6cr8mvZBfMYxTS88OqLYEo6roi+GiIeOh8= github.com/filecoin-project/go-fil-commcid v0.1.0/go.mod h1:Eaox7Hvus1JgPrL5+M3+h7aSPHc0cVqpSxA+TxIEpZQ= From bdf88093446c678c0eb1056c6ef008a269428eaa Mon Sep 17 00:00:00 2001 From: jennijuju Date: Thu, 25 Jul 2024 00:24:12 -0400 Subject: [PATCH 12/18] update changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fbf308f7f2f..852898893ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ This is the MANDATORY Lotus v1.28.1 release, which will deliver the Filecoin net - If you are running the `v1.26.x` version of Lotus, please go through the `Upgrade Warnings` section for the `v1.27.*` releases, before upgrading to this RC. - Note that v1.28.0 misses a critical feature removal and a bug fix and was retracted. Please update your node to v1.28.1 or above before the nv23 upgrade! - This upgrade includes an additional migration to the events database. Node operators running Lotus with events turned on (off by default) may experience some delay in initial start-up of Lotus as a minor database migration takes place. See [filecoin-project/lotus#12080](https://github.com/filecoin-project/lotus/pull/12080) for full details. +- ALL LEGACY PRECOMMITS MUST BE PROVECOMMITTED BEFORE NV23 OR THEY WILL BE WASTED. STOP LEGACY PRECOMMITS ASAP TO AVOID FEES AND WASTED SEALING WORK. Please see more details in the next session. ## The Filecoin network version 23 delivers the following FIPs: @@ -106,7 +107,7 @@ Exchanges and RPC providers are recommended to opt-out of F3 functionality for n - fix: exchange bug #12275 - chore: deps: Update GST, Filecoin-FFI and Actors to final versions NV23 #12276 - metrics: f3: Set up otel metrics reporting to prometheus #12285 -- dep: f3: Update go-f3 to 0.0.6, enable it on mainnet #12295 +- dep: f3: Update go-f3 to 0.0.7, enable it on mainnet - fix: lotus-miner: remove provecommit1 method #12251 # v1.28.0 / 2024-07-23 From c0db281c388bdcc21b9a19e55f28a9d8d8c25f15 Mon Sep 17 00:00:00 2001 From: jennijuju Date: Thu, 25 Jul 2024 00:27:50 -0400 Subject: [PATCH 13/18] update version --- CHANGELOG.md | 4 ++-- build/openrpc/full.json | 2 +- build/openrpc/gateway.json | 2 +- build/openrpc/miner.json | 2 +- build/openrpc/worker.json | 2 +- build/version.go | 4 ++-- documentation/en/cli-lotus-miner.md | 2 +- documentation/en/cli-lotus-worker.md | 2 +- documentation/en/cli-lotus.md | 2 +- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 852898893ed..65a4f0865e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,9 @@ This is the MANDATORY Lotus v1.28.1 release, which will deliver the Filecoin net ## ☢️ Upgrade Warnings ☢️ - If you are running the `v1.26.x` version of Lotus, please go through the `Upgrade Warnings` section for the `v1.27.*` releases, before upgrading to this RC. -- Note that v1.28.0 misses a critical feature removal and a bug fix and was retracted. Please update your node to v1.28.1 or above before the nv23 upgrade! +- Note that v1.28.0 needed a bug fix and feauture enhance to ensure a smooth support for nv23 and it was retracted. Please update your node to v1.28.1 or above before the nv23 upgrade! - This upgrade includes an additional migration to the events database. Node operators running Lotus with events turned on (off by default) may experience some delay in initial start-up of Lotus as a minor database migration takes place. See [filecoin-project/lotus#12080](https://github.com/filecoin-project/lotus/pull/12080) for full details. -- ALL LEGACY PRECOMMITS MUST BE PROVECOMMITTED BEFORE NV23 OR THEY WILL BE WASTED. STOP LEGACY PRECOMMITS ASAP TO AVOID FEES AND WASTED SEALING WORK. Please see more details in the next session. +- We recommend SPs to finish onboarding all sectors that has deal ID in the PreCommitSectors onchain sector info before update the nodes OR THEY WILL BE WASTED. STOP LEGACY PRECOMMITS ASAP TO AVOID FEES AND WASTED SEALING WORK. Please see more details in the next section. ## The Filecoin network version 23 delivers the following FIPs: diff --git a/build/openrpc/full.json b/build/openrpc/full.json index 14f81e30fdc..559f956dc0b 100644 --- a/build/openrpc/full.json +++ b/build/openrpc/full.json @@ -2,7 +2,7 @@ "openrpc": "1.2.6", "info": { "title": "Lotus RPC API", - "version": "1.28.0" + "version": "1.28.1" }, "methods": [ { diff --git a/build/openrpc/gateway.json b/build/openrpc/gateway.json index fa20ca1cd9a..ade7f7bcabb 100644 --- a/build/openrpc/gateway.json +++ b/build/openrpc/gateway.json @@ -2,7 +2,7 @@ "openrpc": "1.2.6", "info": { "title": "Lotus RPC API", - "version": "1.28.0" + "version": "1.28.1" }, "methods": [ { diff --git a/build/openrpc/miner.json b/build/openrpc/miner.json index 24fe74e71c0..54d6cfcafe2 100644 --- a/build/openrpc/miner.json +++ b/build/openrpc/miner.json @@ -2,7 +2,7 @@ "openrpc": "1.2.6", "info": { "title": "Lotus RPC API", - "version": "1.28.0" + "version": "1.28.1" }, "methods": [ { diff --git a/build/openrpc/worker.json b/build/openrpc/worker.json index 312fae376b1..0a45b8a0d06 100644 --- a/build/openrpc/worker.json +++ b/build/openrpc/worker.json @@ -2,7 +2,7 @@ "openrpc": "1.2.6", "info": { "title": "Lotus RPC API", - "version": "1.28.0" + "version": "1.28.1" }, "methods": [ { diff --git a/build/version.go b/build/version.go index 9d52782ed04..5d5f925770a 100644 --- a/build/version.go +++ b/build/version.go @@ -39,7 +39,7 @@ func BuildTypeString() string { } // NodeBuildVersion is the local build version of the Lotus daemon -const NodeBuildVersion string = "1.28.0" +const NodeBuildVersion string = "1.28.1" func NodeUserVersion() BuildVersion { if os.Getenv("LOTUS_VERSION_IGNORE_COMMIT") == "1" { @@ -50,7 +50,7 @@ func NodeUserVersion() BuildVersion { } // MinerBuildVersion is the local build version of the Lotus miner -const MinerBuildVersion = "1.28.0" +const MinerBuildVersion = "1.28.1" func MinerUserVersion() BuildVersion { if os.Getenv("LOTUS_VERSION_IGNORE_COMMIT") == "1" { diff --git a/documentation/en/cli-lotus-miner.md b/documentation/en/cli-lotus-miner.md index 221841dc7c6..511ad500daf 100644 --- a/documentation/en/cli-lotus-miner.md +++ b/documentation/en/cli-lotus-miner.md @@ -7,7 +7,7 @@ USAGE: lotus-miner [global options] command [command options] [arguments...] VERSION: - 1.28.0 + 1.28.1 COMMANDS: init Initialize a lotus miner repo diff --git a/documentation/en/cli-lotus-worker.md b/documentation/en/cli-lotus-worker.md index 55b8ab8df3a..1b44326fc2c 100644 --- a/documentation/en/cli-lotus-worker.md +++ b/documentation/en/cli-lotus-worker.md @@ -7,7 +7,7 @@ USAGE: lotus-worker [global options] command [command options] [arguments...] VERSION: - 1.28.0 + 1.28.1 COMMANDS: run Start lotus worker diff --git a/documentation/en/cli-lotus.md b/documentation/en/cli-lotus.md index dfc0a680e91..fea8b0dbaa2 100644 --- a/documentation/en/cli-lotus.md +++ b/documentation/en/cli-lotus.md @@ -7,7 +7,7 @@ USAGE: lotus [global options] command [command options] [arguments...] VERSION: - 1.28.0 + 1.28.1 COMMANDS: daemon Start a lotus daemon process From ffdbfb7d1d8ed8b19afcdf20b0f5f80ac5f34b26 Mon Sep 17 00:00:00 2001 From: jennijuju Date: Thu, 25 Jul 2024 00:57:13 -0400 Subject: [PATCH 14/18] fix typo --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 65a4f0865e3..cc2d40934c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ This is the MANDATORY Lotus v1.28.1 release, which will deliver the Filecoin net ## ☢️ Upgrade Warnings ☢️ - If you are running the `v1.26.x` version of Lotus, please go through the `Upgrade Warnings` section for the `v1.27.*` releases, before upgrading to this RC. -- Note that v1.28.0 needed a bug fix and feauture enhance to ensure a smooth support for nv23 and it was retracted. Please update your node to v1.28.1 or above before the nv23 upgrade! +- Note that v1.28.0 needed a bug fix and a feature enhancement to ensure a smooth support for nv23 and it was retracted. Please update your node to v1.28.1 or above before the nv23 upgrade! - This upgrade includes an additional migration to the events database. Node operators running Lotus with events turned on (off by default) may experience some delay in initial start-up of Lotus as a minor database migration takes place. See [filecoin-project/lotus#12080](https://github.com/filecoin-project/lotus/pull/12080) for full details. - We recommend SPs to finish onboarding all sectors that has deal ID in the PreCommitSectors onchain sector info before update the nodes OR THEY WILL BE WASTED. STOP LEGACY PRECOMMITS ASAP TO AVOID FEES AND WASTED SEALING WORK. Please see more details in the next section. From c9bbe790877cec03e27d064298c8da5e1c6c2582 Mon Sep 17 00:00:00 2001 From: Jiaying Wang <42981373+jennijuju@users.noreply.github.com> Date: Thu, 25 Jul 2024 01:00:32 -0400 Subject: [PATCH 15/18] Update CHANGELOG.md Co-authored-by: Steven Allen --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cc2d40934c5..3606a617595 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ This is the MANDATORY Lotus v1.28.1 release, which will deliver the Filecoin net - If you are running the `v1.26.x` version of Lotus, please go through the `Upgrade Warnings` section for the `v1.27.*` releases, before upgrading to this RC. - Note that v1.28.0 needed a bug fix and a feature enhancement to ensure a smooth support for nv23 and it was retracted. Please update your node to v1.28.1 or above before the nv23 upgrade! - This upgrade includes an additional migration to the events database. Node operators running Lotus with events turned on (off by default) may experience some delay in initial start-up of Lotus as a minor database migration takes place. See [filecoin-project/lotus#12080](https://github.com/filecoin-project/lotus/pull/12080) for full details. -- We recommend SPs to finish onboarding all sectors that has deal ID in the PreCommitSectors onchain sector info before update the nodes OR THEY WILL BE WASTED. STOP LEGACY PRECOMMITS ASAP TO AVOID FEES AND WASTED SEALING WORK. Please see more details in the next section. +- All SPs MUST finish onboarding all sectors that have deal IDs in the PreCommitSectors OnChainSectorInfos before upgrading the lotus miner OR THEY WILL BE WASTED. Please see more details in the next section. ## The Filecoin network version 23 delivers the following FIPs: From 87793a3d6c735a623e55b34fb769c216363c555b Mon Sep 17 00:00:00 2001 From: Jiaying Wang <42981373+jennijuju@users.noreply.github.com> Date: Thu, 25 Jul 2024 01:19:43 -0400 Subject: [PATCH 16/18] Update CHANGELOG.md Co-authored-by: Rod Vagg --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3606a617595..01c05a50831 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,8 @@ This is the MANDATORY Lotus v1.28.1 release, which will deliver the Filecoin net - [FIP-0065: Ignore built-in market locked balance in circulating supply calculation](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0065.md) - [FIP-0079: Add BLS Aggregate Signatures to FVM](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0079.md) - [FIP-0084: Remove Storage Miner Actor Method ProveCommitSectors](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0084.md) - - :warning: Please note that ProveCommitSectors is deprecated in favor of ProveCommitSectors3, which was introduced in FIP-0076. ProveCommitSectors3 will reject the activation of sectors that were precommitted with deal IDs. Storage providers should ensure that their pipeline is updated to adopt the ProveCommitSector3 flow as soon as possible. Otherwise, they risk losing deal collateral, PCD, and sealing work for sectors that were not fully committed on-chain before the upgrade yet have deal IDs in the precommitted sector on-chain info. This release removes the deprecated ProveCommit pipeline, and the new pipeline is fully supported. If you have any questions, please don't hesitate to reach out in #fil-curio-dev. + - :warning: Please note that onboarding via `ProveCommitSectors` is deprecated in favor of `ProveCommitSectors3`, which was introduced in FIP-0076 and activated in the last network upgrade (NV22). `ProveCommitSectors3` will reject the activation of sectors that were precommitted with deal IDs. + Storage Providers should ensure that their pipeline is updated to adopt the `ProveCommitSector3` flow as soon as possible. Otherwise, they risk losing deal collateral, PCD, and sealing work for sectors that were not fully committed on-chain before the upgrade yet have deal IDs in the precommitted sector on-chain info. This release removes the deprecated `ProveCommitSectors` pipeline, and the new pipeline is fully supported. Prior to this release, the onboarding pipeline would still prefer to use `ProveCommitSectors` for sectors containing deals. If you have any questions, please don't hesitate to reach out in #fil-curio-dev. - [FIP-0085: Convert f090 Mining Reserve Actor to Keyless Account Actor](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0085.md) - [FIP-0091: Add support for legacy Ethereum transactions](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0091.md) - [FIP-0092: NI-PoRep](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0092.md) From 6bdbbc024b30da92c9160ded6457d970ebbfa241 Mon Sep 17 00:00:00 2001 From: Jiaying Wang <42981373+jennijuju@users.noreply.github.com> Date: Thu, 25 Jul 2024 01:19:49 -0400 Subject: [PATCH 17/18] Update CHANGELOG.md Co-authored-by: Rod Vagg --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 01c05a50831..b65b6234267 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ This is the MANDATORY Lotus v1.28.1 release, which will deliver the Filecoin net - If you are running the `v1.26.x` version of Lotus, please go through the `Upgrade Warnings` section for the `v1.27.*` releases, before upgrading to this RC. - Note that v1.28.0 needed a bug fix and a feature enhancement to ensure a smooth support for nv23 and it was retracted. Please update your node to v1.28.1 or above before the nv23 upgrade! - This upgrade includes an additional migration to the events database. Node operators running Lotus with events turned on (off by default) may experience some delay in initial start-up of Lotus as a minor database migration takes place. See [filecoin-project/lotus#12080](https://github.com/filecoin-project/lotus/pull/12080) for full details. -- All SPs MUST finish onboarding all sectors that have deal IDs in the PreCommitSectors OnChainSectorInfos before upgrading the lotus miner OR THEY WILL BE WASTED. Please see more details in the next section. +- All **Storage Providers MUST finish onboarding all sectors that have deal IDs in the `PreCommitSectors` `OnChainSectorInfo`s** before upgrading the lotus miner OR THEY WILL BE WASTED. Please see more details in the next section. ## The Filecoin network version 23 delivers the following FIPs: From 9298a454a8a222fa5593bf6bcfdb0c7252cf6146 Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Mon, 29 Jul 2024 17:07:14 +1000 Subject: [PATCH 18/18] doc: clean up retraction comment for 1.28.0 --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 8e3773f0e2c..dffa69771d3 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ retract v1.14.0 // Accidentally force-pushed tag, use v1.14.1+ instead. retract v1.20.2 // Wrongfully cherry picked PR, use v1.20.2+ instead. -retract v1.28.0 // miss some bug fixes and featires, use v1.28.1+ instead +retract v1.28.0 // misses some bug fixes and features, use v1.28.1+ instead replace github.com/filecoin-project/test-vectors => ./extern/test-vectors // provided via a git submodule