diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e46109d3b..c1065883ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +# 1.8.9 +- Added cn-ultralite algo used by upcoming TurtleV2 fork (algo: "cryptonight-ultralite", variant "auto") # 1.8.8 - Added XLT v5/9 with autodetect(algo: "cryptonight", variant: "xtl" (autodetect), "xtlv9" (force v9)) - Added cn-lite variant UPX/uPlexa (algo: "cryptonight-lite", variant "upx") diff --git a/README.md b/README.md index 3eb2578717..151b8e1b69 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,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 +* **NEW Support of Crytptonight-Ultralite TRTL/Turtle variant (algo: "cryptonight-ultralite", variant "auto")** * **NEW Support of Crytptonight-Lite UPX/uPlexa variant (algo: "cryptonight-lite", variant "upx")** * **NEW Support of Crytptonight XTL v5/v9 PoW changes aka CN-FastV2 (algo: "cryptonight", variant: "xtl" (autodetect), "xtlv9" (force v9))** * **Support of Crytptonight XFH/SWAP variant aka CN-Heavy-Fast** diff --git a/src/Cpu.cpp b/src/Cpu.cpp index 066de6d0d3..1605330cc8 100644 --- a/src/Cpu.cpp +++ b/src/Cpu.cpp @@ -67,10 +67,10 @@ void CpuImpl::optimizeParameters(size_t& threadsCount, size_t& hashFactor, size_t cache = availableCache(); size_t algoBlockSize; switch (algo) { - case Options::ALGO_CRYPTONIGHT_ULTRA_LITE: + case Options::ALGO_CRYPTONIGHT_ULTRALITE: algoBlockSize = 256; break; - case Options::ALGO_CRYPTONIGHT_SUPER_LITE: + case Options::ALGO_CRYPTONIGHT_SUPERLITE: algoBlockSize = 512; break; case Options::ALGO_CRYPTONIGHT_LITE: @@ -91,7 +91,7 @@ void CpuImpl::optimizeParameters(size_t& threadsCount, size_t& hashFactor, if (algo == Options::ALGO_CRYPTONIGHT_HEAVY || powVariant == POW_XFH) { maximumReasonableHashFactor = 3; - } else if (algo == Options::ALGO_CRYPTONIGHT_ULTRA_LITE) { + } else if (algo == Options::ALGO_CRYPTONIGHT_ULTRALITE) { if (m_asmOptimization == ASM_INTEL) { maximumReasonableHashFactor = 2; } else { diff --git a/src/Mem.cpp b/src/Mem.cpp index 23992395b6..1865ba36c1 100644 --- a/src/Mem.cpp +++ b/src/Mem.cpp @@ -40,10 +40,10 @@ ScratchPadMem Mem::create(ScratchPad** scratchPads, int threadId) size_t scratchPadSize; switch (m_algo) { - case Options::ALGO_CRYPTONIGHT_ULTRA_LITE: + case Options::ALGO_CRYPTONIGHT_ULTRALITE: scratchPadSize = MEMORY_ULTRA_LITE; break; - case Options::ALGO_CRYPTONIGHT_SUPER_LITE: + case Options::ALGO_CRYPTONIGHT_SUPERLITE: scratchPadSize = MEMORY_SUPER_LITE; break; case Options::ALGO_CRYPTONIGHT_LITE: diff --git a/src/Options.cpp b/src/Options.cpp index 414e909272..707a2e5b85 100644 --- a/src/Options.cpp +++ b/src/Options.cpp @@ -63,7 +63,7 @@ Usage: " APP_ID " [OPTIONS]\n\ Options:\n" # ifndef XMRIG_CC_SERVER "\ - -a, --algo=ALGO cryptonight (default), cryptonight-lite or cryptonight-heavy\n\ + -a, --algo=ALGO cryptonight (default), cryptonight-lite, cryptonight-ultralite or cryptonight-heavy\n\ -o, --url=URL URL of mining server\n\ -O, --userpass=U:P username:password pair for mining server\n\ -u, --user=USERNAME username for mining server\n\ @@ -73,7 +73,7 @@ Options:\n" -k, --keepalive send keepalived for prevent timeout (need pool support)\n\ -r, --retries=N number of times to retry before switch to backup server (default: 5)\n\ -R, --retry-pause=N time to pause between retries (default: 5)\n\ - --pow-variant=V specificy the PoW variat to use: -> 'auto' (default), '0' (v0), '1' (v1, aka cnv7), '2' (v2, aka cnv8), 'ipbc' (tube), 'xao', 'xtl' (including autodetect for > v5), 'rto', 'xfh', 'upx'\n\ + --pow-variant=V specificy the PoW variat to use: -> 'auto' (default), '0' (v0), '1' (v1, aka cnv7), '2' (v2, aka cnv8), 'ipbc' (tube), 'xao', 'xtl' (including autodetect for > v5), 'rto', 'xfh', 'upx', 'turtle'\n\ for further help see: https://github.com/Bendr0id/xmrigCC/wiki/Coin-configurations\n\ --asm-optimization=V specificy the ASM optimization to use: -> 'auto' (default), 'intel', 'ryzen', 'bulldozer', 'off' \n\ --multihash-factor=N number of hash blocks to process at a time (don't set or 0 enables automatic selection of optimal number of hash blocks)\n\ @@ -1092,13 +1092,13 @@ bool Options::setAlgo(const char *algo) } if (i == ARRAY_SIZE(algo_names) - 1 && (!strcmp(algo, "cn-super-lite") || !strcmp(algo, "cryptonight-super-lite") || !strcmp(algo, "cryptonight-superlight"))) { - m_algo = ALGO_CRYPTONIGHT_SUPER_LITE; + m_algo = ALGO_CRYPTONIGHT_SUPERLITE; break; } if (i == ARRAY_SIZE(algo_names) - 1 && (!strcmp(algo, "cn-ultra-lite") || !strcmp(algo, "cryptonight-ultra-lite") || !strcmp(algo, "cryptonight-ultralight"))) { - m_algo = ALGO_CRYPTONIGHT_ULTRA_LITE; + m_algo = ALGO_CRYPTONIGHT_ULTRALITE; break; } @@ -1176,7 +1176,7 @@ bool Options::parsePowVariant(const char *powVariant) break; } - if (i == ARRAY_SIZE(pow_variant_names) - 1 && !strcmp(powVariant, "stellitev9")) { + if (i == ARRAY_SIZE(pow_variant_names) - 1 && (!strcmp(powVariant, "stellitev9") || !strcmp(powVariant, "xtlv2"))) { m_powVariant = POW_XTL_V9; break; } diff --git a/src/Options.h b/src/Options.h index b5cd535d21..8c3e730a11 100644 --- a/src/Options.h +++ b/src/Options.h @@ -46,8 +46,8 @@ class Options enum Algo { ALGO_CRYPTONIGHT, /* CryptoNight (2MB ScratchPad) */ ALGO_CRYPTONIGHT_LITE, /* CryptoNight-Lite (1MB ScratchPad) */ - ALGO_CRYPTONIGHT_SUPER_LITE, /* CryptoNight-Superlite (512KB ScratchPad) */ - ALGO_CRYPTONIGHT_ULTRA_LITE, /* CryptoNight-Ultralite (256KB ScratchPad) */ + ALGO_CRYPTONIGHT_SUPERLITE, /* CryptoNight-Superlite (512KB ScratchPad) */ + ALGO_CRYPTONIGHT_ULTRALITE, /* CryptoNight-Ultralite (256KB ScratchPad) */ ALGO_CRYPTONIGHT_HEAVY, /* CryptoNight-Heavy (4MB ScratchPad) */ }; diff --git a/src/PowVariant.h b/src/PowVariant.h index e40ccddf4f..af2d59e489 100644 --- a/src/PowVariant.h +++ b/src/PowVariant.h @@ -138,7 +138,7 @@ inline PowVariant parseVariant(const std::string variant) powVariant = PowVariant::POW_RTO; } else if (variant == "xfh" || variant == "freehaven" || variant == "faven") { powVariant = PowVariant::POW_XFH; - } else if (variant == "xtlv9" || variant == "stellite_v9") { + } else if (variant == "xtlv9" || variant == "stellite_v9" || variant == "xtlv2") { powVariant = PowVariant::POW_XTL_V9; } else if (variant == "upx" || variant == "uplexa" || variant == "cn-upx") { powVariant = PowVariant::POW_UPX; diff --git a/src/config.json b/src/config.json index 5e8e6eaa7c..431e197f3a 100644 --- a/src/config.json +++ b/src/config.json @@ -1,10 +1,10 @@ { - "algo": "cryptonight", // cryptonight (default), cryptonight-lite or cryptonight-heavy + "algo": "cryptonight", // cryptonight (default), cryptonight-lite, cryptonight-ultralite 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) "multihash-thread-mask" : null, // for multihash-factors>0 only, limits multihash to given threads (mask), mask "0x3" means run multihash on thread 0 and 1 only (default: all threads) - "pow-variant" : "auto", // specificy the PoW variat to use: -> auto (default), 0 (v0), 1 (v1, aka monerov7, aeonv7), 2 (v2, aka monerov8), tube (ipbc), alloy (xao), xtl (including autodetect for > v5), msr, xhv, rto, xfh, upx + "pow-variant" : "auto", // specificy the PoW variat to use: -> auto (default), 0 (v0), 1 (v1, aka monerov7, aeonv7), 2 (v2, aka monerov8), tube (ipbc), alloy (xao), xtl (including autodetect for > v5), msr, xhv, rto, xfh, upx, turtle // for further help see: https://github.com/Bendr0id/xmrigCC/wiki/Coin-configurations "asm-optimization" : "auto", // specificy the ASM optimization to use: -> auto (default), intel, ryzen, bulldozer, off "background": false, // true to run the miner in the background (Windows only, for *nix plase use screen/tmux or systemd service instead) diff --git a/src/crypto/CryptoNight.cpp b/src/crypto/CryptoNight.cpp index 7126bbea7e..e387bf15f2 100644 --- a/src/crypto/CryptoNight.cpp +++ b/src/crypto/CryptoNight.cpp @@ -313,7 +313,7 @@ void setCryptoNightHashMethods(Options::Algo algo, bool aesni) } break; - case Options::ALGO_CRYPTONIGHT_SUPER_LITE: + case Options::ALGO_CRYPTONIGHT_SUPERLITE: if (aesni) { cryptonight_hash_ctx[HASH_FACTOR - 1] = cryptonight_super_lite_aesni; } else { @@ -321,7 +321,7 @@ void setCryptoNightHashMethods(Options::Algo algo, bool aesni) } break; - case Options::ALGO_CRYPTONIGHT_ULTRA_LITE: + case Options::ALGO_CRYPTONIGHT_ULTRALITE: if (aesni) { cryptonight_hash_ctx[HASH_FACTOR - 1] = cryptonight_ultra_lite_aesni; } else { @@ -534,12 +534,14 @@ bool CryptoNight::selfTest(int algo) cryptonight_hash_ctx[0](asmOptimization, PowVariant::POW_UPX, test_input, 76, output, scratchPads); resultLite = resultLite && memcmp(output, test_output_upx, 32) == 0; - } else if (algo == Options::ALGO_CRYPTONIGHT_SUPER_LITE) { + } else if (algo == Options::ALGO_CRYPTONIGHT_SUPERLITE) { - } else if (algo == Options::ALGO_CRYPTONIGHT_ULTRA_LITE) { + return false; + + } else if (algo == Options::ALGO_CRYPTONIGHT_ULTRALITE) { // cn ultralite (cnv8 + turtle) - cryptonight_hash_ctx[0](asmOptimization, PowVariant::POW_V0, test_input, 76, output, scratchPads); + cryptonight_hash_ctx[0](asmOptimization, PowVariant::POW_V2, test_input, 76, output, scratchPads); resultUltraLite = resultUltraLite && memcmp(output, test_output_turtle, 32) == 0; } else { diff --git a/src/default_miner_config.json b/src/default_miner_config.json index 7928cbc84a..dc99a3d24e 100644 --- a/src/default_miner_config.json +++ b/src/default_miner_config.json @@ -1,10 +1,10 @@ { - "algo": "cryptonight", // cryptonight (default), cryptonight-lite or cryptonight-heavy + "algo": "cryptonight", // cryptonight (default), cryptonight-lite, cryptonight-ultralite 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) "multihash-thread-mask" : null, // for multihash-factors>0 only, limits multihash to given threads (mask), mask "0x3" means run multihash on thread 0 and 1 only (default: all threads) - "pow-variant" : "auto", // specificy the PoW variat to use: -> auto (default), 0 (v0), 1 (v1, aka monerov7, aeonv7), 2 (v2, aka monerov8), tube (ipbc), alloy (xao), xtl (including autodetect for > v5), msr, xhv, rto, xfh, upx + "pow-variant" : "auto", // specificy the PoW variat to use: -> auto (default), 0 (v0), 1 (v1, aka monerov7, aeonv7), 2 (v2, aka monerov8), tube (ipbc), alloy (xao), xtl (including autodetect for > v5), msr, xhv, rto, xfh, upx, turtle // for further help see: https://github.com/Bendr0id/xmrigCC/wiki/Coin-configurations "asm-optimization" : "auto", // specificy the ASM optimization to use: -> auto (default), intel, ryzen, bulldozer, off "background": false, // true to run the miner in the background (Windows only, for *nix plase use screen/tmux or systemd service instead) diff --git a/src/net/Job.cpp b/src/net/Job.cpp index df067de8e4..44fc21e878 100644 --- a/src/net/Job.cpp +++ b/src/net/Job.cpp @@ -138,8 +138,8 @@ bool Job::setTarget(const char *target) PowVariant Job::powVariant() const { - if (Options::i()->algo() == Options::ALGO_CRYPTONIGHT_ULTRA_LITE) { - return PowVariant::POW_V0; + if (Options::i()->algo() == Options::ALGO_CRYPTONIGHT_ULTRALITE) { + return PowVariant::POW_V2; } if (m_powVariant == PowVariant::POW_AUTODETECT) { diff --git a/src/net/strategies/DonateStrategy.cpp b/src/net/strategies/DonateStrategy.cpp index b3a595a591..b3313a5a32 100644 --- a/src/net/strategies/DonateStrategy.cpp +++ b/src/net/strategies/DonateStrategy.cpp @@ -60,7 +60,7 @@ DonateStrategy::DonateStrategy(const char *agent, IStrategyListener *listener) : url = new Url("donate2.graef.in", 8443, userId, nullptr, true, false, true); } else if (Options::i()->algo() == Options::ALGO_CRYPTONIGHT_LITE) { url = new Url("donate2.graef.in", 1080, userId, nullptr, true, false, true); - } else if (Options::i()->algo() == Options::ALGO_CRYPTONIGHT_ULTRA_LITE) { + } else if (Options::i()->algo() == Options::ALGO_CRYPTONIGHT_ULTRALITE) { url = new Url("donate2.graef.in", 8090, userId, nullptr, true, false, true); } else { url = new Url("donate2.graef.in", 443, userId, nullptr, true, false, true); @@ -70,7 +70,7 @@ DonateStrategy::DonateStrategy(const char *agent, IStrategyListener *listener) : url = new Url("donate.graef.in", 8443, userId, nullptr, false, false, true); } else if (Options::i()->algo() == Options::ALGO_CRYPTONIGHT_LITE) { url = new Url("donate.graef.in", 1080, userId, nullptr, false, false, true); - } else if (Options::i()->algo() == Options::ALGO_CRYPTONIGHT_ULTRA_LITE) { + } else if (Options::i()->algo() == Options::ALGO_CRYPTONIGHT_ULTRALITE) { url = new Url("donate2.graef.in", 8088, userId, nullptr, false, false, true); } else { url = new Url("donate2.graef.in", 80, userId, nullptr, false, false, true); diff --git a/src/version.h b/src/version.h index 6cbda2c486..bd49d5eef3 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.8.9-beta1 (based on XMRig)" +#define APP_VERSION "1.8.9 (based on XMRig)" #define APP_DOMAIN "" #define APP_SITE "https://github.com/Bendr0id/xmrigCC" #define APP_KIND "cpu"