16 class TransactionManager;
19 struct FullNodeConfig;
21 namespace final_chain {
37 std::shared_ptr<TransactionManager> trx_mgr, std::shared_ptr<final_chain::FinalChain> final_chain,
38 std::shared_ptr<DbStorage> db, std::shared_ptr<KeyManager> key_manager);
67 void setNetwork(std::weak_ptr<Network> network);
94 std::vector<uint64_t>&& estimations,
VdfSortition&& vdf)
const;
103 uint64_t weight_limit)
const;
137 std::shared_ptr<DbStorage>
db_;
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:9
Definition: sortition.hpp:13
bool proposeDagBlock()
Tries to propose new dag block.
Definition: dag_block_proposer.cpp:47
void start()
Start the worker thread proposing new DAG blocks.
Definition: dag_block_proposer.cpp:174
void stop()
Stop the worker thread.
Definition: dag_block_proposer.cpp:203
uint16_t num_tries_
Definition: dag_block_proposer.hpp:122
~DagBlockProposer()
Definition: dag_block_proposer.hpp:39
std::pair< SharedTransactions, std::vector< uint64_t > > getShardedTrxs(PbftPeriod proposal_period, uint64_t weight_limit) const
Gets transactions to include in the block - sharding not supported yet.
Definition: dag_block_proposer.cpp:212
uint64_t last_propose_level_
Definition: dag_block_proposer.hpp:123
const DagBlockProposerConfig bp_config_
Definition: dag_block_proposer.hpp:129
DagBlockProposer & operator=(DagBlockProposer &&)=delete
const uint64_t kDagGasLimit
Definition: dag_block_proposer.hpp:147
const uint16_t total_trx_shards_
Definition: dag_block_proposer.hpp:130
std::shared_ptr< DbStorage > db_
Definition: dag_block_proposer.hpp:137
DagBlockProposer & operator=(const DagBlockProposer &)=delete
DagBlock createDagBlock(DagFrontier &&frontier, level_t level, const SharedTransactions &trxs, std::vector< uint64_t > &&estimations, VdfSortition &&vdf) const
Creates a new block with provided data.
Definition: dag_block_proposer.cpp:323
std::shared_ptr< KeyManager > key_manager_
Definition: dag_block_proposer.hpp:136
std::atomic< bool > stopped_
Definition: dag_block_proposer.hpp:127
uint16_t my_trx_shard_
Definition: dag_block_proposer.hpp:131
std::weak_ptr< Network > network_
Definition: dag_block_proposer.hpp:139
const vrf_wrapper::vrf_sk_t vrf_sk_
Definition: dag_block_proposer.hpp:143
const uint64_t kValidatorMaxVote
Definition: dag_block_proposer.hpp:150
util::ThreadPool executor_
Definition: dag_block_proposer.hpp:124
const uint64_t kPbftGasLimit
Definition: dag_block_proposer.hpp:146
bool isValidDposProposer(PbftPeriod propose_period) const
Checks if node is valid proposer for provided level.
Definition: dag_block_proposer.cpp:345
DagBlockProposer(const DagBlockProposer &)=delete
const addr_t node_addr_
Definition: dag_block_proposer.hpp:141
DagBlockProposer(DagBlockProposer &&)=delete
std::shared_ptr< final_chain::FinalChain > final_chain_
Definition: dag_block_proposer.hpp:135
void setNetwork(std::weak_ptr< Network > network)
Sets network.
Definition: dag_block_proposer.cpp:360
vec_blk_t selectDagBlockTips(const vec_blk_t &frontier_tips, uint64_t gas_limit) const
Select tips for DagBlock proposal up to max allowed.
Definition: dag_block_proposer.cpp:268
std::shared_ptr< TransactionManager > trx_mgr_
Definition: dag_block_proposer.hpp:134
std::atomic< uint64_t > proposed_blocks_count_
Definition: dag_block_proposer.hpp:126
uint16_t max_num_tries_
Definition: dag_block_proposer.hpp:121
DagBlockProposer(const FullNodeConfig &config, std::shared_ptr< DagManager > dag_mgr, std::shared_ptr< TransactionManager > trx_mgr, std::shared_ptr< final_chain::FinalChain > final_chain, std::shared_ptr< DbStorage > db, std::shared_ptr< KeyManager > key_manager)
Definition: dag_block_proposer.cpp:14
const vrf_wrapper::vrf_pk_t vrf_pk_
Definition: dag_block_proposer.hpp:144
const secret_t node_sk_
Definition: dag_block_proposer.hpp:142
std::shared_ptr< std::thread > proposer_worker_
Definition: dag_block_proposer.hpp:138
uint64_t getProposedBlocksCount() const
Definition: dag_block_proposer.hpp:72
level_t getProposeLevel(blk_hash_t const &pivot, vec_blk_t const &tips) const
Gets current propose level for provided pivot and tips.
Definition: dag_block_proposer.cpp:247
std::shared_ptr< DagManager > dag_mgr_
Definition: dag_block_proposer.hpp:133
const HardforksConfig kHardforks
Definition: dag_block_proposer.hpp:149
DagBlockProposer class proposes new DAG blocks using transactions retrieved from TransactionManager.
Definition: dag_block_proposer.hpp:34
main responsibility is blocks execution in EVM, getting data from EVM state
Definition: final_chain.hpp:28
#define LOG_OBJECTS_DEFINE
Definition: logger.hpp:60
std::vector< blk_hash_t > vec_blk_t
Definition: types.hpp:50
EthBlockNumber PbftPeriod
Definition: types.hpp:24
std::vector< SharedTransaction > SharedTransactions
Definition: transaction.hpp:81
uint64_t level_t
Definition: types.hpp:46
Definition: dag_config.hpp:9
Definition: dag_block.hpp:120
Definition: config.hpp:24
Definition: hardfork.hpp:93