From 49b8518a4805aa8dea40a432211a3037e8896be3 Mon Sep 17 00:00:00 2001 From: Charis Zhao Date: Mon, 13 Jan 2020 23:54:53 +0800 Subject: [PATCH] Add ContainsTransaction Recheck when ParallelVerifiedTransaction Received (#1408) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add containsTx recheck * add UT * Update to just View check * update * revert * Update UT_Blockchain.cs Co-authored-by: Vitor Nazário Coelho --- src/neo/Ledger/Blockchain.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/neo/Ledger/Blockchain.cs b/src/neo/Ledger/Blockchain.cs index 74d06806e4..48c7da914a 100644 --- a/src/neo/Ledger/Blockchain.cs +++ b/src/neo/Ledger/Blockchain.cs @@ -429,7 +429,9 @@ private void OnParallelVerified(ParallelVerified parallelVerified) RelayResultReason reason = parallelVerified.VerifyResult; if (reason == RelayResultReason.Succeed) { - if (!MemPool.CanTransactionFitInPool(parallelVerified.Transaction)) + if (View.ContainsTransaction(parallelVerified.Transaction.Hash)) + reason = RelayResultReason.AlreadyExists; + else if (!MemPool.CanTransactionFitInPool(parallelVerified.Transaction)) reason = RelayResultReason.OutOfMemory; else if (!MemPool.TryAdd(parallelVerified.Transaction.Hash, parallelVerified.Transaction)) reason = RelayResultReason.OutOfMemory;