Monero C++ Library
Loading...
Searching...
No Matches
monero_daemon.h
1
52
53#pragma once
54
55#include "common/monero_rpc_connection.h"
56#include "monero_daemon_model.h"
57
61namespace monero {
62
67 public:
68 std::shared_ptr<monero_block_header> m_last_header;
69
75 virtual void on_block_header(const std::shared_ptr<monero_block_header>& header) {
76 m_last_header = header;
77 }
78 };
79
84 public:
85
89 virtual ~monero_daemon() {}
90
96 virtual void add_listener(monero_daemon_listener &listener) {
97 throw std::runtime_error("monero_daemon::add_listener(): not supported");
98 }
99
105 virtual void remove_listener(monero_daemon_listener &listener) {
106 throw std::runtime_error("monero_daemon::remove_listener(): not supported");
107 }
108
112 virtual std::set<monero_daemon_listener*> get_listeners() {
113 throw std::runtime_error("monero_daemon::get_listeners(): not supported");
114 }
115
119 virtual void remove_listeners() {
120 throw std::runtime_error("monero_daemon::remove_listeners(): not supported");
121 }
122
129 throw std::runtime_error("monero_daemon::get_version(): not supported");
130 }
131
137 virtual bool is_trusted() {
138 throw std::runtime_error("monero_daemon::is_trusted(): not supported");
139 }
140
146 virtual uint64_t get_height() {
147 throw std::runtime_error("monero_daemon::get_height(): not supported");
148 }
149
156 virtual std::string get_block_hash(uint64_t height) {
157 throw std::runtime_error("monero_daemon::get_block_hash(): not supported");
158 }
159
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");
169 }
170
176 virtual std::shared_ptr<monero_block_header> get_last_block_header() {
177 throw std::runtime_error("monero_daemon::get_last_block_header(): not supported");
178 }
179
186 virtual std::shared_ptr<monero_block_header> get_block_header_by_hash(const std::string& block_hash) {
187 throw std::runtime_error("monero_daemon::get_block_header_by_hash(): not supported");
188 }
189
196 virtual std::shared_ptr<monero_block_header> get_block_header_by_height(uint64_t height) {
197 throw std::runtime_error("monero_daemon::get_block_header_by_height(): not supported");
198 }
199
207 virtual std::vector<std::shared_ptr<monero_block_header>> get_block_headers_by_range(uint64_t start_height, uint64_t end_height) {
208 throw std::runtime_error("monero_daemon::get_block_headers_by_range(): not supported");
209 }
210
217 virtual std::shared_ptr<monero_block> get_block_by_hash(const std::string& block_hash) {
218 throw std::runtime_error("monero_daemon::get_block_by_hash(): not supported");
219 }
220
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");
233 }
234
241 virtual std::shared_ptr<monero_block> get_block_by_height(uint64_t height) {
242 throw std::runtime_error("monero_daemon::get_block_by_height(): not supported");
243 }
244
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");
253 }
254
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");
264 }
265
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");
276 }
277
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");
289 }
290
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;
303
304 if (txs.size() > 0) {
305 tx = txs[0];
306 }
307
308 return tx;
309 }
310
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");
320 }
321
322
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);
333 auto hexes = get_tx_hexes(hashes, prune);
334 boost::optional<std::string> hex;
335 if (hexes.size() > 0) {
336 hex = hexes[0];
337 }
338
339 return hex;
340 }
341
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");
351 }
352
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");
362 }
363
370 virtual std::shared_ptr<monero_fee_estimate> get_fee_estimate(uint64_t grace_blocks = 0) {
371 throw std::runtime_error("monero_daemon::get_fee_estimate(): not supported");
372 }
373
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");
383 }
384
390 virtual void relay_tx_by_hash(const std::string& tx_hash) {
391 std::vector<std::string> tx_hashes;
392 tx_hashes.push_back(tx_hash);
393 relay_txs_by_hash(tx_hashes);
394 }
395
401 virtual void relay_txs_by_hash(const std::vector<std::string>& tx_hashes) {
402 throw std::runtime_error("monero_daemon::relay_txs_by_hash(): not supported");
403 }
404
411 virtual std::vector<std::shared_ptr<monero_tx>> get_tx_pool() {
412 throw std::runtime_error("monero_daemon::get_tx_pool(): not supported");
413 }
414
420 virtual std::vector<std::string> get_tx_pool_hashes() {
421 throw std::runtime_error("monero_daemon::get_tx_pool_hashes(): not supported");
422 }
423
429 virtual std::vector<monero_tx_backlog_entry> get_tx_pool_backlog() {
430 throw std::runtime_error("monero_daemon::get_tx_pool_backlog(): not supported");
431 }
432
438 virtual std::shared_ptr<monero_tx_pool_stats> get_tx_pool_stats() {
439 throw std::runtime_error("monero_daemon::get_tx_pool_stats(): not supported");
440 }
441
445 virtual void flush_tx_pool() {
446 throw std::runtime_error("monero_daemon::flush_tx_pool(): not supported");
447 }
448
454 virtual void flush_tx_pool(const std::vector<std::string> &hashes) {
455 throw std::runtime_error("monero_daemon::flush_tx_pool(): not supported");
456 }
457
463 virtual void flush_tx_pool(const std::string &hash) {
464 throw std::runtime_error("monero_daemon::flush_tx_pool(): not supported");
465 }
466
473 virtual monero_key_image_spent_status get_key_image_spent_status(const std::string& key_image) {
474 std::vector<std::string> key_images;
475 key_images.push_back(key_image);
476 auto statuses = get_key_image_spent_statuses(key_images);
477 if (statuses.empty()) throw std::runtime_error("Could not get key image spent status");
478 return statuses[0];
479 }
480
487 virtual std::vector<monero_key_image_spent_status> get_key_image_spent_statuses(const std::vector<std::string>& key_images) {
488 throw std::runtime_error("monero_daemon::get_key_image_spent_statuses(): not supported");
489 }
490
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");
500 }
501
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");
516 }
517
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");
529 }
530
536 virtual std::shared_ptr<monero_daemon_info> get_info() {
537 throw std::runtime_error("monero_daemon::get_info(): not supported");
538 }
539
545 virtual std::shared_ptr<monero_daemon_sync_info> get_sync_info() {
546 throw std::runtime_error("monero_daemon::get_sync_info(): not supported");
547 }
548
554 virtual std::shared_ptr<monero_hard_fork_info> get_hard_fork_info() {
555 throw std::runtime_error("monero_daemon::get_hard_fork_info(): not supported");
556 }
557
563 virtual std::vector<std::shared_ptr<monero_alt_chain>> get_alt_chains() {
564 throw std::runtime_error("monero_daemon::get_alt_chains(): not supported");
565 }
566
572 virtual std::vector<std::string> get_alt_block_hashes() {
573 throw std::runtime_error("monero_daemon::get_alt_block_hashes(): not supported");
574 }
575
581 virtual int get_download_limit() {
582 throw std::runtime_error("monero_daemon::get_download_limit(): not supported");
583 }
584
591 virtual int set_download_limit(int limit) {
592 throw std::runtime_error("monero_daemon::set_download_limit(): not supported");
593 }
594
600 virtual int reset_download_limit() {
601 throw std::runtime_error("monero_daemon::reset_download_limit(): not supported");
602 }
603
609 virtual int get_upload_limit() {
610 throw std::runtime_error("monero_daemon::get_upload_limit(): not supported");
611 }
612
619 virtual int set_upload_limit(int limit) {
620 throw std::runtime_error("monero_daemon::set_upload_limit(): not supported");
621 }
622
628 virtual int reset_upload_limit() {
629 throw std::runtime_error("monero_daemon::reset_upload_limit(): not supported");
630 }
631
637 virtual std::vector<std::shared_ptr<monero_peer>> get_peers() {
638 throw std::runtime_error("monero_daemon::get_peers(): not supported");
639 }
640
646 virtual std::vector<std::shared_ptr<monero_peer>> get_known_peers() {
647 throw std::runtime_error("monero_daemon::get_known_peers(): not supported");
648 }
649
655 virtual void set_outgoing_peer_limit(int limit) {
656 throw std::runtime_error("monero_daemon::set_outgoing_peer_limit(): not supported");
657 }
658
664 virtual void set_incoming_peer_limit(int limit) {
665 throw std::runtime_error("monero_daemon::set_incoming_peer_limit(): not supported");
666 }
667
673 virtual std::vector<std::shared_ptr<monero_ban>> get_peer_bans() {
674 throw std::runtime_error("monero_daemon::get_peer_bans(): not supported");
675 }
676
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");
684 }
685
691 virtual void set_peer_ban(const std::shared_ptr<monero_ban>& ban) {
692 if (ban == nullptr) throw std::runtime_error("Ban is none");
693 std::vector<std::shared_ptr<monero_ban>> bans;
694 bans.push_back(ban);
695 set_peer_bans(bans);
696 }
697
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");
708 }
709
713 virtual void stop_mining() {
714 throw std::runtime_error("monero_daemon::stop_mining(): not supported");
715 }
716
722 virtual std::shared_ptr<monero_mining_status> get_mining_status() {
723 throw std::runtime_error("monero_daemon::get_mining_status(): not supported");
724 }
725
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");
737 }
738
744 virtual void submit_block(const std::string& block_blob) {
745 std::vector<std::string> block_blobs;
746 block_blobs.push_back(block_blob);
747 return submit_blocks(block_blobs);
748 }
749
755 virtual void submit_blocks(const std::vector<std::string>& block_blobs) {
756 throw std::runtime_error("monero_daemon::submit_blocks(): not supported");
757 }
758
765 virtual std::shared_ptr<monero_prune_result> prune_blockchain(bool check) {
766 throw std::runtime_error("monero_daemon::prune_blockchain(): not supported");
767 }
768
774 virtual std::shared_ptr<monero_daemon_update_check_result> check_for_update() {
775 throw std::runtime_error("monero_daemon::check_for_update(): not supported");
776 }
777
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");
786 }
787
791 virtual void stop() {
792 throw std::runtime_error("monero_daemon::stop(): not supported");
793 }
794
800 virtual std::shared_ptr<monero_block_header> wait_for_next_block_header() {
801 throw std::runtime_error("monero_daemon::wait_for_next_block_header(): not supported");
802 }
803
804 };
805}
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