56#include "common/monero_rpc_connection.h"
67 monero_rpc_ban(
const std::shared_ptr<monero_ban> &ban);
69 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
77 struct monero_get_blocks_by_height_request :
public monero_rpc_request {
78 std::vector<uint64_t> m_heights;
80 monero_get_blocks_by_height_request(uint64_t num_blocks);
81 monero_get_blocks_by_height_request(
const std::vector<uint64_t>& heights): m_heights(heights) { m_method =
"get_blocks_by_height.bin"; }
83 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
89 struct monero_get_blocks_by_hash_request :
public monero_rpc_request {
90 std::vector<std::string> m_block_hashes;
91 uint64_t m_start_height;
93 uint64_t m_max_block_count;
95 monero_get_blocks_by_hash_request(
const std::vector<std::string>& block_hashes, uint64_t start_height,
bool prune, uint64_t max_block_count = 0): m_block_hashes(block_hashes), m_start_height(start_height), m_prune(prune), m_max_block_count(max_block_count) { m_method =
"get_blocks.bin"; }
97 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
103 struct monero_get_block_hashes_request :
public monero_rpc_request {
104 std::vector<std::string> m_block_hashes;
106 monero_get_block_hashes_request(
const std::vector<std::string>& block_hashes): m_block_hashes(block_hashes) { m_method =
"get_hashes.bin"; }
108 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
114 struct monero_get_output_indices_request :
public monero_rpc_request {
115 std::string m_tx_hash;
117 monero_get_output_indices_request(
const std::string& tx_hash): m_tx_hash(tx_hash) { m_method =
"get_o_indexes.bin"; }
119 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
125 struct monero_get_outputs_request :
public monero_rpc_request {
126 std::vector<monero_output> m_outputs;
129 monero_get_outputs_request(
const std::vector<monero_output>& outputs,
bool get_txid =
true): m_outputs(outputs), m_get_txid(get_txid) { m_method =
"get_outs.bin"; }
131 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
137 boost::optional<std::string> m_command;
138 boost::optional<std::string> m_path;
140 monero_download_update_params(
const std::string& command =
"download",
const std::string& path =
"");
142 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
146 boost::optional<std::string> m_tx_hex;
147 boost::optional<bool> m_do_not_relay;
148 std::vector<std::string> m_tx_hashes;
150 monero_submit_tx_params(
const std::vector<std::string>& tx_hashes): m_tx_hashes(tx_hashes) { }
151 monero_submit_tx_params(
const std::string& tx_hex,
bool do_not_relay): m_tx_hex(tx_hex), m_do_not_relay(do_not_relay) { }
153 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
157 boost::optional<int> m_in_peers;
158 boost::optional<int> m_out_peers;
160 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
164 boost::optional<bool> m_gray;
166 monero_get_public_nodes_params(
bool include_gray): m_gray(include_gray) { }
168 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
172 std::vector<std::string> m_tx_hashes;
173 boost::optional<bool> m_decode_as_json;
174 boost::optional<bool> m_prune;
176 monero_get_txs_params(
const std::vector<std::string> &tx_hashes,
bool prune,
bool decode_as_json =
true): m_tx_hashes(tx_hashes), m_prune(prune), m_decode_as_json(decode_as_json) { }
178 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
182 std::vector<std::string> m_key_images;
184 monero_is_key_image_spent_params(
const std::vector<std::string>& key_images): m_key_images(key_images) { }
186 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
190 boost::optional<std::string> m_address;
191 boost::optional<std::string> m_username;
192 boost::optional<std::string> m_password;
193 boost::optional<std::string> m_proxy;
195 monero_set_bootstrap_daemon_params(
const std::string& address,
const std::string& username =
"",
const std::string& password =
"",
const std::string& proxy =
""): m_address(address), m_username(username), m_password(password), m_proxy(proxy) { }
197 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
201 boost::optional<uint64_t> m_nblocks;
203 monero_pop_blocks_params(uint64_t num_blocks): m_nblocks(num_blocks) { }
205 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
209 boost::optional<bool> m_visible;
211 monero_set_log_hash_rate_params(
bool visible): m_visible(visible) { }
213 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
217 boost::optional<int> m_level;
219 monero_set_log_level_params(
int level): m_level(level) { }
221 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
225 boost::optional<std::string> m_categories;
227 monero_set_log_categories_params(
const std::string& categories =
""): m_categories(categories) { }
229 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
235 boost::optional<std::string> m_miner_address;
236 boost::optional<uint64_t> m_num_threads;
237 boost::optional<bool> m_is_background;
238 boost::optional<bool> m_ignore_battery;
240 monero_start_mining_params(
const boost::optional<std::string>& address,
const boost::optional<uint64_t>& num_threads,
const boost::optional<bool>& is_background,
const boost::optional<bool>& ignore_battery): m_miner_address(address), m_num_threads(num_threads), m_is_background(is_background), m_ignore_battery(ignore_battery) { }
241 monero_start_mining_params(
const boost::optional<uint64_t>& num_threads,
const boost::optional<bool>& is_background,
const boost::optional<bool>& ignore_battery): m_num_threads(num_threads), m_is_background(is_background), m_ignore_battery(ignore_battery) { }
243 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
247 boost::optional<std::string> m_wallet_address;
248 boost::optional<uint64_t> m_num_blocks;
249 boost::optional<std::string> m_prev_block_hash;
250 boost::optional<uint32_t> m_starting_nonce;
252 monero_generate_blocks_params(
const std::string& wallet_address, uint64_t num_blocks,
const boost::optional<std::string>& prev_block_hash,
const boost::optional<uint32_t>& starting_nonce): m_wallet_address(wallet_address), m_num_blocks(num_blocks), m_prev_block_hash(prev_block_hash), m_starting_nonce(starting_nonce) { }
254 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
258 boost::optional<bool> m_check;
260 monero_prune_blockchain_params(
bool check =
true): m_check(check) { }
262 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
266 boost::optional<bool> m_bad_blocks;
268 monero_flush_cache_params(
bool bad_blocks =
false): m_bad_blocks(bad_blocks) { }
270 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
274 boost::optional<uint32_t> m_major_version;
275 boost::optional<uint64_t> m_height;
276 boost::optional<std::string> m_block_blob;
277 boost::optional<std::string> m_seed_hash;
279 monero_calculate_pow_params(uint32_t major_version, uint64_t height,
const std::string& block_blob,
const std::string& seed_hash): m_major_version(major_version), m_height(height), m_block_blob(block_blob), m_seed_hash(seed_hash) { }
281 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
285 boost::optional<std::string> m_blocktemplate_blob;
286 std::vector<std::shared_ptr<monero_auxiliary_pow>> m_aux_pow;
288 monero_add_aux_pow_params(
const std::string& blocktemplate_blob,
const std::vector<std::shared_ptr<monero_auxiliary_pow>>& aux_pow): m_blocktemplate_blob(blocktemplate_blob), m_aux_pow(aux_pow) { }
290 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
294 boost::optional<std::string> m_address;
296 monero_banned_params(
const std::string& address): m_address(address) { }
298 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
302 std::vector<std::string> m_block_blobs;
304 monero_submit_blocks_params(
const std::vector<std::string>& block_blobs): m_block_blobs(block_blobs) { }
306 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
310 boost::optional<uint64_t> m_height;
311 boost::optional<std::string> m_hash;
312 boost::optional<bool> m_fill_pow_hash;
313 boost::optional<uint64_t> m_start_height;
314 boost::optional<uint64_t> m_end_height;
315 boost::optional<std::string> m_wallet_address;
316 boost::optional<int> m_reserve_size;
318 monero_get_block_params(uint64_t height,
bool fill_pow_hash =
false): m_height(height), m_fill_pow_hash(fill_pow_hash) { }
319 monero_get_block_params(
const std::string& hash,
bool fill_pow_hash =
false): m_hash(hash), m_fill_pow_hash(fill_pow_hash) { }
320 monero_get_block_params(uint64_t start_height, uint64_t end_height): m_start_height(start_height), m_end_height(end_height) { }
321 monero_get_block_params(
const std::string& wallet_address,
const boost::optional<int>& reserve_size): m_wallet_address(wallet_address), m_reserve_size(reserve_size) { }
323 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
327 boost::optional<uint64_t> m_height;
329 monero_get_block_hash_params(uint64_t height): m_height(height) { }
331 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
335 boost::optional<uint64_t> m_height;
336 boost::optional<uint64_t> m_count;
338 monero_get_miner_tx_sum_params(uint64_t height, uint64_t count): m_height(height), m_count(count) { }
340 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
344 boost::optional<uint64_t> m_grace_blocks;
346 monero_get_fee_estimate_params(uint64_t grace_blocks = 0): m_grace_blocks(grace_blocks) { }
348 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
352 std::vector<std::shared_ptr<monero_rpc_ban>> m_bans;
354 monero_set_bans_params(
const std::vector<std::shared_ptr<monero_ban>>& bans);
356 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
360 std::vector<uint64_t> m_amounts;
361 boost::optional<int> m_min_count;
362 boost::optional<int> m_max_count;
363 boost::optional<bool> m_is_unlocked;
364 boost::optional<int> m_recent_cutoff;
366 monero_get_output_histogram_params(
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) : m_amounts(amounts), m_min_count(min_count), m_max_count(max_count), m_is_unlocked(is_unlocked), m_recent_cutoff(recent_cutoff) { }
368 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
372 std::vector<uint64_t> m_amounts;
373 boost::optional<bool> m_cumulative;
374 boost::optional<bool> m_binary;
375 boost::optional<uint64_t> m_from_height;
376 boost::optional<uint64_t> m_to_height;
378 monero_get_output_distribution_params(
const std::vector<uint64_t>& amounts,
const boost::optional<bool>& cumulative,
const boost::optional<uint64_t>& from_height,
const boost::optional<uint64_t>& to_height) : m_amounts(amounts), m_cumulative(cumulative), m_from_height(from_height), m_to_height(to_height), m_binary(
false) { }
380 rapidjson::Value
to_rapidjson_val(rapidjson::Document::AllocatorType& allocator)
const override;
386 boost::optional<uint64_t> m_count;
387 boost::optional<uint64_t> m_height;
388 boost::optional<bool> m_untrusted;
390 static void from_property_tree(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_get_block_result>& result);
395 void deserialize_version(
const boost::property_tree::ptree& node,
monero_version& version);
396 void deserialize_block_header(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_block_header>& header);
397 void deserialize_block_headers(
const boost::property_tree::ptree& node, std::vector<std::shared_ptr<monero_block_header>>& headers);
398 void deserialize_block(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_block>& block,
bool is_nested =
false);
399 void deserialize_blocks(
const boost::property_tree::ptree& node,
const std::vector<uint64_t>& heights, std::vector<std::shared_ptr<monero_block>>& blocks);
400 void deserialize_get_blocks_by_hash_result(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_get_blocks_by_hash_result>& result);
401 void deserialize_block_hashes(
const std::string& bin,
const std::shared_ptr<monero_get_block_hashes_result>& result);
402 void deserialize_alt_block_hashes(
const boost::property_tree::ptree& node, std::vector<std::string>& block_hashes);
403 void deserialize_txs(
const boost::property_tree::ptree& node, std::vector<std::shared_ptr<monero_tx>>& txs);
404 void deserialize_tx_hashes(
const boost::property_tree::ptree& node, std::vector<std::string>& tx_hashes);
405 void deserialize_key_image_spent_status(
const boost::property_tree::ptree& node, std::vector<monero_key_image_spent_status>& statuses);
406 void deserialize_alt_chains(
const boost::property_tree::ptree& node, std::vector<std::shared_ptr<monero_alt_chain>>& alt_chains);
407 void deserialize_bans(
const boost::property_tree::ptree& node, std::vector<std::shared_ptr<monero_ban>>& bans);
408 void deserialize_prune_result(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_prune_result>& result);
409 void deserialize_mining_status(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_mining_status>& status);
410 void deserialize_generate_blocks_result(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_generate_blocks_result>& result);
411 void deserialize_output_indices(
const std::string& bin, std::vector<uint64_t>& indices);
412 void deserialize_outputs(
const std::string& bin,
const std::vector<monero_output>& requested_outputs, std::vector<std::shared_ptr<monero_output>>& outputs);
413 void deserialize_miner_tx_sum(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_miner_tx_sum>& sum);
414 void deserialize_block_template(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_block_template>& tmplt);
415 void deserialize_miner_data(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_miner_data>& data);
416 void deserialize_add_auxiliary_pow_result(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_add_auxiliary_pow_result>& result);
417 void deserialize_peers(
const boost::property_tree::ptree& node, std::vector<std::shared_ptr<monero_peer>>& peers);
418 void deserialize_public_peers(
const boost::property_tree::ptree& node, std::vector<std::shared_ptr<monero_peer>>& peers);
419 void deserialize_submit_tx_result(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_submit_tx_result>& result);
420 void deserialize_output_distribution_entries(
const boost::property_tree::ptree& node, std::vector<std::shared_ptr<monero_output_distribution_entry>>& entries);
421 void deserialize_output_histogram_entries(
const boost::property_tree::ptree& node, std::vector<std::shared_ptr<monero_output_histogram_entry>>& entries);
422 void deserialize_tx_pool_stats(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_tx_pool_stats>& stats);
423 void deserialize_update_check_result(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_daemon_update_check_result>& check);
424 void deserialize_update_download_result(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_daemon_update_download_result>& check);
425 void deserialize_fee_estimate(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_fee_estimate>& estimate);
426 void deserialize_daemon_info(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_daemon_info>& info);
427 void deserialize_daemon_sync_info(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_daemon_sync_info>& info);
428 void deserialize_network_stats(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_daemon_network_stats>& stats);
429 void deserialize_hard_fork_info(
const boost::property_tree::ptree& node,
const std::shared_ptr<monero_hard_fork_info>& info);
430 std::string normalize_daemon_rpc_status(
const std::string& status);
Definition monero_error.h:61
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:466
Definition monero_daemon_model.h:335
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:483
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:446
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:190
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:433
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:400
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:528
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:141
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:503
Definition monero_daemon_rpc_model.h:385
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:124
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:116
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:551
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:536
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:604
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:582
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:157
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:171
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:263
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:276
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:293
Definition monero_daemon_rpc_model.h:156
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:248
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:323
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:420
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:88
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:569
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:306
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:364
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:337
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:350
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:378
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:497
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType &allocator) const override
Definition monero_daemon_rpc_model.cpp:228
Definition monero_daemon_model.h:142
Definition monero_daemon_model.h:70