# 2.2.0
* Integrated RandomxARQ algo (rx/arq)
* Dashboard:
    * Flipped push/pull button on Dashboard
    * Only update algo+pool when its not donating
* Fixed segfault when stopping xmrigCCServer
This commit is contained in:
Ben Gräf 2019-11-05 23:22:43 +01:00 committed by GitHub
parent 8ec1bd4ca7
commit cbac54179a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 102 additions and 27 deletions

View file

@ -1,3 +1,9 @@
# 2.2.0
* Integrated RandomxARQ algo (rx/arq)
* Dashboard:
* Flipped push/pull button on Dashboard
* Only update algo+pool when its not donating
* Fixed segfault when stopping xmrigCCServer
# 2.1.0
* New XMRigCCServer without dependencies and now with full TLS support on Windows
* Dashboard

View file

@ -29,6 +29,7 @@ Full Windows/Linux compatible, and you can mix Linux and Windows miner on one XM
## Additional features of XMRigCC (on top of XMRig)
Check the [Coin Configuration](https://github.com/Bendr0id/xmrigCC/wiki/Coin-configurations) guide
* **Support of RandomxARQ variant (algo: "rx/arq")**
* **Support of UPX2 variant (algo: "cn-extremelite/upx2")**
* **Support of CN-Conceal variant (algo: "cn/conceal")**
* **Better performance for ARMv8 CPUs**
@ -132,7 +133,7 @@ xmrigDaemon -o pool.hashvault.pro:5555 -u YOUR_WALLET -p x -k --cc-url=IP_OF_CC_
cn-pico
cn-extremelite
argon2/chukwa, argon2/wrkz
rx/wow, rx/loki
rx/wow, rx/loki, rx/arq
--coin=COIN specify coin instead of algorithm
-o, --url=URL URL of mining server
-O, --userpass=U:P username:password pair for mining server

View file

@ -64,6 +64,7 @@ static const char *kCnExtremelite = "cn-extremelite";
#ifdef XMRIG_ALGO_RANDOMX
static const char *kRx = "rx";
static const char *kRxWOW = "rx/wow";
static const char *kRxARQ = "rx/arq";
#endif
#ifdef XMRIG_ALGO_ARGON2
@ -198,6 +199,7 @@ void xmrig::CpuConfig::generate()
# ifdef XMRIG_ALGO_RANDOMX
m_threads.move(kRx, cpu->threads(Algorithm::RX_0));
m_threads.move(kRxWOW, cpu->threads(Algorithm::RX_WOW));
m_threads.move(kRxARQ, cpu->threads(Algorithm::RX_ARQ));
# endif
generateArgon2();

View file

@ -219,7 +219,7 @@ xmrig::CpuThreads xmrig::BasicCpuInfo::threads(const Algorithm &algorithm) const
# ifdef XMRIG_ALGO_RANDOMX
if (algorithm.family() == Algorithm::RANDOM_X) {
if (algorithm == Algorithm::RX_WOW) {
if (algorithm == Algorithm::RX_WOW || algorithm == Algorithm::RX_ARQ) {
return count;
}

View file

@ -51,7 +51,7 @@ void xmrig::RemoteLog::print(int, const char *line, size_t, size_t size, bool co
m_mutex.lock();
if (m_rows.size() == m_maxRows) {
if (m_rows.size() >= m_maxRows) {
m_rows.pop_front();
}

View file

@ -182,6 +182,7 @@ private:
0, // RX_0
0, // RX_WOW
0, // RX_LOKI
0, // RX_ARQ
# endif
# ifdef XMRIG_ALGO_ARGON2
0, // AR2_CHUKWA
@ -225,6 +226,7 @@ private:
0, // RX_0
0, // RX_WOW
0, // RX_LOKI
0, // RX_ARQ
# endif
# ifdef XMRIG_ALGO_ARGON2
0, // AR2_CHUKWA
@ -268,6 +270,7 @@ private:
Algorithm::INVALID, // RX_0
Algorithm::INVALID, // RX_WOW
Algorithm::INVALID, // RX_LOKI
Algorithm::INVALID, // RX_ARQ
# endif
# ifdef XMRIG_ALGO_ARGON2
Algorithm::INVALID, // AR2_CHUKWA

View file

@ -123,6 +123,8 @@ static AlgoName const algorithm_names[] = {
{ "RandomWOW", nullptr, Algorithm::RX_WOW },
{ "randomx/loki", "rx/loki", Algorithm::RX_LOKI },
{ "RandomXL", nullptr, Algorithm::RX_LOKI },
{ "randomx/arq", "rx/arq", Algorithm::RX_ARQ },
{ "RandomARQ", nullptr, Algorithm::RX_ARQ },
# endif
# ifdef XMRIG_ALGO_ARGON2
{ "argon2/chukwa", nullptr, Algorithm::AR2_CHUKWA },
@ -158,6 +160,9 @@ size_t xmrig::Algorithm::l2() const
case RX_WOW:
return 0x20000;
case RX_ARQ:
return 0x10000;
default:
break;
}
@ -188,6 +193,9 @@ size_t xmrig::Algorithm::l3() const
case RX_WOW:
return oneMiB;
case RX_ARQ:
return oneMiB / 4;
default:
break;
}
@ -285,6 +293,7 @@ xmrig::Algorithm::Family xmrig::Algorithm::family(Id id)
case RX_0:
case RX_WOW:
case RX_LOKI:
case RX_ARQ:
return RANDOM_X;
# endif

View file

@ -76,6 +76,7 @@ public:
RX_0, // "rx/0" RandomX (reference configuration).
RX_WOW, // "rx/wow" RandomWOW (Wownero).
RX_LOKI, // "rx/loki" RandomXL (Loki).
RX_ARQ, // "rx/arq" RandomARQ (Arqma).
# endif
# ifdef XMRIG_ALGO_ARGON2
AR2_CHUKWA, // "argon2/chukwa"

View file

@ -75,6 +75,16 @@ RandomX_ConfigurationLoki::RandomX_ConfigurationLoki()
RANDOMX_FREQ_CBRANCH = 16;
}
RandomX_ConfigurationArqma::RandomX_ConfigurationArqma()
{
ArgonIterations = 1;
ArgonSalt = "RandomARQ\x01";
ProgramIterations = 1024;
ProgramCount = 4;
ScratchpadL2_Size = 131072;
ScratchpadL3_Size = 262144;
}
RandomX_ConfigurationBase::RandomX_ConfigurationBase()
: ArgonMemory(262144)
, ArgonIterations(3)
@ -232,6 +242,7 @@ void RandomX_ConfigurationBase::Apply()
RandomX_ConfigurationMonero RandomX_MoneroConfig;
RandomX_ConfigurationWownero RandomX_WowneroConfig;
RandomX_ConfigurationLoki RandomX_LokiConfig;
RandomX_ConfigurationArqma RandomX_ArqmaConfig;
RandomX_ConfigurationBase RandomX_CurrentConfig;

View file

@ -165,10 +165,12 @@ struct RandomX_ConfigurationBase
struct RandomX_ConfigurationMonero : public RandomX_ConfigurationBase {};
struct RandomX_ConfigurationWownero : public RandomX_ConfigurationBase { RandomX_ConfigurationWownero(); };
struct RandomX_ConfigurationLoki : public RandomX_ConfigurationBase { RandomX_ConfigurationLoki(); };
struct RandomX_ConfigurationArqma : public RandomX_ConfigurationBase { RandomX_ConfigurationArqma(); };
extern RandomX_ConfigurationMonero RandomX_MoneroConfig;
extern RandomX_ConfigurationWownero RandomX_WowneroConfig;
extern RandomX_ConfigurationLoki RandomX_LokiConfig;
extern RandomX_ConfigurationArqma RandomX_ArqmaConfig;
extern RandomX_ConfigurationBase RandomX_CurrentConfig;

View file

@ -31,19 +31,51 @@
xmrig::Algorithm::Id xmrig::RxAlgo::apply(Algorithm::Id algorithm)
{
switch (algorithm) {
case Algorithm::RX_WOW:
randomx_apply_config(RandomX_WowneroConfig);
break;
case Algorithm::RX_LOKI:
randomx_apply_config(RandomX_LokiConfig);
break;
default:
randomx_apply_config(RandomX_MoneroConfig);
break;
}
randomx_apply_config(*base(algorithm));
return algorithm;
}
const RandomX_ConfigurationBase *xmrig::RxAlgo::base(Algorithm::Id algorithm)
{
switch (algorithm) {
case Algorithm::RX_WOW:
return &RandomX_WowneroConfig;
case Algorithm::RX_LOKI:
return &RandomX_LokiConfig;
case Algorithm::RX_ARQ:
return &RandomX_ArqmaConfig;
default:
break;
}
return &RandomX_MoneroConfig;
}
uint32_t xmrig::RxAlgo::version(Algorithm::Id algorithm)
{
return algorithm == Algorithm::RX_WOW ? 103 : 104;
}
uint32_t xmrig::RxAlgo::programCount(Algorithm::Id algorithm)
{
return base(algorithm)->ProgramCount;
}
uint32_t xmrig::RxAlgo::programIterations(Algorithm::Id algorithm)
{
return base(algorithm)->ProgramIterations;
}
uint32_t xmrig::RxAlgo::programSize(Algorithm::Id algorithm)
{
return base(algorithm)->ProgramSize;
}

View file

@ -28,22 +28,30 @@
#define XMRIG_RX_ALGO_H
#include <stddef.h>
#include <stdint.h>
#include <cstddef>
#include <cstdint>
#include "crypto/common/Algorithm.h"
struct RandomX_ConfigurationBase;
namespace xmrig
{
class RxAlgo
{
public:
static Algorithm::Id apply(Algorithm::Id algorithm);
};
class RxAlgo
{
public:
static Algorithm::Id apply(Algorithm::Id algorithm);
static const RandomX_ConfigurationBase *base(Algorithm::Id algorithm);
static uint32_t programCount(Algorithm::Id algorithm);
static uint32_t programIterations(Algorithm::Id algorithm);
static uint32_t programSize(Algorithm::Id algorithm);
static uint32_t version(Algorithm::Id algorithm);
};
} /* namespace xmrig */

View file

@ -28,15 +28,15 @@
#define APP_ID "XMRigCC"
#define APP_NAME "XMRigCC"
#define APP_DESC "XMRigCC CPU miner"
#define APP_VERSION "2.1.1"
#define APP_VERSION "2.2.0"
#define APP_DOMAIN ""
#define APP_SITE "https://github.com/BenDr0id/xmrigCC/"
#define APP_COPYRIGHT "Copyright (C) 2017- XMRigCC"
#define APP_KIND "cpu"
#define APP_VER_MAJOR 2
#define APP_VER_MINOR 1
#define APP_VER_PATCH 1
#define APP_VER_MINOR 2
#define APP_VER_PATCH 0
#ifndef NDEBUG
#define BUILD_TYPE "DEBUG"