This PR removes the need for the Consensus component to actively retrieve validator transactions from other validators (when the node is the block proposer) by adding an oooValidatorMempool_ (out-of-order mempool) to the rdPoS engine.
The reason you would have to request validator transactions during new block production is because you received them in the past but tossed them away because they were early (in the testcases, this is always because they are one block ahead). Since the existing validatorMempool_ in rdPoS is specifically for the working round, you can't store validator transactions that you receive that are not for that specific working round. So, a new mempool was created to store all of these, and when the chain advances, the OOO validator mempool is consulted for transactions that should be promoted to the main validator mempool -- as if it had just received those from the network, in the correct height.
This PR also deletes the code that makes Consensus request user transactions from other nodes. This should just not be done.
This PR removes the need for the Consensus component to actively retrieve validator transactions from other validators (when the node is the block proposer) by adding an
oooValidatorMempool_
(out-of-order mempool) to the rdPoS engine.The reason you would have to request validator transactions during new block production is because you received them in the past but tossed them away because they were early (in the testcases, this is always because they are one block ahead). Since the existing
validatorMempool_
in rdPoS is specifically for the working round, you can't store validator transactions that you receive that are not for that specific working round. So, a new mempool was created to store all of these, and when the chain advances, the OOO validator mempool is consulted for transactions that should be promoted to the main validator mempool -- as if it had just received those from the network, in the correct height.This PR also deletes the code that makes Consensus request user transactions from other nodes. This should just not be done.