Browse Source

Fix query against the latest state in light client (#7642)

pull/7666/head
Alexander Shcherbakov 2 years ago
committed by GitHub
parent
commit
3f2da0e4e3
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 0 deletions
  1. +12
    -0
      light/rpc/client.go

+ 12
- 0
light/rpc/client.go View File

@ -149,12 +149,24 @@ func (c *Client) ABCIQuery(ctx context.Context, path string, data tmbytes.HexByt
}
// ABCIQueryWithOptions returns an error if opts.Prove is false.
// ABCIQueryWithOptions returns the result for the given height (opts.Height).
// If no height is provided, the results of the block preceding the latest are returned.
func (c *Client) ABCIQueryWithOptions(ctx context.Context, path string, data tmbytes.HexBytes,
opts rpcclient.ABCIQueryOptions) (*coretypes.ResultABCIQuery, error) {
// always request the proof
opts.Prove = true
// Can't return the latest block results because we won't be able to
// prove them. Return the results for the previous block instead.
if opts.Height == 0 {
res, err := c.next.Status(ctx)
if err != nil {
return nil, fmt.Errorf("can't get latest height: %w", err)
}
opts.Height = res.SyncInfo.LatestBlockHeight - 1
}
res, err := c.next.ABCIQueryWithOptions(ctx, path, data, opts)
if err != nil {
return nil, err


Loading…
Cancel
Save