TARAXA
state_api.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <taraxa-evm/taraxa-evm.h>
4 
5 #include <functional>
6 
9 
10 namespace taraxa::state_api {
11 
12 struct Config;
13 struct Opts;
14 struct OptsDB;
15 
20 class StateAPI {
22  taraxa_evm_GetBlockHash get_blk_hash_c_;
23  taraxa_evm_state_API_ptr this_c_;
28  string db_path_;
29 
30  public:
31  StateAPI(std::function<h256(EthBlockNumber)> get_blk_hash, const Config& state_config, const Opts& opts,
32  const OptsDB& opts_db);
33  ~StateAPI();
34  StateAPI(const StateAPI&) = default;
35  StateAPI(StateAPI&&) = default;
36  StateAPI& operator=(const StateAPI&) = default;
37  StateAPI& operator=(StateAPI&&) = default;
38 
39  void update_state_config(const Config& new_config);
40 
41  std::optional<Account> get_account(EthBlockNumber blk_num, const addr_t& addr) const;
42  h256 get_account_storage(EthBlockNumber blk_num, const addr_t& addr, const u256& key) const;
43  bytes get_code_by_address(EthBlockNumber blk_num, const addr_t& addr) const;
44  ExecutionResult dry_run_transaction(EthBlockNumber blk_num, const EVMBlock& blk, const EVMTransaction& trx) const;
45  bytes trace(EthBlockNumber blk_num, const EVMBlock& blk, const std::vector<EVMTransaction> trx,
46  std::optional<Tracing> params = {}) const;
48 
50  const std::vector<EVMTransaction>& transactions);
51  const RewardsDistributionResult& distribute_rewards(const std::vector<rewards::BlockStats>& rewards_stats);
53 
54  void create_snapshot(PbftPeriod period);
55  void prune(const std::vector<dev::h256>& state_root_to_keep, EthBlockNumber blk_num);
56 
57  // DPOS
58  uint64_t dpos_eligible_total_vote_count(EthBlockNumber blk_num) const;
59  uint64_t dpos_eligible_vote_count(EthBlockNumber blk_num, const addr_t& addr) const;
60  bool dpos_is_eligible(EthBlockNumber blk_num, const addr_t& addr) const;
61  u256 get_staking_balance(EthBlockNumber blk_num, const addr_t& addr) const;
62  vrf_wrapper::vrf_pk_t dpos_get_vrf_key(EthBlockNumber blk_num, const addr_t& addr) const;
63  std::vector<ValidatorStake> dpos_validators_total_stakes(EthBlockNumber blk_num) const;
64  std::vector<ValidatorVoteCount> dpos_validators_vote_counts(EthBlockNumber blk_num) const;
65  uint64_t dpos_yield(EthBlockNumber blk_num) const;
66  u256 dpos_total_supply(EthBlockNumber blk_num) const;
68 };
71 } // namespace taraxa::state_api
72 
73 namespace taraxa {
74 using state_api::StateAPI;
75 }
Definition: FixedHash.h:35
Class for writing to an RLP bytestream.
Definition: RLP.h:484
StateAPI & operator=(const StateAPI &)=default
void prune(const std::vector< dev::h256 > &state_root_to_keep, EthBlockNumber blk_num)
Definition: state_api.cpp:215
StateAPI(std::function< h256(EthBlockNumber)> get_blk_hash, const Config &state_config, const Opts &opts, const OptsDB &opts_db)
h256 get_account_storage(EthBlockNumber blk_num, const addr_t &addr, const u256 &key) const
Definition: state_api.cpp:153
std::function< h256(EthBlockNumber)> get_blk_hash_
Definition: state_api.hpp:21
TransactionsExecutionResult result_buf_execution_result_
Definition: state_api.hpp:25
string db_path_
Definition: state_api.hpp:28
StateAPI & operator=(StateAPI &&)=default
StateAPI(const StateAPI &)=default
uint64_t dpos_yield(EthBlockNumber blk_num) const
Definition: state_api.cpp:273
vrf_wrapper::vrf_pk_t dpos_get_vrf_key(EthBlockNumber blk_num, const addr_t &addr) const
Definition: state_api.cpp:250
dev::RLPStream rlp_enc_rewards_distribution_
Definition: state_api.hpp:26
const TransactionsExecutionResult & execute_transactions(const EVMBlock &block, const std::vector< EVMTransaction > &transactions)
Definition: state_api.cpp:182
uint64_t dpos_eligible_total_vote_count(EthBlockNumber blk_num) const
Definition: state_api.cpp:219
std::vector< ValidatorStake > dpos_validators_total_stakes(EthBlockNumber blk_num) const
Definition: state_api.cpp:255
const RewardsDistributionResult & distribute_rewards(const std::vector< rewards::BlockStats > &rewards_stats)
Definition: state_api.cpp:191
StateAPI(StateAPI &&)=default
bytes get_code_by_address(EthBlockNumber blk_num, const addr_t &addr) const
Definition: state_api.cpp:157
std::optional< Account > get_account(EthBlockNumber blk_num, const addr_t &addr) const
Definition: state_api.cpp:149
void transition_state_commit()
Definition: state_api.cpp:199
void update_state_config(const Config &new_config)
Definition: state_api.cpp:140
u256 dpos_total_supply(EthBlockNumber blk_num) const
Definition: state_api.cpp:280
bool dpos_is_eligible(EthBlockNumber blk_num, const addr_t &addr) const
Definition: state_api.cpp:236
taraxa_evm_GetBlockHash get_blk_hash_c_
Definition: state_api.hpp:22
uint64_t dpos_eligible_vote_count(EthBlockNumber blk_num, const addr_t &addr) const
Definition: state_api.cpp:226
u256 get_staking_balance(EthBlockNumber blk_num, const addr_t &addr) const
Definition: state_api.cpp:246
~StateAPI()
Definition: state_api.cpp:134
taraxa_evm_state_API_ptr this_c_
Definition: state_api.hpp:23
std::vector< ValidatorVoteCount > dpos_validators_vote_counts(EthBlockNumber blk_num) const
Definition: state_api.cpp:264
StateDescriptor get_last_committed_state_descriptor() const
Definition: state_api.cpp:173
RewardsDistributionResult result_buf_rewards_distribution_
Definition: state_api.hpp:27
void create_snapshot(PbftPeriod period)
Definition: state_api.cpp:205
bytes trace(EthBlockNumber blk_num, const EVMBlock &blk, const std::vector< EVMTransaction > trx, std::optional< Tracing > params={}) const
Definition: state_api.cpp:167
dev::RLPStream rlp_enc_execution_result_
Definition: state_api.hpp:24
ExecutionResult dry_run_transaction(EthBlockNumber blk_num, const EVMBlock &blk, const EVMTransaction &trx) const
Definition: state_api.cpp:161
u256 dpos_total_amount_delegated(EthBlockNumber blk_num) const
Definition: state_api.cpp:288
Definition: state_api.hpp:20
Definition: state_api_data.hpp:26
Definition: state_api_data.hpp:35
Definition: state_api_data.hpp:62
Definition: state_api_data.hpp:79
Definition: state_api_data.hpp:98
Definition: state_api_data.hpp:73
std::vector<::byte > bytes
Definition: Common.h:46
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u256
Definition: Common.h:98
FixedHash< 32 > h256
Definition: FixedHash.h:453
Definition: state_config.hpp:10
Definition: state_config.hpp:71
Definition: state_config.hpp:78
Definition: config.hpp:8
uint64_t EthBlockNumber
Definition: types.hpp:23
EthBlockNumber PbftPeriod
Definition: types.hpp:24
Definition: state_config.hpp:59