Transaction flow rework
Observer batch transaction using a transaction queue
[ ]: When missing review [X]: Reviewed, marge assigned
-
!16812 (merged): Observer uses the tx queue to batch transaction instead of tx pool -
!16903 (merged): Add a specific tx queue configuration -
!16977 (merged): Split the tx queue callback into two type for cleaner instrumented (internal) callback. -
!16829 (merged): tx queue store the tx object, can now respond to get_tx_by_hashRPC -
!16982 (merged): tx are confirmed when seen in a block -
!16892 (merged): tx_queue store the used nonce by pending tx, can now respond to get_tx_countRPC -
!16894 (merged): tx_queue uses keep_alive config -
!16994 (merged): limit number of TX per address -
!17083 (merged): limit number of transactions in queue -
!17102 (merged): add RPC to inspect tx_queue content -
!17091 (merged): reorg clear the full TX_queue
Sequencer applies tx in order of arrival as much as possible
-
!17134 (merged): move the evm_node_endpointout of the tx_queue state -
!17100 (merged): add lock for the tx_queue when it's too late -
!17109 (merged): The sequencer uses the tx queue -
!17212 (merged): remove duplicate validation -
!17211 (merged): balance, gas and nonce validation is done in the block producer -
!17310 (merged): validate that tx data is small enough -
!17411 (merged): bypass tx_pool/queue when direct forwarding txs -
!17246 (merged): enable tx_queue for the proxy and activates it for all test. -
!17254 (merged): enable tx_queue for the rpc mode and activates it for rpc mode all test. -
!17232 (closed): activate tx_queuefor all test and make sure none fails -
!17526 (merged): only caller callback are asynchronous, using Lwt.dont_wait
follow-up:
-
explore limiting the nonce too far in the future (instead of tx_per addresse limit) !16994 (comment 2382734524) -
add PBT testing for Bitset_nonce -
replace txs in tx_queue for tx with nonce in pending ? I'm not sure this is a concern, but it used to be possible with the tx pool. With the tx_queue the second transaction will simply be forwarded to next node. There is one case where it might be a problem. If a user submit transactions up to the limit with only nonce superior to the current one. Then this user must wait for its transactions to be dropped in order to submit a new one with the correct next nonce. -
add metrics -
rewrite tx_queue docstring -
replace transaction with transaction_object in block_producer for validation => remove decoding of raw_tx -
#7825 -
#7829 (closed)
Edited by Sylvain R.