diff --git a/src/neo/Ledger/Blockchain.cs b/src/neo/Ledger/Blockchain.cs index fd76d1ebca..0a535f9a5b 100644 --- a/src/neo/Ledger/Blockchain.cs +++ b/src/neo/Ledger/Blockchain.cs @@ -331,6 +331,7 @@ private VerifyResult OnNewBlock(Block block) if (!block.Hash.Equals(header_index[(int)block.Index])) return VerifyResult.Invalid; } + block_cache.TryAdd(block.Hash, block); if (block.Index == Height + 1) { Block block_persist = block; @@ -370,7 +371,6 @@ private VerifyResult OnNewBlock(Block block) } else { - block_cache.Add(block.Hash, block); if (block.Index + 100 >= header_index.Count) system.LocalNode.Tell(new LocalNode.RelayDirectly { Inventory = block }); if (block.Index == header_index.Count) @@ -430,7 +430,7 @@ private VerifyResult OnNewTransaction(Transaction transaction) private void OnPersistCompleted(Block block) { - block_cache.Remove(block.Hash); + block_cache.Remove(block.PrevHash); MemPool.UpdatePoolForBlockPersisted(block, currentSnapshot); Context.System.EventStream.Publish(new PersistCompleted { Block = block }); }