Skip to content

Using pubsub query with big values results in an int64 overflow #9978

@freak12techno

Description

@freak12techno

Tendermint version (use tendermint version or git rev-parse --verify HEAD if installed from source): 0.34.21

ABCI app (name for built-in, URL for self-written if it's publicly available): Rebus

Environment:

  • OS (e.g. from /etc/os-release): Ubuntu
  • Install tools:
  • Others:

What happened:

I am building a tool to subscribe to transactions and messages I need. Internally I use Query /libs/pubsub/query/query.go to filter out messages I do not need. One of my goals is to use values comparison (for example, as in this filter: delegate.amount > 10000000, to filter out MsgDelegate messages with amount less than 10m native tokens). It works okay with small values, but on chains with a different denom exponent (namely, Rebus, with exponent 18, and probably Evmos (haven't tested it with it, but it should result in a similar error)), when trying to subscribe to that filter, it would result in the following error:

7:52PM ERR Error querying for events err="failed to match against query message.action = '/cosmos.staking.v1beta1.MsgDelegate' AND delegate.amount > 10000000000000000000: got strconv.ParseInt: parsing \"10000000000000000000\": value out of range while trying to parse 10000000000000000000 as int64 (should never happen if the grammar is correct)" module=pubsub server=node

And if you do the same in app (try to create a filter from the following string and use query.Matches() on it, it would result in the error in this app.

What you expected to happen:
Conversion is done without any errors.

Have you tried the latest version: no

How to reproduce it (as minimally and precisely as possible):

  • Start a Rebus node (or any other node that has denom exponent 18 or bigger)
  • Subscribe via Tendermint Websockets to the updates on the following filter: message.action = '/cosmos.staking.v1beta1.MsgDelegate' AND delegate.amount > 10000000000000000000
  • Check logs and see errors if such transactions would occur, get a message like the one above per each.

Logs (paste a small part showing an error (< 10 lines) or link a pastebin, gist, etc. containing more of the log file):
See above

Config (you can paste only the changes you've made):

node command runtime flags:

Please provide the output from the http://<ip>:<port>/dump_consensus_state RPC endpoint for consensus bugs

Anything else we need to know:

Metadata

Metadata

Assignees

No one assigned

    Labels

    stalefor use by stalebot

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions