[go: up one dir, main page]

Transaction flow rework

Observer batch transaction using a transaction queue

[ ]: When missing review [X]: Reviewed, marge assigned

  1. !16812 (merged): Observer uses the tx queue to batch transaction instead of tx pool
  2. !16903 (merged): Add a specific tx queue configuration
  3. !16977 (merged): Split the tx queue callback into two type for cleaner instrumented (internal) callback.
  4. !16829 (merged): tx queue store the tx object, can now respond to get_tx_by_hash RPC
  5. !16982 (merged): tx are confirmed when seen in a block
  6. !16892 (merged): tx_queue store the used nonce by pending tx, can now respond to get_tx_count RPC
  7. !16894 (merged): tx_queue uses keep_alive config
  8. !16994 (merged): limit number of TX per address
  9. !17083 (merged): limit number of transactions in queue
  10. !17102 (merged): add RPC to inspect tx_queue content
  11. !17091 (merged): reorg clear the full TX_queue

Sequencer applies tx in order of arrival as much as possible

  1. !17134 (merged): move the evm_node_endpoint out of the tx_queue state
  2. !17100 (merged): add lock for the tx_queue when it's too late
  3. !17109 (merged): The sequencer uses the tx queue
  4. !17212 (merged): remove duplicate validation
  5. !17211 (merged): balance, gas and nonce validation is done in the block producer
  6. !17310 (merged): validate that tx data is small enough
  7. !17411 (merged): bypass tx_pool/queue when direct forwarding txs
  8. !17246 (merged): enable tx_queue for the proxy and activates it for all test.
  9. !17254 (merged): enable tx_queue for the rpc mode and activates it for rpc mode all test.
  10. !17232 (closed): activate tx_queue for all test and make sure none fails
  11. !17526 (merged): only caller callback are asynchronous, using Lwt.dont_wait

follow-up:

  1. explore limiting the nonce too far in the future (instead of tx_per addresse limit) !16994 (comment 2382734524)
  2. add PBT testing for Bitset_nonce
  3. 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.
  4. add metrics
  5. rewrite tx_queue docstring
  6. replace transaction with transaction_object in block_producer for validation => remove decoding of raw_tx
  7. #7825
  8. #7829 (closed)
Edited by Sylvain R.