Need clarification about the transaction prioritization situation #9772
-
Hi! My team recently started building on tendermint and we've been using v0.34 as, as far as I know, that's the latest stable release (and because that happens to be the latest version supported by the Rust bindings we're using). We're looking into prioritizing transactions (reordering them based on how much fee they are paying), and I've seen that:
So I'm trying to understand if we should expect that field to work on our current v0.34.22 version, if we should aim to bump to a newer version (which?) where the mempool prioritization is available, or if we should skip to an abci++ solution (is that already usable?) Thanks! |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 2 replies
-
The prioritized mempool has effectively been considered a temporary measure to be used until such time that ABCI 1.0's Prepare and Process Proposal calls were available in Tendermint v0.37. This is why it's being deprecated and will be removed in Tendermint v0.38. With PrepareProposal, it's possible to implement an application-side mempool that would allow you to order transactions in whatever way you choose. With the current design of ABCI 1.0, there is a chance that you will not be able to perform global ordering on transactions, as Tendermint only reaps a certain quantity of transactions from the mempool when constructing a proposal, as per: Line 116 in abbeb91 One additional thing we may consider implementing in future is a flag that, when enabled, will cause the node to reap all transactions from the mempool and send them to the application. This would allow for global ordering by the application of all transactions that were in the mempool at the time that the transactions were reaped. Tendermint v0.37 with ABCI 1.0 (with Prepare/Process Proposal) is currently available as a release candidate, and the Cosmos SDK is in the process of integrating with it. We are hoping to cut the final v0.37.0 release within the next few weeks. |
Beta Was this translation helpful? Give feedback.
-
Thanks for the reply. What about the prioritized mempool, should I expect it to work in v0.34? (I understand it's temporary but we could use it short-term until we get around to upgrade to v0.37) |
Beta Was this translation helpful? Give feedback.
The prioritized mempool has effectively been considered a temporary measure to be used until such time that ABCI 1.0's Prepare and Process Proposal calls were available in Tendermint v0.37. This is why it's being deprecated and will be removed in Tendermint v0.38. With PrepareProposal, it's possible to implement an application-side mempool that would allow you to order transactions in whatever way you choose.
With the current design of ABCI 1.0, there is a chance that you will not be able to perform global ordering on transactions, as Tendermint only reaps a certain quantity of transactions from the mempool when constructing a proposal, as per:
tendermint/state/execution.go
Line 116 in