/// <inheritdoc /> public override async Task <bool> OnExecute() { if (!config.SyncMemoryPool) { Abort = true; return(true); } if (Runner.GlobalState.Blocked) { return(false); } if (Runner.GlobalState.ChainTipHeight == 0 || Runner.GlobalState.StoreTip == null || Runner.GlobalState.IndexModeCompleted == false || Runner.GlobalState.IbdMode()) { // Don't sync mempool until api is at tip return(false); } if (initialized == false) { initialized = true; // read build mempool memory view syncOperations.InitializeMmpool(); } watch.Restart(); SyncPoolTransactions pool = syncOperations.FindPoolTransactions(syncConnection); if (!pool.Transactions.Any()) { return(false); } SyncBlockTransactionsOperation poolTrx = syncOperations.SyncPool(syncConnection, pool); storageOperations.InsertMempoolTransactions(poolTrx); watch.Stop(); log.LogInformation($"Mempool - New Transactions = {pool.Transactions.Count}, Seconds = {watch.Elapsed.TotalSeconds}"); return(await Task.FromResult(false)); }
/// <inheritdoc /> public override async Task <bool> OnExecute() { if (!config.SyncMemoryPool) { Abort = true; return(true); } SyncingBlocks syncingBlocks = Runner.SyncingBlocks; if (syncingBlocks.Blocked) { return(false); } if (syncingBlocks.LastBlock == null || syncingBlocks.LastBlock.Height + 10 < syncingBlocks.LastClientBlockIndex) { // Don't sync mempool until api is at tip return(false); } if (Runner.Get <BlockSyncer>().Queue.Count() >= config.MaxItemsInQueue) { return(false); } watch.Restart(); SyncPoolTransactions pool = syncOperations.FindPoolTransactions(syncConnection, syncingBlocks); if (!pool.Transactions.Any()) { return(false); } watch.Stop(); log.LogDebug($"Seconds = {watch.Elapsed.TotalSeconds} - New Transactions = {pool.Transactions.Count}/{syncingBlocks.CurrentPoolSyncing.Count()}"); Runner.Get <BlockSyncer>().Enqueue(new SyncBlockOperation { PoolTransactions = pool }); return(await Task.FromResult(false)); }
public SyncBlockTransactionsOperation SyncPool(SyncConnection connection, SyncPoolTransactions poolTransactions) { return(this.SyncPoolInternal(connection, poolTransactions)); }
private SyncBlockTransactionsOperation SyncPoolInternal(SyncConnection connection, SyncPoolTransactions poolTransactions) { var stoper = Stopwatch.Start(); var client = CryptoClientFactory.Create(connection.ServerDomain, connection.RpcAccessPort, connection.User, connection.Password, connection.Secure); var returnBlock = this.SyncBlockTransactions(client, connection, poolTransactions.Transactions, false); stoper.Stop(); this.tracer.DetailedTrace("SyncPool", string.Format("Seconds = {0} - Transactions = {1}", stoper.Elapsed.TotalSeconds, returnBlock.Transactions.Count())); return(returnBlock); }
private SyncBlockTransactionsOperation SyncPoolInternal(SyncConnection connection, SyncPoolTransactions poolTransactions) { IBlockchainClient client = clientFactory.Create(connection); SyncBlockTransactionsOperation returnBlock = SyncBlockTransactions(client, connection, poolTransactions.Transactions, false); return(returnBlock); }
private SyncBlockTransactionsOperation SyncPoolInternal(SyncConnection connection, SyncPoolTransactions poolTransactions) { watch.Restart(); BitcoinClient client = CryptoClientFactory.Create(connection.ServerDomain, connection.RpcAccessPort, connection.User, connection.Password, connection.Secure); SyncBlockTransactionsOperation returnBlock = SyncBlockTransactions(client, connection, poolTransactions.Transactions, false); watch.Stop(); int transactionCount = returnBlock.Transactions.Count(); double totalSeconds = watch.Elapsed.TotalSeconds; log.LogDebug($"SyncPool: Seconds = {watch.Elapsed.TotalSeconds} - Transactions = {transactionCount}"); return(returnBlock); }
private SyncBlockTransactionsOperation SyncPoolInternal(SyncConnection connection, SyncPoolTransactions poolTransactions) { var watch = Stopwatch.Start(); var client = CryptoClientFactory.Create(connection.ServerDomain, connection.RpcAccessPort, connection.User, connection.Password, connection.Secure); var returnBlock = this.SyncBlockTransactions(client, connection, poolTransactions.Transactions, false); watch.Stop(); var transactionCount = returnBlock.Transactions.Count(); var totalSeconds = watch.Elapsed.TotalSeconds; this.log.LogDebug($"SyncPool: Seconds = {watch.Elapsed.TotalSeconds} - Transactions = {transactionCount}"); return(returnBlock); }