35 #include <boost/program_options/options_description.hpp>
36 #include <boost/program_options/variables_map.hpp>
39 #include "net/http_server_impl_base.h"
40 #include "net/http_client.h"
47 #undef MONERO_DEFAULT_LOG_CATEGORY
48 #define MONERO_DEFAULT_LOG_CATEGORY "daemon.rpc"
88 static void init_options(boost::program_options::options_description& desc);
90 const boost::program_options::variables_map& vm,
91 const bool restricted,
92 const std::string& port,
93 bool allow_rpc_payment
142 BEGIN_JSON_RPC_MAP("/json_rpc")
263 bool check_core_busy();
264 bool check_core_ready();
270 std::map<
std::
string,
bool> get_public_nodes(uint32_t credits_per_hash_threshold = 0);
271 bool set_bootstrap_daemon(
const std::
string &address,
const std::
string &username_password);
272 bool set_bootstrap_daemon(
const std::
string &address,
const boost::optional<
epee::net_utils::http::login> &credentials);
274 template <
typename COMMAND_TYPE>
275 bool use_bootstrap_daemon_if_necessary(
const invoke_http_mode &mode,
const std::string &command_name,
const typename COMMAND_TYPE::request& req,
typename COMMAND_TYPE::response& res,
bool &r);
276 bool get_block_template(
const account_public_address &address,
const crypto::hash *prev_block,
const cryptonote::blobdata &extra_nonce,
size_t &reserved_offset,
cryptonote::difficulty_type &difficulty, uint64_t &height, uint64_t &expected_reward,
block &
b, uint64_t &seed_height,
crypto::hash &seed_hash,
crypto::hash &next_seed_hash,
epee::json_rpc::error &error_resp);
277 bool check_payment(
const std::string &client, uint64_t payment,
const std::string &rpc,
bool same_ts, std::string &message, uint64_t &credits, std::string &top_hash);
static void init(std::string cache_filename)
Definition: blockchain_blackball.cpp:221
int pop_blocks(cryptonote::core &core, int num_blocks)
Definition: blockchain_import.cpp:95
Definition: core_rpc_server.h:60
bool disable_rpc_ban
Definition: core_rpc_server.h:290
static const command_line::arg_descriptor< bool > arg_rpc_ssl_allow_any_cert
Definition: core_rpc_server.h:72
static const command_line::arg_descriptor< std::string > arg_rpc_ssl_ca_certificates
Definition: core_rpc_server.h:70
epee::critical_section m_host_fails_score_lock
Definition: core_rpc_server.h:287
static const command_line::arg_descriptor< std::string > arg_rpc_payment_address
Definition: core_rpc_server.h:75
nodetool::node_server< cryptonote::t_cryptonote_protocol_handler< cryptonote::core > > & m_p2p
Definition: core_rpc_server.h:280
static const command_line::arg_descriptor< std::string > arg_rpc_ssl_private_key
Definition: core_rpc_server.h:68
epee::net_utils::connection_context_base connection_context
Definition: core_rpc_server.h:80
static const command_line::arg_descriptor< uint64_t > arg_rpc_payment_difficulty
Definition: core_rpc_server.h:76
boost::shared_mutex m_bootstrap_daemon_mutex
Definition: core_rpc_server.h:281
static const command_line::arg_descriptor< std::string > arg_rpc_ssl_certificate
Definition: core_rpc_server.h:69
CHAIN_HTTP_TO_MAP2(connection_context)
static const command_line::arg_descriptor< bool > arg_public_node
Definition: core_rpc_server.h:63
invoke_http_mode
Definition: core_rpc_server.h:273
@ BIN
Definition: core_rpc_server.h:273
std::unique_ptr< bootstrap_daemon > m_bootstrap_daemon
Definition: core_rpc_server.h:282
static const command_line::arg_descriptor< std::string > arg_bootstrap_daemon_address
Definition: core_rpc_server.h:73
network_type nettype() const
Definition: core_rpc_server.h:95
bool m_restricted
Definition: core_rpc_server.h:286
bool m_rpc_payment_allow_free_loopback
Definition: core_rpc_server.h:291
std::chrono::system_clock::time_point m_bootstrap_height_check_time
Definition: core_rpc_server.h:284
static const command_line::arg_descriptor< std::string > arg_rpc_ssl
Definition: core_rpc_server.h:67
static const command_line::arg_descriptor< std::string > arg_bootstrap_daemon_login
Definition: core_rpc_server.h:74
bool m_should_use_bootstrap_daemon
Definition: core_rpc_server.h:283
static const command_line::arg_descriptor< bool > arg_rpc_payment_allow_free_loopback
Definition: core_rpc_server.h:78
static const command_line::arg_descriptor< std::string, false, true, 2 > arg_rpc_bind_port
Definition: core_rpc_server.h:64
static const command_line::arg_descriptor< uint64_t > arg_rpc_payment_credits
Definition: core_rpc_server.h:77
static const command_line::arg_descriptor< std::vector< std::string > > arg_rpc_ssl_allowed_fingerprints
Definition: core_rpc_server.h:71
bool m_was_bootstrap_ever_used
Definition: core_rpc_server.h:285
std::map< std::string, uint64_t > m_host_fails_score
Definition: core_rpc_server.h:288
std::unique_ptr< rpc_payment > m_rpc_payment
Definition: core_rpc_server.h:289
static const command_line::arg_descriptor< std::string > arg_rpc_restricted_bind_port
Definition: core_rpc_server.h:65
static const command_line::arg_descriptor< bool > arg_restricted_rpc
Definition: core_rpc_server.h:66
core & m_core
Definition: core_rpc_server.h:279
handles core cryptonote functionality
Definition: cryptonote_core.h:88
BOOST_CLASS_VERSION(nodetool::node_server< cryptonote::t_cryptonote_protocol_handler< cryptonote::core > >, 1)
This is the original cryptonote protocol network-events handler, modified by us.
int b
Definition: base.py:1
Definition: unordered_containers_boost_serialization.h:38
const
Definition: build_protob.py:9
crypto namespace.
Definition: crypto.cpp:60
POD_CLASS hash
Definition: hash.h:48
Holds cryptonote related classes and helpers.
Definition: blockchain_db.cpp:45
boost::multiprecision::uint128_t difficulty_type
Definition: difficulty.h:41
network_type
Definition: cryptonote_config.h:273
std::string blobdata
Definition: blobdatatype.h:39
bool get_block_reward(size_t median_weight, size_t current_block_weight, uint64_t already_generated_coins, uint64_t &reward, uint8_t version)
Definition: cryptonote_basic_impl.cpp:83
void init_options(boost::program_options::options_description &hidden_options, boost::program_options::options_description &normal_options)
Definition: posix_daemonizer.inl:56
Definition: cryptonote_format_utils.h:44
error
Tracks LMDB error codes.
Definition: error.h:45
Definition: blockchain_ancestry.cpp:72
Definition: core_rpc_server_commands_defs.h:2497
Definition: core_rpc_server_commands_defs.h:2448
Definition: core_rpc_server_commands_defs.h:2324
Definition: core_rpc_server_commands_defs.h:2384
Definition: core_rpc_server_commands_defs.h:2360
Definition: core_rpc_server_commands_defs.h:2408
Definition: core_rpc_server_commands_defs.h:1892
Definition: core_rpc_server_commands_defs.h:2576
Definition: core_rpc_server_commands_defs.h:1919
Definition: core_rpc_server_commands_defs.h:955
Definition: core_rpc_server_commands_defs.h:1820
Definition: core_rpc_server_commands_defs.h:865
Definition: core_rpc_server_commands_defs.h:881
Definition: core_rpc_server_commands_defs.h:889
Definition: core_rpc_server_commands_defs.h:2081
Definition: core_rpc_server_commands_defs.h:242
Definition: core_rpc_server_commands_defs.h:2054
Definition: core_rpc_server_commands_defs.h:218
Definition: core_rpc_server_commands_defs.h:163
Definition: core_rpc_server_commands_defs.h:1581
Definition: core_rpc_server_commands_defs.h:1065
Definition: core_rpc_server_commands_defs.h:1096
Definition: core_rpc_server_commands_defs.h:1123
Definition: core_rpc_server_commands_defs.h:2017
Definition: core_rpc_server_commands_defs.h:1559
Definition: core_rpc_server_commands_defs.h:263
Definition: core_rpc_server_commands_defs.h:139
Definition: core_rpc_server_commands_defs.h:641
Definition: core_rpc_server_commands_defs.h:1039
Definition: core_rpc_server_commands_defs.h:1675
Definition: core_rpc_server_commands_defs.h:739
Definition: core_rpc_server_commands_defs.h:475
Definition: core_rpc_server_commands_defs.h:519
Definition: core_rpc_server_commands_defs.h:2247
Definition: core_rpc_server_commands_defs.h:1941
Definition: core_rpc_server_commands_defs.h:1194
Definition: core_rpc_server_commands_defs.h:1244
Definition: core_rpc_server_commands_defs.h:324
Definition: core_rpc_server_commands_defs.h:1469
Definition: core_rpc_server_commands_defs.h:1418
Definition: core_rpc_server_commands_defs.h:1440
Definition: core_rpc_server_commands_defs.h:1537
Definition: core_rpc_server_commands_defs.h:1394
Definition: core_rpc_server_commands_defs.h:439
Definition: core_rpc_server_commands_defs.h:1993
Definition: core_rpc_server_commands_defs.h:1781
Definition: core_rpc_server_commands_defs.h:1755
Definition: core_rpc_server_commands_defs.h:406
Definition: core_rpc_server_commands_defs.h:792
Definition: core_rpc_server_commands_defs.h:1728
Definition: core_rpc_server_commands_defs.h:2524
Definition: core_rpc_server_commands_defs.h:2549
Definition: core_rpc_server_commands_defs.h:2163
Definition: core_rpc_server_commands_defs.h:844
Definition: core_rpc_server_commands_defs.h:563
Definition: core_rpc_server_commands_defs.h:1855
Definition: core_rpc_server_commands_defs.h:1610
Definition: core_rpc_server_commands_defs.h:1699
Definition: core_rpc_server_commands_defs.h:1319
Definition: core_rpc_server_commands_defs.h:1275
Definition: core_rpc_server_commands_defs.h:1297
Definition: core_rpc_server_commands_defs.h:613
Definition: core_rpc_server_commands_defs.h:1637
Definition: core_rpc_server_commands_defs.h:771
Definition: core_rpc_server_commands_defs.h:942
Definition: core_rpc_server_commands_defs.h:2185
Definition: core_rpc_server_commands_defs.h:2126
Definition: cryptonote_basic.h:501
Definition: cryptonote_basic.h:464