mirror of
https://codeberg.org/anoncontributorxmr/monero.git
synced 2025-07-11 03:45:07 +00:00
Merge pull request #5357
b3a9a4d
add a quick early out to get_blocks.bin when up to date (moneromooo-monero)2899379
daemon, wallet: new pay for RPC use system (moneromooo-monero)ffa4602
simplewallet: add public_nodes command (moneromooo-monero)
This commit is contained in:
commit
960c215801
54 changed files with 4236 additions and 841 deletions
|
@ -37,6 +37,7 @@
|
|||
#include "cryptonote_core/cryptonote_core.h"
|
||||
#include "cryptonote_basic/difficulty.h"
|
||||
#include "cryptonote_basic/hardfork.h"
|
||||
#include "rpc/rpc_payment_signature.h"
|
||||
#include <boost/format.hpp>
|
||||
#include <ctime>
|
||||
#include <string>
|
||||
|
@ -60,6 +61,13 @@ namespace {
|
|||
}
|
||||
}
|
||||
|
||||
std::string print_float(float f, int prec)
|
||||
{
|
||||
char buf[16];
|
||||
snprintf(buf, sizeof(buf), "%*.*f", prec, prec, f);
|
||||
return buf;
|
||||
}
|
||||
|
||||
void print_peer(std::string const & prefix, cryptonote::peer const & peer, bool pruned_only, bool publicrpc_only)
|
||||
{
|
||||
if (pruned_only && peer.pruning_seed == 0)
|
||||
|
@ -77,8 +85,9 @@ namespace {
|
|||
epee::string_tools::xtype_to_string(peer.port, port_str);
|
||||
std::string addr_str = peer.host + ":" + port_str;
|
||||
std::string rpc_port = peer.rpc_port ? std::to_string(peer.rpc_port) : "-";
|
||||
std::string rpc_credits_per_hash = peer.rpc_credits_per_hash ? print_float(peer.rpc_credits_per_hash / RPC_CREDITS_PER_HASH_SCALE, 2) : "-";
|
||||
std::string pruning_seed = epee::string_tools::to_string_hex(peer.pruning_seed);
|
||||
tools::msg_writer() << boost::format("%-10s %-25s %-25s %-5s %-4s %s") % prefix % id_str % addr_str % rpc_port % pruning_seed % elapsed;
|
||||
tools::msg_writer() << boost::format("%-10s %-25s %-25s %-5s %-5s %-4s %s") % prefix % id_str % addr_str % rpc_port % rpc_credits_per_hash % pruning_seed % elapsed;
|
||||
}
|
||||
|
||||
void print_block_header(cryptonote::block_header_response const & header)
|
||||
|
@ -2364,4 +2373,45 @@ bool t_rpc_command_executor::set_bootstrap_daemon(
|
|||
return true;
|
||||
}
|
||||
|
||||
bool t_rpc_command_executor::rpc_payments()
|
||||
{
|
||||
cryptonote::COMMAND_RPC_ACCESS_DATA::request req;
|
||||
cryptonote::COMMAND_RPC_ACCESS_DATA::response res;
|
||||
std::string fail_message = "Unsuccessful";
|
||||
epee::json_rpc::error error_resp;
|
||||
|
||||
if (m_is_rpc)
|
||||
{
|
||||
if (!m_rpc_client->json_rpc_request(req, res, "rpc_access_data", fail_message.c_str()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!m_rpc_server->on_rpc_access_data(req, res, error_resp) || res.status != CORE_RPC_STATUS_OK)
|
||||
{
|
||||
tools::fail_msg_writer() << make_error(fail_message, res.status);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
const uint64_t now = std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now().time_since_epoch()).count();
|
||||
uint64_t balance = 0;
|
||||
tools::msg_writer() << boost::format("%64s %16u %16u %8u %8u %8u %8u %s")
|
||||
% "Client ID" % "Balance" % "Total mined" % "Good" % "Stale" % "Bad" % "Dupes" % "Last update";
|
||||
for (const auto &entry: res.entries)
|
||||
{
|
||||
tools::msg_writer() << boost::format("%64s %16u %16u %8u %8u %8u %8u %s")
|
||||
% entry.client % entry.balance % entry.credits_total
|
||||
% entry.nonces_good % entry.nonces_stale % entry.nonces_bad % entry.nonces_dupe
|
||||
% (entry.last_update_time == 0 ? "never" : get_human_time_ago(entry.last_update_time, now).c_str());
|
||||
balance += entry.balance;
|
||||
}
|
||||
tools::msg_writer() << res.entries.size() << " clients with a total of " << balance << " credits";
|
||||
tools::msg_writer() << "Aggregated client hash rate: " << get_mining_speed(res.hashrate);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}// namespace daemonize
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue