TARAXA
Loading...
Searching...
No Matches
gas_pricer.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <boost/circular_buffer.hpp>
4#include <shared_mutex>
5
6#include "config/genesis.hpp"
8
9namespace taraxa {
10
11class DbStorage;
12class TransactionManager;
13
23class GasPricer {
24 public:
25 GasPricer(const GenesisConfig &config, bool is_light_node = false, bool is_blocks_gas_pricer = false,
26 std::shared_ptr<TransactionManager> trx_mgr = nullptr, std::shared_ptr<DbStorage> db = {});
27 ~GasPricer();
28
29 GasPricer(const GasPricer &) = delete;
30 GasPricer(GasPricer &&) = delete;
31 GasPricer &operator=(const GasPricer &) = delete;
33
39 u256 bid() const;
40
46 void update(const SharedTransactions &trxs);
47
48 private:
54 void init(const std::shared_ptr<DbStorage> &db);
55
56 const uint64_t kPercentile;
57 const u256 kMinimumPrice;
58 const bool kIsLightNode;
59
60 mutable std::shared_mutex mutex_;
62 boost::circular_buffer<u256> price_list_;
63
64 std::unique_ptr<std::thread> init_daemon_;
65 const bool kBlocksGasPricer;
66 std::shared_ptr<TransactionManager> trx_mgr_;
67};
68
71} // namespace taraxa
std::shared_mutex mutex_
Definition gas_pricer.hpp:60
void update(const SharedTransactions &trxs)
updates gas price after each executed block
Definition gas_pricer.cpp:81
boost::circular_buffer< u256 > price_list_
Definition gas_pricer.hpp:62
GasPricer & operator=(GasPricer &&)=delete
const u256 kMinimumPrice
Definition gas_pricer.hpp:57
GasPricer(const GasPricer &)=delete
void init(const std::shared_ptr< DbStorage > &db)
initialize values on start from blocks in DB
Definition gas_pricer.cpp:36
const bool kBlocksGasPricer
Definition gas_pricer.hpp:65
GasPricer & operator=(const GasPricer &)=delete
u256 bid() const
returns current gas price
Definition gas_pricer.cpp:27
std::unique_ptr< std::thread > init_daemon_
Definition gas_pricer.hpp:64
std::shared_ptr< TransactionManager > trx_mgr_
Definition gas_pricer.hpp:66
const bool kIsLightNode
Definition gas_pricer.hpp:58
u256 latest_price_
Definition gas_pricer.hpp:61
~GasPricer()
Definition gas_pricer.cpp:23
GasPricer(GasPricer &&)=delete
const uint64_t kPercentile
Definition gas_pricer.hpp:56
Basic gas price calculator. We calculate the gas price based on the lowest price in last number_of_bl...
Definition gas_pricer.hpp:23
Definition app.hpp:16
std::vector< SharedTransaction > SharedTransactions
Definition transaction.hpp:86
Definition genesis.hpp:23