message: Startup arg -reindex-zdb to reindex zerocoin blockchain database.
diff: #include <stdint.h>
  #include <stdio.h>
  #include <veil/ringct/anon.h>
  +#include <veil/zerocoin/zchain.h>
  #ifndef WIN32
  #include <signal.h>
  @@ -411,6 +412,7 @@ void SetupServerArgs()
  "(default: 0 = disable pruning blocks, 1 = allow manual pruning via RPC, >=%u = automatically prune block files to stay under the specified target size in MiB)", MIN_DISK_SPACE_FOR_BLOCK_FILES / 1024 / 1024), false, OptionsCategory::OPTIONS);
  gArgs.AddArg("-reindex", "Rebuild chain state and block index from the blk*.dat files on disk", false, OptionsCategory::OPTIONS);
  gArgs.AddArg("-reindex-chainstate", "Rebuild chain state from the currently indexed blocks", false, OptionsCategory::OPTIONS);
  + gArgs.AddArg("-reindex-zdb", "Rebuild zerocoin blockchain database", false, OptionsCategory::OPTIONS);
  gArgs.AddArg("-resync", "Delete blockchain folders and resync from scratch", false, OptionsCategory::OPTIONS);
  #ifndef WIN32
  gArgs.AddArg("-sysperms", "Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality)", false, OptionsCategory::OPTIONS);
  @@ -1641,6 +1643,14 @@ bool AppInitMain()
  break;
  }
  }
  +
  + if (gArgs.GetBoolArg("-reindex-zdb", false)) {
  + std::string strRet = ReindexZerocoinDB();
  + if (strRet != "") {
  + strLoadError = _(strRet.c_str());
  + break;
  + }
  + }
  } catch (const std::exception& e) {
  LogPrintf("%s\n", e.what());
  strLoadError = _("Error opening block database");
  