private void checkTxs(List<Transaction> transactions, String block) { final InstantXManager.TxConflictResult cnfResult = network.getInstantXManager().checkTransactionsConflict(transactions); if (cnfResult.isConflicted()) { throw new VerificationException( "Transaction " + cnfResult.conflictedTx + " from block " + block + " is conflicting with already locked tx " + cnfResult.lockedTx); } }
@Override public void verifyBlockAddition( Block added, @Nullable List<Sha256Hash> filteredTxHashList, @Nullable Map<Sha256Hash, Transaction> filteredTxn) { if (network.permitsMasternodesLogic() && network.getSporkManager().isSporkActive(SporkManager.SPORK_3_INSTANTX_BLOCK_FILTERING)) { if (filteredTxHashList != null && filteredTxn != null) { List<Transaction> toCheck = Lists.newArrayListWithExpectedSize(filteredTxn.size()); for (final Sha256Hash txHash : filteredTxHashList) { final Transaction tx = filteredTxn.get(txHash); if (tx != null) toCheck.add(tx); } if (toCheck.size() > 0) { checkTxs(toCheck, added.getHashAsString()); } } else { final List<Transaction> transactions = added.getTransactions(); if (transactions != null) { checkTxs(transactions, added.getHashAsString()); } } } }