TARAXA
Loading...
Searching...
No Matches
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
10namespace taraxa::state_api {
11
12struct Config;
13struct Opts;
14struct OptsDB;
15
20class StateAPI {
21 std::function<h256(EthBlockNumber)> get_blk_hash_;
22 taraxa_evm_GetBlockHash get_blk_hash_c_;
23 taraxa_evm_state_API_ptr this_c_;
28 std::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;
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>& state_trxs,
46 const std::vector<EVMTransaction>& trxs, 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;
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
73namespace taraxa {
74using state_api::StateAPI;
75}
Definition FixedHash.h:35
Class for writing to an RLP bytestream.
Definition RLP.h:484
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
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
StateAPI & operator=(const 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
StateAPI & operator=(StateAPI &&)=default
taraxa_evm_state_API_ptr this_c_
Definition state_api.hpp:23
std::string db_path_
Definition state_api.hpp:28
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 > &state_trxs, const std::vector< EVMTransaction > &trxs, 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
Definition state_config.hpp:10
Definition state_config.hpp:71
Definition state_config.hpp:78
Definition app.hpp:16
uint64_t EthBlockNumber
Definition types.hpp:24
std::vector< byte > bytes
Definition types.hpp:53
EthBlockNumber PbftPeriod
Definition types.hpp:25
Definition state_config.hpp:59