message: Track time it takes to validation zerocoin spend
diff: @@ -2257,6 +2257,7 @@ bool CChainState::ConnectBlock(const CBlock& block, CValidationState& state, CBl
  CAmount nBlockValueIn = 0;
  CAmount nBlockValueOut = 0;
  + int64_t nTimeZerocoinSpendCheck = 0;
  for (unsigned int i = 0; i < block.vtx.size(); i++)
  {
  const CTransaction &tx = *(block.vtx[i]);
  @@ -2307,6 +2308,7 @@ bool CChainState::ConnectBlock(const CBlock& block, CValidationState& state, CBl
  }
  } else {
  if (tx.IsZerocoinSpend()) {
  + int64_t nTimeSpendCheck = GetTimeMicros();
  // Skip signature verification if it's already been done or if the block height is below a checkpoint height
  bool fSkipSigVerify = block.fSignaturesVerified ? true : fSkipComputation;
  int nHeightTx = 0;
  @@ -2341,6 +2343,7 @@ bool CChainState::ConnectBlock(const CBlock& block, CValidationState& state, CBl
  return state.DoS(100, error("%s: failed to add block %s with invalid zerocoinspend", __func__,
  tx.GetHash().GetHex()), REJECT_INVALID);
  }
  + nTimeZerocoinSpendCheck += GetTimeMicros() - nTimeSpendCheck;
  }
  if (!Consensus::CheckTxInputs(tx, state, view, pindex->nHeight, txfee, nTxValueIn, nTxValueOut))
  @@ -2495,6 +2498,9 @@ bool CChainState::ConnectBlock(const CBlock& block, CValidationState& state, CBl
  LogPrint(BCLog::BENCH, " - Connect %u transactions: %.2fms (%.3fms/tx, %.3fms/txin) [%.2fs (%.2fms/blk)]\n", (unsigned)block.vtx.size(), MILLI * (nTime3 - nTime2), MILLI * (nTime3 - nTime2) / block.vtx.size(), nInputs <= 1 ? 0 : MILLI * (nTime3 - nTime2) / (nInputs-1), nTimeConnect * MICRO, nTimeConnect * MILLI / nBlocksTotal);
  + if (!mapSpends.empty())
  + LogPrint(BCLog::BENCH, " - Check zerocoin spends: %.2fms\n", MILLI * nTimeZerocoinSpendCheck);
  +
  CAmount networkReward = pindex->nNetworkRewardReserve > Params().MaxNetworkReward() ? Params().MaxNetworkReward() : pindex->nNetworkRewardReserve;
  pindex->nNetworkRewardReserve -= networkReward;
  @@ -3894,9 +3900,6 @@ bool AddZerocoinsToIndex(CBlockIndex* pindex, const CBlock& block, const std::ma
  }
  }
  - for (auto& denom : libzerocoin::zerocoinDenomList)
  - LogPrint(BCLog::ZEROCOINDB, "%s coins for denomination %d pubcoin %s\n", __func__, denom, pindex->mapZerocoinSupply.at(denom));
  -
  return true;
  }
  