57 std::shared_ptr<final_chain::FinalChain> final_chain);
81 std::pair<SharedTransactions, std::vector<uint64_t>>
packTrxs(
PbftPeriod proposal_period, uint64_t weight_limit);
100 std::pair<bool, std::string>
insertTransaction(
const std::shared_ptr<Transaction> &trx);
152 std::vector<std::shared_ptr<Transaction>>
getNonfinalizedTrx(
const std::vector<trx_hash_t> &hashes);
228 std::pair<std::vector<std::shared_ptr<Transaction>>, std::vector<trx_hash_t>>
getPoolTransactions(
229 const std::vector<trx_hash_t> &trx_to_query)
const;
259 std::pair<bool, std::string>
verifyTransaction(
const std::shared_ptr<Transaction> &trx)
const;
281 std::shared_ptr<DbStorage>
db_{
nullptr};
DagBlock class is a DAG block class which main data is a list of transaction hashes included in the b...
Definition dag_block.hpp:16
Definition thread_pool.hpp:7
Definition state_api_data.hpp:62
PeriodData class is for block execution, that includes PBFT block, certify votes, DAG blocks,...
Definition period_data.hpp:26
std::shared_mutex transactions_mutex_
Definition transaction_manager.hpp:269
uint64_t trx_count_
Definition transaction_manager.hpp:275
ExpirationCacheMap< trx_hash_t, state_api::ExecutionResult > estimations_cache_
Definition transaction_manager.hpp:274
std::unordered_map< trx_hash_t, std::shared_ptr< Transaction > > nonfinalized_transactions_in_dag_
Definition transaction_manager.hpp:271
std::pair< bool, std::string > verifyTransaction(const std::shared_ptr< Transaction > &trx) const
Verifies a transaction.
Definition transaction_manager.cpp:79
std::vector< SharedTransactions > getAllPoolTrxs()
Gets all transactions from pool grouped per account.
Definition transaction_manager.cpp:416
std::shared_ptr< Transaction > getTransaction(const trx_hash_t &hash) const
Definition transaction_manager.cpp:223
size_t getNonfinalizedTrxSize() const
Definition transaction_manager.cpp:317
val_t getMinGasPriceForBlockInclusion() const
Returns minimum gas price needed for transaction to be included in the next proposed dag block.
Definition transaction_manager.cpp:539
void recoverNonfinalizedTransactions()
Definition transaction_manager.cpp:276
std::unordered_set< trx_hash_t > excludeFinalizedTransactions(const std::vector< trx_hash_t > &hashes)
Exclude Finalized transactions.
Definition transaction_manager.cpp:335
util::ThreadPool estimation_thread_pool_
Definition transaction_manager.hpp:284
std::shared_ptr< final_chain::FinalChain > final_chain_
Definition transaction_manager.hpp:282
std::vector< std::shared_ptr< Transaction > > getNonfinalizedTrx(const std::vector< trx_hash_t > &hashes)
Get the Nonfinalized Trx objects from cache.
Definition transaction_manager.cpp:322
const FullNodeConfig & kConf
Definition transaction_manager.hpp:265
const uint64_t kRecentlyFinalizedTransactionsMax
Definition transaction_manager.hpp:279
void blockFinalized(EthBlockNumber block_number)
Invoked when block finalized in final chain.
Definition transaction_manager.cpp:529
std::pair< std::vector< std::shared_ptr< Transaction > >, std::vector< trx_hash_t > > getPoolTransactions(const std::vector< trx_hash_t > &trx_to_query) const
Gets transactions from transactions pool.
Definition transaction_manager.cpp:208
bool verifyTransactionsNotFinalized(const SharedTransactions &trxs)
Verify transactions not finalized.
Definition transaction_manager.cpp:349
bool isTransactionKnown(const trx_hash_t &trx_hash)
Definition transaction_manager.cpp:116
TransactionStatus insertValidatedTransaction(std::shared_ptr< Transaction > &&tx, bool insert_non_proposable=true)
Inserts verified transaction to transaction pool.
Definition transaction_manager.cpp:144
bool nonProposableTransactionsOverTheLimit() const
return true if non proposable transactions are over the limit
Definition transaction_manager.cpp:307
size_t getTransactionPoolSize() const
Definition transaction_manager.cpp:302
bool isTransactionPoolFull(size_t percentage=100) const
return true if transaction pool is full
Definition transaction_manager.cpp:312
std::unordered_map< PbftPeriod, std::vector< trx_hash_t > > recently_finalized_transactions_per_period_
Definition transaction_manager.hpp:273
const uint64_t kEstimateGasLimit
Definition transaction_manager.hpp:278
SharedTransactions getTransactions(const vec_trx_t &trxs_hashes, PbftPeriod proposal_period)
Get the transactions.
Definition transaction_manager.cpp:490
TransactionQueue transactions_pool_
Definition transaction_manager.hpp:270
void updateFinalizedTransactionsStatus(const PeriodData &period_data)
Updates the status of transactions to finalized IMPORTANT: This method is invoked on finalizing a pbf...
Definition transaction_manager.cpp:433
std::unordered_map< trx_hash_t, std::shared_ptr< Transaction > > recently_finalized_transactions_
Definition transaction_manager.hpp:272
bool transactionsDropped() const
Have transactions been recently dropped due to queue reaching max size This call is thread-safe.
Definition transaction_manager.cpp:534
SharedTransactions getBlockTransactions(const DagBlock &blk, PbftPeriod proposal_period)
Get the block transactions.
Definition transaction_manager.cpp:486
void removeNonFinalizedTransactions(std::unordered_set< trx_hash_t > &&transactions)
Removes non-finalized transactions from discarded old dag blocks IMPORTANT: This method is invoked on...
Definition transaction_manager.cpp:473
std::pair< SharedTransactions, std::vector< uint64_t > > packTrxs(PbftPeriod proposal_period, uint64_t weight_limit)
Gets transactions from pool to include in the block with specified weight limit.
Definition transaction_manager.cpp:376
state_api::ExecutionResult estimateTransactionGas(std::shared_ptr< Transaction > trx, PbftPeriod proposal_period)
Estimates required gas value to execute transaction.
Definition transaction_manager.cpp:51
uint64_t estimateTransactions(const SharedTransactions &trxs, PbftPeriod proposal_period)
Estimates required gas value to execute transactions.
Definition transaction_manager.cpp:32
util::Event< TransactionManager, const trx_hash_t & > const transaction_added_
Definition transaction_manager.hpp:289
std::pair< bool, std::string > insertTransaction(const std::shared_ptr< Transaction > &trx)
Inserts and verify new transaction to transaction pool.
Definition transaction_manager.cpp:120
std::shared_ptr< Transaction > getNonFinalizedTransaction(const trx_hash_t &hash) const
void initializeRecentlyFinalizedTransactions(const PeriodData &period_data)
Initialize recently finalized transactions.
Definition transaction_manager.cpp:421
addr_t getFullNodeAddress() const
const uint64_t kDagBlockGasLimit
Definition transaction_manager.hpp:277
unsigned long getTransactionCount() const
Definition transaction_manager.cpp:203
std::shared_ptr< DbStorage > db_
Definition transaction_manager.hpp:281
logger::Logger logger_
Definition transaction_manager.hpp:286
void saveTransactionsFromDagBlock(const SharedTransactions &trxs)
Definition transaction_manager.cpp:232
std::shared_mutex & getTransactionsMutex()
Retrieves transactions mutex, only to be used when finalizing pbft block.
Definition transaction_manager.hpp:219
TransactionManager class verifies and inserts incoming transactions in memory pool and handles saving...
Definition transaction_manager.hpp:54
TransactionQueue keeps transactions in memory sorted by priority to be included in a proposed DAG blo...
Definition transaction_queue.hpp:30
TransactionStatus
TransactionStatus enum class defines current transaction status.
Definition transaction_manager.hpp:23
std::shared_ptr< spdlog::logger > Logger
Definition logging.hpp:12
uint64_t EthBlockNumber
Definition types.hpp:24
EthBlockNumber PbftPeriod
Definition types.hpp:25
std::vector< SharedTransaction > SharedTransactions
Definition transaction.hpp:86
dev::u256 val_t
Definition types.hpp:48
std::vector< trx_hash_t > vec_trx_t
Definition types.hpp:51