cli/query: add height command
This commit is contained in:
parent
7366d45985
commit
8b0dfe135f
3 changed files with 50 additions and 0 deletions
|
@ -48,6 +48,12 @@ func NewCommands() []cli.Command {
|
||||||
Action: queryCommittee,
|
Action: queryCommittee,
|
||||||
Flags: options.RPC,
|
Flags: options.RPC,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: "height",
|
||||||
|
Usage: "Get node height",
|
||||||
|
Action: queryHeight,
|
||||||
|
Flags: options.RPC,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
Name: "tx",
|
Name: "tx",
|
||||||
Usage: "Query transaction status",
|
Usage: "Query transaction status",
|
||||||
|
@ -201,6 +207,33 @@ func queryCommittee(ctx *cli.Context) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func queryHeight(ctx *cli.Context) error {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
gctx, cancel := options.GetTimeoutContext(ctx)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
c, err := options.GetRPCClient(gctx, ctx)
|
||||||
|
if err != nil {
|
||||||
|
return cli.NewExitError(err, 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
blockCount, err := c.GetBlockCount()
|
||||||
|
if err != nil {
|
||||||
|
return cli.NewExitError(err, 1)
|
||||||
|
}
|
||||||
|
blockHeight := blockCount - 1 // GetBlockCount returns block count (including 0), not the highest block index.
|
||||||
|
|
||||||
|
fmt.Fprintf(ctx.App.Writer, "Latest block: %d\n", blockHeight)
|
||||||
|
|
||||||
|
stateHeight, err := c.GetStateHeight()
|
||||||
|
if err == nil { // We can be talking to a node without getstateheight request support.
|
||||||
|
fmt.Fprintf(ctx.App.Writer, "Validated state: %d\n", stateHeight.Validated)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func queryVoter(ctx *cli.Context) error {
|
func queryVoter(ctx *cli.Context) error {
|
||||||
args := ctx.Args()
|
args := ctx.Args()
|
||||||
if len(args) == 0 {
|
if len(args) == 0 {
|
||||||
|
|
|
@ -130,3 +130,12 @@ func (e *executor) compareQueryTxVerbose(t *testing.T, tx *transaction.Transacti
|
||||||
}
|
}
|
||||||
e.checkEOF(t)
|
e.checkEOF(t)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestQueryHeight(t *testing.T) {
|
||||||
|
e := newExecutor(t, true)
|
||||||
|
|
||||||
|
e.Run(t, "neo-go", "query", "height", "--rpc-endpoint", "http://"+e.RPC.Addr)
|
||||||
|
e.checkNextLine(t, `^Latest block: [0-9]+$`)
|
||||||
|
e.checkNextLine(t, `^Validated state: [0-9]+$`)
|
||||||
|
e.checkEOF(t)
|
||||||
|
}
|
||||||
|
|
|
@ -466,6 +466,14 @@ You can also vote for candidates if you own NEO:
|
||||||
|
|
||||||
### Getting data from chain
|
### Getting data from chain
|
||||||
|
|
||||||
|
#### Node height/validated height
|
||||||
|
`query height` returns the latest block and validated state height:
|
||||||
|
```
|
||||||
|
$ ./bin/neo-go query height -r http://localhost:20332
|
||||||
|
Latest block: 11926
|
||||||
|
Validated state: 11926
|
||||||
|
```
|
||||||
|
|
||||||
#### Transaction status
|
#### Transaction status
|
||||||
`query tx` provides convenient wrapper over RPC calls to query transaction status.
|
`query tx` provides convenient wrapper over RPC calls to query transaction status.
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in a new issue