besu: Only up to 5 private transactions of the same EOA are executed in one block.
Description
When 8 private transactions of the same EOA are sent to one block, 5 are processed, and the remaining 3 are added to the pending list and not processed.
Steps to Reproduce
- npx quorum-dev-quickstart
- private transaction [Y]
- modify the “.env” file
BESU_VERSION=22.7.1
-->BESU_VERSION=22.7.7
- execute
./run.sh
in quorum-test-network directory - set test code : https://github.com/ConsenSys/web3js-quorum/blob/master/example/concurrentPrivateTransactions/concurrentPrivateTransactions.js
- Change the value of the BATCH_SIZE variable to 8 in the concurrentPrivateTransaction.js file
const BATCH_SIZE = 5;
-->const BATCH_SIZE = 8;
- Run concurrentPrivateTransaction.js
Expected behavior:
- 8 transactions must be included and processed in one block.
Actual behavior:
- Only 5 transactions are added and the remaining 3 are registered in pending and waiting indefinitely.
Frequency: 100%
Versions
Software version: 22.7.3 to 22.10.0 reproduced. 22.7.1 to 22.7.2 not reproduced.
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 16 (7 by maintainers)
at the moment, this is by design, the caller should check the RPC response when submitting a response, and if the transaction is rejected, it should resubmit it if the error is transient, like when the number of transactions allowed per sender in a given block is reached, because even if you change the limit, there will be always one. We are currently working on improving the transaction pool, so thing could improve in the next releases.
This is the effect of a new limit we introduced, and by default a max of 5 transactions per sender are accepted in the next block (https://github.com/hyperledger/besu/pull/4417), but it can easily be configured to anything that you want setting this configuration parameter
--tx-pool-limit-by-account-percentage
, that takes float values in the range [0…1], so setting it to 1 means a single sender can fill the entire tx pool.@IarikM then is it possible that other nodes do not have the
--tx-pool-limit-by-account-percentage=1
configuration? In this case they will only add 5 txs to the block, but if one of your nodes will build a block then more that 5 txs could be added. If possible tell the maintainer to update his nodes configuration.@fab-10 I have the same problem with 22.10.3., only 5 transactions are executed.
–tx-pool-limit-by-account-percentage is set to 1 in the following way:
and this is the only tx-pool setting provided explicity. Should I add any other tx-pool setting to make this work?