Meta Miner: allows to add algo switching support to any stratum miner.
Does not add any extra mining fees.
Usage: mm.js [<config_file.json>] [options]
Adding algo switching support to *any* stratum miner
<config_file.json> is file name of config file to load before parsing options (mm.json by default)
Config file and options should define at least one pool and miner:
Options:
--pool=<pool> (-p): <pool> is in pool_address:pool_port format, where pool_port can be <port_number> or ssl<port_number>
--host=<hostname>: defines host that will be used for miner connections (localhost 127.0.0.1 by default)
--port=<number>: defines port that will be used for miner connections (3333 by default)
--user=<wallet> (-u): <wallet> to use as pool user login (will be taken from the first miner otherwise)
--pass=<miner_id>: <miner_id> to use as pool pass login (will be taken from the first miner otherwise)
--perf_<algo>=<hashrate> Sets hashrate for algo that is: rx/0, rx/wow, cn/r, cn-pico/trtl, cn-heavy/xhv, cn/gpu, argon2/chukwa, k12, c29s, c29v, c29b, kawpow, ethash, autolykos2, panthera, ghostrider
--algo_min_time=<seconds> Sets <seconds> minimum time pool should keep our miner on one algo (0 default, set higher for starting miners)
--miner=<command_line> (-m): <command_line> to start smart miner that can report algo itself
--<algo>=<command_line>: <command_line> to start miner for <algo> that can not report it itself
--watchdog=<seconds> (-w): restart miner if is does not submit work for <seconds> (600 by default, 0 to disable)
--hashrate_watchdog=<percent>: restart miner if is hashrate dropped below <percent> value of of its expected hashrate (0 by default to disable)
--miner_stdin: enables stdin (input) in miner
--quiet (-q): do not show miner output during configuration and also less messages
--verbose (-v): show more messages
--debug: show pool and miner messages
--log=<file_name>: <file_name> of output log
--no-config-save: Do not save config file
--help (-help,-h,-?): Prints this help text
Check https://github.com/xmrig/xmrig-proxy/blob/master/doc/STRATUM_EXT.md#14-algorithm-names-and-variants for list of possible algo names.
{
"miner_host": "127.0.0.1",
"miner_port": 3333,
"pools": [
"gulf.moneroocean.stream:10001"
],
"algos": {
"cn/1": "./xmrig --config=config.json",
"cn/2": "./xmrig --config=config.json",
"cn/r": "./xmrig --config=config.json",
"cn/fast": "./xmrig --config=config.json",
"cn/half": "./xmrig --config=config.json",
"cn/xao": "./xmrig --config=config.json",
"cn/rto": "./xmrig --config=config.json",
"cn/rwz": "./xmrig --config=config.json",
"cn/zls": "./xmrig --config=config.json",
"cn/double": "./xmrig --config=config.json",
"cn/gpu": "./xmrig --config=config.json",
"cn-heavy/0": "./xmrig --config=config.json",
"cn-heavy/tube": "./xmrig --config=config.json",
"cn-heavy/xhv": "./xmrig --config=config.json",
"cn-pico": "./xmrig --config=config.json",
"rx/0": "./xmrig --config=config.json",
"rx/wow": "./xmrig --config=config.json",
"rx/loki": "./xmrig --config=config.json",
"rx/arq": "./xmrig --config=config.json",
"rx/sfx": "./xmrig --config=config.json",
"argon2/chukwa": "./xmrig --config=config.json",
"argon2/wrkz": "./xmrig --config=config.json",
"ghostrider": "./xmrig --config=config.json",
"ethash": "./gminer/miner --server localhost:3333 --user 87MKQonkAUsQ9MNGKB3L51PE884cTeJbgcu6zWZPZt13b632huSGu9xPZwQALhLnAadEurYA8npRPZTJUWed95ZAT17brdt --pass gpu_miner --algo ethash --proto stratum",
"kawpow": "./gminer/miner --server localhost:3333 --user 87MKQonkAUsQ9MNGKB3L51PE884cTeJbgcu6zWZPZt13b632huSGu9xPZwQALhLnAadEurYA8npRPZTJUWed95ZAT17brdt --pass gpu_miner --algo kawpow",
"c29s": "./gminer/miner --server localhost:3333 --user 87MKQonkAUsQ9MNGKB3L51PE884cTeJbgcu6zWZPZt13b632huSGu9xPZwQALhLnAadEurYA8npRPZTJUWed95ZAT17brdt --pass gpu_miner --algo cuckaroo29s",
"c29b": "./gminer/miner --server localhost:3333 --user 87MKQonkAUsQ9MNGKB3L51PE884cTeJbgcu6zWZPZt13b632huSGu9xPZwQALhLnAadEurYA8npRPZTJUWed95ZAT17brdt --pass gpu_miner --algo cuckaroo29b",
"c29v": "./gminer39/miner --server localhost:3333 --user 87MKQonkAUsQ9MNGKB3L51PE884cTeJbgcu6zWZPZt13b632huSGu9xPZwQALhLnAadEurYA8npRPZTJUWed95ZAT17brdt --pass gpu_miner --algo cuckarood29",
"autolykos2": "./trex/t-rex -a autolykos2 -o stratum+tcp://localhost:3333 -u 87MKQonkAUsQ9MNGKB3L51PE884cTeJbgcu6zWZPZt13b632huSGu9xPZwQALhLnAadEurYA8npRPZTJUWed95ZAT17brdt -p gpu_miner"
},
"algo_perf": {
"rx/0": 243.6,
"cn/r": 49.8,
"cn/gpu": 12.9,
"cn-heavy/xhv": 30.5,
"cn-pico/trtl": 0,
"rx/wow": 282.2,
"defyx": 0,
"argon2/chukwa": 4725.4,
"k12": 0,
"c29s": 0,
"c29v": 0,
"rx/loki": 243.6,
"cn/0": 49.8,
"cn/1": 49.8,
"cn/2": 49.8,
"cn/wow": 49.8,
"cn/fast": 99.6,
"cn/half": 99.6,
"cn/xao": 49.8,
"cn/rto": 49.8,
"cn/rwz": 66.39999999999999,
"cn/zls": 66.39999999999999,
"cn/double": 24.9,
"cn-heavy/0": 30.5,
"cn-heavy/tube": 30.5,
"c29b": 0.1865,
"c29s": 0.23375,
"c29v": 0.4875,
"kawpow": 0.003953464329242706,
"ethash": 49860000,
"autolykos2": 144120000,
"ghostrider": 1000
},
"algo_min_time": 0,
"user": "89TxfrUmqJJcb1V124WsUzA78Xa3UYHt7Bg8RGMhXVeZYPN8cE5CZEk58Y1m23ZMLHN7wYeJ9da5n5MXharEjrm41hSnWHL",
"pass": "x",
"log_file": null,
"watchdog": 600,
"hashrate_watchdog": 0
}
Configure your miners to connect to the single localhost:3333 (non SSL/TLS) pool.
For best results separate xmr-stak/xmrig CPU and GPU miners (by using --noCPU, --noAMD, --noNVIDIA options for xmr-stak).
Prepare your miner config files that give the best performance for your hardware on cryptonight, cryptonight-heavy, cryptonight-pico, randomx, randomx/wow, randomx/arq algorithm classes (not needed for xmrig v2.99+).
If you have several miners on one host use mm.js --port option to assign them to different ports.
Additional mm.js pools will be used as backup pools.
To rerun benchmark for specific algorithm class use --perf_algo=0 option.
The configuration guide below is for stock xmrig. For xmr-stak/rx check configuration guide for xmr-stak page. For GPU mining setup using gminer algo check configuration guide for gminer page. For c29 algo reference miner setup check configuration guide for cuckaroo29 page.
Place mm.exe or mm.js (with nodejs installed) into unpacked miner directory either by:
Download and unpack the latest mm-vX.X.zip from https://github.com/MoneroOcean/meta-miner/releases
Download and install nodejs using https://nodejs.org/dist/v8.11.3/node-v8.11.3-x64.msi installator and download and unpack https://raw.githubusercontent.com/MoneroOcean/meta-miner/master/mm.js
Download and unpack the lastest xmrig-amd (https://github.com/xmrig/xmrig/releases/download/v5.4.0/xmrig-5.4.0-msvc-win64.zip).
Modify config.json file in xmrig directory this way and adjust it for the best threads performance (out of scope of this guide):
Run Meta Miner (or use "node mm.js" instead of mm.exe):
mm.exe -p=gulf.moneroocean.stream:10001 -m="xmrig-amd.exe --config=config.json"
Get node and Meta Miner (mm.js) in the miner directory:
sudo apt-get update
sudo apt-get install -y nodejs
wget https://raw.githubusercontent.com/MoneroOcean/meta-miner/master/mm.js
chmod +x mm.js
wget https://github.com/xmrig/xmrig/releases/download/v5.4.0/xmrig-5.4.0-xenial-x64.tar.gz
tar xf xmrig-5.4.0-xenial-x64.tar.gz
cd xmrig-5.4.0
sed -i 's/"url": *"[^"]*",/"url": "localhost:3333",/' config.json
sed -i 's/"user": *"[^"]*",/"user": "89TxfrUmqJJcb1V124WsUzA78Xa3UYHt7Bg8RGMhXVeZYPN8cE5CZEk58Y1m23ZMLHN7wYeJ9da5n5MXharEjrm41hSnWHL",/' config.json
./mm.js -p=gulf.moneroocean.stream:10001 -m="./xmrig --config=config.json"
If you'd like to make an one time donation, the addresses are as follows:
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
RLVJv9rQNHzXS3Zn4JH8hfAHmm1LfECMxy
RUCyaEZxQu3Eure73XPQ57si813RYAMQKC
9fe533kUzAE57YfPP6o3nzsYMKN2W2uCxvg8KG8Vn5DDeJGetRw
3HRbMgcvbqHVW7P34MNGvF2Gh3DE26iHdw
18sKoDSjLCFW9kZrXuza1qzEERnKi7bx8S
0xfE23a61548FCCE159a541FAe9e16cEB92Da650ed
0x4480Ad73a113BEFf05B2079E38D90c9757Ecb063
MGj8PU1PpTNDDqRHmuEqfDpH3gxp6cJrUU