public void Setup() { BCash.Instance.EnsureRegistered(); Litecoin.Instance.EnsureRegistered(); _logFactory = LogFactory.Create().AddUnbufferedConsole(); var assetsClient = new AssetsClient(_logFactory, new AssetsClientSettings()); _blockchainProvider = new BlockchainsProvider(assetsClient); _addressNormalizer = new AddressNormalizer ( _logFactory, new IAddressNormalizer[] { new GeneralAddressNormalizer(), new BtcAddressNormalizer(_blockchainProvider, new BtcSettings { Network = "mainnet" }), new BchAddressNormalizer(_blockchainProvider, new BchSettings { Network = "mainnet" }), new LtcAddressNormalizer(_blockchainProvider, new LtcSettings { Network = "ltc-main" }), new EthAddressNormalizer(_blockchainProvider), new XrpAddressNormalizer(_blockchainProvider) } ); }
public WithdrawalsExporter( ILogFactory logFactory, IReadOnlyCollection <IWithdrawalsHistoryProvider> withdrawalsHistoryProviders, AddressNormalizer addressNormalizer) { _log = logFactory.CreateLog(this); _addressNormalizer = addressNormalizer; _withdrawalsHistoryProviders = withdrawalsHistoryProviders; }
public EthDepositsHistoryProvider( IBlockchainsProvider blockchainsProvider, EthSettings settings, AddressNormalizer addressNormalizer) { _addressNormalizer = addressNormalizer; _samuraiClient = new SamuraiClient(settings.SamuraiUrl); _ethereum = blockchainsProvider.GetEthereum(); }
public LtcDepositsHistoryProvider( ILogFactory logFactory, LtcSettings settings, IBlockchainsProvider blockchainsProvider, AddressNormalizer addressNormalizer) { _log = logFactory.CreateLog(this); _addressNormalizer = addressNormalizer; _insightApi = new InsightApiClient(settings.InsightApiUrl); _liteCoin = blockchainsProvider.GetLiteCoin(); }
public BchDepositsHistoryProvider( ILogFactory logFactory, BchSettings settings, IBlockchainsProvider blockchainsProvider, AddressNormalizer addressNormalizer) { _log = logFactory.CreateLog(this); _addressNormalizer = addressNormalizer; _insightApi = new InsightApiClient(settings.InsightApiUrl); _bitcoinCash = blockchainsProvider.GetBitcoinCash(); }
public DepositsExporter( ILogFactory logFactory, AddressNormalizer addressNormalizer, IReadOnlyCollection <IDepositWalletsProvider> depositWalletsProviders, IReadOnlyCollection <IDepositsHistoryProvider> depositsHistoryProviders) { _log = logFactory.CreateLog(this); _addressNormalizer = addressNormalizer; _depositWalletsProviders = depositWalletsProviders; _depositsHistoryProviders = depositsHistoryProviders; _concurrencySemaphore = new SemaphoreSlim(8); }
public TransactionsReportReader(AddressNormalizer addressNormalizer) { _addressNormalizer = addressNormalizer; }
private static async Task RemoveInvalidAddresses(ILogFactory logFactory) { var assetsClient = new AssetsClient(logFactory, new AssetsClientSettings()); var blockchainProvider = new BlockchainsProvider(assetsClient); var addressNormalizer = new AddressNormalizer ( logFactory, new IAddressNormalizer[] { new GeneralAddressNormalizer(), new BtcAddressNormalizer(blockchainProvider, new BtcSettings { Network = "mainnet" }), new BchAddressNormalizer(blockchainProvider, new BchSettings { Network = "mainnet" }), new LtcAddressNormalizer(blockchainProvider, new LtcSettings { Network = "ltc-main" }), new EthAddressNormalizer(blockchainProvider), new XrpAddressNormalizer(blockchainProvider) } ); var reportReader = new TransactionsReportReader(addressNormalizer); var reportWriter = new TransactionsReportWriter(); Console.WriteLine("Loading..."); var readStream = File.Open("transactions.csv", FileMode.Open, FileAccess.Read, FileShare.Read); var originalTransactions = await reportReader.ReadAsync ( readStream, new Progress <int> ( transactionCount => { if (transactionCount % 1000 == 0) { Console.WriteLine(transactionCount); } } ), leaveOpen : false ); Console.WriteLine("Filtering..."); var filteredTransactions = originalTransactions .Where ( tx => !string.IsNullOrWhiteSpace(tx.Hash) && !string.IsNullOrWhiteSpace(tx.CryptoCurrency) && tx.UserId != Guid.Empty ) .ToHashSet(); Console.WriteLine("Saving..."); var writeStream = File.Open ( "filtered-transactions.csv", FileMode.Create, FileAccess.Write, FileShare.Read ); await reportWriter.WriteAsync ( filteredTransactions, writeStream, new Progress <int> ( transactionsCount => { if (transactionsCount % 1000 == 0) { var percent = transactionsCount * 100 / filteredTransactions.Count; Console.WriteLine($"{percent}%"); } } ), leaveOpen : false ); }