message: Fixed bug (Possible to submit a block with an arbitrary hashStateRoot or hashUTXORoot).
diff: @@ -2320,15 +2320,14 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin
  LogPrint("bench", " - Verify %u txins: %.2fms (%.3fms/txin) [%.2fs]\n", nInputs - 1, 0.001 * (nTime4 - nTime2), nInputs <= 1 ? 0 : 0.001 * (nTime4 - nTime2) / (nInputs-1), nTimeVerify * 0.000001);
  ////////////////////////////////////////////////////////////////// // qtum
  - // if (globalState->rootHash() != uintToh256(block.hashStateRoot))
  - if (globalState->rootHash() != uintToh256(block.hashStateRoot) && globalState->rootHashUTXO() != uintToh256(block.hashUTXORoot))
  - return state.DoS(100, error("ConnectBlock(): rootHashState diverged"),
  - REJECT_INVALID, "diverged-state-root");
  + if (globalState->rootHash() != uintToh256(block.hashStateRoot) || globalState->rootHashUTXO() != uintToh256(block.hashUTXORoot))
  + return state.DoS(100, error("ConnectBlock(): rootHashState or hashUTXORoot diverged"),
  + REJECT_INVALID, "diverged-stateorutxo-root");
  if (fJustCheck)
  {
  - dev::h256 prevHashStateRoot = dev::sha3(dev::rlp(""));
  - dev::h256 prevHashUTXORoot = dev::sha3(dev::rlp(""));
  + dev::h256 prevHashStateRoot(dev::sha3(dev::rlp("")));
  + dev::h256 prevHashUTXORoot(dev::sha3(dev::rlp("")));
  if(pindex->pprev->hashStateRoot != uint256() && pindex->pprev->hashUTXORoot != uint256()){
  prevHashStateRoot = uintToh256(pindex->pprev->hashStateRoot);
  prevHashUTXORoot = uintToh256(pindex->pprev->hashUTXORoot);
  