#cuckoo #solver #miner


Rust bindings to John Tromp's Cuckoo Cycle Implementations

2 unstable releases

Uses old Rust 2015

0.5.2 Jan 11, 2019
0.4.2 Dec 11, 2018

37 downloads per month
Used in 2 crates



Rust 1K SLoC // 0.3% comments C++ 1K SLoC // 0.0% comments C 452 SLoC // 0.1% comments Java 299 SLoC // 0.0% comments Perl 131 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"]}

Building the OpenCL plugins

OpenCL plugins are not enabled by default. Run install_ocl_plugins.sh script to build and install them.


You must install OpenCL libraries for your operating system before. If you just need to compile them (for development or testing purposes) build grin-miner the following way:

cargo build --features opencl

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.


~196K SLoC