-
Notifications
You must be signed in to change notification settings - Fork 33
Frequently Asked Questions
Current latest estimate is Q4 2024.
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.
0.5 MMX + transaction fees
There is a project fee of 1% on transaction fees (not block reward).
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.
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/
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
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;
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.
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.
Please refer to this spreadsheet, switch to the "Miscellaneous" tab. https://docs.google.com/spreadsheets/d/1EROCHCRJczwlohun0Wx0d2mzCzDrOMoMm-OEB-3voFE/
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/
Check out this spreadsheet: https://docs.google.com/spreadsheets/d/1EROCHCRJczwlohun0Wx0d2mzCzDrOMoMm-OEB-3voFE/
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.
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.
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.
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.
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.
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
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
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
.
VDF verification is done every 10 seconds and only for the latest block height. Syncing still uses the CPU.
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.
cd into your ~/mmx-node/
rm NETWORK
./clean_all.sh (optional)
./update.sh
Blockchain data are now stored in testnetX
folder by default.
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.
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.
https://github.com/madMAx43v3r/mmx-node/wiki/CLI-Commands
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.
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.
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
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.
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
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.
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 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.
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.
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