-
Notifications
You must be signed in to change notification settings - Fork 3.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
mempool: non validator nodes should not have to run the mempool #13874
Comments
In this case the node would just accept the transactions proposed by Tendermint in |
a non validating node doesn't vote so they don't care what's in the block and have no need to check. |
Let me play the other side of the coin here...shouldn't this be Tendermint's responsibility? IIRC, Tendermint knows if a node is a validator or not. Thus if it knows its not a validator, it will never bother calling |
that is true, it would be the cleaner approach. I can bring it up on the tendermint side. The question arises is what if an application wants everyone to run it? |
I know some user run some customized full nodes just to monitor mempool, mainly quant bots ;D |
This is already the case. The proposer selection algorithm will never select a node that is not in the validator set. So non-validating full nodes will never call |
If we're just talking about the app-side mempool (and not the Tendermint mempool) then I think what is being proposed here makes sense. Non-validating nodes will never call However, if we're talking about the Tendermint mempool, then I would be against disabling it for full nodes with no recourse. As @yihuang above said, there are full nodes that exist to monitor the mempool, index transactions that are received, etc. In our case at dYdX we have done exactly this by instrumenting our full nodes to stream transactions received in |
100% this is only for sdk app mempool. tendermint mempool should live on as it currently is. |
So looks like this issue is moot? Tendermint will never call However, it will call I think what we can do is allow the operator to configure to disable/enable mempool setting (set by default) in |
yea this works. its a simple change |
Concrete proposal: Allow operators to enable/disable mempool from being set (default: enabled). For validator nodes, panic when |
we added a size constraint for the mempool, setting it to 0 should recreate the same functionality, are we fine with that? |
We should definitely mention the configuration to change for non validator nodes somewhere here as a |
Yeah, since we cannot control what type of mempool is used via configuration (an app would have to explicitly support this themselves), using the size config seems like the sensible and easiest option. |
We could enforce it by putting that check in our default baseapp options, so it would work for all type of mempool then. |
Summary
the new app-side mempool handles ordering of txs, but only needs to be run by validators, Other full nodes have no reason to order transactions.
Proposal
On startup, check if a node is a validator, if so it should handle ordering of txs, if not then there is no need to start the mempool.
There may be implications to this like some applications want all nodes to order. There could be others I just cant think of them now
The text was updated successfully, but these errors were encountered: