/// <summary>
        /// Insert a new transaction to the incoming transaction processing queue.
        /// This queue is processed from time to time.
        /// </summary>
        /// <param name="transactionContent"></param>
        /// <param name="senderPublicKey"></param>
        public void InsertNewTransaction(TransactionContent transactionContent, Hash senderPublicKey)
        {
            TransactionProcessingResult rslt = transactionContent.VerifySignature();

            if (rslt == TransactionProcessingResult.Accepted)
            {
                // Insert if the transaction does not already exist.
                if (!IncomingTransactions.ContainsKey(transactionContent.TransactionID))
                {
                    IncomingTransactions.TryAdd(transactionContent.TransactionID, transactionContent);
                }
            }
            else
            {
                // Add the user to the blacklist if signature is invalid or integrity checks fails.
                nodeState.GlobalBlacklistedUsers.Add(senderPublicKey);
            }
        }
        /// <summary>
        /// Handles Propagation request
        /// </summary>
        /// <param name="transactionContent"></param>
        /// <returns></returns>
        public TransactionProcessingResult HandlePropagationRequest(TransactionContent transactionContent)
        {
            Interlocked.Increment(ref nodeState.NodeInfo.NodeDetails.TransactionsProcessed);

            TransactionProcessingResult rslt = transactionContent.VerifySignature();

            transactionStateManager.Set(transactionContent.TransactionID, rslt);
            transactionStateManager.Set(transactionContent.TransactionID, TransactionStatusType.Proposed);

            if (!IncomingPropagations_ALL.ContainsKey(transactionContent.TransactionID))
            {
                IncomingPropagations_ALL.TryAdd(transactionContent.TransactionID, transactionContent);
            }

            if (rslt == TransactionProcessingResult.Accepted)
            {
                lock (transactionLock)
                {
                    // Insert if the transaction does not already exist.
                    if (!IncomingPropagations.ContainsKey(transactionContent.TransactionID))
                    {
                        if (IncomingPropagations.TryAdd(transactionContent.TransactionID, transactionContent))
                        {
                            transactionStateManager.Set(transactionContent.TransactionID, TransactionStatusType.InPreProcessing);
                        }
                        else
                        {
                            DisplayUtils.Display("IncomingTransactionMap : HandlePropagationRequest : IncomingPropagations.TryAdd Failed", DisplayType.Warning);
                        }
                    }
                }

            }

            return rslt;
        }