diff --git a/.gitignore b/.gitignore index e9a0152c..2caaa558 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ CMakeCache.txt cmake_install.cmake Makefile cmake-build-release/ +src/crypto/asm/*.inc +src/crypto/asm/win/*.inc \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..fa5e813d --- /dev/null +++ b/.travis.yml @@ -0,0 +1,21 @@ +os: osx + +osx_image: xcode8 + +sudo: false + +language: cpp + +compiler: gcc + +before_install: + brew update + +script: + - brew install gcc libuv libmicrohttpd + - brew upgrade boost + - cmake . -DUV_LIBRARY=/usr/local/lib/libuv.a -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_SSL_LIBRARY=/usr/local/opt/openssl/lib/libssl.a -DOPENSSL_CRYPTO_LIBRARY=/usr/local/opt/openssl/lib/libcrypto.a -DBOOST_ROOT=/usr/local/lib + - make + - cp ./src/config.json . + - ./xmrigDaemon --version + - ./xmrigDaemon --help diff --git a/CHANGELOG.md b/CHANGELOG.md index 96b020b8..0fb1493d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,114 @@ +# 1.9.3 +- Fixed Multihashfactor auto detection for CN-Ultralite/Extremelite #248 +- Fixed donation address for UPX2/CN-Extremelite +# 1.9.2 +- Integrated cn-extremelite a.k.a upx2 (algo: "cryptonight-extremelite", variant: "upx2") +- Improved hashfactor autodetection for cnv8 and r based coins +- Integrated merged templates and replace of @WORKER-ID@ in template assignment +# 1.9.1 +- Fix coloring of outdated miners on Dashboard +- Autodetect for fork of CN/R(variant: "auto"), Graft(variant: "rwz"), Zelerius(variant: "zls") +# 1.9.0 +- Integrated Monero CN-R variant so called CNv4, aka CN-R, aka CNv5, aka Cryptonight-R #233 (algo: "cryptonight", variant: "r") +- Integrated Wownero CN-R variant #233 (algo: "cryptonight", variant: "wow") +- Integrated Graft variant (algo: "cryptonight", variant: "rwz" OR variant: "graft") +- Integrated X-Cash variant #234 (algo: "cryptonight", variant: "double" OR variant: "heavyx" OR variant: "xcash") +- Integrated Zelerius variant (algo: "cryptonight", variant: "zls" OR variant: "zelerius") +- Add miner version column to the Dashboard (version turns red when its outdated) +- Fixed crash when remote logging is disabled +- Added config parameter --skip-self-check to skip the algo verification check on startup to improce startup speed. Use with caution and only if you know that the algos are working fine on your machine. +# 1.8.13 +- Integrated HOSP variant (algo: "cryptonight", variant: "hosp") +- Added ASM code/optimization for HOSP and RTO on Intel CPUs +- Fixed memory/hugepages printout for cn-ultralite/turtle +- Fixed compile issues on some compilers +# 1.8.12 +- Fixed #228 "force-pow-variant" overrules autodetect for XTLv9/Fast2 +- Fixed out of source building (asm code generator) +- Fixed gcc 8 builds (self check failed) +- CN-Ultralite is shown correctly on the Dashboard +# 1.8.11 +- Implemented fix for upcominng Massari fork +- Refactoring ASM code/cleanup +- Fixed broke ARMv8 code for all CN variants (self check failed) +# 1.8.10 +- Fixed broken XTL variant Autodetect +# 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") +- Added force-pow-variant parameter to force usage of the variant from the config and skip parsing of pow/variant from job/pool +# 1.8.7 +- Implemented Template based mass config editor to simple swap configs on your rigs +# 1.8.6 +- Integrated Telegram push notifications +- Fixed multi miner editor +- Added miner offline/online status push notification +- Added 0/recovered hashrate push notification +# 1.8.5 +- Add remote reboot (machine) feature to Dashboard, Server & Miner +- Integrated Pushover push notifications for Offline miners and periodical status notifications on iOS and Android +# 1.8.4 +- Added XFH (Freehaven-project) support aka CN-Heavy-superfast +- Hashrate improve -> CN-Fast (MSR and others) ASM code for Intel CPUs +- Hashrate improve -> CNv2 ASM code for AMD Bulldozer CPUs +- Fix memory leak in cc client component +- Alloy algo is now shown as XAO on Dashboard +# 1.8.2 +- Fix for mining conceal or other coins with cn-msr +- Fixed avg.time on Dashboard +# 1.8.1 +- Fix connection stuck in Failover case when DNS resolve fails #197 +- Fix supported-variants announcement in login +# 1.8.0 +- Integration of cnv2 aka moneroV8 +- Hashrate improve -> all cnv1, cn-litev1, cnv2, xtl by adding ASM code for Intel/AMD and softaes [thx @SChernykh] +- Fixes for OSX builds [thx @djfinch] +- Fixed safe mode #173 +# 1.7.0 +- First official Release of XMRigCC-amd #33 #3 +- Full integration of xmrigCC-amd into XMRigCCServer/Dashboard with GPUInfo / remote logging +- Config property to enable/disable config upload on startup (--cc-upload-config-on-startup) #80 +- Refactoring of remote logging feature: #143 + - Only deltas will be send to the XMRigCCServer + - Fetching miner log on dashboard upon need + - Maximum lines of log history kept per miner can be configured on XMRigCCServer +- Fix correct hugepages status on Dashboard +- Fix cpu affinity for single thread usage +- Add all needed security infos to XMRigCCServer logging to harden the server (f.e. fail2ban) +- Fix commandline params overwrite config.json #157 +- Fix bulding of miner with API support Cannot #145 +# 1.6.5 +- Hashrate improve -> add autodetection mode for cpu-affinity +- Hashrate improve, more stable hashrates -> refactor memory allocation +- Add Arto (RTO) support (cn [2mb scratchpad] + ipbc mod) +- Add TubeV4 (TUBE) support (cn-heavy [4mb scratchpad] + ipbc mod + soft-aes mod) +- Add external IP to log view +- Fix memory leak in RemoteLog +- Fix crash Filelog +- Fix stop/freeze of cc communication on some miners +- Fix cn-heavy on arm processors +# 1.6.4 +- Fix connection issues #130 +- Remote logging (Miner log on the Dashboard) +- Add resetClientStatusList button to Dashboard #129 +- Fix new version notification #132 +- Add Masari (MSR) v7 support +- Add Haven Protocol (XHV) v3 support +# 1.6.3 +- Added shift+click function for multi row selection to Dashboard +- Added -DBUILD_STATIC=ON/OFF option to CMake configuration to create fully static builds +- Added current algo and list of supported_varaints to login message for future usage on proxy +- Added support for latest Stellite (XTL) and Alloy (XAO) variants +- Simplification of configuration, "force-pow-variant" and "cryptonight-lite-ipbc" parameters are now deprecated see [Coin Configuration](https://github.com/Bendr0id/xmrigCC/wiki/Coin-configurations) for guidance +- Fixed leaks in transport shutdown +# 1.6.2 +- Implementation of CN-Lite-IPBC algo +- Fixed Windows 32bit build / crashes +- Fixed XMRigCCServer crash when auth header is manipulated +# 1.6.1 +- beta # 1.6.0 - Complete rewrite of the stratum TCP/TLS network communication using boost::asio to fix connection issues and crashs - Force of PoW via "variant" parameter in xmrg-proxy 2.5.2+, it now overrules local settings diff --git a/CMakeLists.txt b/CMakeLists.txt index 69c2e5b0..72d4065e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,12 +10,19 @@ option(WITH_HTTPD "HTTP REST API" OFF) option(WITH_CC_CLIENT "CC Client" ON) option(WITH_CC_SERVER "CC Server" ON) option(WITH_TLS "TLS support" ON) -set(MINER_EXECUTABLE_NAME "xmrigMiner" CACHE STRING "Miner executable file name") -set(DAEMON_EXECUTABLE_NAME "xmrigDaemon" CACHE STRING "Daemon executable file name") - +option(WITH_ASM "ASM optimizations" ON) +option(BUILD_STATIC "Build static binary" OFF) set(Boost_USE_STATIC_RUNTIME ON) set(Boost_USE_STATIC_LIBS ON) +if(NOT MINER_EXECUTABLE_NAME) +set(MINER_EXECUTABLE_NAME "xmrigMiner" CACHE STRING "Miner executable file name") +endif(NOT MINER_EXECUTABLE_NAME) + +if(NOT DAEMON_EXECUTABLE_NAME) +set(DAEMON_EXECUTABLE_NAME "xmrigDaemon" CACHE STRING "Daemon executable file name") +endif(NOT DAEMON_EXECUTABLE_NAME) + include (CheckIncludeFile) include (cmake/cpu.cmake) @@ -46,7 +53,8 @@ set(SOURCES_CRYPTO src/crypto/c_blake256.c src/crypto/c_jh.c src/crypto/c_skein.c - src/crypto/CryptoNight.cpp + src/crypto/HashSelector.cpp + src/crypto/CryptoNightR_gen.cpp ) set(SOURCES_COMMON @@ -56,6 +64,7 @@ set(SOURCES_COMMON src/Options.cpp src/log/ConsoleLog.cpp src/log/FileLog.cpp + src/log/RemoteLog.cpp src/log/Log.cpp src/Platform.cpp src/Cpu.cpp @@ -121,9 +130,9 @@ find_package(UV REQUIRED) if (WIN32) add_definitions(-DBOOST_ALL_NO_LIB) -endif() +endif(WIN32) -find_package(Boost 1.63.0 COMPONENTS system REQUIRED) +find_package(Boost 1.62.0 COMPONENTS system REQUIRED) include(cmake/flags.cmake) @@ -137,10 +146,10 @@ if (WITH_TLS) set(SOURCES_SSL_TLS src/net/BoostTlsConnection.cpp) else() message(FATAL_ERROR "OpenSSL NOT found: use `-DWITH_TLS=OFF` to build without TLS support") - endif() + endif(OPENSSL_FOUND) else() add_definitions(/DXMRIG_NO_TLS) -endif() +endif(WITH_TLS) if (WITH_LIBCPUID) add_subdirectory(src/3rdparty/libcpuid) @@ -155,8 +164,8 @@ else() set(SOURCES_CPUID src/Cpu_arm.cpp) else() set(SOURCES_CPUID src/Cpu_stub.cpp) - endif() -endif() + endif(XMRIG_ARM) +endif(WITH_LIBCPUID) CHECK_INCLUDE_FILE (syslog.h HAVE_SYSLOG_H) if (HAVE_SYSLOG_H) @@ -172,11 +181,11 @@ if (WITH_HTTPD) set(HTTPD_SOURCES src/api/Httpd.h src/api/Httpd.cpp) else() message(FATAL_ERROR "microhttpd NOT found: use `-DWITH_HTTPD=OFF` to build without http deamon support") - endif() + endif(MHD_FOUND) else() add_definitions(/DXMRIG_NO_HTTPD) add_definitions(/DXMRIG_NO_API) -endif() +endif(WITH_HTTPD) if (WITH_CC_SERVER) find_package(MHD) @@ -185,7 +194,7 @@ if (WITH_CC_SERVER) include_directories(${MHD_INCLUDE_DIRS}) else() message(FATAL_ERROR "microhttpd NOT found: use `-DWITH_CC_SERVER=OFF` to build without CC Server support") - endif() + endif(MHD_FOUND) set(SOURCES_CC_SERVER src/cc/CCServer.cpp @@ -194,20 +203,34 @@ if (WITH_CC_SERVER) src/cc/Httpd.cpp src/cc/XMRigCC.cpp ) -endif() +endif(WITH_CC_SERVER) if (WITH_CC_CLIENT) set(SOURCES_CC_CLIENT src/cc/CCClient.cpp) -endif() +endif(WITH_CC_CLIENT) if (WITH_CC_SERVER OR WITH_CC_CLIENT) set(SOURCES_CC_COMMON src/cc/ControlCommand.cpp - src/cc/ClientStatus.cpp) + src/cc/ClientStatus.cpp + src/cc/GPUInfo.cpp) else() add_definitions(/DXMRIG_NO_CC) -endif() +endif(WITH_CC_SERVER OR WITH_CC_CLIENT) + +if (WITH_ASM AND NOT XMRIG_ARM AND CMAKE_SIZEOF_VOID_P EQUAL 8) + include(cmake/asm.cmake) +else() + add_definitions(/DXMRIG_NO_ASM) +endif(WITH_ASM AND NOT XMRIG_ARM AND CMAKE_SIZEOF_VOID_P EQUAL 8) + +add_subdirectory(src/3rdparty/argon2) +set(ARGON2_LIBRARY argon2) + +if (BUILD_STATIC) + set(CMAKE_EXE_LINKER_FLAGS " -static") +endif(BUILD_STATIC) include_directories(src) include_directories(src/3rdparty) @@ -230,16 +253,19 @@ add_executable(xmrigMiner ${SOURCES} ${SOURCES_CRYPTO} ${HTTPD_SOURCES} ${SOURCE set_target_properties(xmrigMiner PROPERTIES OUTPUT_NAME ${MINER_EXECUTABLE_NAME}) target_link_libraries(xmrigMiner xmrig_common xmrig_os_dependencies xmrig_cpuid ${Boost_LIBRARIES} - ${UV_LIBRARIES} ${MHD_LIBRARY} ${EXTRA_LIBS} ${CPUID_LIB}) + ${UV_LIBRARIES} ${MHD_LIBRARY} ${EXTRA_LIBS} ${CPUID_LIB} argon2) if (WITH_CC_CLIENT) target_link_libraries(xmrigMiner xmrig_cc_common) -endif (WITH_CC_CLIENT) +endif(WITH_CC_CLIENT) if (WITH_TLS) target_link_libraries(xmrigMiner xmrig_tls ${OPENSSL_LIBRARIES} ${EXTRA_LIBS}) - target_link_libraries(xmrigMiner xmrig_tls ${OPENSSL_LIBRARIES} ${EXTRA_LIBS}) -endif (WITH_TLS) +endif(WITH_TLS) + +if (WITH_ASM AND NOT XMRIG_ARM AND CMAKE_SIZEOF_VOID_P EQUAL 8) + target_link_libraries(xmrigMiner xmrig_asm) +endif(WITH_ASM AND NOT XMRIG_ARM AND CMAKE_SIZEOF_VOID_P EQUAL 8) add_executable(xmrigDaemon src/cc/XMRigd.cpp res/app.rc) set_target_properties(xmrigDaemon PROPERTIES OUTPUT_NAME ${DAEMON_EXECUTABLE_NAME}) @@ -252,11 +278,11 @@ if (WITH_CC_SERVER AND MHD_FOUND) ${UV_LIBRARIES} ${MHD_LIBRARY} ${EXTRA_LIBS} ${CPUID_LIB}) if (WITH_TLS) - target_link_libraries(xmrigCCServer xmrig_tls ${OPENSSL_LIBRARIES}) + target_link_libraries(xmrigCCServer xmrig_tls ${OPENSSL_LIBRARIES} ${EXTRA_LIBS}) endif (WITH_TLS) set_target_properties(xmrig_common_cc PROPERTIES COMPILE_FLAGS "-DXMRIG_CC_SERVER ${SHARED_FLAGS}") set_target_properties(xmrigCCServer PROPERTIES COMPILE_FLAGS "-DXMRIG_CC_SERVER ${SHARED_FLAGS}") -endif() +endif(WITH_CC_SERVER AND MHD_FOUND) add_subdirectory(test EXCLUDE_FROM_ALL) diff --git a/Dockerfile b/Dockerfile index 4291fd78..59ceab4f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,9 @@ FROM ubuntu:latest RUN apt-get update && \ - apt-get install software-properties-common git build-essential libbz2-dev cmake libuv1-dev libssl-dev wget -y - -RUN add-apt-repository ppa:jonathonf/gcc-7.1 && \ - apt-get update && \ - apt-get install gcc-7 g++-7 -y && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* + apt install git build-essential libbz2-dev cmake libuv1-dev libssl-dev wget gcc g++ -y && \ + apt clean && \ + rm -rf /var/lib/apt/lists/* RUN wget https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.gz \ && tar xfz boost_1_66_0.tar.gz \ @@ -18,7 +14,7 @@ RUN wget https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar. RUN git clone https://github.com/Bendr0id/xmrigCC.git && \ cd xmrigCC && \ - cmake . -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 -DWITH_CC_SERVER=OFF -DWITH_HTTPD=OFF && \ + cmake . -DWITH_CC_SERVER=OFF -DWITH_HTTPD=OFF && \ make COPY Dockerfile /Dockerfile diff --git a/README.md b/README.md index 41bda3e9..41c9d990 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # XMRigCC -:warning: **To be prepared for the upcoming PoW changes you need to update your miners to at least release (1.5.5).** +:bulb: **This is the CPU variant of XMRigCC, if you're looking for the AMD GPU (OpenCL) variant [click here](https://github.com/Bendr0id/xmrigCC-amd/).** + +:warning: **Confused by all the forks? Check the [Coin Configuration](https://github.com/Bendr0id/xmrigCC/wiki/Coin-configurations) guide.** [](https://ci.appveyor.com/project/Bendr0id/xmrigcc) @@ -15,15 +17,36 @@ ### About XMRigCC XMRigCC is a fork of [XMRig](https://github.com/xmrig/xmrig) which adds the ability to remote control your XMRig instances via a Webfrontend and REST api. -This fork is based on XMRig (2.4.5) and adds a "Command and Control" (C&C) server, a daemon to reload XMRig on config changes and modifications in XMRig to send the current status to the C&C Server. -The modified version can also handle commands like "update config", "start/stop mining" or "restart/shutdown" which can be send from the C&C-Server. +This fork is based on XMRig and adds a "Command and Control" (C&C) server, a daemon to reload XMRigCCMiner on config changes and modifications in XMRig to send the current status to the C&C Server. +The modified version can also handle commands like "update config", "start/stop mining" or "restart/shutdown" which can be send from the C&C-Server. + +**AND MANY MORE** Full Windows/Linux compatible, and you can mix Linux and Windows miner on one XMRigCCServer. ## Additional features of XMRigCC (on top of XMRig) -* **NEW: Support of Crytptonight-Heavy (Sumokoin, Haven, ...)** -* **NEW: Ready for Monero v7 PoW changes on April 6 2018** -* **NEW: Ready for Aeon v7 PoW changes on April 7? 2018** + +Check the [Coin Configuration](https://github.com/Bendr0id/xmrigCC/wiki/Coin-configurations) guide +* **NEW Support of Crytptonight R (XMR) variant(algo: "cryptonight", variant "auto" (autodetect) or "r")** +* **NEW Support of Crytptonight WOW (Wownero) variant (algo: "cryptonight", variant "wow")** +* **NEW Support of Crytptonight Reverse Waltz (Graft) variant (algo: "cryptonight", variant "rwz" (autodetect) or variant "graft")** +* **NEW Support of Crytptonight Double/Heavyx (XCash) variant (algo: "cryptonight", variant "double")** +* **NEW Support of Crytptonight Zelerius variant (algo: "cryptonight", variant "zls")** +* **Support of Crytptonight RTO/HOSP variant (algo: "cryptonight", variant "rto" or variant "hosp")** +* **Support of Crytptonight-Ultralite TRTL/Turtle variant (algo: "cryptonight-ultralite", variant "auto")** +* **Support of Crytptonight-Lite UPX/uPlexa variant (algo: "cryptonight-lite", variant "upx")** +* **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** +* **Support of Crytptonight v8 PoW changes aka CNV2 (XMR fork on Block 1685555)** +* **Support of Crytptonight-Heavy BitTube (TUBE) v4 variant (fork on Block 110000)** +* **Support of Crytptonight Masari (MSR) v7 variant (use variant "msr" to be ready for the fork, with autodetect)** +* **Support of Crytptonight-Heavy Haven Protocol (XHV) v3 variant (use variant "xhv")** +* **Support of Crytptonight Stellite (XTL) v4 variant** +* **Support of Crytptonight Alloy (XAO) variant** +* **Support of Crytptonight-Lite IPBC/TUBE variant** +* **Support of Crytptonight-Heavy (Loki, Ryo, ...)** +* **Support of Crytptonight v7 PoW changes aka CNV1** +* **Support of Crytptonight-Lite v7 PoW changes aka CN-LiteV1** * Full SSL/TLS support for the whole communication: [Howto](https://github.com/Bendr0id/xmrigCC/wiki/tls) - XMRigCCServer Dashboard <-> Browser - XMRigCCServer <-> XMRigMiner @@ -53,12 +76,11 @@ Full Windows/Linux compatible, and you can mix Linux and Windows miner on one XM **XMRigCC Server** - + **XMRigCC Dashboard** - - + #### Table of contents * [Download](#download) @@ -94,6 +116,7 @@ xmrigCCServer --cc-port=3344 --cc-user=admin --cc-pass=pass --cc-access-token=SE --cc-key-file=FILE when tls is turned on, use this to point to the right key file (default: server.key) --cc-client-config-folder=FOLDER Folder contains the client config files --cc-custom-dashboard=FILE loads a custom dashboard and serve it to '/' + --cc-client-log-lines-history=N maximum lines of log history kept per miner (default: 100) --no-color disable colored output -S, --syslog use system log for output messages -B, --background run the miner in the background @@ -118,15 +141,15 @@ xmrigDaemon -o pool.minemonero.pro:5555 -u YOUR_WALLET -p x -k --cc-url=IP_OF_CC -O, --userpass=U:P username:password pair for mining server -u, --user=USERNAME username for mining server -p, --pass=PASSWORD password for mining server - -t, --threads=N number of miner threads (0 enables automatic selection of optimal number of threads, default: 0) - -m, --multihash-factor=N number of hash blocks per thread to process at a time (0 enables automatic selection of optimal number of hash blocks, default: 0) - -A, --aesni=N selection of AES-NI mode (0 auto, 1 on, 2 off, default: 0) + -t, --threads=N number of miner threads + -A, --aesni=N selection of AES-NI mode (0 auto, 1 on, 2 off) -k, --keepalive send keepalived for prevent timeout (need pool support) -r, --retries=N number of times to retry before switch to backup server (default: 5) -R, --retry-pause=N time to pause between retries (default: 5) - --force-pow-version=N force to use specific PoW variation (default: 0 POW_AUTODETECT, 1 POW_V1, 2 POW_V2) - --multihash-factor=N 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 for multihash-factor > 1 only, limits multihash to given threads (mask), (default: all threads) + --pow-variant=V specificy the PoW variat to use: -> auto (default), 0 (v0), 1 (v1, aka monerov7, aeonv7), tube (ipbc), alloy, xtl (including autodetect for v5), msr, xhv, rto + for further help see: https://github.com/Bendr0id/xmrigCC/wiki/Coin-configurations + --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) + --multihash-thread-mask=MASK limits multihash to given threads (mask), (default: all threads) --cpu-affinity set process affinity to CPU core(s), mask 0x3 for cores 0 and 1 --cpu-priority set process priority (0 idle, 2 normal to 5 highest) --no-huge-pages disable huge pages support @@ -145,6 +168,8 @@ xmrigDaemon -o pool.minemonero.pro:5555 -u YOUR_WALLET -p x -k --cc-url=IP_OF_CC --cc-access-token=T access token for CC Server --cc-worker-id=ID custom worker-id for CC Server --cc-update-interval-s=N status update interval in seconds (default: 10 min: 1) + --cc-use-remote-logging enable remote logging on CC Server + --cc-upload-config-on-startup upload current miner config to CC Server on startup --no-color disable colored output -S, --syslog use system log for output messages -B, --background run the miner in the background @@ -152,9 +177,6 @@ xmrigDaemon -o pool.minemonero.pro:5555 -u YOUR_WALLET -p x -k --cc-url=IP_OF_CC -l, --log-file=FILE log all output to a file -h, --help display this help and exit -V, --version output version information and exit - -v, --av=N DEPRECATED - algorithm variation, 0 auto select - --doublehash-thread-mask DEPRECATED - same as multihash-thread-mask - ``` Also you can use configuration via config file, default **[config.json](https://github.com/Bendr0id/xmrigCC/wiki/Config-XMRigDaemon)**. You can load multiple config files and combine it with command line options. @@ -270,14 +292,18 @@ Here are some result reported by users. Feel free to share your results, i'll ad ##### BenDroid (xmrigCC): XMR: `4BEn3sSa2SsHBcwa9dNdKnGvvbyHPABr2JzoY7omn7DA2hPv84pVFvwDrcwMCWgz3dQVcrkw3gE9aTC9Mi5HxzkfF9ev1eH` + AEON: `Wmtm4S2cQ8uEBBAVjvbiaVAPv2d6gA1mAUmBmjna4VF7VixLxLRUYag5cvsym3WnuzdJ9zvhQ3Xwa8gWxPDPRfcQ3AUkYra3W` -BTC: `128qLZCaGdoWhBTfaS7rytpbvG4mNTyAQm` + +BTC: `3Gwq9tveCZtLAiXX7mxhjbrh38GPx1iXdB` ##### xmrig: XMR: `48edfHu7V9Z84YzzMa6fUueoELZ9ZRXq9VetWzYGzKt52XU5xvqgzYnDK9URnRoJMk1j8nLwEVsaSWJ4fhdUyZijBGUicoD` + BTC: `1P7ujsXeX7GxQwHNnJsRMgAdNkFZmNVqJT` ## Contact * ben [at] graef.in * Telegram: @BenDr0id +* [discord](https://discord.gg/r3rCKTB) * [reddit](https://www.reddit.com/user/BenDr0id/) diff --git a/appveyor.yml b/appveyor.yml index 65ae7df1..107144fa 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,5 +1,5 @@ # version format -version: 1.6.{build} +version: 1.9.{build} # build only tags skip_non_tags: true @@ -16,7 +16,7 @@ clone_folder: c:\xmrigCC install: - mkdir c:\xmrigCC-deps - - curl -sL https://github.com/Bendr0id/xmrigCC-deps/releases/download/v1/xmrigCC-deps.zip -o xmrigCC-deps.zip + - curl -sL https://github.com/Bendr0id/xmrigCC-deps/releases/download/v3/xmrigCC-deps.zip -o xmrigCC-deps.zip - 7z x xmrigCC-deps.zip -o"c:\xmrigCC-deps" -y > nul build_script: diff --git a/cmake/asm.cmake b/cmake/asm.cmake new file mode 100644 index 00000000..8b11e2ee --- /dev/null +++ b/cmake/asm.cmake @@ -0,0 +1,179 @@ +message("Generating ASM files") + +# CN v1 original +set(ALGO "original") +set(ITERATIONS "524288") #0x80000 +set(MASK "2097136") #0x1FFFF0 + +configure_file("src/crypto/asm/cnv1_main_loop_sandybridge.inc.in" "src/crypto/asm/cnv1_main_loop_sandybridge.inc") +configure_file("src/crypto/asm/cnv1_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/cnv1_main_loop_soft_aes_sandybridge.inc") + +configure_file("src/crypto/asm/win/cnv1_main_loop_sandybridge.inc.in" "src/crypto/asm/win/cnv1_main_loop_sandybridge.inc") +configure_file("src/crypto/asm/win/cnv1_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/win/cnv1_main_loop_soft_aes_sandybridge.inc") + +# CN v2 ORIGINAL +set(ALGO "originalv2") +set(ITERATIONS "524288") #0x80000 +set(MASK "2097136") #0x1FFFF0 + +configure_file("src/crypto/asm/cnv2_main_loop_ivybridge.inc.in" "src/crypto/asm/cnv2_main_loop_ivybridge.inc") +configure_file("src/crypto/asm/cnv2_main_loop_bulldozer.inc.in" "src/crypto/asm/cnv2_main_loop_bulldozer.inc") +configure_file("src/crypto/asm/cnv2_main_loop_ryzen.inc.in" "src/crypto/asm/cnv2_main_loop_ryzen.inc") +configure_file("src/crypto/asm/cnv2_double_main_loop_sandybridge.inc.in" "src/crypto/asm/cnv2_double_main_loop_sandybridge.inc") +configure_file("src/crypto/asm/cnv2_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/cnv2_main_loop_soft_aes_sandybridge.inc") + +configure_file("src/crypto/asm/win/cnv2_main_loop_ivybridge.inc.in" "src/crypto/asm/win/cnv2_main_loop_ivybridge.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_bulldozer.inc.in" "src/crypto/asm/win/cnv2_main_loop_bulldozer.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_ryzen.inc.in" "src/crypto/asm/win/cnv2_main_loop_ryzen.inc") +configure_file("src/crypto/asm/win/cnv2_double_main_loop_sandybridge.inc.in" "src/crypto/asm/win/cnv2_double_main_loop_sandybridge.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/win/cnv2_main_loop_soft_aes_sandybridge.inc") + +# CN v1 FAST +set(ALGO "fast") +set(ITERATIONS "262144") #0x40000 +set(MASK "2097136") #0x1FFFF0 + +configure_file("src/crypto/asm/cnv1_main_loop_sandybridge.inc.in" "src/crypto/asm/cnv1_main_loop_fast_sandybridge.inc") +configure_file("src/crypto/asm/cnv1_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/cnv1_main_loop_fast_soft_aes_sandybridge.inc") + +configure_file("src/crypto/asm/win/cnv1_main_loop_sandybridge.inc.in" "src/crypto/asm/win/cnv1_main_loop_fast_sandybridge.inc") +configure_file("src/crypto/asm/win/cnv1_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/win/cnv1_main_loop_fast_soft_aes_sandybridge.inc") + +# CN v2 FAST +set(ALGO "fastv2") +set(ITERATIONS "262144") #0x40000 +set(MASK "2097136") #0x1FFFF0 + +configure_file("src/crypto/asm/cnv2_main_loop_ivybridge.inc.in" "src/crypto/asm/cnv2_main_loop_fastv2_ivybridge.inc") +configure_file("src/crypto/asm/cnv2_main_loop_bulldozer.inc.in" "src/crypto/asm/cnv2_main_loop_fastv2_bulldozer.inc") +configure_file("src/crypto/asm/cnv2_main_loop_ryzen.inc.in" "src/crypto/asm/cnv2_main_loop_fastv2_ryzen.inc") +configure_file("src/crypto/asm/cnv2_double_main_loop_sandybridge.inc.in" "src/crypto/asm/cnv2_double_main_loop_fastv2_sandybridge.inc") +configure_file("src/crypto/asm/cnv2_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/cnv2_main_loop_fastv2_soft_aes_sandybridge.inc") + +configure_file("src/crypto/asm/win/cnv2_main_loop_ivybridge.inc.in" "src/crypto/asm/win/cnv2_main_loop_fastv2_ivybridge.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_bulldozer.inc.in" "src/crypto/asm/win/cnv2_main_loop_fastv2_bulldozer.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_ryzen.inc.in" "src/crypto/asm/win/cnv2_main_loop_fastv2_ryzen.inc") +configure_file("src/crypto/asm/win/cnv2_double_main_loop_sandybridge.inc.in" "src/crypto/asm/win/cnv2_double_main_loop_fastv2_sandybridge.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/win/cnv2_main_loop_fastv2_soft_aes_sandybridge.inc") + +# CN XCASH +set(ALGO "xcash") +set(ITERATIONS "1048576") #0x100000 +set(MASK "2097136") #0x1FFFF0 + +configure_file("src/crypto/asm/cnv2_main_loop_ivybridge.inc.in" "src/crypto/asm/cnv2_main_loop_xcash_ivybridge.inc") +configure_file("src/crypto/asm/cnv2_main_loop_bulldozer.inc.in" "src/crypto/asm/cnv2_main_loop_xcash_bulldozer.inc") +configure_file("src/crypto/asm/cnv2_main_loop_ryzen.inc.in" "src/crypto/asm/cnv2_main_loop_xcash_ryzen.inc") +configure_file("src/crypto/asm/cnv2_double_main_loop_sandybridge.inc.in" "src/crypto/asm/cnv2_double_main_loop_xcash_sandybridge.inc") +configure_file("src/crypto/asm/cnv2_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/cnv2_main_loop_xcash_soft_aes_sandybridge.inc") + +configure_file("src/crypto/asm/win/cnv2_main_loop_ivybridge.inc.in" "src/crypto/asm/win/cnv2_main_loop_xcash_ivybridge.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_bulldozer.inc.in" "src/crypto/asm/win/cnv2_main_loop_xcash_bulldozer.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_ryzen.inc.in" "src/crypto/asm/win/cnv2_main_loop_xcash_ryzen.inc") +configure_file("src/crypto/asm/win/cnv2_double_main_loop_sandybridge.inc.in" "src/crypto/asm/win/cnv2_double_main_loop_xcash_sandybridge.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/win/cnv2_main_loop_xcash_soft_aes_sandybridge.inc") + +# CN ZELERIUS +set(ALGO "zelerius") +set(ITERATIONS "393216") #0x60000 +set(MASK "2097136") #0x1FFFF0 + +configure_file("src/crypto/asm/cnv2_main_loop_ivybridge.inc.in" "src/crypto/asm/cnv2_main_loop_zelerius_ivybridge.inc") +configure_file("src/crypto/asm/cnv2_main_loop_bulldozer.inc.in" "src/crypto/asm/cnv2_main_loop_zelerius_bulldozer.inc") +configure_file("src/crypto/asm/cnv2_main_loop_ryzen.inc.in" "src/crypto/asm/cnv2_main_loop_zelerius_ryzen.inc") +configure_file("src/crypto/asm/cnv2_double_main_loop_sandybridge.inc.in" "src/crypto/asm/cnv2_double_main_loop_zelerius_sandybridge.inc") +configure_file("src/crypto/asm/cnv2_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/cnv2_main_loop_zelerius_soft_aes_sandybridge.inc") + +configure_file("src/crypto/asm/win/cnv2_main_loop_ivybridge.inc.in" "src/crypto/asm/win/cnv2_main_loop_zelerius_ivybridge.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_bulldozer.inc.in" "src/crypto/asm/win/cnv2_main_loop_zelerius_bulldozer.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_ryzen.inc.in" "src/crypto/asm/win/cnv2_main_loop_zelerius_ryzen.inc") +configure_file("src/crypto/asm/win/cnv2_double_main_loop_sandybridge.inc.in" "src/crypto/asm/win/cnv2_double_main_loop_zelerius_sandybridge.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/win/cnv2_main_loop_zelerius_soft_aes_sandybridge.inc") + +# CN LITE + +set(ALGO "lite") +set(ITERATIONS "262144") #0x40000 +set(MASK "1048560") #0xFFFF0 + +configure_file("src/crypto/asm/cnv1_main_loop_sandybridge.inc.in" "src/crypto/asm/cnv1_main_loop_lite_sandybridge.inc") +configure_file("src/crypto/asm/cnv1_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/cnv1_main_loop_lite_soft_aes_sandybridge.inc") + +configure_file("src/crypto/asm/win/cnv1_main_loop_sandybridge.inc.in" "src/crypto/asm/win/cnv1_main_loop_lite_sandybridge.inc") +configure_file("src/crypto/asm/win/cnv1_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/win/cnv1_main_loop_lite_soft_aes_sandybridge.inc") + +# CN UPX + +set(ALGO "upx") +set(ITERATIONS "131072") #0x20000 +set(MASK "1048560") #0xFFFF0 + +configure_file("src/crypto/asm/cnv1_main_loop_sandybridge.inc.in" "src/crypto/asm/cnv1_main_loop_upx_sandybridge.inc") +configure_file("src/crypto/asm/cnv1_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/cnv1_main_loop_upx_soft_aes_sandybridge.inc") + +configure_file("src/crypto/asm/win/cnv1_main_loop_sandybridge.inc.in" "src/crypto/asm/win/cnv1_main_loop_upx_sandybridge.inc") +configure_file("src/crypto/asm/win/cnv1_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/win/cnv1_main_loop_upx_soft_aes_sandybridge.inc") + +# CN V2 ULTRALITE +set(ALGO "ultralite") +set(ITERATIONS "65536") #0x10000 +set(MASK "131056") #0x1FFF0 + +configure_file("src/crypto/asm/cnv2_main_loop_ivybridge.inc.in" "src/crypto/asm/cnv2_main_loop_ultralite_ivybridge.inc") +configure_file("src/crypto/asm/cnv2_main_loop_bulldozer.inc.in" "src/crypto/asm/cnv2_main_loop_ultralite_bulldozer.inc") +configure_file("src/crypto/asm/cnv2_main_loop_ryzen.inc.in" "src/crypto/asm/cnv2_main_loop_ultralite_ryzen.inc") +configure_file("src/crypto/asm/cnv2_double_main_loop_sandybridge.inc.in" "src/crypto/asm/cnv2_double_main_loop_ultralite_sandybridge.inc") +configure_file("src/crypto/asm/cnv2_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/cnv2_main_loop_ultralite_soft_aes_sandybridge.inc") + +configure_file("src/crypto/asm/win/cnv2_main_loop_ivybridge.inc.in" "src/crypto/asm/win/cnv2_main_loop_ultralite_ivybridge.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_bulldozer.inc.in" "src/crypto/asm/win/cnv2_main_loop_ultralite_bulldozer.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_ryzen.inc.in" "src/crypto/asm/win/cnv2_main_loop_ultralite_ryzen.inc") +configure_file("src/crypto/asm/win/cnv2_double_main_loop_sandybridge.inc.in" "src/crypto/asm/win/cnv2_double_main_loop_ultralite_sandybridge.inc") +configure_file("src/crypto/asm/win/cnv2_main_loop_soft_aes_sandybridge.inc.in" "src/crypto/asm/win/cnv2_main_loop_ultralite_soft_aes_sandybridge.inc") + +# CN V2 RWZ +set(ALGO "original") +set(ITERATIONS "393216") #0x60000 +set(MASK "2097136") #0x1FFFF0 + +configure_file("src/crypto/asm/cnv2_main_loop_rwz_all.inc.in" "src/crypto/asm/cnv2_main_loop_rwz_original_all.inc") +configure_file("src/crypto/asm/cnv2_double_main_loop_rwz_all.inc.in" "src/crypto/asm/cnv2_double_main_loop_rwz_original_all.inc") + +configure_file("src/crypto/asm/win/cnv2_main_loop_rwz_all.inc.in" "src/crypto/asm/win/cnv2_main_loop_rwz_original_all.inc") +configure_file("src/crypto/asm/win/cnv2_double_main_loop_rwz_all.inc.in" "src/crypto/asm/win/cnv2_double_main_loop_rwz_original_all.inc") + + +# CN V2 UPX2 +set(ALGO "upx2") +set(ITERATIONS "16384") #0x4000 +set(MASK "131056") #0x1FFF0 + +configure_file("src/crypto/asm/cnv2_main_loop_rwz_all.inc.in" "src/crypto/asm/cnv2_main_loop_rwz_upx2_all.inc") +configure_file("src/crypto/asm/cnv2_double_main_loop_rwz_all.inc.in" "src/crypto/asm/cnv2_double_main_loop_rwz_upx2_all.inc") + +configure_file("src/crypto/asm/win/cnv2_main_loop_rwz_all.inc.in" "src/crypto/asm/win/cnv2_main_loop_rwz_upx2_all.inc") +configure_file("src/crypto/asm/win/cnv2_double_main_loop_rwz_all.inc.in" "src/crypto/asm/win/cnv2_double_main_loop_rwz_upx2_all.inc") + +if (CMAKE_C_COMPILER_ID MATCHES MSVC) + enable_language(ASM_MASM) + set(XMRIG_ASM_FILE "src/crypto/asm/win/cn_main_loop.asm" + "src/crypto/asm/win/CryptonightR_template.asm") + set_property(SOURCE ${XMRIG_ASM_FILE} PROPERTY ASM_MASM) + include_directories(${CMAKE_BINARY_DIR}/src/crypto/asm/win) +else() + enable_language(ASM) + + if (WIN32 AND CMAKE_C_COMPILER_ID MATCHES GNU) + set(XMRIG_ASM_FILE "src/crypto/asm/win/cn_main_loop_win_gcc.S" + "src/crypto/asm/win/CryptonightR_template.S") + else() + set(XMRIG_ASM_FILE "src/crypto/asm/cn_main_loop.S" + "src/crypto/asm/CryptonightR_template.S") + endif() + + set_property(SOURCE ${XMRIG_ASM_FILE} PROPERTY C) + include_directories(${CMAKE_BINARY_DIR}/src/crypto/asm/) +endif() + +add_library(xmrig_asm STATIC ${XMRIG_ASM_FILE}) +set_property(TARGET xmrig_asm PROPERTY LINKER_LANGUAGE C) \ No newline at end of file diff --git a/cmake/flags.cmake b/cmake/flags.cmake index 488f1236..ceabcdc6 100644 --- a/cmake/flags.cmake +++ b/cmake/flags.cmake @@ -6,13 +6,15 @@ if ("${CMAKE_BUILD_TYPE}" STREQUAL "") set(CMAKE_BUILD_TYPE Release) endif() +include(CheckSymbolExists) + if (CMAKE_CXX_COMPILER_ID MATCHES GNU) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-strict-aliasing") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Ofast -funroll-loops -fvariable-expansion-in-unroller -ftree-loop-if-convert-stores -fmerge-all-constants -fbranch-target-load-optimize2") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Ofast") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fno-exceptions -fno-rtti") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast -s -funroll-loops -fvariable-expansion-in-unroller -ftree-loop-if-convert-stores -fmerge-all-constants -fbranch-target-load-optimize2") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fno-exceptions -fno-rtti -Wno-class-memaccess") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast -s") if (XMRIG_ARMv8) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a+crypto") @@ -23,6 +25,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES GNU) else() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maes") + add_definitions(/DHAVE_ROTR) endif() if (WIN32) @@ -46,6 +49,7 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES MSVC) add_definitions(/D_CRT_SECURE_NO_WARNINGS) add_definitions(/D_CRT_NONSTDC_NO_WARNINGS) add_definitions(/DNOMINMAX) + add_definitions(/DHAVE_ROTR) elseif (CMAKE_CXX_COMPILER_ID MATCHES Clang) @@ -64,6 +68,11 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES Clang) else() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maes") + + check_symbol_exists("_rotr" "x86intrin.h" HAVE_ROTR) + if (HAVE_ROTR) + add_definitions(/DHAVE_ROTR) + endif() endif() endif() diff --git a/index.html b/index.html old mode 100644 new mode 100755 index 277566ea..58e12adf --- a/index.html +++ b/index.html @@ -1,5 +1,5 @@ - +