Skip to content

Frequently Asked Questions

Max edited this page Jul 5, 2024 · 44 revisions

When is mainnet launch?

Current latest estimate is Q4 2024.

Is there any pre-farm?

No, but starting from testnet8 (starting from block 25,000), we incentivize farmers who participate, contribute and report bugs. For every block won, the reward address is recorded and will be paid a fixed 0.5 MMX at the genesis block in mainnet. This also applies for testnet9 and subsequent testnets before mainnet launch.

How many MMX coins do I get per block reward?

0.5 MMX + transaction fees

Is there any dev fees?

There is a project fee of 1% on transaction fees (not block reward).

What kind of computer do I need to run a MMX Node?

You either need a low end GPU like a GTX 1650, or a modern high-core count CPU with SHA-NI support. This is needed to verify VDFs in MMX. RAM at least 4 GiB, and preferably an SSD to store the blockchain DB.

Can I use Chia/Chives plots to farm MMX?

No, MMX has it's own plot format that is compression resistant.

I don't have a lot of free space that I can allocate for MMX plots. Is it worth to farm MMX if I only have xxx TB?

I'd say it depends on your goals, the netspace on mainnet and your space allocation. But if you want to estimate your time to win MMX per day, you can use this calculator:

https://docs.google.com/spreadsheets/d/1io9pQs4lQiGp3R0vszy9lF_cCNTmY32g5ECSlmFEjPE/

Plotting

How do I get started? How do I make/create MMX plots?

To download the plotter, go to https://github.com/madMAx43v3r/mmx-binaries/tree/master/mmx-cuda-plotter

Before creating a plot, you need to have a farmer key by creating a wallet first. (See below how to create a wallet)

In order to get -f [farmerkey], see output of mmx wallet keys.

To plot for testnet11 and later, you don't need to input -p [poolkey] as it has been disabled. To plot for pool plots, you'll need to replot for mainnet later, by specifying -c [contract address] instead of -p [poolkey].

A new plot format has been introduced for testnet11. Farmers who had plotted from testnet8/9/10 had to replot in order to participate in farming for testnet11. New farmer key is also required (66 characters instead of old 96 characters). Old wallet.dat will be reuseable, as well as the 24 seed mnemonic words.

Usage:
  mmx_cuda_plot [OPTION...]

  -C, --level arg      Compression level (0 to 15)
      --ssd            Make SSD plots
  -n, --count arg      Number of plots to create (default = 1, unlimited =
                       -1)
  -g, --device arg     CUDA device (default = 0)
  -r, --ndevices arg   Number of CUDA devices (default = 1)
  -t, --tmpdir arg     Temporary directories for plot storage (default =
                       $PWD)
  -2, --tmpdir2 arg    Temporary directory 2 for partial RAM / disk mode
                       (default = @RAM)
  -3, --tmpdir3 arg    Temporary directory 3 for disk mode (default = @RAM)
  -d, --finaldir arg   Final destinations (default = <tmpdir>, remote =
                       @HOST)
  -z, --dstport arg    Destination port for remote copy (default = 1337)
  -w, --waitforcopy    Wait for copy to start next plot
  -c, --contract arg   Pool Contract Address (62 chars)
  -f, --farmerkey arg  Farmer Public Key (33 bytes)
  -S, --streams arg    Number of parallel streams (default = 3, must be >= 2)
  -B, --chunksize arg  Bucket chunk size in MiB (default = 16, 1 to 256)
  -Q, --maxtmp arg     Max number of plots to cache in tmpdir (default = -1)
  -A, --copylimit arg  Max number of parallel copies in total (default = -1)
  -W, --maxcopy arg    Max number of parallel copies to same HDD (default =
                       1, unlimited = -1)
  -M, --memory arg     Max shared / pinned memory in GiB (default =
                       unlimited)
      --version        Print version
  -h, --help           Print help

In case of -n [count] != 1, you may press Ctrl-C for graceful termination after current plot is finished, or double press Ctrl-C to terminate immediately.

Example:

./mmx_cuda_plot -f [insert your public farmer key here] -p [insert your pool key here]  -t /mnt/NVME/Temp/ -2 /mnt/ramdisk/ -d /mnt/NVME/Temp/ -C 3 -S 2  -n 18

How do I make the plotter log into a text file for each plot created?

At the end of the command, add 2>&1 | tee /home/user/desired_path/$(uuid).log;

Example:

./mmx_cuda_plot -f [insert your public farmer key here] -p [insert your pool key here]  -t /mnt/NVME/Temp/ -2 /mnt/ramdisk/ -d /mnt/NVME/Temp/ -C 3 -S 2  -n 18 2>&1 | tee /home/user/desired_path/(filename).log;

What is the difference between HDD and SSD plots?

HDD plots have an extra (huge) table that stores the hash output, so looking up the X values to compute quality, is not needed. As such, HDD plot size is much bigger than SSD (about 2.5x bigger), but SSD plots require much more IOPS and compute to farm effectively.

What size plots are supported? If I start plotting now for testnet11, can I use the same plots to farm on mainnet?

For testnet, k26 and higher. For mainnet, k29 to k32 are supported.

What k size and C level should I plot?

That depends on what kind of hardware you already have. The minimum k size of k29 requires 64GB to plot all in RAM. If you only have 32GB RAM and huge/fast NVMe, you can try plotting in partial RAM. Or you can disk plot k32s. If you have 128GB or 256GB RAM, you should try to plot the largest k size possible (k30 and k31 all in RAM, respectively).

With the latest new MMX plot format, there is probably 3% difference in non-compressed and C15 (maximum compression). So it's not really worth the extra compute for just a few GB difference. Personally, I think C1-C5 is where it matters. I recommend C3 if you're harvesting with a Pi4 and have farm size < 300TB. If you run dual Xeon v3/v4, you can try C5 or C6.

What are the final plot sizes for k29 to k32, C0 to C15 ?

Please refer to this spreadsheet, switch to the "Miscellaneous" tab. https://docs.google.com/spreadsheets/d/1EROCHCRJczwlohun0Wx0d2mzCzDrOMoMm-OEB-3voFE/

How much temp space do I need for this MMX new plot format?

Please refer to this table https://github.com/voidxno/mmx-node-notes/wiki/New-plot-format-testnet11#plotting

and also this spreadsheet, switch to the "Miscellaneous" tab. https://docs.google.com/spreadsheets/d/1EROCHCRJczwlohun0Wx0d2mzCzDrOMoMm-OEB-3voFE/

I have GPU xxx and I plot kxx plot Cxx in xxx seconds. How fast are others plotting?

Check out this spreadsheet: https://docs.google.com/spreadsheets/d/1EROCHCRJczwlohun0Wx0d2mzCzDrOMoMm-OEB-3voFE/

I started plotting but got stuck in Phase 1, table 1.

Phase 1, table 1 is very compute heavy and now takes more than 50% of the plot time (if you're plotting all in RAM). In most cases, you'd be limited by the compute capabilities of your GPU. If it doesn't return an error, keep waiting for at least 5 minutes before assuming it's stuck.

What are the benefits of plotting and farming higher k sizes?

A single k31 plot has roughly the size of two k30 plots. It is also twice as likely to find a proof. However, as seen above, plotting a higher k size also requires higher allocation of resources (temp space) and longer plotting time. For a small farm with a total number of plots less than 10000, plotting k30 plots is fine. For a large farm, it is better to plot higher k size plot to minimize the look-up time for finding proofs at every block height.

Lookup times of < 1 sec is considered good and < 3 sec is acceptable, whereas anything higher than 5 seconds risk losing block rewards.

Can I use RAMdisk to make plots? How much temp space is needed to create HDD plots?

Current plotter use the RAM natively, there is no need to assign RAM disk or tmpfs.

	Partial		All in RAM	Final Plot size (GiB)

k29	 33		63		 _37.0_

k30	 64		_117_		 _75.3_

k31	124		_216_		_155.1_

k32	240		_408_		_320.3_

Note: The numbers above are just an approximation.

Can I start making NFT plots now for MMX?

Yes, you can make NFT plots, but you cannot farm them yet. Any NFT plot created now, will not be valid for mainnet, because they will be on a different blockchain and therefore, different contract pool key.

VDF Verifications

What is VDF and why do we need to verify it as a farmer?

A Verifiable Delay Function, is the Proof of Time part in Proof of Space and Time. It is referred to as a proof that a sequential function was executed a certain number of times.

Verifiable: A verifier can verify the proof in a shorter amount of time than it took to generate it.

Delay: It proofs that a certain amount of real time has elapsed.

Function: This means it’s deterministic. Computing a VDF with an input x always yields the same result y.

VDF verification requires either a fast multi-threaded CPU or a (decent) GPU.

What kind of GPU do I need for verifying the VDF? What's the minimum required/recommended GPU for VDF verifications?

Nvidia's GT1030 is affordable, power efficient and does VDF verifications in < 4 seconds, while the GTX1650 does it in < 1 second. For best results, devices which support OpenCL 1.2 are recommended. It has been demonstrated that OpenCL 1.1 devices can verify VDFs, but performance is significantly lower than cards even 1 generation newer, and the additional requirement of installing specific drivers to support the older cards can be challenging, depending on the operating system used. For a list of supported GPUs, please see:

https://docs.google.com/spreadsheets/d/1LqyZut0JBwQpbCBnh73fPXkT-1WbCYoXVnIbf6jeyac/

For a list of popular GPUs with their VDF times, please see:

https://docs.google.com/spreadsheets/d/1NlK-dq7vCbX4NHzrOloyy4ylLW-fdXjuT8468__SF64/

My node is showing VDF verification took longer than recommended: x.xxx sec or [Node] WARN: VDF verification took longer than block interval, unable to keep sync!. What is wrong?

Verification times below 3 sec is good, whereas anything > 5 seconds is bad. If your VDF verification, either done by the CPU or GPU, took more than 5 seconds, then you will get this warning message. Upgrading your CPU or GPU is strongly recommended. If you think you have a fast GPU and still getting this message, verify that your GPU driver is properly installed and the verification process is really done with the GPU, not the CPU.

How do I know if I have installed and set up OpenCL drivers correctly?

Run clinfo in the command line. If it's showing at least 1 platform, it should work properly.

For Windows, download proprietary clinfo utility from:

https://opencl.gpuinfo.org/download.php

How do I get OpenCL to do VDF verifications?

https://github.com/madMAx43v3r/mmx-node/wiki/Using-OpenCL-for-VDF-Verification

I have an Intel/AMD CPU that come with an iGPU and another discrete GPU installed. MMX can use the iGPU to do OpenCL VDF, but not with the discrete GPU. How can I use the discrete GPU to do OpenCL VDF?

First, install the drivers for the discrete GPU. Use clinfo for Linux or for Windows, download clinfo utility here:

https://opencl.gpuinfo.org/download.php

Perform OpenCL hardware diagnostic/info tool and get cl_platform_name

Then run the node with the GPU you want OpenCL to be done with: ./run_node.sh --opencl.platform "name"

For Nvidia, it's "NVIDIA CUDA"

For AMD, it's "AMD Accelerated Parallel Processing"

For Intel, it's "Intel(R) OpenCL"

For a more permanent solution (or in Windows), you can also create a file named platform in ~/config/local/opencl/ and put the platform name in there. Please include the quotes "".

If you have an AMD APU and another AMD discrete GPU with the same platform name, you can select which OpenCL device to use: ./run_node.sh --Node.opencl_device 0/1

Or if you have an AMD APU and a mix of discrete AMD/Nvidia GPUs, you can combine the parameters. Example: ./run_node.sh --Node.opencl_device 2 --opencl.platform "NVIDIA CUDA"

If you want to force use your CPU to do VDFs, while having a GPU installed in your computer, you can run this command: ./run_node.sh --Node.opencl_device -1

How do I know if MMX is using my GPU to do VDFs?

Start a node, look for this line:

[Node] INFO: Using OpenCL GPU device [0] GeForce RTX 3070 Ti (total of 1 found)

If you have more than 1 GPU, please select accordingly in file /config/local/Node.json.

I have installed and set up OpenCL drivers correctly, yet MMX only uses my CPU. What is wrong?

VDF verification is done every 10 seconds and only for the latest block height. Syncing still uses the CPU.

Node

How do I get started? Where do I download the client?

https://github.com/madMAx43v3r/mmx-node/wiki/Installation

https://github.com/madMAx43v3r/mmx-node/wiki/Getting-Started

I started MMX-node in Windows but getting error message "Faulting module path: C:\Program Files\MMX Node\gui\cefsharp\libcef.dll" or something like that. What's wrong?

Are you sure you have read the installation wiki linked above? It says to update and install the latest Microsoft Visual C++ Redistributable.

How do I upgrade to a newer testnet?

cd into your ~/mmx-node/
rm NETWORK
./clean_all.sh (optional)
./update.sh

Blockchain data are now stored in testnetX folder by default.

Okay I have synced up to the latest blockchain height and I still see high CPU usage and some GPU?

Please check that there are no background processes and you are not running the timelord. Also check that VDF verification is done with a GPU.

The timelord is taking a huge chunk of my CPU usage, how do I disable it?

You can disable it in GUI settings. (It's disabled by default now)

Alternatively, create a file named timelord (all lower case) in config/local/. Open the file in text editor and type false. Or simply run echo false > config/local/timelord and then restart the node.

For Windows, put the file in C:\Users\name\.mmx\config\local\

Do not edit any files in Program Files

I tried to run one of the mmx .... commands and I'm getting [Proxy] WARN: connect() failed with: 10061 (localhost:11331) error. What's wrong?

Before running a mmx ... command in a new terminal, you need to source ./activate.sh inside the mmx-node directory first, and the node needs to be running (except for mmx wallet create). Alternatively, you can open terminal window from MMX-node folder/shortcut from the Start Menu with source pre-activated.

Where can I find a list of CLI commands for MMX node?

https://github.com/madMAx43v3r/mmx-node/wiki/CLI-Commands

How is network difficulty calculated?

Difficulty is adjusted by a defined (and enforced via consensus) exponential low-pass filter, such that the average proof score is 8192, which will yield 8 proofs per block on average.

I left my node running for several hours and when I came back, it's saying that I have forked from the network and there is no way of recovering/syncing to the current height. How can I fix this?

You can revert to a lower height in the GUI settings page now. The height should be about 1000 blocks before the node gets stuck.

Alternatively, run mmx node revert [height] while the node is running.

I copied the block_chain.dat file from another machine and now my node is saying I have forked from the network and there is no way of recovering/syncing to the current height. Or I suspect my database is corrupted. How can I fix this?

Stop the node, then delete the db folder in testnetX and restart the node. Note that this will re-build the database and take some time.

I have tried replay_height and deleting the db folder and my node still won't sync. What do I do?

Stop the node, then delete the testnetX folder and restart node. This will sync from scratch and might take some time.

I've just started plotting. Can I farm my plotted space right away? How do I add my plots so the harvester reads my plots properly?

Adding plot directories is now possible in the GUI settings page.

Alternatively, open config/local/Harvester.json with a text editor. Follow the syntax below:

{
  "reload_interval": 3600,
  "farm_virtual_plots": true,
  "recursive_search": false,
  "plot_dirs": [
    "E:/MMXPlots",
    "E:/Test Folder/",
    "E:/Folder/Subfolder",
    "/mnt/Seagate13/MMXPlots/",
    "/mnt/Seagate42/MMXPlots/"
  ]
}

You may also put everything on 1 line if it helps you to see all the plot drives/folders:

"plot_dirs": ["D:/", "E:/", "F:/", "G:/", "H:/", "I:/", "J:/", "K:/", "L:/"]

Backward slash "\" is not supported, so forward slash "/" must be used. Note that the last entry is not followed by a ,

My node returned [Router] INFO: Broadcasting proof for height 65105 with score 25761. Why did a plot with lower score eventually win that block?

The score is actually an indication of how close your plot has proofs for the challenge. The lower the score, the better the proof is.

Do I need to open some ports to allow MMX to communicate with other peers?

You don't have to. But if you have fast internet connection and feel like helping out the network by allowing incoming connections, you can enable port forwarding on TCP 12341 for testnet11.

UPnP automatic port forwarding is now enabled by default, however it can disabled in GUI settings.

My setup is a complicated mix of several computers, where I run a full node on one computer and a few remote harvesters. How do I set them up?

https://github.com/madMAx43v3r/mmx-node/wiki/Remote-Services

Web GUI

How do I access the web GUI?

Since testnet6, WebGUI requires a login. For now, the password is randomly generated and can be accessed from your MMX home directory. In order to access the WebGUI, your node needs to be running (not necessarily synced).

For Windows, it's usually located at C:\Users\name\.mmx\PASSWD (open with notepad or text editor)

For Linux, it's usually located at ~/mmx-node/PASSWD (cat or nano into the file)

If somehow the password you copied is wrong, you might have to generate a new one. Delete config/local/passwd file, run ./activate.sh again and restart your node.

I've got some remote farmer/harvester setup all in a LAN. How do I access web GUI to my main node?

Edit config/local/HttpServer.json to set host as follows: {"host": "0.0.0.0"} (Node restart needed to apply)

Then entering [MMX-Node-IP]:11380/gui/ in the URL bar of your browser should work.

For example: 192.168.1.123:11380/gui/

Note: Only use this option if your local network is secure and no devices can sniff traffic and capture your password.

Option #2: https://github.com/madMAx43v3r/mmx-node/wiki/Remote-Services#remote-connections-over-public-networks

Wallet

I start my node and it showed warnings that it cannot find my wallet. How do I create a wallet?

You can create a wallet in the GUI now. Otherwise see below:

Make sure that your wallet file is named wallet.dat and not wallet_xxxxx.dat and that it's placed in the right folder.

For Linux, it's ~/mmx-node/

For Windows, it's C:\Users\name\.mmx\

If the file does not exist yet, you may create it by running mmx wallet create -f [filename.dat]

If you did not specify a filename, the default name wallet.dat will be used.

If you have to create multiple wallets, be sure to edit your /config/local/Wallet.json file and enter your wallet_name.dat file under "key_files+": []

mmx wallet create is the only MMX command that does not need the node running in the background.

I lost my wallet.dat file, can I recover it with my 64-character seed hash instead?

Yes. Run mmx wallet create [seed hash]. You might have to cd into the /mmx-node/ folder and run source ./activate.sh

For Windows users, run the command from the shortcut placed in the start menu.

Is it true that the seed hash will be replaced with 24 mnemonic words instead? How can I get them if I had an old wallet created before testnet7?

Yes, once your node properly loads your wallet.dat, you can run mmx wallet get seed to show your 24 mnemonic seed words.

In the future, you can even generate your wallet.dat file with mmx wallet create --mnemonic word1 word2 word3 .....

So I have setup everything right, my farmer is working, my plots are passing the filter. I have a large % of the netspace and I have farmed for days but I haven't won any MMX coins. What's wrong?

Realize that with the same seed hash, your wallet address has changed since testnet7.

If you have set your farming reward sent to a cold wallet, you need to check that you still have proper access to the old wallet, or update the reward address to a new one. You can check your farmer reward address in Farmer.json file in /config/local/.

If you currently have that set to point to null address, it's going to send reward to your default/hot wallet.

Virtual Plots (VP)

What is a Virtual Plot and how does it work?

Virtual Plots allow to further increase efficiency/lower electricity use in crypto-mining. VPs can only get transaction fees (not whole block rewards). Each MMX deposited constitutes 50 GB of equivalent plot size, ie. 1 TB = 20 MMX. Withdrawal is possible but 10% is burned when doing so.

How do I manage my VPs?

Go to WebGUI > Wallet > Plots. It is recommended to keep a single Virtual Plot below 0.1% of the total netspace, otherwise its win chance is reduced.

New VPs are picked up at the next plot reload, to farm a new VP immediately you have to reload your plots. The harvester will then report your virtual plots:

Harvester Loaded 3 (physical) plots, 1 virtual plots, 0.0767306 TB total, 19.94 MMX total, took 2.341 sec

So I have deposited all my MMX into my VP contract. Can I shutdown my node and expect lots of MMX in a year?

No. VPs still need to be farmed like regular plots.

Timelord

I have the fastest CPU in the world. How do I run the timelord and how would I check/know that I am winning timelord rewards?

You can run the node with ./run_node.sh --timelord 1. Look for a line that says, "timelord = "true/false.

For a more permanent solution, create a file named timelord in your /config/local/ folder and put "true/false" in there and nothing else.

You should know if you're the fastest timelord in the network if your terminal/log says , "Broadcasting VDF for height XXXXX...."

Then you'll be rewarded 0.005 MMX for every block.

For more info, you can read about timelord here: https://github.com/voidxno/mmx-node-notes/wiki/Optimizations-for-TimeLord

Clone this wiki locally