Browse Source

Code and copyright cleanup.

pr2112
XMRig 3 years ago
parent
commit
5980675876
No known key found for this signature in database GPG Key ID: 446A53638BE94409
  1. 6
      src/base/io/log/Tags.cpp
  2. 4
      src/base/io/log/Tags.h
  3. 12
      src/base/kernel/interfaces/IConfig.h
  4. 26
      src/base/net/stratum/Pool.cpp
  5. 16
      src/base/net/stratum/Pool.h
  6. 50
      src/base/net/stratum/SelfSelectClient.cpp
  7. 49
      src/base/net/stratum/SelfSelectClient.h
  8. 10
      src/core/config/Config_platform.h
  9. 15
      src/core/config/usage.h

6
src/base/io/log/Tags.cpp

@ -1,6 +1,6 @@
/* XMRig /* XMRig
* Copyright 2018-2020 SChernykh <https://github.com/SChernykh> * Copyright (c) 2018-2021 SChernykh <https://github.com/SChernykh>
* Copyright 2016-2020 XMRig <https://github.com/xmrig>, <support@xmrig.com> * Copyright (c) 2016-2021 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -36,6 +36,7 @@ const char *xmrig::Tags::network()
return tag; return tag;
} }
const char* xmrig::Tags::origin() const char* xmrig::Tags::origin()
{ {
static const char* tag = YELLOW_BG_BOLD(WHITE_BOLD_S " origin "); static const char* tag = YELLOW_BG_BOLD(WHITE_BOLD_S " origin ");
@ -43,6 +44,7 @@ const char* xmrig::Tags::origin()
return tag; return tag;
} }
const char *xmrig::Tags::signal() const char *xmrig::Tags::signal()
{ {
static const char *tag = YELLOW_BG_BOLD(WHITE_BOLD_S " signal "); static const char *tag = YELLOW_BG_BOLD(WHITE_BOLD_S " signal ");

4
src/base/io/log/Tags.h

@ -1,6 +1,6 @@
/* XMRig /* XMRig
* Copyright 2018-2020 SChernykh <https://github.com/SChernykh> * Copyright (c) 2018-2021 SChernykh <https://github.com/SChernykh>
* Copyright 2016-2020 XMRig <https://github.com/xmrig>, <support@xmrig.com> * Copyright (c) 2016-2021 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

12
src/base/kernel/interfaces/IConfig.h

@ -1,12 +1,6 @@
/* XMRig /* XMRig
* Copyright 2010 Jeff Garzik <jgarzik@pobox.com> * Copyright (c) 2018-2021 SChernykh <https://github.com/SChernykh>
* Copyright 2012-2014 pooler <pooler@litecoinpool.org> * Copyright (c) 2016-2021 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* Copyright 2014 Lucas Jones <https://github.com/lucasjones>
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
* Copyright 2018-2021 SChernykh <https://github.com/SChernykh>
* Copyright 2016-2021 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -73,7 +67,6 @@ public:
DaemonKey = 1018, DaemonKey = 1018,
DaemonPollKey = 1019, DaemonPollKey = 1019,
SelfSelectKey = 1028, SelfSelectKey = 1028,
SubmitToOriginKey = 1049,
DataDirKey = 1035, DataDirKey = 1035,
TitleKey = 1037, TitleKey = 1037,
NoTitleKey = 1038, NoTitleKey = 1038,
@ -88,6 +81,7 @@ public:
DmiKey = 1049, DmiKey = 1049,
HugePageSizeKey = 1050, HugePageSizeKey = 1050,
PauseOnActiveKey = 1051, PauseOnActiveKey = 1051,
SubmitToOriginKey = 1052,
// xmrig common // xmrig common
CPUPriorityKey = 1021, CPUPriorityKey = 1021,

26
src/base/net/stratum/Pool.cpp

@ -1,13 +1,7 @@
/* XMRig /* XMRig
* Copyright 2010 Jeff Garzik <jgarzik@pobox.com> * Copyright (c) 2019 Howard Chu <https://github.com/hyc>
* Copyright 2012-2014 pooler <pooler@litecoinpool.org> * Copyright (c) 2018-2020 SChernykh <https://github.com/SChernykh>
* Copyright 2014 Lucas Jones <https://github.com/lucasjones> * Copyright (c) 2016-2020 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
* Copyright 2017-2019 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
* Copyright 2019 Howard Chu <https://github.com/hyc>
* Copyright 2018-2020 SChernykh <https://github.com/SChernykh>
* Copyright 2016-2020 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -79,8 +73,8 @@ const char *Pool::kNicehash = "nicehash";
const char *Pool::kPass = "pass"; const char *Pool::kPass = "pass";
const char *Pool::kRigId = "rig-id"; const char *Pool::kRigId = "rig-id";
const char *Pool::kSelfSelect = "self-select"; const char *Pool::kSelfSelect = "self-select";
const char* Pool::kSubmitToOrigin = "submit-to-origin";
const char *Pool::kSOCKS5 = "socks5"; const char *Pool::kSOCKS5 = "socks5";
const char *Pool::kSubmitToOrigin = "submit-to-origin";
const char *Pool::kTls = "tls"; const char *Pool::kTls = "tls";
const char *Pool::kUrl = "url"; const char *Pool::kUrl = "url";
const char *Pool::kUser = "user"; const char *Pool::kUser = "user";
@ -138,8 +132,8 @@ xmrig::Pool::Pool(const rapidjson::Value &object) :
setKeepAlive(Json::getValue(object, kKeepalive)); setKeepAlive(Json::getValue(object, kKeepalive));
if (m_daemon.isValid()) { if (m_daemon.isValid()) {
m_mode = MODE_SELF_SELECT; m_mode = MODE_SELF_SELECT;
m_submit_to_origin = Json::getBool(object, kSubmitToOrigin, false); m_submitToOrigin = Json::getBool(object, kSubmitToOrigin, m_submitToOrigin);
} }
else if (Json::getBool(object, kDaemon)) { else if (Json::getBool(object, kDaemon)) {
m_mode = MODE_DAEMON; m_mode = MODE_DAEMON;
@ -239,7 +233,7 @@ xmrig::IClient *xmrig::Pool::createClient(int id, IClientListener *listener) con
client = new DaemonClient(id, listener); client = new DaemonClient(id, listener);
} }
else if (m_mode == MODE_SELF_SELECT) { else if (m_mode == MODE_SELF_SELECT) {
client = new SelfSelectClient(id, Platform::userAgent(), listener, m_submit_to_origin); client = new SelfSelectClient(id, Platform::userAgent(), listener, m_submitToOrigin);
} }
# endif # endif
# ifdef XMRIG_ALGO_KAWPOW # ifdef XMRIG_ALGO_KAWPOW
@ -302,8 +296,8 @@ rapidjson::Value xmrig::Pool::toJSON(rapidjson::Document &doc) const
obj.AddMember(StringRef(kDaemonPollInterval), m_pollInterval, allocator); obj.AddMember(StringRef(kDaemonPollInterval), m_pollInterval, allocator);
} }
else { else {
obj.AddMember(StringRef(kSelfSelect), m_daemon.url().toJSON(), allocator); obj.AddMember(StringRef(kSelfSelect), m_daemon.url().toJSON(), allocator);
obj.AddMember(StringRef(kSubmitToOrigin), m_submit_to_origin, allocator); obj.AddMember(StringRef(kSubmitToOrigin), m_submitToOrigin, allocator);
} }
return obj; return obj;
@ -322,7 +316,7 @@ std::string xmrig::Pool::printableName() const
} }
if (m_mode == MODE_SELF_SELECT) { if (m_mode == MODE_SELF_SELECT) {
out += std::string(" self-select ") + CSI "1;" + std::to_string(m_daemon.isTLS() ? 32 : 36) + "m" + m_daemon.url().data() + WHITE_BOLD_S + (m_submit_to_origin ? " submit-to-origin" : "") + CLEAR; out += std::string(" self-select ") + CSI "1;" + std::to_string(m_daemon.isTLS() ? 32 : 36) + "m" + m_daemon.url().data() + WHITE_BOLD_S + (m_submitToOrigin ? " submit-to-origin" : "") + CLEAR;
} }
return out; return out;

16
src/base/net/stratum/Pool.h

@ -1,13 +1,7 @@
/* XMRig /* XMRig
* Copyright 2010 Jeff Garzik <jgarzik@pobox.com> * Copyright (c) 2019 Howard Chu <https://github.com/hyc>
* Copyright 2012-2014 pooler <pooler@litecoinpool.org> * Copyright (c) 2018-2020 SChernykh <https://github.com/SChernykh>
* Copyright 2014 Lucas Jones <https://github.com/lucasjones> * Copyright (c) 2016-2020 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
* Copyright 2019 Howard Chu <https://github.com/hyc>
* Copyright 2018-2020 SChernykh <https://github.com/SChernykh>
* Copyright 2016-2020 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -72,8 +66,8 @@ public:
static const char *kPass; static const char *kPass;
static const char *kRigId; static const char *kRigId;
static const char *kSelfSelect; static const char *kSelfSelect;
static const char* kSubmitToOrigin;
static const char *kSOCKS5; static const char *kSOCKS5;
static const char *kSubmitToOrigin;
static const char *kTls; static const char *kTls;
static const char *kUrl; static const char *kUrl;
static const char *kUser; static const char *kUser;
@ -145,6 +139,7 @@ private:
void setKeepAlive(const rapidjson::Value &value); void setKeepAlive(const rapidjson::Value &value);
Algorithm m_algorithm; Algorithm m_algorithm;
bool m_submitToOrigin = false;
Coin m_coin; Coin m_coin;
int m_keepAlive = 0; int m_keepAlive = 0;
Mode m_mode = MODE_POOL; Mode m_mode = MODE_POOL;
@ -157,7 +152,6 @@ private:
uint64_t m_pollInterval = kDefaultPollInterval; uint64_t m_pollInterval = kDefaultPollInterval;
Url m_daemon; Url m_daemon;
Url m_url; Url m_url;
bool m_submit_to_origin = false;
# ifdef XMRIG_FEATURE_BENCHMARK # ifdef XMRIG_FEATURE_BENCHMARK
std::shared_ptr<BenchConfig> m_benchmark; std::shared_ptr<BenchConfig> m_benchmark;

50
src/base/net/stratum/SelfSelectClient.cpp

@ -1,13 +1,8 @@
/* XMRig /* XMRig
* Copyright 2010 Jeff Garzik <jgarzik@pobox.com> * Copyright (c) 2019 jtgrassie <https://github.com/jtgrassie>
* Copyright 2012-2014 pooler <pooler@litecoinpool.org> * Copyright (c) 2021 Hansie Odendaal <https://github.com/hansieodendaal>
* Copyright 2014 Lucas Jones <https://github.com/lucasjones> * Copyright (c) 2018-2021 SChernykh <https://github.com/SChernykh>
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet> * Copyright (c) 2016-2021 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
* Copyright 2019 jtgrassie <https://github.com/jtgrassie>
* Copyright 2018-2020 SChernykh <https://github.com/SChernykh>
* Copyright 2016-2020 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -57,8 +52,9 @@ static const char * const required_fields[] = { kBlocktemplateBlob, kBlockhashin
} /* namespace xmrig */ } /* namespace xmrig */
xmrig::SelfSelectClient::SelfSelectClient(int id, const char *agent, IClientListener *listener, bool submit_to_origin) : xmrig::SelfSelectClient::SelfSelectClient(int id, const char *agent, IClientListener *listener, bool submitToOrigin) :
m_listener(listener), m_submit_to_origin(submit_to_origin) m_submitToOrigin(submitToOrigin),
m_listener(listener)
{ {
m_httpListener = std::make_shared<HttpListener>(this); m_httpListener = std::make_shared<HttpListener>(this);
m_client = new Client(id, agent, this); m_client = new Client(id, agent, this);
@ -71,6 +67,16 @@ xmrig::SelfSelectClient::~SelfSelectClient()
} }
int64_t xmrig::SelfSelectClient::submit(const JobResult &result)
{
if (m_submitToOrigin) {
submitOriginDaemon(result);
}
return m_client->submit(result);
}
void xmrig::SelfSelectClient::tick(uint64_t now) void xmrig::SelfSelectClient::tick(uint64_t now)
{ {
m_client->tick(now); m_client->tick(now);
@ -205,7 +211,7 @@ void xmrig::SelfSelectClient::submitBlockTemplate(rapidjson::Value &result)
auto &allocator = doc.GetAllocator(); auto &allocator = doc.GetAllocator();
m_blocktemplate = Json::getString(result,kBlocktemplateBlob); m_blocktemplate = Json::getString(result,kBlocktemplateBlob);
m_blockdiff = Json::getUint64(result, kDifficulty); m_blockDiff = Json::getUint64(result, kDifficulty);
Value params(kObjectType); Value params(kObjectType);
params.AddMember(StringRef(kId), m_job.clientId().toJSON(), allocator); params.AddMember(StringRef(kId), m_job.clientId().toJSON(), allocator);
@ -241,27 +247,21 @@ void xmrig::SelfSelectClient::submitBlockTemplate(rapidjson::Value &result)
}); });
} }
int64_t xmrig::SelfSelectClient::submit(const JobResult& result)
{
if (m_submit_to_origin) {
submitOriginDaemon(result);
}
return m_client->submit(result);
}
void xmrig::SelfSelectClient::submitOriginDaemon(const JobResult& result) void xmrig::SelfSelectClient::submitOriginDaemon(const JobResult& result)
{ {
if (result.diff == 0 || m_blockdiff == 0) { if (result.diff == 0 || m_blockDiff == 0) {
return; return;
} }
if (result.actualDiff() < m_blockdiff) { if (result.actualDiff() < m_blockDiff) {
m_origin_not_submitted++; m_originNotSubmitted++;
LOG_DEBUG("%s " RED_BOLD("not submitted to origin daemon, difficulty too low") " (%" PRId64 "/%" PRId64 ") " LOG_DEBUG("%s " RED_BOLD("not submitted to origin daemon, difficulty too low") " (%" PRId64 "/%" PRId64 ") "
BLACK_BOLD(" diff ") BLACK_BOLD("%" PRIu64) BLACK_BOLD(" vs. ") BLACK_BOLD("%" PRIu64), BLACK_BOLD(" diff ") BLACK_BOLD("%" PRIu64) BLACK_BOLD(" vs. ") BLACK_BOLD("%" PRIu64),
Tags::origin(), m_origin_submitted, m_origin_not_submitted, m_blockdiff, result.actualDiff()); Tags::origin(), m_originSubmitted, m_originNotSubmitted, m_blockDiff, result.actualDiff());
return; return;
} }
char *data = m_blocktemplate.data(); char *data = m_blocktemplate.data();
Cvt::toHex(data + 78, 8, reinterpret_cast<const uint8_t*>(&result.nonce), 4); Cvt::toHex(data + 78, 8, reinterpret_cast<const uint8_t*>(&result.nonce), 4);
@ -277,10 +277,10 @@ void xmrig::SelfSelectClient::submitOriginDaemon(const JobResult& result)
FetchRequest req(HTTP_POST, pool().daemon().host(), pool().daemon().port(), "/json_rpc", doc, pool().daemon().isTLS(), isQuiet()); FetchRequest req(HTTP_POST, pool().daemon().host(), pool().daemon().port(), "/json_rpc", doc, pool().daemon().isTLS(), isQuiet());
fetch(tag(), std::move(req), m_httpListener); fetch(tag(), std::move(req), m_httpListener);
m_origin_submitted++; m_originSubmitted++;
LOG_INFO("%s " GREEN_BOLD("submitted to origin daemon") " (%" PRId64 "/%" PRId64 ") " LOG_INFO("%s " GREEN_BOLD("submitted to origin daemon") " (%" PRId64 "/%" PRId64 ") "
" diff " WHITE("%" PRIu64) " vs. " WHITE("%" PRIu64), " diff " WHITE("%" PRIu64) " vs. " WHITE("%" PRIu64),
Tags::origin(), m_origin_submitted, m_origin_not_submitted, m_blockdiff, result.actualDiff(), result.diff); Tags::origin(), m_originSubmitted, m_originNotSubmitted, m_blockDiff, result.actualDiff(), result.diff);
// Ensure that the latest block template is available after block submission // Ensure that the latest block template is available after block submission
getBlockTemplate(); getBlockTemplate();

49
src/base/net/stratum/SelfSelectClient.h

@ -1,13 +1,8 @@
/* XMRig /* XMRig
* Copyright 2010 Jeff Garzik <jgarzik@pobox.com> * Copyright (c) 2019 jtgrassie <https://github.com/jtgrassie>
* Copyright 2012-2014 pooler <pooler@litecoinpool.org> * Copyright (c) 2021 Hansie Odendaal <https://github.com/hansieodendaal>
* Copyright 2014 Lucas Jones <https://github.com/lucasjones> * Copyright (c) 2018-2021 SChernykh <https://github.com/SChernykh>
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet> * Copyright (c) 2016-2021 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
* Copyright 2019 jtgrassie <https://github.com/jtgrassie>
* Copyright 2018-2020 SChernykh <https://github.com/SChernykh>
* Copyright 2016-2020 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -31,11 +26,10 @@
#include "base/kernel/interfaces/IClientListener.h" #include "base/kernel/interfaces/IClientListener.h"
#include "base/net/http/HttpListener.h" #include "base/net/http/HttpListener.h"
#include "base/net/stratum/Job.h" #include "base/net/stratum/Job.h"
#include "base/tools/Object.h"
#include <memory>
#include <map> #include <map>
#include <memory>
namespace xmrig { namespace xmrig {
@ -46,7 +40,7 @@ class SelfSelectClient : public IClient, public IClientListener, public IHttpLis
public: public:
XMRIG_DISABLE_COPY_MOVE_DEFAULT(SelfSelectClient) XMRIG_DISABLE_COPY_MOVE_DEFAULT(SelfSelectClient)
SelfSelectClient(int id, const char *agent, IClientListener *listener, bool submit_to_origin); SelfSelectClient(int id, const char *agent, IClientListener *listener, bool submitToOrigin);
~SelfSelectClient() override; ~SelfSelectClient() override;
protected: protected:
@ -66,7 +60,6 @@ protected:
inline int64_t send(const rapidjson::Value &obj, Callback callback) override { return m_client->send(obj, callback); } inline int64_t send(const rapidjson::Value &obj, Callback callback) override { return m_client->send(obj, callback); }
inline int64_t send(const rapidjson::Value &obj) override { return m_client->send(obj); } inline int64_t send(const rapidjson::Value &obj) override { return m_client->send(obj); }
inline int64_t sequence() const override { return m_client->sequence(); } inline int64_t sequence() const override { return m_client->sequence(); }
inline int64_t submit(const JobResult &result) override;
inline void connect() override { m_client->connect(); } inline void connect() override { m_client->connect(); }
inline void connect(const Pool &pool) override { m_client->connect(pool); } inline void connect(const Pool &pool) override { m_client->connect(pool); }
inline void deleteLater() override { m_client->deleteLater(); } inline void deleteLater() override { m_client->deleteLater(); }
@ -78,6 +71,7 @@ protected:
inline void setRetries(int retries) override { m_client->setRetries(retries); m_retries = retries; } inline void setRetries(int retries) override { m_client->setRetries(retries); m_retries = retries; }
inline void setRetryPause(uint64_t ms) override { m_client->setRetryPause(ms); m_retryPause = ms; } inline void setRetryPause(uint64_t ms) override { m_client->setRetryPause(ms); m_retryPause = ms; }
int64_t submit(const JobResult &result) override;
void tick(uint64_t now) override; void tick(uint64_t now) override;
// IClientListener // IClientListener
@ -106,25 +100,26 @@ private:
void retry(); void retry();
void setState(State state); void setState(State state);
void submitBlockTemplate(rapidjson::Value &result); void submitBlockTemplate(rapidjson::Value &result);
inline void submitOriginDaemon(const JobResult &result); void submitOriginDaemon(const JobResult &result);
bool m_active = false;
bool m_quiet = false; bool m_active = false;
bool m_quiet = false;
const bool m_submitToOrigin;
IClient *m_client; IClient *m_client;
IClientListener *m_listener; IClientListener *m_listener;
int m_retries = 5; int m_retries = 5;
int64_t m_failures = 0; int64_t m_failures = 0;
int64_t m_sequence = 1; int64_t m_sequence = 1;
Job m_job; Job m_job;
State m_state = IdleState; State m_state = IdleState;
String m_blocktemplate;
bool m_submit_to_origin = false;
std::map<int64_t, SubmitResult> m_results; std::map<int64_t, SubmitResult> m_results;
std::shared_ptr<IHttpListener> m_httpListener; std::shared_ptr<IHttpListener> m_httpListener;
uint64_t m_retryPause = 5000; String m_blocktemplate;
uint64_t m_timestamp = 0; uint64_t m_blockDiff = 0;
uint64_t m_blockdiff = 0; uint64_t m_originNotSubmitted = 0;
uint64_t m_origin_submitted = 0; uint64_t m_originSubmitted = 0;
uint64_t m_origin_not_submitted = 0; uint64_t m_retryPause = 5000;
uint64_t m_timestamp = 0;
}; };

10
src/core/config/Config_platform.h

@ -1,12 +1,6 @@
/* XMRig /* XMRig
* Copyright 2010 Jeff Garzik <jgarzik@pobox.com> * Copyright (c) 2018-2021 SChernykh <https://github.com/SChernykh>
* Copyright 2012-2014 pooler <pooler@litecoinpool.org> * Copyright (c) 2016-2021 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* Copyright 2014 Lucas Jones <https://github.com/lucasjones>
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
* Copyright 2018-2020 SChernykh <https://github.com/SChernykh>
* Copyright 2016-2020 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

15
src/core/config/usage.h

@ -1,12 +1,11 @@
/* XMRig /* XMRig
* Copyright 2010 Jeff Garzik <jgarzik@pobox.com> * Copyright (c) 2010 Jeff Garzik <jgarzik@pobox.com>
* Copyright 2012-2014 pooler <pooler@litecoinpool.org> * Copyright (c) 2012-2014 pooler <pooler@litecoinpool.org>
* Copyright 2014 Lucas Jones <https://github.com/lucasjones> * Copyright (c) 2014 Lucas Jones <https://github.com/lucasjones>
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet> * Copyright (c) 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
* Copyright 2016 Jay D Dee <jayddee246@gmail.com> * Copyright (c) 2016 Jay D Dee <jayddee246@gmail.com>
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt> * Copyright (c) 2018-2021 SChernykh <https://github.com/SChernykh>
* Copyright 2018-2020 SChernykh <https://github.com/SChernykh> * Copyright (c) 2016-2021 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* Copyright 2016-2020 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

Loading…
Cancel
Save