55#include "common/monero_rpc_connection.h"
56#include "monero_daemon_model.h"
68 std::shared_ptr<monero_block_header> m_last_header;
75 virtual void on_block_header(
const std::shared_ptr<monero_block_header>& header) {
76 m_last_header = header;
97 throw std::runtime_error(
"monero_daemon::add_listener(): not supported");
106 throw std::runtime_error(
"monero_daemon::remove_listener(): not supported");
113 throw std::runtime_error(
"monero_daemon::get_listeners(): not supported");
120 throw std::runtime_error(
"monero_daemon::remove_listeners(): not supported");
129 throw std::runtime_error(
"monero_daemon::get_version(): not supported");
138 throw std::runtime_error(
"monero_daemon::is_trusted(): not supported");
147 throw std::runtime_error(
"monero_daemon::get_height(): not supported");
157 throw std::runtime_error(
"monero_daemon::get_block_hash(): not supported");
167 virtual std::shared_ptr<monero_block_template>
get_block_template(
const std::string& wallet_address,
const boost::optional<int>& reserve_size = boost::none) {
168 throw std::runtime_error(
"monero_daemon::get_block_template(): not supported");
178 throw std::runtime_error(
"monero_daemon::get_miner_data(): not supported");
190 virtual std::string
calculate_pow(uint32_t major_version, uint64_t height,
const std::string& block_blob,
const std::string& seed_hash) {
191 throw std::runtime_error(
"monero_daemon::calculate_pow(): not supported");
202 virtual 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) {
203 throw std::runtime_error(
"monero_daemon::add_auxiliary_pow(): not supported");
212 throw std::runtime_error(
"monero_daemon::get_last_block_header(): not supported");
222 throw std::runtime_error(
"monero_daemon::get_block_header_by_hash(): not supported");
232 throw std::runtime_error(
"monero_daemon::get_block_header_by_height(): not supported");
243 throw std::runtime_error(
"monero_daemon::get_block_headers_by_range(): not supported");
253 throw std::runtime_error(
"monero_daemon::get_block_by_hash(): not supported");
276 virtual 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) {
277 throw std::runtime_error(
"monero_daemon::get_blocks_by_hash(): not supported");
287 throw std::runtime_error(
"monero_daemon::get_block_by_height(): not supported");
296 virtual std::vector<std::shared_ptr<monero_block>>
get_blocks_by_height(
const std::vector<uint64_t>& heights) {
297 throw std::runtime_error(
"monero_daemon::get_blocks_by_height(): not supported");
307 virtual std::vector<std::shared_ptr<monero_block>>
get_blocks_by_range(boost::optional<uint64_t> start_height, boost::optional<uint64_t> end_height) {
308 throw std::runtime_error(
"monero_daemon::get_blocks_by_range(): not supported");
319 virtual 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) {
320 throw std::runtime_error(
"monero_daemon::get_blocks_by_range_chunked(): not supported");
334 virtual std::shared_ptr<monero_get_block_hashes_result>
get_block_hashes(
const std::vector<std::string>& block_hashes) {
335 throw std::runtime_error(
"monero_daemon::get_block_hashes(): not supported");
345 virtual std::shared_ptr<monero_tx>
get_tx(
const std::string& tx_hash,
bool prune =
false) {
346 std::vector<std::string> hashes;
347 hashes.push_back(tx_hash);
348 auto txs =
get_txs(hashes, prune);
349 std::shared_ptr<monero_tx> tx;
351 if (txs.size() > 0) {
365 virtual std::vector<std::shared_ptr<monero_tx>>
get_txs(
const std::vector<std::string>& tx_hashes,
bool prune =
false) {
366 throw std::runtime_error(
"monero_daemon::get_txs(): not supported");
377 virtual boost::optional<std::string>
get_tx_hex(
const std::string& tx_hash,
bool prune =
false) {
378 std::vector<std::string> hashes;
379 hashes.push_back(tx_hash);
381 boost::optional<std::string> hex;
382 if (hexes.size() > 0) {
396 virtual std::vector<std::string>
get_tx_hexes(
const std::vector<std::string>& tx_hashes,
bool prune =
false) {
397 throw std::runtime_error(
"monero_daemon::get_tx_hexes(): not supported");
407 virtual std::shared_ptr<monero_miner_tx_sum>
get_miner_tx_sum(uint64_t height, uint64_t num_blocks) {
408 throw std::runtime_error(
"monero_daemon::get_miner_tx_sum(): not supported");
418 throw std::runtime_error(
"monero_daemon::get_fee_estimate(): not supported");
428 virtual std::shared_ptr<monero_submit_tx_result>
submit_tx_hex(
const std::string& tx_hex,
bool do_not_relay =
false) {
429 throw std::runtime_error(
"monero_daemon::submit_tx_hex(): not supported");
438 std::vector<std::string> tx_hashes;
439 tx_hashes.push_back(tx_hash);
449 throw std::runtime_error(
"monero_daemon::relay_txs_by_hash(): not supported");
459 throw std::runtime_error(
"monero_daemon::get_tx_pool(): not supported");
468 throw std::runtime_error(
"monero_daemon::get_tx_pool_hashes(): not supported");
477 throw std::runtime_error(
"monero_daemon::get_tx_pool_backlog(): not supported");
486 throw std::runtime_error(
"monero_daemon::get_tx_pool_stats(): not supported");
493 throw std::runtime_error(
"monero_daemon::flush_tx_pool(): not supported");
502 throw std::runtime_error(
"monero_daemon::flush_tx_pool(): not supported");
511 throw std::runtime_error(
"monero_daemon::flush_tx_pool(): not supported");
521 std::vector<std::string> key_images;
522 key_images.push_back(key_image);
524 if (statuses.empty())
throw std::runtime_error(
"Could not get key image spent status");
535 throw std::runtime_error(
"monero_daemon::get_key_image_spent_statuses(): not supported");
545 throw std::runtime_error(
"monero_daemon::get_output_indices(): not supported");
555 virtual std::vector<std::shared_ptr<monero_output>>
get_outputs(
const std::vector<monero_output>& outputs) {
556 throw std::runtime_error(
"monero_daemon::get_outputs(): not supported");
571 virtual 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) {
572 throw std::runtime_error(
"monero_daemon::get_output_histogram(): not supported");
584 virtual 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) {
585 throw std::runtime_error(
"monero_daemon::get_output_distribution(): not supported");
593 virtual std::shared_ptr<monero_daemon_info>
get_info() {
594 throw std::runtime_error(
"monero_daemon::get_info(): not supported");
603 throw std::runtime_error(
"monero_daemon::get_sync_info(): not supported");
612 throw std::runtime_error(
"monero_daemon::get_network_stats(): not supported");
621 throw std::runtime_error(
"monero_daemon::get_hard_fork_info(): not supported");
630 throw std::runtime_error(
"monero_daemon::get_alt_chains(): not supported");
639 throw std::runtime_error(
"monero_daemon::get_alt_block_hashes(): not supported");
648 throw std::runtime_error(
"monero_daemon::get_download_limit(): not supported");
658 throw std::runtime_error(
"monero_daemon::set_download_limit(): not supported");
667 throw std::runtime_error(
"monero_daemon::reset_download_limit(): not supported");
676 throw std::runtime_error(
"monero_daemon::get_upload_limit(): not supported");
686 throw std::runtime_error(
"monero_daemon::set_upload_limit(): not supported");
695 throw std::runtime_error(
"monero_daemon::reset_upload_limit(): not supported");
703 virtual std::vector<std::shared_ptr<monero_peer>>
get_peers() {
704 throw std::runtime_error(
"monero_daemon::get_peers(): not supported");
713 throw std::runtime_error(
"monero_daemon::get_known_peers(): not supported");
722 virtual std::vector<std::shared_ptr<monero_peer>>
get_public_peers(
bool include_offline =
false) {
723 throw std::runtime_error(
"monero_daemon::get_public_peers(): not supported");
732 throw std::runtime_error(
"monero_daemon::set_outgoing_peer_limit(): not supported");
741 throw std::runtime_error(
"monero_daemon::set_incoming_peer_limit(): not supported");
750 throw std::runtime_error(
"monero_daemon::get_peer_bans(): not supported");
758 virtual void set_peer_bans(
const std::vector<std::shared_ptr<monero_ban>>& bans) {
759 throw std::runtime_error(
"monero_daemon::set_peer_bans(): not supported");
768 if (ban ==
nullptr)
throw std::runtime_error(
"Ban is none");
769 std::vector<std::shared_ptr<monero_ban>> bans;
780 virtual std::shared_ptr<monero_ban>
get_peer_ban(
const std::string& address) {
781 throw std::runtime_error(
"monero_daemon::get_peer_ban(): not supported");
792 virtual void start_mining(
const std::string &address, boost::optional<uint64_t> num_threads, boost::optional<bool> is_background, boost::optional<bool> ignore_battery) {
793 throw std::runtime_error(
"monero_daemon::start_mining(): not supported");
800 throw std::runtime_error(
"monero_daemon::stop_mining(): not supported");
809 throw std::runtime_error(
"monero_daemon::get_mining_status(): not supported");
821 virtual 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) {
822 throw std::runtime_error(
"monero_daemon::generate_blocks(): not supported");
831 std::vector<std::string> block_blobs;
832 block_blobs.push_back(block_blob);
842 throw std::runtime_error(
"monero_daemon::submit_blocks(): not supported");
852 throw std::runtime_error(
"monero_daemon::prune_blockchain(): not supported");
859 throw std::runtime_error(
"monero_daemon::save_blockchain(): not supported");
869 throw std::runtime_error(
"monero_daemon::pop_blocks(): not supported");
878 throw std::runtime_error(
"monero_daemon::flush_cache(): not supported");
891 virtual void set_bootstrap_daemon(
const std::string& address,
const std::string& username =
"",
const std::string& password =
"",
const std::string& proxy =
"") {
892 throw std::runtime_error(
"monero_daemon::set_bootstrap_daemon(): not supported");
908 throw std::runtime_error(
"monero_daemon::set_log_hash_rate(): not supported");
917 throw std::runtime_error(
"monero_daemon::set_log_level(): not supported");
927 throw std::runtime_error(
"monero_daemon::set_log_categories(): not supported");
936 throw std::runtime_error(
"monero_daemon::check_for_update(): not supported");
945 virtual std::shared_ptr<monero_daemon_update_download_result>
download_update(
const std::string& path =
"") {
946 throw std::runtime_error(
"monero_daemon::download_update(): not supported");
953 throw std::runtime_error(
"monero_daemon::stop(): not supported");
962 throw std::runtime_error(
"monero_daemon::wait_for_next_block_header(): not supported");
Definition monero_daemon.h:66
virtual void on_block_header(const std::shared_ptr< monero_block_header > &header)
Definition monero_daemon.h:75
Definition monero_daemon.h:83
virtual void set_peer_bans(const std::vector< std::shared_ptr< monero_ban > > &bans)
Definition monero_daemon.h:758
virtual void set_log_level(int level)
Definition monero_daemon.h:916
virtual std::shared_ptr< monero_get_block_hashes_result > get_block_hashes(const std::vector< std::string > &block_hashes)
Definition monero_daemon.h:334
virtual int reset_upload_limit()
Definition monero_daemon.h:694
virtual int set_upload_limit(int limit)
Definition monero_daemon.h:685
virtual void stop()
Definition monero_daemon.h:952
virtual std::string set_log_categories(const std::string &categories="")
Definition monero_daemon.h:926
virtual std::string get_block_hash(uint64_t height)
Definition monero_daemon.h:156
virtual int get_download_limit()
Definition monero_daemon.h:647
virtual monero_version get_version()
Definition monero_daemon.h:128
virtual std::shared_ptr< monero_daemon_network_stats > get_network_stats()
Definition monero_daemon.h:611
virtual void remove_bootstrap_daemon()
Definition monero_daemon.h:898
virtual void submit_blocks(const std::vector< std::string > &block_blobs)
Definition monero_daemon.h:841
virtual std::vector< std::shared_ptr< monero_block_header > > get_block_headers_by_range(uint64_t start_height, uint64_t end_height)
Definition monero_daemon.h:242
virtual std::vector< std::string > get_alt_block_hashes()
Definition monero_daemon.h:638
virtual std::vector< std::shared_ptr< monero_block > > get_blocks_by_range(boost::optional< uint64_t > start_height, boost::optional< uint64_t > end_height)
Definition monero_daemon.h:307
virtual uint64_t get_height()
Definition monero_daemon.h:146
virtual std::shared_ptr< monero_hard_fork_info > get_hard_fork_info()
Definition monero_daemon.h:620
virtual void save_blockchain()
Definition monero_daemon.h:858
virtual std::shared_ptr< monero_tx_pool_stats > get_tx_pool_stats()
Definition monero_daemon.h:485
virtual std::shared_ptr< monero_miner_tx_sum > get_miner_tx_sum(uint64_t height, uint64_t num_blocks)
Definition monero_daemon.h:407
virtual std::shared_ptr< monero_miner_data > get_miner_data()
Definition monero_daemon.h:177
virtual 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)
Definition monero_daemon.h:821
virtual void remove_listeners()
Definition monero_daemon.h:119
virtual void flush_tx_pool(const std::string &hash)
Definition monero_daemon.h:510
virtual std::shared_ptr< monero_daemon_update_download_result > download_update(const std::string &path="")
Definition monero_daemon.h:945
virtual std::vector< std::shared_ptr< monero_tx > > get_tx_pool()
Definition monero_daemon.h:458
virtual void set_peer_ban(const std::shared_ptr< monero_ban > &ban)
Definition monero_daemon.h:767
virtual std::string calculate_pow(uint32_t major_version, uint64_t height, const std::string &block_blob, const std::string &seed_hash)
Definition monero_daemon.h:190
virtual monero_key_image_spent_status get_key_image_spent_status(const std::string &key_image)
Definition monero_daemon.h:520
virtual bool is_trusted()
Definition monero_daemon.h:137
virtual int get_upload_limit()
Definition monero_daemon.h:675
virtual std::shared_ptr< monero_daemon_update_check_result > check_for_update()
Definition monero_daemon.h:935
virtual std::shared_ptr< monero_block_header > get_block_header_by_hash(const std::string &block_hash)
Definition monero_daemon.h:221
virtual void flush_tx_pool()
Definition monero_daemon.h:492
virtual std::vector< uint64_t > get_output_indices(const std::string &tx_hash)
Definition monero_daemon.h:544
virtual 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)
Definition monero_daemon.h:571
virtual void add_listener(monero_daemon_listener &listener)
Definition monero_daemon.h:96
virtual std::vector< std::shared_ptr< monero_output > > get_outputs(const std::vector< monero_output > &outputs)
Definition monero_daemon.h:555
virtual void relay_txs_by_hash(const std::vector< std::string > &tx_hashes)
Definition monero_daemon.h:448
virtual boost::optional< std::string > get_tx_hex(const std::string &tx_hash, bool prune=false)
Definition monero_daemon.h:377
virtual void flush_cache(bool bad_blocks=false)
Definition monero_daemon.h:877
virtual int reset_download_limit()
Definition monero_daemon.h:666
virtual std::vector< std::shared_ptr< monero_tx > > get_txs(const std::vector< std::string > &tx_hashes, bool prune=false)
Definition monero_daemon.h:365
virtual void remove_listener(monero_daemon_listener &listener)
Definition monero_daemon.h:105
virtual std::shared_ptr< monero_block_template > get_block_template(const std::string &wallet_address, const boost::optional< int > &reserve_size=boost::none)
Definition monero_daemon.h:167
virtual std::set< monero_daemon_listener * > get_listeners()
Definition monero_daemon.h:112
virtual std::shared_ptr< monero_block_header > get_last_block_header()
Definition monero_daemon.h:211
virtual 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)
Definition monero_daemon.h:319
virtual std::shared_ptr< monero_fee_estimate > get_fee_estimate(uint64_t grace_blocks=0)
Definition monero_daemon.h:417
virtual void relay_tx_by_hash(const std::string &tx_hash)
Definition monero_daemon.h:437
virtual 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)
Definition monero_daemon.h:276
virtual std::shared_ptr< monero_mining_status > get_mining_status()
Definition monero_daemon.h:808
virtual std::vector< std::shared_ptr< monero_alt_chain > > get_alt_chains()
Definition monero_daemon.h:629
virtual std::vector< std::shared_ptr< monero_ban > > get_peer_bans()
Definition monero_daemon.h:749
virtual std::shared_ptr< monero_daemon_info > get_info()
Definition monero_daemon.h:593
virtual std::vector< monero_key_image_spent_status > get_key_image_spent_statuses(const std::vector< std::string > &key_images)
Definition monero_daemon.h:534
virtual std::vector< std::string > get_tx_pool_hashes()
Definition monero_daemon.h:467
virtual void set_log_hash_rate(bool is_visible)
Definition monero_daemon.h:907
virtual std::vector< std::shared_ptr< monero_peer > > get_public_peers(bool include_offline=false)
Definition monero_daemon.h:722
virtual std::vector< monero_tx_backlog_entry > get_tx_pool_backlog()
Definition monero_daemon.h:476
virtual void start_mining(const std::string &address, boost::optional< uint64_t > num_threads, boost::optional< bool > is_background, boost::optional< bool > ignore_battery)
Definition monero_daemon.h:792
virtual void flush_tx_pool(const std::vector< std::string > &hashes)
Definition monero_daemon.h:501
virtual uint64_t pop_blocks(uint64_t num_blocks)
Definition monero_daemon.h:868
virtual void set_incoming_peer_limit(int limit)
Definition monero_daemon.h:740
virtual std::vector< std::shared_ptr< monero_block > > get_blocks_by_height(const std::vector< uint64_t > &heights)
Definition monero_daemon.h:296
virtual int set_download_limit(int limit)
Definition monero_daemon.h:657
virtual void submit_block(const std::string &block_blob)
Definition monero_daemon.h:830
virtual std::shared_ptr< monero_block > get_block_by_height(uint64_t height)
Definition monero_daemon.h:286
virtual void set_bootstrap_daemon(const std::string &address, const std::string &username="", const std::string &password="", const std::string &proxy="")
Definition monero_daemon.h:891
virtual std::shared_ptr< monero_block_header > wait_for_next_block_header()
Definition monero_daemon.h:961
virtual std::shared_ptr< monero_tx > get_tx(const std::string &tx_hash, bool prune=false)
Definition monero_daemon.h:345
virtual ~monero_daemon()
Definition monero_daemon.h:89
virtual std::shared_ptr< monero_submit_tx_result > submit_tx_hex(const std::string &tx_hex, bool do_not_relay=false)
Definition monero_daemon.h:428
virtual 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)
Definition monero_daemon.h:584
virtual std::vector< std::shared_ptr< monero_peer > > get_known_peers()
Definition monero_daemon.h:712
virtual std::shared_ptr< monero_block_header > get_block_header_by_height(uint64_t height)
Definition monero_daemon.h:231
virtual void stop_mining()
Definition monero_daemon.h:799
virtual std::vector< std::shared_ptr< monero_peer > > get_peers()
Definition monero_daemon.h:703
virtual 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)
Definition monero_daemon.h:202
virtual void set_outgoing_peer_limit(int limit)
Definition monero_daemon.h:731
virtual std::shared_ptr< monero_daemon_sync_info > get_sync_info()
Definition monero_daemon.h:602
virtual std::vector< std::string > get_tx_hexes(const std::vector< std::string > &tx_hashes, bool prune=false)
Definition monero_daemon.h:396
virtual std::shared_ptr< monero_ban > get_peer_ban(const std::string &address)
Definition monero_daemon.h:780
virtual std::shared_ptr< monero_prune_result > prune_blockchain(bool check)
Definition monero_daemon.h:851
virtual std::shared_ptr< monero_block > get_block_by_hash(const std::string &block_hash)
Definition monero_daemon.h:252
Definition monero_error.h:61
monero_key_image_spent_status
Definition monero_daemon_model.h:298
Definition monero_daemon_model.h:142