Mithril v0.10.0 is Cryptonight v8 ready.
Rust Monero Miner (pure Rust is the goal, but the project is not there yet, see help wanted section)
RandomX is implemented, but still some more testing is needed. It is now possible to mine with the implementation. Optimisations are next.
Future Feature Backlog
You need the Rust nightly version to compile Mithril, since it uses inline assembler which is only available
in the nightly version of Rust. The nightly version is best installed with rustup.
Once you have the nightly version installed, type
cargo build --release for an optimised binary.
The binary can be found in the
Mithril expects a
config.toml in the working directory. Copy the
config.toml to the Mithril
working directory. You need at least configure your Monero address in the
[pool] section for the reward and the
num_threads depending on your machine (a good start is to use 2x number of your cores on your machine).
If you get a
wrong instruction set kind of error you can try to disable hardware AES with the
has_aes flag in the
If you find any issues, please report them here: Mithril Issues
Auto-Tuning is enabled by default in Mithril. You can disable and configure auto-tuning in the config.toml:
[worker] num_threads = 8 auto_tune = true auto_tune_interval_minutes = 15 auto_tune_log = "./bandit.log"
If you set
false, Mithril will honour your
num_threads and will use the number of threads configured
there. The other options are only relevant if you set
true. The config
auto_tune_interval_minutes controls, how often a new bandit arm will be drawn and a new thread count setup will be tried. I suggest picking a longer interval, to average-out some spikes on loads on the machine the miner is running on.
You can enable detailed logging by setting a path to a file in
auto_tune_log. Each step in the bandit algorithm
will be logged there. You can evaluate the performance of the bandit algorithm on your machine with the Bandit-Tools that have been created for exactly this purpose. You find them here: Bandit-Tools.
The current state of the bandit algorithm will always be saved to
You can stop the miner and on the next startup it will continue the arm evaluation on the point were it stopped last.
As mentioned you can use the Bandit-Tools Web-App to evaluate
the evaluation/exploitation phases of the bandit algorithm. You can upload the
file and get a visualisation of the information present in these two files.
If you want to share publicly your log and state files, please open a pull request on the bandit_data branch of this project. Discussing results should be done on Reddit: Reddit Post.
Mithril has basic support for logging the hash rate of the miner (in order to tune it). Hash-Rate Logging has to be
enabled in the
[metric] section and is disabled in the default configuration:
enabled = false resolution = 100 #determines how often a hash result is reported sample_interval_seconds = 60 report_file = "/path/to/hash/report/file.csv"
The most important configuration option is
report_file. You can configure an absolute path to a csv file where the hash rate is logged. Each
sample_interval_seconds a new line with
<unix-timestamp>;<#hashes since last sample> is appended to this file. You can calculate the average hash rate (for a given time interval) from this file with external tools (e.g. Google Drive).
resolution option determines how often a hash count is measured internally. Every
resolution hashes the result is published to a metric sub-thread in the program. Setting this to a low value will increase the overhead for measuring.
Mithril was tested on this Platform/architecture combinations so far:
Please notify me, if you tested mithril on one other platform and it is running stable.
ARM support (Raspberry, Pine64) is a short term goal I am working on.
The goal of this project is to build a
pure Rust monero miner implementation. Currently the
Skein and JH hash functions are used as FFI C-Bindings, because there is not Rust implementation available (or I have not found any). A pure Skein or JH Rust implentation would be very welcomed. Notify me if you did implement one of these hashing
functions and I will gladly use them in mithril!
If you want to donate directly to support further development, this is my Monero donation address:
or support the project on Github Sponsors: