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:135