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
97 CHAIN_HTTP_TO_MAP2(connection_context);
142 BEGIN_JSON_RPC_MAP("/json_rpc")
263 bool check_core_busy();
264 bool check_core_ready();
265 bool add_host_fail(
const connection_context *ctx,
unsigned int score = 1);
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 const command_line::arg_descriptor< std::vector< std::string > > arg_rpc_ssl_allowed_fingerprints
Definition: core_rpc_server.h:71
std::unique_ptr< bootstrap_daemon > m_bootstrap_daemon
Definition: core_rpc_server.h:282
boost::shared_mutex m_bootstrap_daemon_mutex
Definition: core_rpc_server.h:281
bool disable_rpc_ban
Definition: core_rpc_server.h:290
Definition: core_rpc_server_commands_defs.h:162
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< bool > arg_public_node
Definition: core_rpc_server.h:63
void init_options(boost::program_options::options_description &hidden_options, boost::program_options::options_description &normal_options)
Definition: posix_daemonizer.inl:56
Definition: unordered_containers_boost_serialization.h:37
Definition: core_rpc_server_commands_defs.h:1891
static const command_line::arg_descriptor< std::string > arg_rpc_payment_address
Definition: core_rpc_server.h:75
Definition: core_rpc_server_commands_defs.h:2080
static void init(std::string cache_filename)
Definition: blockchain_blackball.cpp:221
Definition: cryptonote_basic.h:463
bool m_was_bootstrap_ever_used
Definition: core_rpc_server.h:285
Definition: core_rpc_server_commands_defs.h:1318
Definition: core_rpc_server_commands_defs.h:1038
Definition: core_rpc_server_commands_defs.h:217
Definition: core_rpc_server_commands_defs.h:2383
Definition: core_rpc_server_commands_defs.h:1918
epee::critical_section m_host_fails_score_lock
Definition: core_rpc_server.h:287
Definition: core_rpc_server_commands_defs.h:1780
int pop_blocks(cryptonote::core &core, int num_blocks)
Definition: blockchain_import.cpp:95
std::unique_ptr< rpc_payment > m_rpc_payment
Definition: core_rpc_server.h:289
Definition: core_rpc_server_commands_defs.h:2496
static const command_line::arg_descriptor< uint64_t > arg_rpc_payment_difficulty
Definition: core_rpc_server.h:76
crypto namespace.
Definition: crypto.cpp:60
Definition: blockchain_ancestry.cpp:71
Definition: core_rpc_server_commands_defs.h:1439
invoke_http_mode
Definition: core_rpc_server.h:273
Definition: core_rpc_server_commands_defs.h:262
Definition: core_rpc_server_commands_defs.h:405
const
Definition: build_protob.py:9
static const command_line::arg_descriptor< std::string > arg_bootstrap_daemon_address
Definition: core_rpc_server.h:73
std::chrono::system_clock::time_point m_bootstrap_height_check_time
Definition: core_rpc_server.h:284
Definition: core_rpc_server_commands_defs.h:2162
Definition: core_rpc_server_commands_defs.h:1609
Definition: core_rpc_server_commands_defs.h:1296
Definition: core_rpc_server_commands_defs.h:941
network_type nettype() const
Definition: core_rpc_server.h:95
Definition: core_rpc_server_commands_defs.h:1940
static const command_line::arg_descriptor< std::string > arg_rpc_ssl_ca_certificates
Definition: core_rpc_server.h:70
Definition: core_rpc_server_commands_defs.h:880
Definition: core_rpc_server_commands_defs.h:2548
Definition: core_rpc_server_commands_defs.h:1468
BOOST_CLASS_VERSION(nodetool::node_server< cryptonote::t_cryptonote_protocol_handler< cryptonote::core > >, 1)
static const command_line::arg_descriptor< std::string > arg_bootstrap_daemon_login
Definition: core_rpc_server.h:74
Holds cryptonote related classes and helpers.
Definition: blockchain_db.cpp:44
Definition: core_rpc_server_commands_defs.h:791
bool m_restricted
Definition: core_rpc_server.h:286
Definition: core_rpc_server_commands_defs.h:2407
bool m_rpc_payment_allow_free_loopback
Definition: core_rpc_server.h:291
Definition: core_rpc_server_commands_defs.h:474
static const command_line::arg_descriptor< std::string > arg_rpc_ssl_certificate
Definition: core_rpc_server.h:69
static const command_line::arg_descriptor< std::string > arg_rpc_restricted_bind_port
Definition: core_rpc_server.h:65
Definition: core_rpc_server_commands_defs.h:1992
static const command_line::arg_descriptor< std::string > arg_rpc_ssl
Definition: core_rpc_server.h:67
Definition: core_rpc_server_commands_defs.h:2184
static const command_line::arg_descriptor< uint64_t > arg_rpc_payment_credits
Definition: core_rpc_server.h:77
Definition: core_rpc_server_commands_defs.h:738
Definition: core_rpc_server_commands_defs.h:612
Definition: core_rpc_server_commands_defs.h:1274
Definition: core_rpc_server_commands_defs.h:1095
handles core cryptonote functionality
Definition: cryptonote_core.h:87
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
int b
Definition: base.py:1
Definition: core_rpc_server_commands_defs.h:1558
Definition: core_rpc_server_commands_defs.h:1393
static const command_line::arg_descriptor< std::string > arg_rpc_ssl_private_key
Definition: core_rpc_server.h:68
Definition: core_rpc_server_commands_defs.h:1698
core & m_core
Definition: core_rpc_server.h:279
Definition: core_rpc_server_commands_defs.h:1636
Definition: core_rpc_server_commands_defs.h:843
Definition: core_rpc_server_commands_defs.h:438
Definition: core_rpc_server_commands_defs.h:1064
std::map< std::string, uint64_t > m_host_fails_score
Definition: core_rpc_server.h:288
Definition: core_rpc_server_commands_defs.h:2246
Definition: core_rpc_server_commands_defs.h:864
Definition: core_rpc_server_commands_defs.h:888
Definition: core_rpc_server_commands_defs.h:241
Definition: core_rpc_server_commands_defs.h:1193
Definition: core_rpc_server_commands_defs.h:2447
This is the original cryptonote protocol network-events handler, modified by us.
Definition: core_rpc_server_commands_defs.h:770
Definition: core_rpc_server_commands_defs.h:1536
std::string blobdata
Definition: blobdatatype.h:39
Definition: core_rpc_server_commands_defs.h:1122
Definition: core_rpc_server_commands_defs.h:2359
network_type
Definition: cryptonote_config.h:272
Definition: cryptonote_format_utils.h:43
Definition: core_rpc_server_commands_defs.h:954
Definition: core_rpc_server_commands_defs.h:2323
Definition: cryptonote_basic.h:500
Definition: core_rpc_server_commands_defs.h:1754
nodetool::node_server< cryptonote::t_cryptonote_protocol_handler< cryptonote::core > > & m_p2p
Definition: core_rpc_server.h:280
boost::multiprecision::uint128_t difficulty_type
Definition: difficulty.h:41
Definition: core_rpc_server_commands_defs.h:640
Definition: core_rpc_server_commands_defs.h:138
Definition: core_rpc_server_commands_defs.h:1819
bool m_should_use_bootstrap_daemon
Definition: core_rpc_server.h:283
epee::net_utils::connection_context_base connection_context
Definition: core_rpc_server.h:80
static const command_line::arg_descriptor< bool > arg_rpc_ssl_allow_any_cert
Definition: core_rpc_server.h:72
Definition: core_rpc_server_commands_defs.h:323
Definition: core_rpc_server_commands_defs.h:1727
Definition: core_rpc_server_commands_defs.h:1243
Definition: core_rpc_server_commands_defs.h:562
Definition: core_rpc_server_commands_defs.h:1854
Definition: core_rpc_server_commands_defs.h:1580
Definition: core_rpc_server_commands_defs.h:2016
Definition: core_rpc_server.h:59
static const command_line::arg_descriptor< std::string, false, true, 2 > arg_rpc_bind_port
Definition: core_rpc_server.h:64
POD_CLASS hash
Definition: hash.h:48
Definition: core_rpc_server_commands_defs.h:518
Definition: core_rpc_server_commands_defs.h:2575
Definition: core_rpc_server_commands_defs.h:1417
Definition: core_rpc_server_commands_defs.h:2053
static const command_line::arg_descriptor< bool > arg_restricted_rpc
Definition: core_rpc_server.h:66
Definition: core_rpc_server_commands_defs.h:1674
error
Tracks LMDB error codes.
Definition: error.h:44
Definition: core_rpc_server_commands_defs.h:2125
Definition: core_rpc_server_commands_defs.h:2523