From 52ac86d9d5508441b6eb61a74b9279c376c8d617 Mon Sep 17 00:00:00 2001 From: Sambhav Jain <136801346+DarkLord017@users.noreply.github.com> Date: Mon, 20 Oct 2025 16:02:50 +0530 Subject: [PATCH 1/3] feat(state): add feature to get message sorted by nonce --- cli/state.go | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/cli/state.go b/cli/state.go index 5f846626571..bfb8e7c7848 100644 --- a/cli/state.go +++ b/cli/state.go @@ -836,6 +836,10 @@ var StateListMessagesCmd = &cli.Command{ Name: "cids", Usage: "print message CIDs instead of messages", }, + &cli.BoolFlag{ + Name: "order-by-nonce", + Usage: "order messages by nonce (only applies when filtering by 'from' address)", + }, }, Action: func(cctx *cli.Context) error { api, closer, err := GetFullNodeAPI(cctx) @@ -872,6 +876,11 @@ var StateListMessagesCmd = &cli.Command{ windowSize := abi.ChainEpoch(100) + var orderedMessages []struct { + Nonce uint64 + Msg []byte + } + cur := ts for cur.Height() > toh { if ctx.Err() != nil { @@ -898,11 +907,31 @@ var StateListMessagesCmd = &cli.Command{ if err != nil { return err } + b, err := json.MarshalIndent(m, "", " ") if err != nil { return err } - fmt.Println(string(b)) + + if cctx.Bool("order-by-nonce") && !froma.Empty() { + orderedMessages = append(orderedMessages, struct { + Nonce uint64 + Msg []byte + }{Nonce: m.Nonce, Msg: b}) + continue + } else { + fmt.Println(string(b)) + } + } + + if cctx.Bool("order-by-nonce") && !froma.Empty() { + sort.Slice(orderedMessages, func(i, j int) bool { + return orderedMessages[i].Nonce < orderedMessages[j].Nonce + }) + for _, om := range orderedMessages { + fmt.Println(string(om.Msg)) + } + orderedMessages = orderedMessages[:0] } if end <= 0 { From b4e2632992cf131bfb4d4d82eb80145484c24dea Mon Sep 17 00:00:00 2001 From: Sambhav Jain <136801346+DarkLord017@users.noreply.github.com> Date: Tue, 21 Oct 2025 14:19:02 +0530 Subject: [PATCH 2/3] fix: ordering after loop completion --- cli/state.go | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/cli/state.go b/cli/state.go index bfb8e7c7848..6f877bc6b72 100644 --- a/cli/state.go +++ b/cli/state.go @@ -876,6 +876,8 @@ var StateListMessagesCmd = &cli.Command{ windowSize := abi.ChainEpoch(100) + obn := cctx.Bool("order-by-nonce") && !froma.Empty() + var orderedMessages []struct { Nonce uint64 Msg []byte @@ -913,7 +915,7 @@ var StateListMessagesCmd = &cli.Command{ return err } - if cctx.Bool("order-by-nonce") && !froma.Empty() { + if obn { orderedMessages = append(orderedMessages, struct { Nonce uint64 Msg []byte @@ -924,16 +926,6 @@ var StateListMessagesCmd = &cli.Command{ } } - if cctx.Bool("order-by-nonce") && !froma.Empty() { - sort.Slice(orderedMessages, func(i, j int) bool { - return orderedMessages[i].Nonce < orderedMessages[j].Nonce - }) - for _, om := range orderedMessages { - fmt.Println(string(om.Msg)) - } - orderedMessages = orderedMessages[:0] - } - if end <= 0 { break } @@ -946,6 +938,15 @@ var StateListMessagesCmd = &cli.Command{ cur = next } + if obn { + sort.Slice(orderedMessages, func(i, j int) bool { + return orderedMessages[i].Nonce < orderedMessages[j].Nonce + }) + for _, om := range orderedMessages { + fmt.Println(string(om.Msg)) + } + } + return nil }, } From e0266fbee983165953fdaef83f6509f6a9a19043 Mon Sep 17 00:00:00 2001 From: Sambhav Jain <136801346+DarkLord017@users.noreply.github.com> Date: Tue, 21 Oct 2025 14:37:12 +0530 Subject: [PATCH 3/3] Update cli/state.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- cli/state.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/state.go b/cli/state.go index 6f877bc6b72..8989b4d83d1 100644 --- a/cli/state.go +++ b/cli/state.go @@ -876,7 +876,7 @@ var StateListMessagesCmd = &cli.Command{ windowSize := abi.ChainEpoch(100) - obn := cctx.Bool("order-by-nonce") && !froma.Empty() + obn := cctx.Bool("order-by-nonce") && !froma.Empty() var orderedMessages []struct { Nonce uint64