1 unstable release

Uses old Rust 2015

0.4.2 Dec 12, 2018

#6 in #mining


5.5K SLoC

Rust 3.5K SLoC // 0.2% comments C++ 1K SLoC // 0.0% comments C 451 SLoC // 0.1% comments Java 298 SLoC // 0.0% comments Perl 130 SLoC // 0.0% comments

Grin Miner

A standalone mining implementation intended for mining Grin against a running Grin node.

Supported Platforms

At present, only mining plugins for linux-x86_64 and MacOS exist. This will likely change over time as the community creates more solvers for different platforms.


  • rust 1.30+ (use rustup- i.e. curl https://sh.rustup.rs -sSf | sh; source $HOME/.cargo/env)
  • cmake 3.2+ (for Cuckoo mining plugins)
  • ncurses and libs (ncurses, ncursesw5)
  • zlib libs (zlib1g-dev or zlib-devel)
  • linux-headers (reported needed on Alpine linux)

And a running Grin node to mine into!

Build steps

git clone https://github.com/mimblewimble/grin-miner.git
cd grin-miner
git submodule update --init
cargo build

Building the Cuckoo-Miner plugins

Grin-miner automatically builds x86_64 CPU plugins. Cuda plugins are also provided, but are not enabled by default. To enable them, modify Cargo.toml as follows:

cuckoo_miner = { path = "./cuckoo-miner" }
cuckoo_miner = { path = "./cuckoo-miner", features = ["build-cuda-plugins"]}

The Cuda toolkit 9+ must be installed on your system (check with nvcc --version)

It is also possible to build slightly more optimized versions of the CPU plugins if your processor supports avx2 instructions:

cuckoo_miner = { path = "./cuckoo-miner", features = ["build-mean-avx2"]}

Build errors

See Troubleshooting

What was built?

A successful build gets you:

  • target/debug/grin-miner - the main grin-miner binary
  • target/debug/plugins/* - mining plugins

Make sure you always run grin-miner within a directory that contains a grin-miner.toml configuration file.

While testing, put the grin-miner binary on your path like this:

export PATH=/path/to/grin-miner/dir/target/debug:$PATH

You can then run grin-miner directly.


Grin-miner can be further configured via the grin-miner.toml file. This file contains contains inline documentation on all configuration options, and should be the first point of reference.

You should always ensure that this file exists in the directory from which you're running grin-miner.

Using grin-miner

There is a Grin forum post with further detail on how to configure grin-miner and mine grin's testnet.


~398K SLoC