Monero version 0.12.0.0 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?
1 Answer
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
Windows
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.
-
Are there any currently publicly available blackball databases?– user1076May 28, 2018 at 21:44
-
@begs-the-hessian There's nothing official yet, but I put a list I generated up at s3.amazonaws.com/monero-legacy-blackball/blackballs.gz Aug 8, 2018 at 7:11