6

This message appears in my debug.log:

2017-01-21 00:16:42 Opened LevelDB successfully
2017-01-21 00:16:42 Using obfuscation key for /home/<username>/.bitcoin/blocks/index: 0000000000000000

As does this:

2017-01-21 00:16:42 Opened LevelDB successfully
2017-01-21 00:16:42 Using obfuscation key for /home/<username>/.bitcoin/chainstate: <removed>

What is an obfuscation key used for?

Nick ODell
  • 29,396
  • 11
  • 72
  • 130

1 Answers1

12

Either accidentally or intentionally, the Bitcoin Core chainstate database (which is a LevelDB database directory containing the UTXO set at the current tip) used to occasionally trigger anti-virus software. It would recognize certain byte patterns in it, and automatically quarantine and scan the file, resulting in database corruptions.

This was resolved by making the software use an obfuscation scheme for the non-hashed data in it. The scheme is very simple - a randomly chosen (per database) 64-bit value that gets XORed into all values in the database. This is fast, simple, and so far, effective.

Pieter Wuille
  • 105,497
  • 9
  • 194
  • 308