From ae15b9f5ac71012add76c65fb5ee860d99a4c3cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ben=20Gr=C3=A4f?= Date: Thu, 14 Jun 2018 21:14:36 +0200 Subject: [PATCH] Add Masari v7 support (#133) --- src/Options.cpp | 4 ++-- src/PowVariant.h | 11 ++++++++--- src/config.json | 4 ++-- src/crypto/CryptoNight.cpp | 4 ++++ src/default_config.json | 2 +- src/net/Job.cpp | 4 ++++ src/version.h | 2 +- 7 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/Options.cpp b/src/Options.cpp index 5482620e..2cbe5e05 100644 --- a/src/Options.cpp +++ b/src/Options.cpp @@ -281,7 +281,8 @@ constexpr static const char *pow_variant_names[] = { "1", "ipbc", "alloy", - "xtl" + "xtl", + "msr" }; Options *Options::parse(int argc, char **argv) @@ -1022,7 +1023,6 @@ bool Options::parsePowVariant(const char *powVariant) break; } - if (i == ARRAY_SIZE(pow_variant_names) - 1 && !strcmp(powVariant, "tube")) { m_powVariant = POW_IPBC; break; diff --git a/src/PowVariant.h b/src/PowVariant.h index 73d5583d..18dd2f96 100644 --- a/src/PowVariant.h +++ b/src/PowVariant.h @@ -30,6 +30,7 @@ enum PowVariant POW_IPBC, POW_ALLOY, POW_XTL, + POW_MSR, LAST_ITEM }; @@ -47,6 +48,8 @@ inline std::string getPowVariantName(PowVariant powVariant) return "alloy"; case POW_XTL: return "xtl"; + case POW_MSR: + return "msr"; case POW_AUTODETECT: default: return "-1"; @@ -95,12 +98,14 @@ inline PowVariant parseVariant(const std::string variant) powVariant = PowVariant::POW_V0; } else if (variant == "1") { powVariant = PowVariant::POW_V1; - } else if (variant == "ipbc") { + } else if (variant == "ipbc" || variant == "tube") { powVariant = PowVariant::POW_IPBC; - } else if (variant == "alloy") { + } else if (variant == "xao" || variant == "alloy") { powVariant = PowVariant::POW_ALLOY; - } else if (variant == "xtl") { + } else if (variant == "xtl" || variant == "stellite") { powVariant = PowVariant::POW_XTL; + } else if (variant == "msr" || variant == "masari") { + powVariant = PowVariant::POW_MSR; } return powVariant; diff --git a/src/config.json b/src/config.json index c9ff1a2d..41c0fa51 100644 --- a/src/config.json +++ b/src/config.json @@ -1,5 +1,5 @@ { - "algo": "cryptonight", // cryptonight (default), cryptonight-lite or cryptopnight-heavy + "algo": "cryptonight", // cryptonight (default), cryptonight-lite or cryptonight-heavy "aesni": 0, // selection of AES-NI mode (0 auto, 1 on, 2 off) "threads": 0, // number of miner threads (not set or 0 enables automatic selection of optimal thread count) "multihash-factor": 0, // number of hash blocks to process at a time (not set or 0 enables automatic selection of optimal number of hash blocks) @@ -33,7 +33,7 @@ "use-tls" : false, // enable tls for CC communication (needs to be enabled on CC Server too) "access-token": "mySecret", // access token for CC Server (has to be the same in config_cc.json) "worker-id": null, // custom worker-id for CC Server (otherwise hostname is used) - "update-interval-s": 10 // status update interval in seconds (default: 10 min: 1) + "update-interval-s": 10, // status update interval in seconds (default: 10 min: 1) "use-remote-logging" : true, // enable remote logging on CC Server "remote-logging-max-rows" : 20 // maximum last n-log rows to send CC Server } diff --git a/src/crypto/CryptoNight.cpp b/src/crypto/CryptoNight.cpp index 0f9feac3..11f103a1 100644 --- a/src/crypto/CryptoNight.cpp +++ b/src/crypto/CryptoNight.cpp @@ -42,6 +42,8 @@ static void cryptonight_aesni(PowVariant powVersion, const uint8_t* input, size_ CryptoNightMultiHash<0x100000, POW_DEFAULT_INDEX_SHIFT, MEMORY, 0x1FFFF0, false, NUM_HASH_BLOCKS>::hash(input, size, output, ctx); } else if (powVersion == PowVariant::POW_XTL) { CryptoNightMultiHash<0x80000, POW_XLT_V4_INDEX_SHIFT, MEMORY, 0x1FFFF0, false, NUM_HASH_BLOCKS>::hashPowV2(input, size, output, ctx); + } else if (powVersion == PowVariant::POW_MSR) { + CryptoNightMultiHash<0x40000, POW_DEFAULT_INDEX_SHIFT, MEMORY, 0x1FFFF0, false, NUM_HASH_BLOCKS>::hashPowV2(input, size, output, ctx); } else { CryptoNightMultiHash<0x80000, POW_DEFAULT_INDEX_SHIFT, MEMORY, 0x1FFFF0, false, NUM_HASH_BLOCKS>::hash(input, size, output, ctx); } @@ -56,6 +58,8 @@ static void cryptonight_softaes(PowVariant powVersion, const uint8_t* input, siz CryptoNightMultiHash<0x100000, POW_DEFAULT_INDEX_SHIFT, MEMORY, 0x1FFFF0, true, NUM_HASH_BLOCKS>::hash(input, size, output, ctx); } else if (powVersion == PowVariant::POW_XTL) { CryptoNightMultiHash<0x80000, POW_XLT_V4_INDEX_SHIFT, MEMORY, 0x1FFFF0, true, NUM_HASH_BLOCKS>::hashPowV2(input, size, output, ctx); + } else if (powVersion == PowVariant::POW_MSR) { + CryptoNightMultiHash<0x40000, POW_DEFAULT_INDEX_SHIFT, MEMORY, 0x1FFFF0, true, NUM_HASH_BLOCKS>::hashPowV2(input, size, output, ctx); } else { CryptoNightMultiHash<0x80000, POW_DEFAULT_INDEX_SHIFT, MEMORY, 0x1FFFF0, true, NUM_HASH_BLOCKS>::hash(input, size, output, ctx); } diff --git a/src/default_config.json b/src/default_config.json index c9ff1a2d..de5721fb 100644 --- a/src/default_config.json +++ b/src/default_config.json @@ -33,7 +33,7 @@ "use-tls" : false, // enable tls for CC communication (needs to be enabled on CC Server too) "access-token": "mySecret", // access token for CC Server (has to be the same in config_cc.json) "worker-id": null, // custom worker-id for CC Server (otherwise hostname is used) - "update-interval-s": 10 // status update interval in seconds (default: 10 min: 1) + "update-interval-s": 10, // status update interval in seconds (default: 10 min: 1) "use-remote-logging" : true, // enable remote logging on CC Server "remote-logging-max-rows" : 20 // maximum last n-log rows to send CC Server } diff --git a/src/net/Job.cpp b/src/net/Job.cpp index e73cf0e4..07bf9bc6 100644 --- a/src/net/Job.cpp +++ b/src/net/Job.cpp @@ -146,6 +146,10 @@ PowVariant Job::powVariant() const { return POW_V1; } + else if (m_powVariant == PowVariant::POW_MSR && m_blob[0] < 7) + { + return POW_V1; + } else { return m_powVariant; diff --git a/src/version.h b/src/version.h index b30aa670..b24d4ace 100644 --- a/src/version.h +++ b/src/version.h @@ -36,7 +36,7 @@ #define APP_DESC "XMRigCC CPU miner" #define APP_COPYRIGHT "Copyright (C) 2017- BenDr0id" #endif -#define APP_VERSION "1.6.4_beta1 (based on XMRig)" +#define APP_VERSION "1.6.4_masari_v7_support (based on XMRig)" #define APP_DOMAIN "" #define APP_SITE "https://github.com/Bendr0id/xmrigCC" #define APP_KIND "cpu"