56#include "monero_daemon.h"
76 monero_daemon_rpc(
const std::shared_ptr<monero_rpc_connection>& rpc);
77 monero_daemon_rpc(
const std::string& uri,
const std::string& username =
"",
const std::string& password =
"",
const std::string& proxy_uri =
"",
const std::string& zmq_uri =
"",
const boost::optional<uint32_t>& timeout = boost::none);
111 std::shared_ptr<monero_block_template>
get_block_template(
const std::string& wallet_address,
const boost::optional<int>& reserve_size = boost::none)
override;
113 std::string
calculate_pow(uint32_t major_version, uint64_t height,
const std::string& block_blob,
const std::string& seed_hash)
override;
114 std::shared_ptr<monero_add_auxiliary_pow_result>
add_auxiliary_pow(
const std::string& block_template_blob,
const std::vector<std::shared_ptr<monero_auxiliary_pow>>& aux_pow)
override;
118 std::vector<std::shared_ptr<monero_block_header>>
get_block_headers_by_range(uint64_t start_height, uint64_t end_height)
override;
119 std::shared_ptr<monero_block>
get_block_by_hash(
const std::string& hash)
override;
120 std::shared_ptr<monero_get_blocks_by_hash_result>
get_blocks_by_hash(
const std::vector<std::string>& block_hashes, uint64_t start_height,
bool prune, uint64_t max_block_count = 0)
override;
122 std::vector<std::shared_ptr<monero_block>>
get_blocks_by_height(
const std::vector<uint64_t>& heights)
override;
123 std::vector<std::shared_ptr<monero_block>>
get_blocks_by_range(boost::optional<uint64_t> start_height, boost::optional<uint64_t> end_height)
override;
124 std::vector<std::shared_ptr<monero_block>>
get_blocks_by_range_chunked(boost::optional<uint64_t> start_height, boost::optional<uint64_t> end_height, boost::optional<uint64_t> max_chunk_size)
override;
125 std::shared_ptr<monero_get_block_hashes_result>
get_block_hashes(
const std::vector<std::string>& block_hashes)
override;
126 std::vector<std::shared_ptr<monero_tx>>
get_txs(
const std::vector<std::string>& tx_hashes,
bool prune =
false)
override;
127 std::vector<std::string>
get_tx_hexes(
const std::vector<std::string>& tx_hashes,
bool prune =
false)
override;
128 std::shared_ptr<monero_miner_tx_sum>
get_miner_tx_sum(uint64_t height, uint64_t num_blocks)
override;
129 std::shared_ptr<monero_fee_estimate>
get_fee_estimate(uint64_t grace_blocks = 0)
override;
130 std::shared_ptr<monero_submit_tx_result>
submit_tx_hex(
const std::string& tx_hex,
bool do_not_relay =
false)
override;
133 std::vector<std::shared_ptr<monero_tx>>
get_tx_pool()
override;
135 void flush_tx_pool(
const std::vector<std::string> &hashes)
override;
140 std::vector<std::shared_ptr<monero_output>>
get_outputs(
const std::vector<monero_output>& outputs)
override;
141 std::vector<std::shared_ptr<monero_output_histogram_entry>>
get_output_histogram(
const std::vector<uint64_t>& amounts,
const boost::optional<int>& min_count,
const boost::optional<int>& max_count,
const boost::optional<bool>& is_unlocked,
const boost::optional<int>& recent_cutoff)
override;
142 std::vector<std::shared_ptr<monero_output_distribution_entry>>
get_output_distribution(
const std::vector<uint64_t>& amounts,
const boost::optional<bool>& is_cumulative = boost::none,
const boost::optional<uint64_t>& start_height = boost::none,
const boost::optional<uint64_t>& end_height = boost::none)
override;
143 std::shared_ptr<monero_daemon_info>
get_info()
override;
144 std::shared_ptr<monero_daemon_sync_info>
get_sync_info()
override;
147 std::vector<std::shared_ptr<monero_alt_chain>>
get_alt_chains()
override;
155 std::vector<std::shared_ptr<monero_peer>>
get_peers()
override;
157 std::vector<std::shared_ptr<monero_peer>>
get_public_peers(
bool include_offline =
false)
override;
160 std::vector<std::shared_ptr<monero_ban>>
get_peer_bans()
override;
161 void set_peer_bans(
const std::vector<std::shared_ptr<monero_ban>>& bans)
override;
162 std::shared_ptr<monero_ban>
get_peer_ban(
const std::string& address)
override;
163 void start_mining(
const std::string &address, boost::optional<uint64_t> num_threads, boost::optional<bool> background_mining, boost::optional<bool> ignore_battery)
override;
166 std::shared_ptr<monero_generate_blocks_result>
generate_blocks(
const std::string& wallet_address, uint64_t num_blocks,
const boost::optional<std::string>& prev_block_hash = boost::none,
const boost::optional<uint32_t>& starting_nonce = boost::none)
override;
167 void submit_blocks(
const std::vector<std::string>& block_blobs)
override;
170 uint64_t
pop_blocks(uint64_t num_blocks)
override;
171 void flush_cache(
bool bad_blocks =
false)
override;
172 void set_bootstrap_daemon(
const std::string& address,
const std::string& username =
"",
const std::string& password =
"",
const std::string& proxy =
"")
override;
176 std::shared_ptr<monero_daemon_update_check_result>
check_for_update()
override;
177 std::shared_ptr<monero_daemon_update_download_result>
download_update(
const std::string& path =
"")
override;
178 void stop()
override;
184 friend class monero_daemon_poller;
185 mutable boost::recursive_mutex m_listeners_mutex;
186 std::set<monero_daemon_listener*> m_listeners;
187 std::shared_ptr<monero_rpc_connection> m_rpc;
188 boost::mutex m_poller_mutex;
189 std::unique_ptr<monero_daemon_poller> m_poller;
195 std::vector<std::shared_ptr<monero_block>> get_max_blocks(boost::optional<uint64_t> start_height, boost::optional<uint64_t> max_height, boost::optional<uint64_t> chunk_size, std::unordered_map<uint64_t, std::shared_ptr<monero_block_header>>& header_cache);
196 std::shared_ptr<monero_block_header> get_block_header_by_height_cached(uint64_t height, uint64_t max_height, std::unordered_map<uint64_t, std::shared_ptr<monero_block_header>>& header_cache);
197 std::shared_ptr<monero_bandwidth_limits> get_bandwidth_limits();
198 std::shared_ptr<monero_bandwidth_limits> set_bandwidth_limits(
int up,
int down);
199 void refresh_listening();
200 void wait_for_listener_callbacks_idle();
Definition monero_daemon.h:66
Definition monero_daemon_rpc.cpp:68
std::vector< std::string > get_tx_pool_hashes() override
Definition monero_daemon_rpc.cpp:570
void start_mining(const std::string &address, boost::optional< uint64_t > num_threads, boost::optional< bool > background_mining, boost::optional< bool > ignore_battery) override
Definition monero_daemon_rpc.cpp:819
std::shared_ptr< monero_daemon_info > get_info() override
Definition monero_daemon_rpc.cpp:648
void flush_tx_pool() override
Definition monero_daemon_rpc.cpp:585
std::vector< std::shared_ptr< monero_block > > get_blocks_by_range(boost::optional< uint64_t > start_height, boost::optional< uint64_t > end_height) override
Definition monero_daemon_rpc.cpp:392
std::shared_ptr< monero_daemon_network_stats > get_network_stats() override
Definition monero_daemon_rpc.cpp:664
std::vector< std::shared_ptr< monero_peer > > get_known_peers() override
Definition monero_daemon_rpc.cpp:751
std::shared_ptr< monero_block_template > get_block_template(const std::string &wallet_address, const boost::optional< int > &reserve_size=boost::none) override
Definition monero_daemon_rpc.cpp:253
std::string set_log_categories(const std::string &categories="") override
Definition monero_daemon_rpc.cpp:920
std::shared_ptr< monero_prune_result > prune_blockchain(bool check) override
Definition monero_daemon_rpc.cpp:863
void set_peer_bans(const std::vector< std::shared_ptr< monero_ban > > &bans) override
Definition monero_daemon_rpc.cpp:796
std::vector< std::shared_ptr< monero_output > > get_outputs(const std::vector< monero_output > &outputs) override
Definition monero_daemon_rpc.cpp:617
void remove_listeners() override
Definition monero_daemon_rpc.cpp:188
std::shared_ptr< monero_add_auxiliary_pow_result > add_auxiliary_pow(const std::string &block_template_blob, const std::vector< std::shared_ptr< monero_auxiliary_pow > > &aux_pow) override
Definition monero_daemon_rpc.cpp:280
std::vector< std::shared_ptr< monero_alt_chain > > get_alt_chains() override
Definition monero_daemon_rpc.cpp:681
std::shared_ptr< monero_block_header > get_block_header_by_hash(const std::string &hash) override
Definition monero_daemon_rpc.cpp:300
std::vector< uint64_t > get_output_indices(const std::string &tx_hash) override
Definition monero_daemon_rpc.cpp:606
std::vector< std::shared_ptr< monero_output_distribution_entry > > get_output_distribution(const std::vector< uint64_t > &amounts, const boost::optional< bool > &is_cumulative=boost::none, const boost::optional< uint64_t > &start_height=boost::none, const boost::optional< uint64_t > &end_height=boost::none) override
Definition monero_daemon_rpc.cpp:638
std::set< monero_daemon_listener * > get_listeners() override
Definition monero_daemon_rpc.cpp:166
std::shared_ptr< monero_daemon_sync_info > get_sync_info() override
Definition monero_daemon_rpc.cpp:656
void relay_txs_by_hash(const std::vector< std::string > &tx_hashes) override
Definition monero_daemon_rpc.cpp:547
std::shared_ptr< monero_daemon_update_check_result > check_for_update() override
Definition monero_daemon_rpc.cpp:931
std::shared_ptr< monero_ban > get_peer_ban(const std::string &address) override
Definition monero_daemon_rpc.cpp:803
std::shared_ptr< monero_block_header > wait_for_next_block_header() override
Definition monero_daemon_rpc.cpp:957
std::vector< std::shared_ptr< monero_output_histogram_entry > > get_output_histogram(const std::vector< uint64_t > &amounts, const boost::optional< int > &min_count, const boost::optional< int > &max_count, const boost::optional< bool > &is_unlocked, const boost::optional< int > &recent_cutoff) override
Definition monero_daemon_rpc.cpp:628
std::shared_ptr< monero_daemon_update_download_result > download_update(const std::string &path="") override
Definition monero_daemon_rpc.cpp:941
std::vector< monero_key_image_spent_status > get_key_image_spent_statuses(const std::vector< std::string > &key_images) override
Definition monero_daemon_rpc.cpp:596
int set_upload_limit(int limit) override
Definition monero_daemon_rpc.cpp:727
void set_outgoing_peer_limit(int limit) override
Definition monero_daemon_rpc.cpp:769
std::vector< std::shared_ptr< monero_tx > > get_txs(const std::vector< std::string > &tx_hashes, bool prune=false) override
Definition monero_daemon_rpc.cpp:478
std::vector< std::string > get_alt_block_hashes() override
Definition monero_daemon_rpc.cpp:689
std::vector< std::shared_ptr< monero_peer > > get_public_peers(bool include_offline=false) override
Definition monero_daemon_rpc.cpp:759
int get_download_limit() override
Definition monero_daemon_rpc.cpp:697
std::shared_ptr< monero_block_header > get_last_block_header() override
Definition monero_daemon_rpc.cpp:292
void stop() override
Definition monero_daemon_rpc.cpp:951
std::shared_ptr< monero_miner_tx_sum > get_miner_tx_sum(uint64_t height, uint64_t num_blocks) override
Definition monero_daemon_rpc.cpp:512
void set_log_hash_rate(bool is_visible) override
Definition monero_daemon_rpc.cpp:905
void set_log_level(int level) override
Definition monero_daemon_rpc.cpp:912
void set_poll_period_in_ms(uint64_t period_ms)
Definition monero_daemon_rpc.cpp:130
std::shared_ptr< monero_generate_blocks_result > generate_blocks(const std::string &wallet_address, uint64_t num_blocks, const boost::optional< std::string > &prev_block_hash=boost::none, const boost::optional< uint32_t > &starting_nonce=boost::none) override
Definition monero_daemon_rpc.cpp:843
std::vector< std::shared_ptr< monero_block > > get_blocks_by_height(const std::vector< uint64_t > &heights) override
Definition monero_daemon_rpc.cpp:379
std::shared_ptr< monero_get_blocks_by_hash_result > get_blocks_by_hash(const std::vector< std::string > &block_hashes, uint64_t start_height, bool prune, uint64_t max_block_count=0) override
Definition monero_daemon_rpc.cpp:357
int get_upload_limit() override
Definition monero_daemon_rpc.cpp:720
std::string calculate_pow(uint32_t major_version, uint64_t height, const std::string &block_blob, const std::string &seed_hash) override
Definition monero_daemon_rpc.cpp:272
std::shared_ptr< monero_miner_data > get_miner_data() override
Definition monero_daemon_rpc.cpp:263
bool is_trusted() override
Definition monero_daemon_rpc.cpp:230
void set_bootstrap_daemon(const std::string &address, const std::string &username="", const std::string &password="", const std::string &proxy="") override
Definition monero_daemon_rpc.cpp:898
std::shared_ptr< monero_rpc_connection > get_rpc_connection() const
Definition monero_daemon_rpc.cpp:207
std::vector< std::shared_ptr< monero_tx > > get_tx_pool() override
Definition monero_daemon_rpc.cpp:562
void set_incoming_peer_limit(int limit) override
Definition monero_daemon_rpc.cpp:778
int set_download_limit(int limit) override
Definition monero_daemon_rpc.cpp:704
std::shared_ptr< monero_tx_pool_stats > get_tx_pool_stats() override
Definition monero_daemon_rpc.cpp:554
std::string get_block_hash(uint64_t height) override
Definition monero_daemon_rpc.cpp:247
std::vector< std::shared_ptr< monero_block > > get_blocks_by_range_chunked(boost::optional< uint64_t > start_height, boost::optional< uint64_t > end_height, boost::optional< uint64_t > max_chunk_size) override
Definition monero_daemon_rpc.cpp:405
uint64_t pop_blocks(uint64_t num_blocks) override
Definition monero_daemon_rpc.cpp:879
bool is_connected()
Definition monero_daemon_rpc.cpp:212
std::shared_ptr< monero_block > get_block_by_hash(const std::string &hash) override
Definition monero_daemon_rpc.cpp:327
std::vector< std::shared_ptr< monero_block_header > > get_block_headers_by_range(uint64_t start_height, uint64_t end_height) override
Definition monero_daemon_rpc.cpp:318
std::vector< std::shared_ptr< monero_peer > > get_peers() override
Definition monero_daemon_rpc.cpp:743
void remove_listener(monero_daemon_listener &listener) override
Definition monero_daemon_rpc.cpp:179
std::shared_ptr< monero_hard_fork_info > get_hard_fork_info() override
Definition monero_daemon_rpc.cpp:673
void add_listener(monero_daemon_listener &listener) override
Definition monero_daemon_rpc.cpp:171
monero_version get_version() override
Definition monero_daemon_rpc.cpp:222
std::vector< std::string > get_tx_hexes(const std::vector< std::string > &tx_hashes, bool prune=false) override
Definition monero_daemon_rpc.cpp:497
void submit_blocks(const std::vector< std::string > &block_blobs) override
Definition monero_daemon_rpc.cpp:855
void stop_mining() override
Definition monero_daemon_rpc.cpp:828
std::shared_ptr< monero_block_header > get_block_header_by_height(uint64_t height) override
Definition monero_daemon_rpc.cpp:309
std::vector< std::shared_ptr< monero_ban > > get_peer_bans() override
Definition monero_daemon_rpc.cpp:787
std::shared_ptr< monero_block > get_block_by_height(uint64_t height) override
Definition monero_daemon_rpc.cpp:370
std::shared_ptr< monero_submit_tx_result > submit_tx_hex(const std::string &tx_hex, bool do_not_relay=false) override
Definition monero_daemon_rpc.cpp:530
uint64_t get_height() override
Definition monero_daemon_rpc.cpp:238
std::shared_ptr< monero_fee_estimate > get_fee_estimate(uint64_t grace_blocks=0) override
Definition monero_daemon_rpc.cpp:521
int reset_download_limit() override
Definition monero_daemon_rpc.cpp:713
~monero_daemon_rpc() override
Definition monero_daemon_rpc.cpp:1042
std::shared_ptr< monero_mining_status > get_mining_status() override
Definition monero_daemon_rpc.cpp:834
void save_blockchain() override
Definition monero_daemon_rpc.cpp:873
std::shared_ptr< monero_get_block_hashes_result > get_block_hashes(const std::vector< std::string > &block_hashes) override
Definition monero_daemon_rpc.cpp:469
void flush_cache(bool bad_blocks=false) override
Definition monero_daemon_rpc.cpp:891
int reset_upload_limit() override
Definition monero_daemon_rpc.cpp:736
Definition monero_daemon.h:83
Definition monero_error.h:61
Definition monero_daemon_model.h:142