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);
85 void setNetwork(std::weak_ptr<Network> network);
113 std::vector<uint64_t>&& estimations,
VdfSortition&& vdf,
123 std::pair<SharedTransactions, std::vector<uint64_t>>
getShardedTrxs(
PbftPeriod proposal_period, uint64_t weight_limit,
124 const uint16_t node_trx_shard)
const;
157 std::shared_ptr<DbStorage>
db_;
Definition thread_pool.hpp:7
Definition sortition.hpp:13
bool proposeDagBlock()
Tries to propose new dag block.
Definition dag_block_proposer.cpp:38
void start()
Start the worker thread proposing new DAG blocks.
Definition dag_block_proposer.cpp:210
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:360
void stop()
Stop the worker thread.
Definition dag_block_proposer.cpp:239
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:248
const uint16_t max_num_tries_
Definition dag_block_proposer.hpp:143
const uint64_t kShardProposePeriodInterval
Definition dag_block_proposer.hpp:169
const uint64_t kDagGasLimit
Definition dag_block_proposer.hpp:165
const uint16_t total_trx_shards_
Definition dag_block_proposer.hpp:151
std::shared_ptr< DbStorage > db_
Definition dag_block_proposer.hpp:157
std::shared_ptr< KeyManager > key_manager_
Definition dag_block_proposer.hpp:156
std::atomic< bool > stopped_
Definition dag_block_proposer.hpp:149
const uint64_t kDagProposeGasLimit
Definition dag_block_proposer.hpp:163
logger::Logger logger_
Definition dag_block_proposer.hpp:171
std::vector< NodeDagProposerData > nodes_dag_proposers_data_
Definition dag_block_proposer.hpp:161
std::weak_ptr< Network > network_
Definition dag_block_proposer.hpp:159
const uint64_t kValidatorMaxVote
Definition dag_block_proposer.hpp:168
util::ThreadPool executor_
Definition dag_block_proposer.hpp:146
const uint64_t kPbftGasLimit
Definition dag_block_proposer.hpp:164
DagBlockProposer(const DagBlockProposer &)=delete
DagBlockProposer(DagBlockProposer &&)=delete
std::shared_ptr< final_chain::FinalChain > final_chain_
Definition dag_block_proposer.hpp:155
void setNetwork(std::weak_ptr< Network > network)
Sets network.
Definition dag_block_proposer.cpp:397
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:305
std::shared_ptr< TransactionManager > trx_mgr_
Definition dag_block_proposer.hpp:154
std::atomic< uint64_t > proposed_blocks_count_
Definition dag_block_proposer.hpp:148
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:382
DagBlockProposer & operator=(const DagBlockProposer &)=delete
std::shared_ptr< std::thread > proposer_worker_
Definition dag_block_proposer.hpp:158
uint64_t getProposedBlocksCount() const
Definition dag_block_proposer.hpp:90
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:284
std::shared_ptr< DagManager > dag_mgr_
Definition dag_block_proposer.hpp:153
const HardforksConfig kHardforks
Definition dag_block_proposer.hpp:167
DagBlockProposer class proposes new DAG blocks using transactions retrieved from TransactionManager.
Definition dag_block_proposer.hpp:34
std::hash for asio::adress
Definition FixedHash.h:483
std::shared_ptr< spdlog::logger > Logger
Definition logging.hpp:12
std::vector< blk_hash_t > vec_blk_t
Definition types.hpp:50
EthBlockNumber PbftPeriod
Definition types.hpp:25
std::vector< SharedTransaction > SharedTransactions
Definition transaction.hpp:86
uint64_t level_t
Definition types.hpp:47
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:124
Definition hardfork.hpp:114