package main import ( "fmt" lcli "github.com/filecoin-project/lotus/cli" "github.com/urfave/cli/v2" ) var chainCmd = &cli.Command{ Name: "chain", Usage: "chain-related utilities", Subcommands: []*cli.Command{ chainNullTsCmd, }, } var chainNullTsCmd = &cli.Command{ Name: "latest-null", Usage: "finds the most recent null tipset", Action: func(cctx *cli.Context) error { api, closer, err := lcli.GetFullNodeAPI(cctx) if err != nil { return err } defer closer() ctx := lcli.ReqContext(cctx) ts, err := lcli.LoadTipSet(ctx, cctx, api) if err != nil { return err } for { pts, err := api.ChainGetTipSet(ctx, ts.Parents()) if err != nil { return err } if ts.Height() != pts.Height()+1 { fmt.Println("null tipset at height ", ts.Height()-1) return nil } ts = pts } }, }