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");
177 throw std::runtime_error(
"monero_daemon::get_last_block_header(): not supported");
187 throw std::runtime_error(
"monero_daemon::get_block_header_by_hash(): not supported");
197 throw std::runtime_error(
"monero_daemon::get_block_header_by_height(): not supported");
208 throw std::runtime_error(
"monero_daemon::get_block_headers_by_range(): not supported");
218 throw std::runtime_error(
"monero_daemon::get_block_by_hash(): not supported");
231 virtual std::vector<std::shared_ptr<monero_block>>
get_blocks_by_hash(
const std::vector<std::string>& block_hashes, uint64_t start_height,
bool prune) {
232 throw std::runtime_error(
"monero_daemon::get_blocks_by_hash(): not supported");
242 throw std::runtime_error(
"monero_daemon::get_block_by_height(): not supported");
251 virtual std::vector<std::shared_ptr<monero_block>>
get_blocks_by_height(
const std::vector<uint64_t>& heights) {
252 throw std::runtime_error(
"monero_daemon::get_blocks_by_height(): not supported");
262 virtual std::vector<std::shared_ptr<monero_block>>
get_blocks_by_range(boost::optional<uint64_t> start_height, boost::optional<uint64_t> end_height) {
263 throw std::runtime_error(
"monero_daemon::get_blocks_by_range(): not supported");
274 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) {
275 throw std::runtime_error(
"monero_daemon::get_blocks_by_range_chunked(): not supported");
287 virtual std::vector<std::string>
get_block_hashes(
const std::vector<std::string>& block_hashes, uint64_t start_height) {
288 throw std::runtime_error(
"monero_daemon::get_block_hashes(): not supported");
298 virtual std::shared_ptr<monero_tx>
get_tx(
const std::string& tx_hash,
bool prune =
false) {
299 std::vector<std::string> hashes;
300 hashes.push_back(tx_hash);
301 auto txs =
get_txs(hashes, prune);
302 std::shared_ptr<monero_tx> tx;
304 if (txs.size() > 0) {
318 virtual std::vector<std::shared_ptr<monero_tx>>
get_txs(
const std::vector<std::string>& tx_hashes,
bool prune =
false) {
319 throw std::runtime_error(
"monero_daemon::get_txs(): not supported");
330 virtual boost::optional<std::string>
get_tx_hex(
const std::string& tx_hash,
bool prune =
false) {
331 std::vector<std::string> hashes;
332 hashes.push_back(tx_hash);
334 boost::optional<std::string> hex;
335 if (hexes.size() > 0) {
349 virtual std::vector<std::string>
get_tx_hexes(
const std::vector<std::string>& tx_hashes,
bool prune =
false) {
350 throw std::runtime_error(
"monero_daemon::get_tx_hexes(): not supported");
360 virtual std::shared_ptr<monero_miner_tx_sum>
get_miner_tx_sum(uint64_t height, uint64_t num_blocks) {
361 throw std::runtime_error(
"monero_daemon::get_miner_tx_sum(): not supported");
371 throw std::runtime_error(
"monero_daemon::get_fee_estimate(): not supported");
381 virtual std::shared_ptr<monero_submit_tx_result>
submit_tx_hex(
const std::string& tx_hex,
bool do_not_relay =
false) {
382 throw std::runtime_error(
"monero_daemon::submit_tx_hex(): not supported");
391 std::vector<std::string> tx_hashes;
392 tx_hashes.push_back(tx_hash);
402 throw std::runtime_error(
"monero_daemon::relay_txs_by_hash(): not supported");
412 throw std::runtime_error(
"monero_daemon::get_tx_pool(): not supported");
421 throw std::runtime_error(
"monero_daemon::get_tx_pool_hashes(): not supported");
430 throw std::runtime_error(
"monero_daemon::get_tx_pool_backlog(): not supported");
439 throw std::runtime_error(
"monero_daemon::get_tx_pool_stats(): not supported");
446 throw std::runtime_error(
"monero_daemon::flush_tx_pool(): not supported");
455 throw std::runtime_error(
"monero_daemon::flush_tx_pool(): not supported");
464 throw std::runtime_error(
"monero_daemon::flush_tx_pool(): not supported");
474 std::vector<std::string> key_images;
475 key_images.push_back(key_image);
477 if (statuses.empty())
throw std::runtime_error(
"Could not get key image spent status");
488 throw std::runtime_error(
"monero_daemon::get_key_image_spent_statuses(): not supported");
498 virtual std::vector<std::shared_ptr<monero_output>>
get_outputs(
const std::vector<monero_output>& outputs) {
499 throw std::runtime_error(
"monero_daemon::get_outputs(): not supported");
514 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) {
515 throw std::runtime_error(
"monero_daemon::get_output_histogram(): not supported");
527 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) {
528 throw std::runtime_error(
"monero_daemon::get_output_distribution(): not supported");
536 virtual std::shared_ptr<monero_daemon_info>
get_info() {
537 throw std::runtime_error(
"monero_daemon::get_info(): not supported");
546 throw std::runtime_error(
"monero_daemon::get_sync_info(): not supported");
555 throw std::runtime_error(
"monero_daemon::get_hard_fork_info(): not supported");
564 throw std::runtime_error(
"monero_daemon::get_alt_chains(): not supported");
573 throw std::runtime_error(
"monero_daemon::get_alt_block_hashes(): not supported");
582 throw std::runtime_error(
"monero_daemon::get_download_limit(): not supported");
592 throw std::runtime_error(
"monero_daemon::set_download_limit(): not supported");
601 throw std::runtime_error(
"monero_daemon::reset_download_limit(): not supported");
610 throw std::runtime_error(
"monero_daemon::get_upload_limit(): not supported");
620 throw std::runtime_error(
"monero_daemon::set_upload_limit(): not supported");
629 throw std::runtime_error(
"monero_daemon::reset_upload_limit(): not supported");
637 virtual std::vector<std::shared_ptr<monero_peer>>
get_peers() {
638 throw std::runtime_error(
"monero_daemon::get_peers(): not supported");
647 throw std::runtime_error(
"monero_daemon::get_known_peers(): not supported");
656 throw std::runtime_error(
"monero_daemon::set_outgoing_peer_limit(): not supported");
665 throw std::runtime_error(
"monero_daemon::set_incoming_peer_limit(): not supported");
674 throw std::runtime_error(
"monero_daemon::get_peer_bans(): not supported");
682 virtual void set_peer_bans(
const std::vector<std::shared_ptr<monero_ban>>& bans) {
683 throw std::runtime_error(
"monero_daemon::set_peer_bans(): not supported");
692 if (ban ==
nullptr)
throw std::runtime_error(
"Ban is none");
693 std::vector<std::shared_ptr<monero_ban>> bans;
706 virtual void start_mining(
const std::string &address, boost::optional<uint64_t> num_threads, boost::optional<bool> is_background, boost::optional<bool> ignore_battery) {
707 throw std::runtime_error(
"monero_daemon::start_mining(): not supported");
714 throw std::runtime_error(
"monero_daemon::stop_mining(): not supported");
723 throw std::runtime_error(
"monero_daemon::get_mining_status(): not supported");
735 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) {
736 throw std::runtime_error(
"monero_daemon::generate_blocks(): not supported");
745 std::vector<std::string> block_blobs;
746 block_blobs.push_back(block_blob);
756 throw std::runtime_error(
"monero_daemon::submit_blocks(): not supported");
766 throw std::runtime_error(
"monero_daemon::prune_blockchain(): not supported");
775 throw std::runtime_error(
"monero_daemon::check_for_update(): not supported");
784 virtual std::shared_ptr<monero_daemon_update_download_result>
download_update(
const std::string& path =
"") {
785 throw std::runtime_error(
"monero_daemon::download_update(): not supported");
792 throw std::runtime_error(
"monero_daemon::stop(): not supported");
801 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:682
virtual int reset_upload_limit()
Definition monero_daemon.h:628
virtual int set_upload_limit(int limit)
Definition monero_daemon.h:619
virtual void stop()
Definition monero_daemon.h:791
virtual std::string get_block_hash(uint64_t height)
Definition monero_daemon.h:156
virtual int get_download_limit()
Definition monero_daemon.h:581
virtual monero_version get_version()
Definition monero_daemon.h:128
virtual void submit_blocks(const std::vector< std::string > &block_blobs)
Definition monero_daemon.h:755
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:207
virtual std::vector< std::string > get_alt_block_hashes()
Definition monero_daemon.h:572
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:262
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:554
virtual std::shared_ptr< monero_tx_pool_stats > get_tx_pool_stats()
Definition monero_daemon.h:438
virtual std::shared_ptr< monero_miner_tx_sum > get_miner_tx_sum(uint64_t height, uint64_t num_blocks)
Definition monero_daemon.h:360
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:735
virtual void remove_listeners()
Definition monero_daemon.h:119
virtual void flush_tx_pool(const std::string &hash)
Definition monero_daemon.h:463
virtual std::shared_ptr< monero_daemon_update_download_result > download_update(const std::string &path="")
Definition monero_daemon.h:784
virtual std::vector< std::shared_ptr< monero_tx > > get_tx_pool()
Definition monero_daemon.h:411
virtual void set_peer_ban(const std::shared_ptr< monero_ban > &ban)
Definition monero_daemon.h:691
virtual monero_key_image_spent_status get_key_image_spent_status(const std::string &key_image)
Definition monero_daemon.h:473
virtual bool is_trusted()
Definition monero_daemon.h:137
virtual int get_upload_limit()
Definition monero_daemon.h:609
virtual std::shared_ptr< monero_daemon_update_check_result > check_for_update()
Definition monero_daemon.h:774
virtual std::shared_ptr< monero_block_header > get_block_header_by_hash(const std::string &block_hash)
Definition monero_daemon.h:186
virtual void flush_tx_pool()
Definition monero_daemon.h:445
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:514
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:498
virtual void relay_txs_by_hash(const std::vector< std::string > &tx_hashes)
Definition monero_daemon.h:401
virtual boost::optional< std::string > get_tx_hex(const std::string &tx_hash, bool prune=false)
Definition monero_daemon.h:330
virtual int reset_download_limit()
Definition monero_daemon.h:600
virtual std::vector< std::shared_ptr< monero_tx > > get_txs(const std::vector< std::string > &tx_hashes, bool prune=false)
Definition monero_daemon.h:318
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:176
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:274
virtual std::shared_ptr< monero_fee_estimate > get_fee_estimate(uint64_t grace_blocks=0)
Definition monero_daemon.h:370
virtual void relay_tx_by_hash(const std::string &tx_hash)
Definition monero_daemon.h:390
virtual std::shared_ptr< monero_mining_status > get_mining_status()
Definition monero_daemon.h:722
virtual std::vector< std::shared_ptr< monero_alt_chain > > get_alt_chains()
Definition monero_daemon.h:563
virtual std::vector< std::shared_ptr< monero_ban > > get_peer_bans()
Definition monero_daemon.h:673
virtual std::vector< std::string > get_block_hashes(const std::vector< std::string > &block_hashes, uint64_t start_height)
Definition monero_daemon.h:287
virtual std::shared_ptr< monero_daemon_info > get_info()
Definition monero_daemon.h:536
virtual std::vector< monero_key_image_spent_status > get_key_image_spent_statuses(const std::vector< std::string > &key_images)
Definition monero_daemon.h:487
virtual std::vector< std::string > get_tx_pool_hashes()
Definition monero_daemon.h:420
virtual std::vector< monero_tx_backlog_entry > get_tx_pool_backlog()
Definition monero_daemon.h:429
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:706
virtual void flush_tx_pool(const std::vector< std::string > &hashes)
Definition monero_daemon.h:454
virtual void set_incoming_peer_limit(int limit)
Definition monero_daemon.h:664
virtual std::vector< std::shared_ptr< monero_block > > get_blocks_by_height(const std::vector< uint64_t > &heights)
Definition monero_daemon.h:251
virtual int set_download_limit(int limit)
Definition monero_daemon.h:591
virtual void submit_block(const std::string &block_blob)
Definition monero_daemon.h:744
virtual std::shared_ptr< monero_block > get_block_by_height(uint64_t height)
Definition monero_daemon.h:241
virtual std::vector< std::shared_ptr< monero_block > > get_blocks_by_hash(const std::vector< std::string > &block_hashes, uint64_t start_height, bool prune)
Definition monero_daemon.h:231
virtual std::shared_ptr< monero_block_header > wait_for_next_block_header()
Definition monero_daemon.h:800
virtual std::shared_ptr< monero_tx > get_tx(const std::string &tx_hash, bool prune=false)
Definition monero_daemon.h:298
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:381
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:527
virtual std::vector< std::shared_ptr< monero_peer > > get_known_peers()
Definition monero_daemon.h:646
virtual std::shared_ptr< monero_block_header > get_block_header_by_height(uint64_t height)
Definition monero_daemon.h:196
virtual void stop_mining()
Definition monero_daemon.h:713
virtual std::vector< std::shared_ptr< monero_peer > > get_peers()
Definition monero_daemon.h:637
virtual void set_outgoing_peer_limit(int limit)
Definition monero_daemon.h:655
virtual std::shared_ptr< monero_daemon_sync_info > get_sync_info()
Definition monero_daemon.h:545
virtual std::vector< std::string > get_tx_hexes(const std::vector< std::string > &tx_hashes, bool prune=false)
Definition monero_daemon.h:349
virtual std::shared_ptr< monero_prune_result > prune_blockchain(bool check)
Definition monero_daemon.h:765
virtual std::shared_ptr< monero_block > get_block_by_hash(const std::string &block_hash)
Definition monero_daemon.h:217
Definition monero_error.h:61
monero_key_image_spent_status
Definition monero_daemon_model.h:286
Definition monero_daemon_model.h:140