16class TransactionManager;
21namespace final_chain {
40 trx_shard(
std::stoull(
wallet.node_addr.toString().substr(0, 6).c_str(), NULL, 16) % shard) {}
55 std::shared_ptr<TransactionManager> trx_mgr, std::shared_ptr<final_chain::FinalChain> final_chain,
56 std::shared_ptr<DbStorage> db, std::shared_ptr<KeyManager> key_manager);
79 bool proposeDagBlock(
const std::shared_ptr<NodeDagProposerData>& node_dag_proposer_data);
86 void setNetwork(std::weak_ptr<Network> network);
114 std::vector<uint64_t>&& estimations,
VdfSortition&& vdf,
124 std::pair<SharedTransactions, std::vector<uint64_t>>
getShardedTrxs(
PbftPeriod proposal_period, uint64_t weight_limit,
125 const uint16_t node_trx_shard)
const;
158 std::shared_ptr<DbStorage>
db_;
Definition thread_pool.hpp:7
Definition sortition.hpp:13
void start()
Start the worker thread proposing new DAG blocks.
Definition dag_block_proposer.cpp:202
std::shared_ptr< DagBlock > createDagBlock(DagFrontier &&frontier, level_t level, const SharedTransactions &trxs, std::vector< uint64_t > &&estimations, VdfSortition &&vdf, const dev::Secret &node_secret) const
Creates a new block with provided data.
Definition dag_block_proposer.cpp:358
std::vector< std::thread > proposer_workers_
Definition dag_block_proposer.hpp:159
void stop()
Stop the worker thread.
Definition dag_block_proposer.cpp:233
DagBlockProposer & operator=(DagBlockProposer &&)=delete
~DagBlockProposer()
Definition dag_block_proposer.hpp:57
std::pair< SharedTransactions, std::vector< uint64_t > > getShardedTrxs(PbftPeriod proposal_period, uint64_t weight_limit, const uint16_t node_trx_shard) const
Gets transactions to include in the block - sharding not supported yet.
Definition dag_block_proposer.cpp:246
const uint16_t max_num_tries_
Definition dag_block_proposer.hpp:144
bool proposeDagBlock(const std::shared_ptr< NodeDagProposerData > &node_dag_proposer_data)
Tries to propose new dag block.
Definition dag_block_proposer.cpp:45
const uint64_t kShardProposePeriodInterval
Definition dag_block_proposer.hpp:170
const uint64_t kDagGasLimit
Definition dag_block_proposer.hpp:166
const uint16_t total_trx_shards_
Definition dag_block_proposer.hpp:152
std::vector< std::shared_ptr< NodeDagProposerData > > nodes_dag_proposers_data_
Definition dag_block_proposer.hpp:162
std::shared_ptr< DbStorage > db_
Definition dag_block_proposer.hpp:158
std::shared_ptr< KeyManager > key_manager_
Definition dag_block_proposer.hpp:157
std::atomic< bool > stopped_
Definition dag_block_proposer.hpp:150
const uint64_t kDagProposeGasLimit
Definition dag_block_proposer.hpp:164
std::weak_ptr< Network > network_
Definition dag_block_proposer.hpp:160
const uint64_t kValidatorMaxVote
Definition dag_block_proposer.hpp:169
util::ThreadPool executor_
Definition dag_block_proposer.hpp:147
const uint64_t kPbftGasLimit
Definition dag_block_proposer.hpp:165
DagBlockProposer(const DagBlockProposer &)=delete
DagBlockProposer(DagBlockProposer &&)=delete
std::shared_ptr< final_chain::FinalChain > final_chain_
Definition dag_block_proposer.hpp:156
void setNetwork(std::weak_ptr< Network > network)
Sets network.
Definition dag_block_proposer.cpp:395
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:303
std::shared_ptr< TransactionManager > trx_mgr_
Definition dag_block_proposer.hpp:155
std::atomic< uint64_t > proposed_blocks_count_
Definition dag_block_proposer.hpp:149
bool isValidDposProposer(PbftPeriod propose_period, const addr_t &node_addr) const
Checks if node is valid proposer for provided level.
Definition dag_block_proposer.cpp:380
DagBlockProposer & operator=(const DagBlockProposer &)=delete
uint64_t getProposedBlocksCount() const
Definition dag_block_proposer.hpp:91
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:282
std::shared_ptr< DagManager > dag_mgr_
Definition dag_block_proposer.hpp:154
const HardforksConfig kHardforks
Definition dag_block_proposer.hpp:168
DagBlockProposer class proposes new DAG blocks using transactions retrieved from TransactionManager.
Definition dag_block_proposer.hpp:34
#define LOG_OBJECTS_DEFINE
Definition logger.hpp:60
std::hash for asio::adress
Definition FixedHash.h:483
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:86
uint64_t level_t
Definition types.hpp:46
Definition dag_block_proposer.hpp:36
uint16_t num_tries
Definition dag_block_proposer.hpp:49
const uint16_t max_num_tries
Definition dag_block_proposer.hpp:46
uint64_t last_propose_level
Definition dag_block_proposer.hpp:50
NodeDagProposerData(const WalletConfig &wallet, const uint16_t max_tries, const uint16_t shard)
Definition dag_block_proposer.hpp:37
const WalletConfig wallet
Definition dag_block_proposer.hpp:42
const uint16_t trx_shard
Definition dag_block_proposer.hpp:47
Definition dag_block.hpp:122
Definition hardfork.hpp:114