Monero version shipped with a new executable file called monero-blockchain-blackball. What is the purpose of this new program, and how can it be used properly?


monero-blockchain-blackball was created to allow a line of defense against other people using Monero with low regard for privacy. In the simplest sense, this tool allows you to ignore others' outputs (containers of money) that are known to be spent in a certain transaction. If you would include these in your transaction as decoys, these decoys would provide little or no protection.

To use this tool, you need to specify the Monero blockchain location and the fork blockchain location. Your Monero download location may be different, especially if you specifically specified a non-default location.

Run the following commands depending on your operating system. Once this command is finished running, you can send transactions that will purposefully avoid using these outputs. Make sure to run the tool before sending sensitive transactions. You must run a full node to take advantage of these benefits at this time.

You can append --check-subsets to run a more verbose scan at a cost to performance. You can search only the recent outputs by appending --rct-only to save a lot of time and space. You can use --blackball-db-dir to save the database to a different location.

Linux / MacOS

monero-blockchain-blackball ~/.bitmonero/lmdb /path/to/other/blockchain/database

Example: monero-blockchain-blackball ~/.bitmonero/lmdb /home/monero_fork/lmdb --rct-only


Open a command prompt in the location of the monero-blockchain-blackball file and type in the following, or create a .bat file in the same folder and add the following:

monero-blockchain-blackball.exe C:\ProgramData\bitmonero\lmdb \path\to\other\blockchain\database

Example: monero-blockchain-blackball.exe C:\ProgramData\bitmonero\lmdb C:\ProgramData\monero_fork\lmdb --rct-only

This tool will create a LMDB database with the blackballed outputs in a data.mdb file. Unfortunately, you need to convert this file to be read by the wallet software. You will need to follow these steps to convert the database to a list of outputs that the wallet can read.

In order to extract the data, you need to build the LMDB tools. Follow the instructions on GitHub to make the LMDB binaries. Then navigate to ~/monero/external/db_drivers/liblmdb and run the following:

./mdb_stat -a /folder/with/blackball/database

This will show the hash of the database that you have created. Take a note of the database name (eg: blackballs-418015bb9ae982a1975da7d79277c2705727a56894ba0fb246adaabb1f4632e3). You will use it in the next step.

You now need to extract the outputs that need to be blackballed. Use one of the following:

./mdb_dump -s blackballs-<hash> /folder/with/blackball/database/ | awk '/[0-9a-f]{64}/{print $1}' > /output/path/file.txt

./mdb_dump -s blackballs-<hash> /folder/with/blackball/database/ | grep ^.................................................................$ | tr -d \ > /output/path/file.txt

The resulting .txt file can be imported into the official GUI and CLI.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.