Ejemplo n.º 1
0
        public LykkeTransactionBuilderService(
            ITransactionBuildHelper transactionBuildHelper,
            IBitcoinOutputsService bitcoinOutputsService,
            ITransactionSignRequestRepository signRequestRepository,
            IBroadcastedOutputRepository broadcastedOutputRepository,
            IPregeneratedOutputsQueueFactory pregeneratedOutputsQueueFactory,
            ILog log,
            IFeeReserveMonitoringWriter feeReserveMonitoringWriter,
            ISpentOutputService spentOutputService,
            IOffchainService offchainService,
            TransactionBuildContextFactory transactionBuildContextFactory,
            CachedDataDictionary <string, IAsset> assetRepository,
            RpcConnectionParams connectionParams, BaseSettings baseSettings, CachedDataDictionary <string, IAssetSetting> assetSettingCache,
            IFeeProvider feeProvider, IAssetSettingRepository assetSettingRepository)
        {
            _transactionBuildHelper          = transactionBuildHelper;
            _bitcoinOutputsService           = bitcoinOutputsService;
            _signRequestRepository           = signRequestRepository;
            _broadcastedOutputRepository     = broadcastedOutputRepository;
            _pregeneratedOutputsQueueFactory = pregeneratedOutputsQueueFactory;
            _log = log;
            _feeReserveMonitoringWriter     = feeReserveMonitoringWriter;
            _spentOutputService             = spentOutputService;
            _offchainService                = offchainService;
            _transactionBuildContextFactory = transactionBuildContextFactory;
            _assetRepository                = assetRepository;

            _connectionParams       = connectionParams;
            _baseSettings           = baseSettings;
            _assetSettingCache      = assetSettingCache;
            _feeProvider            = feeProvider;
            _assetSettingRepository = assetSettingRepository;
        }
Ejemplo n.º 2
0
        internal RippleApi(IConfiguration config, ILogger logger, IFeeProvider feeProvider, ITransactionSigner txSigner, string dataApiUrl, string exchIssuerAddress, string fiatCurrencyCode)
        {
            _config = config;
            _logger = logger;
            _feeProvider = feeProvider;
            _txSigner = txSigner;
            _dataApiUrl = dataApiUrl;
            _issuerAddress = exchIssuerAddress;
            _fiatCurreny = fiatCurrencyCode;
            _walletAddress = _config.AccessKey;

            _webSocket = new WebSocket(_rippleSocketUri = _config.GetValue("server"));

            string proxyHost = _config.GetValue("proxyHost");
            string proxyPort = _config.GetValue("proxyPort");
            if (null != proxyHost && null != proxyPort)
            {
                //TODO: these two lines don't belong here, rather to WebClient2
                _webProxy = new WebProxy(proxyHost, int.Parse(proxyPort));
                _webProxy.Credentials = CredentialCache.DefaultCredentials;

                var wsProxy = new HttpConnectProxy(new DnsEndPoint(proxyHost, Int32.Parse(proxyPort)), "1.0");
                _webSocket.Proxy = wsProxy;
            }

            _webSocket.Opened += websocket_Opened;
            _webSocket.Error += websocket_Error;
            _webSocket.Closed += websocket_Closed;
            _webSocket.MessageReceived += websocket_MessageReceived;
        }
Ejemplo n.º 3
0
        public MatchingEngine(ITradeListener tradeListener, ITimeProvider timeProvider, IFeeProvider feeProvider, Quantity stepSize, int quoteCurrencyDecimalPlaces = 0)
        {
            if (quoteCurrencyDecimalPlaces < 0)
            {
                throw new NotSupportedException($"Invalid value of {nameof(quoteCurrencyDecimalPlaces)}");
            }

            if (stepSize < 0)
            {
                throw new NotSupportedException($"Invalid value of {nameof(stepSize)}");
            }

            _book                       = new Book();
            _currentOrders              = new Dictionary <OrderId, Order>();
            _currentIcebergOrders       = new Dictionary <OrderId, Iceberg>();
            _orderAmount                = new Dictionary <OrderId, Quantity>();
            _goodTillDateOrders         = new SortedDictionary <int, HashSet <OrderId> >();
            _acceptedOrders             = new HashSet <OrderId>();
            _tradeListener              = tradeListener;
            _timeProvider               = timeProvider;
            _feeProvider                = feeProvider;
            _quoteCurrencyDecimalPlaces = quoteCurrencyDecimalPlaces;
            _power                      = (decimal)Math.Pow(10, _quoteCurrencyDecimalPlaces);
            _stepSize                   = stepSize;
        }
Ejemplo n.º 4
0
        public FeeProviders(IFeeProvider baseProvider, params IFeeProvider[]?feeProviders)
        {
            Lock = new object();

            Providers = new List <IFeeProvider>();

            if (feeProviders is { })
Ejemplo n.º 5
0
        public void RegisterServices(
            BitcoinStore bitcoinStore,
            WasabiSynchronizer syncer,
            NodesGroup nodes,
            ServiceConfiguration serviceConfiguration,
            IFeeProvider feeProvider,
            CoreNode coreNode = null)
        {
            if (State != WalletState.Uninitialized)
            {
                throw new InvalidOperationException($"{nameof(State)} must be {WalletState.Uninitialized}. Current state: {State}.");
            }

            BitcoinStore         = Guard.NotNull(nameof(bitcoinStore), bitcoinStore);
            Nodes                = Guard.NotNull(nameof(nodes), nodes);
            Synchronizer         = Guard.NotNull(nameof(syncer), syncer);
            ServiceConfiguration = Guard.NotNull(nameof(serviceConfiguration), serviceConfiguration);
            FeeProvider          = Guard.NotNull(nameof(feeProvider), feeProvider);
            CoreNode             = coreNode;

            ChaumianClient = new CoinJoinClient(Synchronizer, Network, KeyManager);

            TransactionProcessor = new TransactionProcessor(BitcoinStore.TransactionStore, KeyManager, ServiceConfiguration.DustThreshold, ServiceConfiguration.PrivacyLevelStrong);
            Coins = TransactionProcessor.Coins;

            TransactionProcessor.WalletRelevantTransactionProcessed += TransactionProcessor_WalletRelevantTransactionProcessedAsync;
            ChaumianClient.OnDequeue += ChaumianClient_OnDequeue;

            BitcoinStore.IndexStore.NewFilter += IndexDownloader_NewFilterAsync;
            BitcoinStore.IndexStore.Reorged   += IndexDownloader_ReorgedAsync;
            BitcoinStore.MempoolService.TransactionReceived += Mempool_TransactionReceived;

            State = WalletState.Initialized;
        }
Ejemplo n.º 6
0
        public WalletService(
            BitcoinStore bitcoinStore,
            KeyManager keyManager,
            WasabiSynchronizer syncer,
            CoinJoinClient chaumianClient,
            NodesGroup nodes,
            string workFolderDir,
            ServiceConfiguration serviceConfiguration,
            IFeeProvider feeProvider,
            CoreNode coreNode = null)
        {
            BitcoinStore         = Guard.NotNull(nameof(bitcoinStore), bitcoinStore);
            KeyManager           = Guard.NotNull(nameof(keyManager), keyManager);
            Nodes                = Guard.NotNull(nameof(nodes), nodes);
            Synchronizer         = Guard.NotNull(nameof(syncer), syncer);
            ChaumianClient       = Guard.NotNull(nameof(chaumianClient), chaumianClient);
            ServiceConfiguration = Guard.NotNull(nameof(serviceConfiguration), serviceConfiguration);
            FeeProvider          = Guard.NotNull(nameof(feeProvider), feeProvider);
            CoreNode             = coreNode;

            HandleFiltersLock = new AsyncLock();

            BlocksFolderPath = Path.Combine(workFolderDir, "Blocks", Network.ToString());
            RuntimeParams.SetDataDir(workFolderDir);

            BlockFolderLock = new AsyncLock();

            KeyManager.AssertCleanKeysIndexed();
            KeyManager.AssertLockedInternalKeysIndexed(14);

            TransactionProcessor = new TransactionProcessor(BitcoinStore.TransactionStore, KeyManager, ServiceConfiguration.DustThreshold, ServiceConfiguration.PrivacyLevelStrong);
            Coins = TransactionProcessor.Coins;

            TransactionProcessor.WalletRelevantTransactionProcessed += TransactionProcessor_WalletRelevantTransactionProcessedAsync;

            if (Directory.Exists(BlocksFolderPath))
            {
                if (Synchronizer.Network == Network.RegTest)
                {
                    Directory.Delete(BlocksFolderPath, true);
                    Directory.CreateDirectory(BlocksFolderPath);
                }
            }
            else
            {
                Directory.CreateDirectory(BlocksFolderPath);
            }

            var walletName = "UnnamedWallet";

            if (!string.IsNullOrWhiteSpace(KeyManager.FilePath))
            {
                walletName = Path.GetFileNameWithoutExtension(KeyManager.FilePath);
            }

            BitcoinStore.IndexStore.NewFilter += IndexDownloader_NewFilterAsync;
            BitcoinStore.IndexStore.Reorged   += IndexDownloader_ReorgedAsync;
            BitcoinStore.MempoolService.TransactionReceived += Mempool_TransactionReceived;
        }
 public TransactionBuildHelper(IPregeneratedOutputsQueueFactory pregeneratedOutputsQueueFactory, BaseSettings baseSettings,
                               RpcConnectionParams connectionParams, IFeeProvider feeProvider)
 {
     _pregeneratedOutputsQueueFactory = pregeneratedOutputsQueueFactory;
     _baseSettings     = baseSettings;
     _connectionParams = connectionParams;
     _feeProvider      = feeProvider;
 }
Ejemplo n.º 8
0
        public Wallet(
            Network network,
            BitcoinStore bitcoinStore,
            KeyManager keyManager,
            WasabiSynchronizer syncer,
            NodesGroup nodes,
            string workFolderDir,
            ServiceConfiguration serviceConfiguration,
            IFeeProvider feeProvider,
            CoreNode coreNode = null)
        {
            Network              = Guard.NotNull(nameof(network), network);
            BitcoinStore         = Guard.NotNull(nameof(bitcoinStore), bitcoinStore);
            KeyManager           = Guard.NotNull(nameof(keyManager), keyManager);
            Nodes                = Guard.NotNull(nameof(nodes), nodes);
            Synchronizer         = Guard.NotNull(nameof(syncer), syncer);
            ServiceConfiguration = Guard.NotNull(nameof(serviceConfiguration), serviceConfiguration);
            FeeProvider          = Guard.NotNull(nameof(feeProvider), feeProvider);
            CoreNode             = coreNode;

            ChaumianClient    = new CoinJoinClient(Synchronizer, Network, keyManager);
            HandleFiltersLock = new AsyncLock();

            BlocksFolderPath = Path.Combine(workFolderDir, "Blocks", Network.ToString());
            RuntimeParams.SetDataDir(workFolderDir);

            BlockFolderLock = new AsyncLock();

            KeyManager.AssertCleanKeysIndexed();
            KeyManager.AssertLockedInternalKeysIndexed(14);

            TransactionProcessor = new TransactionProcessor(BitcoinStore.TransactionStore, KeyManager, ServiceConfiguration.DustThreshold, ServiceConfiguration.PrivacyLevelStrong);
            Coins = TransactionProcessor.Coins;

            TransactionProcessor.WalletRelevantTransactionProcessed += TransactionProcessor_WalletRelevantTransactionProcessedAsync;
            ChaumianClient.OnDequeue += ChaumianClient_OnDequeue;

            if (Directory.Exists(BlocksFolderPath))
            {
                if (Network == Network.RegTest)
                {
                    Directory.Delete(BlocksFolderPath, true);
                    Directory.CreateDirectory(BlocksFolderPath);
                }
            }
            else
            {
                Directory.CreateDirectory(BlocksFolderPath);
            }

            BitcoinStore.IndexStore.NewFilter += IndexDownloader_NewFilterAsync;
            BitcoinStore.IndexStore.Reorged   += IndexDownloader_ReorgedAsync;
            BitcoinStore.MempoolService.TransactionReceived += Mempool_TransactionReceived;

            State = WalletState.Initialized;
        }
 public BitcoinApiClient(
     [NotNull] IBitcoinApiClient bitcoinServiceClient,
     [NotNull] IFeeProvider feeProvider,
     [NotNull] ILogFactory logFactory,
     [NotNull] string bitcoinNetwork)
 {
     _bitcoinServiceClient =
         bitcoinServiceClient ?? throw new ArgumentNullException(nameof(bitcoinServiceClient));
     _feeProvider    = feeProvider ?? throw new ArgumentNullException(nameof(feeProvider));
     _log            = logFactory.CreateLog(this);
     _bitcoinNetwork = Network.GetNetwork(bitcoinNetwork);
 }
Ejemplo n.º 10
0
 public BitcoinApiClient(
     IBitcoinApiClient bitcoinServiceClient,
     IFeeProvider feeProvider,
     ILog log,
     string bitcoinNetwork)
 {
     _bitcoinServiceClient =
         bitcoinServiceClient ?? throw new ArgumentNullException(nameof(bitcoinServiceClient));
     _feeProvider    = feeProvider ?? throw new ArgumentNullException(nameof(feeProvider));
     _log            = log?.CreateComponentScope(nameof(BitcoinApiClient)) ?? throw new ArgumentNullException(nameof(log));
     _bitcoinNetwork = Network.GetNetwork(bitcoinNetwork);
 }
 public SendFromChangeToHotWalletFunction(IBitcoinOutputsService bitcoinOutputsService,
                                          IFeeProvider feeProvider,
                                          IBitcoinBroadcastService bitcoinBroadcastService,
                                          ISignatureApiProvider signatureApiProvider,
                                          ISpentOutputService spentOutputService,
                                          ILog log,
                                          BaseSettings baseSettings)
 {
     _bitcoinOutputsService   = bitcoinOutputsService;
     _feeProvider             = feeProvider;
     _bitcoinBroadcastService = bitcoinBroadcastService;
     _spentOutputService      = spentOutputService;
     _signatureApiProvider    = signatureApiProvider;
     _log          = log;
     _baseSettings = baseSettings;
 }
Ejemplo n.º 12
0
 public InvoiceController(
     Network network,
     InvoiceRepository invoiceRepository,
     UserManager <ApplicationUser> userManager,
     BTCPayWallet wallet,
     IRateProvider rateProvider,
     StoreRepository storeRepository,
     InvoiceWatcher watcher,
     ExplorerClient explorerClient,
     IFeeProvider feeProvider)
 {
     _Explorer          = explorerClient ?? throw new ArgumentNullException(nameof(explorerClient));
     _StoreRepository   = storeRepository ?? throw new ArgumentNullException(nameof(storeRepository));
     _Network           = network ?? throw new ArgumentNullException(nameof(network));
     _InvoiceRepository = invoiceRepository ?? throw new ArgumentNullException(nameof(invoiceRepository));
     _Wallet            = wallet ?? throw new ArgumentNullException(nameof(wallet));
     _RateProvider      = rateProvider ?? throw new ArgumentNullException(nameof(rateProvider));
     _Watcher           = watcher ?? throw new ArgumentNullException(nameof(watcher));
     _UserManager       = userManager;
     _FeeProvider       = feeProvider ?? throw new ArgumentNullException(nameof(feeProvider));
 }
 public GenerateOutputsFunction(IAssetRepository assetRepository,
                                IPregeneratedOutputsQueueFactory pregeneratedOutputsQueueFactory,
                                IBitcoinOutputsService bitcoinOutputsService,
                                IFeeProvider feeProvider,
                                IRpcBitcoinClient bitcoinClient,
                                IBroadcastedOutputRepository broadcastedOutputRepository,
                                ISpentOutputService spentOutputService,
                                BaseSettings baseSettings, RpcConnectionParams connectionParams, ILog logger, IEmailNotifier emailNotifier, ISlackNotifier slackNotifier, ISignatureApiProvider signatureApiProvider)
 {
     _assetRepository = assetRepository;
     _pregeneratedOutputsQueueFactory = pregeneratedOutputsQueueFactory;
     _bitcoinOutputsService           = bitcoinOutputsService;
     _feeProvider   = feeProvider;
     _bitcoinClient = bitcoinClient;
     _broadcastedOutputRepository = broadcastedOutputRepository;
     _spentOutputService          = spentOutputService;
     _baseSettings         = baseSettings;
     _connectionParams     = connectionParams;
     _logger               = logger;
     _emailNotifier        = emailNotifier;
     _slackNotifier        = slackNotifier;
     _signatureApiProvider = signatureApiProvider;
 }
Ejemplo n.º 14
0
 internal CrazyBuyerTrap(IFeeProvider feeProvider, ITransactionSigner txSigner, IConfiguration config, ILogger logger)
     : base(config, logger)
 {
     _feeProvider = feeProvider;
     _txSigner = txSigner;
 }
Ejemplo n.º 15
0
 internal WideSpreadSeller(IFeeProvider feeProvider, ITransactionSigner txSigner, IConfiguration config, ILogger logger)
     : base(config, logger)
 {
     _feeProvider = feeProvider;
     _txSigner = txSigner;
 }
Ejemplo n.º 16
0
 internal DirectArbitrage(IFeeProvider feeProvider, ITransactionSigner txSigner, IConfiguration config, ILogger logger)
     : base(config, logger)
 {
     _feeProvider = feeProvider;
     _txSigner = txSigner;
 }