From a5aed124b717fd621c803b79b600af05ed627932 Mon Sep 17 00:00:00 2001 From: "terry.hung" Date: Wed, 28 Aug 2024 16:40:53 +0800 Subject: [PATCH 1/5] remove the pre-check function --- tasks/actorstate/market/deal_state.go | 9 --------- 1 file changed, 9 deletions(-) diff --git a/tasks/actorstate/market/deal_state.go b/tasks/actorstate/market/deal_state.go index 902046a2..45217cb8 100644 --- a/tasks/actorstate/market/deal_state.go +++ b/tasks/actorstate/market/deal_state.go @@ -54,15 +54,6 @@ func (DealStateExtractor) Extract(ctx context.Context, a actorstate.ActorInfo, n return out, nil } - changed, err := ec.CurrState.StatesChanged(ec.PrevState) - if err != nil { - return nil, fmt.Errorf("checking for deal state changes: %w", err) - } - - if !changed { - return nil, nil - } - changes, err := market.DiffDealStates(ctx, ec.Store, ec.PrevState, ec.CurrState) if err != nil { return nil, fmt.Errorf("diffing deal states: %w", err) From bfba0bd3dd549429d272ae13bf5f0165c4c7f9b9 Mon Sep 17 00:00:00 2001 From: "terry.hung" Date: Tue, 3 Sep 2024 14:00:05 +0800 Subject: [PATCH 2/5] feat: add more log --- tasks/messages/receipt/task.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tasks/messages/receipt/task.go b/tasks/messages/receipt/task.go index 9eb7d435..fe8a19c7 100644 --- a/tasks/messages/receipt/task.go +++ b/tasks/messages/receipt/task.go @@ -5,6 +5,7 @@ import ( "fmt" "github.com/ipfs/go-cid" + logging "github.com/ipfs/go-log/v2" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" @@ -18,6 +19,8 @@ import ( "github.com/filecoin-project/lotus/chain/types" ) +var log = logging.Logger("lily/tasks/receipt") + type Task struct { node tasks.DataSource } @@ -96,6 +99,8 @@ func (t *Task) ProcessTipSets(ctx context.Context, current *types.TipSet, execut parsedReturn, _, err := util.ParseReturn(rec.Return, msg.VMMessage().Method, toCode) if err == nil { rcpt.ParsedReturn = parsedReturn + } else { + log.Errorf("got error during parsed_return: %v", err) } } receiptResults = append(receiptResults, rcpt) From 351df6b3da2f44b48dadf7eee5ab7c30eb8751cf Mon Sep 17 00:00:00 2001 From: "terry.hung" Date: Tue, 3 Sep 2024 22:20:31 +0800 Subject: [PATCH 3/5] feat: add parse_param for specific method --- tasks/messages/parsedmessage/task.go | 5 +++ tasks/messages/parsedmessage/util.go | 61 ++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 tasks/messages/parsedmessage/util.go diff --git a/tasks/messages/parsedmessage/task.go b/tasks/messages/parsedmessage/task.go index dd7f9119..fd8728ee 100644 --- a/tasks/messages/parsedmessage/task.go +++ b/tasks/messages/parsedmessage/task.go @@ -147,6 +147,11 @@ func (t *Task) ProcessTipSets(ctx context.Context, current *types.TipSet, execut Method: method, Params: params, } + + sectorIds, err := parseParamsInDetail(method, params) + if len(sectorIds) > 0 { + log.Infof("method: %v, params: %v, sector_ids: %v", method, params, sectorIds) + } parsedMessageResults = append(parsedMessageResults, pm) } } diff --git a/tasks/messages/parsedmessage/util.go b/tasks/messages/parsedmessage/util.go new file mode 100644 index 00000000..14ef8303 --- /dev/null +++ b/tasks/messages/parsedmessage/util.go @@ -0,0 +1,61 @@ +package parsedmessage + +import ( + "encoding/json" + "fmt" + + // Other necessary imports, possibly including types from the Lily project + + "github.com/filecoin-project/go-bitfield" + minertypes "github.com/filecoin-project/go-state-types/builtin/v14/miner" +) + +func parseParamsInDetail(method string, params string) ([]uint64, error) { + sectorNumbers := []uint64{} + + switch method { + case "ProveCommitAggregate": + var aggregateParams minertypes.ProveCommitAggregateParams + if err := json.Unmarshal([]byte(params), &aggregateParams); err != nil { + return sectorNumbers, err + } + // Assuming AggregateProveCommitParams has a field SectorNumbers which is a slice + sectorNumbers, _ = aggregateParams.SectorNumbers.All(bitfield.MaxEncodedSize) + + case "ProveCommitSector": + var sectorParams minertypes.ProveCommitSectorParams + if err := json.Unmarshal([]byte(params), §orParams); err != nil { + return sectorNumbers, err + } + sectorNumbers = []uint64{uint64(sectorParams.SectorNumber)} + + case "ProveCommitSectors3": + var sectors3Params minertypes.ProveCommitSectors3Params + if err := json.Unmarshal([]byte(params), §ors3Params); err != nil { + return sectorNumbers, err + } + // Assuming ProveCommitSectors3Params has a field SectorNumbers which is a slice + if len(sectors3Params.SectorActivations) > 0 { + for _, sector := range sectors3Params.SectorActivations { + sectorNumbers = append(sectorNumbers, uint64(sector.SectorNumber)) + } + } + + case "ProveCommitSectorsNI": + var sectorsNIParams minertypes.ProveCommitSectorsNIParams + if err := json.Unmarshal([]byte(params), §orsNIParams); err != nil { + return sectorNumbers, err + } + // Assuming ProveCommitSectorsNIParams has a field SectorNumbers which is a slice + if len(sectorsNIParams.Sectors) > 0 { + for _, sector := range sectorsNIParams.Sectors { + sectorNumbers = append(sectorNumbers, uint64(sector.SealerID)) + } + } + + default: + return sectorNumbers, fmt.Errorf("unsupported method: %s", method) + } + + return sectorNumbers, nil +} From e1cd91de8bfcf35ff9cb39c4d51942973a7ea51f Mon Sep 17 00:00:00 2001 From: "terry.hung" Date: Tue, 3 Sep 2024 22:38:41 +0800 Subject: [PATCH 4/5] feat: add the logging for parse_params --- tasks/messages/parsedmessage/task.go | 3 +++ tasks/messages/parsedmessage/util.go | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tasks/messages/parsedmessage/task.go b/tasks/messages/parsedmessage/task.go index fd8728ee..f4e4fcda 100644 --- a/tasks/messages/parsedmessage/task.go +++ b/tasks/messages/parsedmessage/task.go @@ -149,6 +149,9 @@ func (t *Task) ProcessTipSets(ctx context.Context, current *types.TipSet, execut } sectorIds, err := parseParamsInDetail(method, params) + if err != nil { + log.Errorf("method: %v, params: %v, error: %v", method, params, err) + } if len(sectorIds) > 0 { log.Infof("method: %v, params: %v, sector_ids: %v", method, params, sectorIds) } diff --git a/tasks/messages/parsedmessage/util.go b/tasks/messages/parsedmessage/util.go index 14ef8303..9cad3992 100644 --- a/tasks/messages/parsedmessage/util.go +++ b/tasks/messages/parsedmessage/util.go @@ -2,7 +2,6 @@ package parsedmessage import ( "encoding/json" - "fmt" // Other necessary imports, possibly including types from the Lily project @@ -54,7 +53,7 @@ func parseParamsInDetail(method string, params string) ([]uint64, error) { } default: - return sectorNumbers, fmt.Errorf("unsupported method: %s", method) + return sectorNumbers, nil } return sectorNumbers, nil From 4716d3026d93d7fa513880ae47fd6942b6070c29 Mon Sep 17 00:00:00 2001 From: "terry.hung" Date: Tue, 3 Sep 2024 22:48:45 +0800 Subject: [PATCH 5/5] fix: refine the PCA params --- tasks/messages/parsedmessage/util.go | 31 +++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/tasks/messages/parsedmessage/util.go b/tasks/messages/parsedmessage/util.go index 9cad3992..d9453a23 100644 --- a/tasks/messages/parsedmessage/util.go +++ b/tasks/messages/parsedmessage/util.go @@ -5,21 +5,46 @@ import ( // Other necessary imports, possibly including types from the Lily project - "github.com/filecoin-project/go-bitfield" minertypes "github.com/filecoin-project/go-state-types/builtin/v14/miner" ) +type SectorNumber struct { + Elemcount int64 + Rle []uint64 +} + +type ProveCommitAggregateParams struct { + AggregateProof []byte + SectorNumbers SectorNumber +} + +func decodeRLE(rle []uint64) []uint64 { + result := make([]uint64, 0) + current := uint64(0) + + for i, count := range rle { + if i%2 == 1 { // Odd indices represent runs of 1s + for j := uint64(0); j < count; j++ { + result = append(result, current+j) + } + } + current += count + } + + return result +} + func parseParamsInDetail(method string, params string) ([]uint64, error) { sectorNumbers := []uint64{} switch method { case "ProveCommitAggregate": - var aggregateParams minertypes.ProveCommitAggregateParams + var aggregateParams ProveCommitAggregateParams if err := json.Unmarshal([]byte(params), &aggregateParams); err != nil { return sectorNumbers, err } // Assuming AggregateProveCommitParams has a field SectorNumbers which is a slice - sectorNumbers, _ = aggregateParams.SectorNumbers.All(bitfield.MaxEncodedSize) + sectorNumbers = decodeRLE(aggregateParams.SectorNumbers.Rle) case "ProveCommitSector": var sectorParams minertypes.ProveCommitSectorParams