Skip to content

bogdanadnan/iximiner

Repository files navigation

IxiMiner v0.1

Ixian miner for CPU and GPU

Dev Fee

In order to support development, this miner has 1% dev fee included - 1 minute from 100 minutes it will mine for developer. Mining settings are downloaded from http://coinfee.changeling.biz/index.json each time it switches to developer mining mode.

Features

  • optimized argon2 hashing library - both in speed and in memory usage; everything not related to ixian mining was stripped down, indexing calculation for argon2i sequence was replaced with precalculated versions
  • support for both CPU and GPU mining using multiple engines perfectly adapted to your hardware
  • support for autodetecting the best version of the CPU hasher for your machine (SSE2/SSSE3/AVX/AVX2/AVX512F)
  • support for autotuning mode to get best settings for GPU mining
  • support for proxy mode, to act as an aggregator for multiple small miners and providing a nice UI dashboard for an overall view of your farm (work in progress)

Releases

There are binaries compiled for Windows 10 and Linux/HiveOS. Just pick the one matching your OS and skip to usage information. If for some reason the binaries don't work for you or you want the cutting edge version of this software you can try building it yourself using below instructions (build instructions are only provided for Ubuntu, you will need to adapt them accordingly for other distribution). You can get the binaries from here: https://github.com/bogdanadnan/iximiner/releases

Build it yourself

What you need:

  • Recent Linux distribution (recommended - Ubuntu 16.04 or higher)
  • Git client
  • CMake 3
  • GCC & G++ version 7 or higher or LLVM/Clang 7 or higher. Provided binaries are compiled with Clang 7, it seems to give a slightly higher hashrate for CPU mining.
  • CUDA developer toolkit 9 or higher. Provided binaries are compiled with CUDA 10.1. Follow instructions from NVidia site to get the latest version up and running: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html (be careful that CUDA might have specific requirements for compiler version as well)
  • OpenCL libraries and headers
  • CURL libraries and headers

Instructions:

  • run the following snippet:
$ git clone http://github.com/bogdanadnan/iximiner.git
$ cd iximiner
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_BUILD_TYPE=Release -DUSE_SYSTEM_CURL=1 -DBUILD_CPR_TESTS=0
$ make

Basic usage:

!!! In some cases (mostly on Windows) the miner doesn't properly detect AVX2 optimization for CPU. If AVX2 doesn't appear in optimization features list for CPU at miner startup, please verify on google if your CPU model has it. If it does have AVX2 support, please run it with "--force-cpu-optimization AVX2" option. This will give a serious boost to hash rate speed so it does worth the effort to check. !!!

  • starting in miner mode:
       iximiner --mode miner --pool <pool / proxy address> --wallet <wallet address> --name <worker name> --cpu-intensity <intensity> --gpu-intensity <intensity>
  • starting in autotune mode:
       iximiner --mode autotune --autotune-start <intensity> --autotune-stop <intensity> --autotune-step <intensity>
  • starting in proxy mode:
       iximiner --mode proxy --port <proxy port> --pool <pool address> --wallet <wallet address> --name <proxy name>

Parameters:
--help: show this help text
--verbose: print more informative text during run
--mode : start in specific mode - arguments: miner / autotune / proxy

  • miner: this instance will mine for arionum
  • autotune: for finding best intensity for GPU mining
  • proxy: this instance will act as a hub for multiple miners, useful to aggregate multiple miners into a single instance reducing the load on the pool

--pool : pool/proxy address to connect to (eg. https://ixian.kiramine.com)
--wallet : wallet address; this is optional if in miner mode and you are connecting to a proxy
--name : worker identifier; this is optional, will be autogenerated if is not provided
--port : proxy specific option, port on which to listen for clients; this is optional, defaults to 8088
--enable-api-port : miner specific option, port on which to listen for api requests; if enabled, you can get reports in json format at http://localhost:port/status; this is optional, defaults to disabled (value 0)
--cpu-intensity: miner specific option, mining intensity on CPU; value from 0 (disabled) to 100 (full load); this is optional, defaults to 100 (*)
--gpu-intensity: miner specific option, mining intensity on GPU; value from 0 (disabled) to 100 (full load); this is optional, defaults to 100 (*); you can add more entries separated by comma for each GPU; in this case you need to add entries for all cards displayed, even if card is disabled by gpu-filter - use 0 for those
--gpu-filter: miner specific option, filter string for device selection; it will select only devices that have in description the specified string; this is optional, defaults to ""; you can add more entries separated by comma; if using multiple gpu hashers you can select specific filters for each like this: --gpu-filter CUDA:[1],CUDA:[2],OPENCL:AMD where [1], [2] and AMD are filters for cards
--force-cpu-optimization: miner specific option, what type of CPU optimization to use; values: REF, SSE2, SSSE3, AVX, AVX2, AVX512F; this is optional, defaults to autodetect, change only if autodetected one crashes
--force-gpu-optimization: what type of GPU optimization/hasher to use; values: OPENCL, CUDA, AMDGCN; this is optional, defaults to autodetect; you can add more entries separated by comma
--hs-threshold: miner specific option, hashrate value under which miner will exit - it will trigger after 5 displays in report in order to allow warmup after block changes (default is disabled)
--update-interval: how often should we update mining settings from pool, in seconds; increasing it will lower the load on pool but will increase rejection rate; this is optional, defaults to 2 sec and can't be set lower than that
--report-interval: how often should we display mining reports, in seconds; this is optional, defaults to 10 sec
--show-pool-requests: miner specific option, show full requests sent to pool, debug purpose only
--autotune-start: autotune specific option, start intensity for autotuning (default 1)
--autotune-stop: autotune specific option, stop intensity for autotuning (default 100)
--autotune-step: autotune specific option, intensity steps for autotuning (default 1)
--autotune-step-time: autotune specific option, how much time should wait in a step before measuring h/s, in seconds (minimum 10, default 20)

(*) Mining intensity depends on the number of CPU/GPU cores and available memory. Full load (100) is dynamically calculated by the application. You can use fractional numbers for better tuning.