Ejemplo n.º 1
0
        public bool WantedTransaction(InvitationRequest transInvitationRequest)
        {
            var atB   = LookUpBlock(Info.EndOfLongestChain);
            var lastB = atB.Body.LastBlockId;

            for (int ii = 0; ii < Configurations.TRANSACTION_WANT_LIMIT; ii++)
            {
                if (atB == null)
                {
                    _logger.Log($"Nullblock : {lastB}");
                    break;
                }
                foreach (var transaction in atB.Body.Tx)
                {
                    if (transaction.Body.TransactionId == transInvitationRequest.DataId)
                    {
                        return(false);
                    }
                }
                if (atB.Body.LastBlockId == "0")
                {
                    break;
                }
                lastB = atB.Body.LastBlockId;
                atB   = LookUpBlock(atB.Body.LastBlockId);
            }

            if (_minerService.HasTransactionInMemPool(transInvitationRequest.DataId))
            {
                return(false);
            }
            return(true);
        }
Ejemplo n.º 2
0
        public void OnNewTransaction(object obj)
        {
            var trans = (Transaction)obj;

            if (Verify(trans))
            {
                _logger.Log($"New transaction {trans.Body.TransactionId}");
                if (!_minerService.HasTransactionInMemPool(trans.Body.TransactionId))
                {
                    _minerService.MemPool.Add(trans);
                    _minerService.TryRestartingWorkers();
                    _mappingService.Broadcast(trans);
                }
                else
                {
                    _logger.Log("Already had transaction received", 1);
                }
            }
            else
            {
                _logger.Log($"Bad new transaction {trans.Body.TransactionId}");
            }
        }