public void Init()
        {
            var baseSettings       = Config.Services.GetService <IBaseSettings>();
            var web3               = Config.Services.GetService <Web3>();
            var signatureApi       = Config.Services.GetService <ILykkeSigningAPI>();
            var nonceCalculator    = Config.Services.GetService <INonceCalculator>();
            var transactionRouter  = Config.Services.GetService <ITransactionRouter>();
            var gasPriceRepository = Config.Services.GetService <IGasPriceRepository>();

            _transactionManager = new LykkeSignedTransactionManager(baseSettings, nonceCalculator, signatureApi, transactionRouter, web3, gasPriceRepository);
        }
        public static void RegisterServices(this IServiceCollection Services)
        {
            Services.AddTransient <IContractService, ContractService>();
            Services.AddTransient <IPaymentService, PaymentService>();
            Services.AddTransient <IEthereumQueueOutService, EthereumQueueOutService>();
            Services.AddTransient <IEthereumTransactionService, EthereumTransactionService>();
            Services.AddTransient <IExchangeContractService, ExchangeContractService>();
            Services.AddTransient <ICoinTransactionService, CoinTransactionService>();
            Services.AddTransient <IErcInterfaceService, ErcInterfaceService>();
            Services.AddTransient <AssetContractService>();
            Services.AddTransient <TransferContractService>();
            Services.AddTransient <ExternalTokenService>();
            Services.AddTransient <TransferContractPoolService>();
            Services.AddTransient <ITransferContractQueueService, TransferContractQueueService>();
            Services.AddTransient <ITransferContractQueueServiceFactory, TransferContractQueueServiceFactory>();
            Services.AddTransient <ITransferContractService, TransferContractService>();
            Services.AddTransient <TransferContractUserAssignmentQueueService, TransferContractUserAssignmentQueueService>();
            Services.AddTransient <ITransferContractTransactionService, TransferContractTransactionService>();
            Services.AddTransient <ITransferContractUserAssignmentQueueService, TransferContractUserAssignmentQueueService>();
            Services.AddTransient <ISlackNotifier, SlackNotifier>();
            Services.AddTransient <ICoinEventPublisher, CoinEventPublisherService>();
            Services.AddTransient <ICoinEventService, CoinEventService>();
            Services.AddSingleton <IHashCalculator, HashCalculator>();
            Services.AddSingleton <IPendingOperationService, PendingOperationService>();
            Services.AddSingleton <ITransactionEventsService, TransactionEventsService>();
            Services.AddSingleton <INonceCalculator, NonceCalculator>();
            Services.AddSingleton <IPrivateWalletService, PrivateWalletService>();
            Services.AddSingleton <IEthereumIndexerService, EthereumIndexerService>();
            Services.AddSingleton <ISignatureChecker, SignatureChecker>();
            Services.AddSingleton <IRawTransactionSubmitter, RawTransactionSubmitter>();
            Services.AddSingleton <IErc20PrivateWalletService, Erc20PrivateWalletService>();
            Services.AddSingleton <IOwnerService, OwnerService>();
            Services.AddSingleton <IOwnerBlockchainService, OwnerBlockchainService>();
            Services.AddSingleton <IErc20BalanceService, Erc20BalanceService>();
            Services.AddSingleton <ITransactionValidationService, TransactionValidationService>();
            Services.AddSingleton <ISignatureService, SignatureService>();
            Services.AddSingleton <IHotWalletService, HotWalletService>();
            Services.AddSingleton <IErc20DepositContractPoolService, Erc20DepositContractPoolService>();
            Services.AddSingleton <IErc20DepositContractService, Erc20DepositContractService>();
            Services.AddSingleton <IErc20DepositContractQueueServiceFactory, Erc20DepositContractQueueServiceFactory>();
            Services.AddSingleton <IErc20DepositTransactionService, Erc20DepositTransactionService>();
            Services.AddSingleton <ITransactionRouter, TransactionRouter>();
            Services.AddSingleton <IGasPriceService, GasPriceService>();

            //Uses HttpClient Inside -> singleton
            Services.AddSingleton <ILykkeSigningAPI>((provider) =>
            {
                var lykkeSigningAPI = new LykkeSigningAPI(new Uri(provider.GetService <IBaseSettings>().SignatureProviderUrl
                                                                  , UriKind.Absolute));

                return(lykkeSigningAPI);
            });

            Services.AddSingleton <IEthereumSamuraiApi>((provider) =>
            {
                var ethereumSamuraiApi = new EthereumSamuraiApi(new Uri(provider.GetService <IBaseSettings>().EthereumSamuraiUrl
                                                                        , UriKind.Absolute));

                return(ethereumSamuraiApi);
            });

            Services.AddSingleton <Web3>((provider) =>
            {
                var baseSettings = provider.GetService <IBaseSettings>();
                var web3         = new Web3(baseSettings.EthereumUrl);

                return(web3);
            });

            Services.AddSingleton <IWeb3>((provider) =>
            {
                var web3 = provider.GetService <Web3>();

                return(new Web3Decorator(web3));
            });


            Services.AddSingleton <ITransactionManager>(provider =>
            {
                var baseSettings       = provider.GetService <IBaseSettings>();
                var web3               = provider.GetService <Web3>();
                var signatureApi       = provider.GetService <ILykkeSigningAPI>();
                var nonceCalculator    = provider.GetService <INonceCalculator>();
                var transactionRouter  = provider.GetService <ITransactionRouter>();
                var gasPriceRepository = provider.GetService <IGasPriceRepository>();

                var transactionManager = new LykkeSignedTransactionManager(baseSettings, nonceCalculator, signatureApi, transactionRouter, web3, gasPriceRepository);

                web3.TransactionManager = transactionManager;
                web3.Client.OverridingRequestInterceptor = new SignatureInterceptor(transactionManager);

                return(transactionManager);
            });

            Services.AddSingleton <IAssetsService>((provider) =>
            {
                var settings = provider.GetService <AppSettings>();

                return(new AssetsService(new Uri(settings.Assets.ServiceUrl)));
            });
        }
Пример #3
0
        public static void RegisterServices(this IServiceCollection Services)
        {
            //Uses HttpClient Inside -> singleton
            Services.AddSingleton <ILykkeSigningAPI>((provider) =>
            {
                var baseSettings            = provider.GetService <IBaseSettings>();
                var apiKey                  = baseSettings.SigningServiceApiKey;
                ApiKeyHandler apiKeyHandler = new ApiKeyHandler(apiKey);
                var lykkeSigningApi         = new LykkeSigningAPI(new Uri(provider.GetService <IBaseSettings>().SignatureProviderUrl
                                                                          , UriKind.Absolute), apiKeyHandler);

                return(lykkeSigningApi);
            });

            Services.AddSingleton <IEthereumSamuraiAPI>((provider) =>
            {
                var ethereumSamuraiApi = new EthereumSamuraiAPI(new Uri(provider.GetService <IBaseSettings>().EthereumSamuraiUrl
                                                                        , UriKind.Absolute));

                return(ethereumSamuraiApi);
            });

            Services.AddSingleton <Web3>((provider) =>
            {
                var baseSettings = provider.GetService <IBaseSettings>();
                var web3         = new Web3(baseSettings.EthereumUrl);

                return(web3);
            });

            Services.AddSingleton <IWeb3>((provider) =>
            {
                var web3 = provider.GetService <Web3>();

                return(new Web3Decorator(web3));
            });


            Services.AddSingleton <ITransactionManager>(provider =>
            {
                var baseSettings       = provider.GetService <IBaseSettings>();
                var web3               = provider.GetService <Web3>();
                var signatureApi       = provider.GetService <ILykkeSigningAPI>();
                var nonceCalculator    = provider.GetService <INonceCalculator>();
                var transactionRouter  = provider.GetService <ITransactionRouter>();
                var gasPriceRepository = provider.GetService <IGasPriceRepository>();

                var transactionManager = new LykkeSignedTransactionManager(baseSettings, nonceCalculator, signatureApi, transactionRouter, web3, gasPriceRepository);

                web3.TransactionManager = transactionManager;
                web3.Client.OverridingRequestInterceptor = new SignatureInterceptor(transactionManager);

                return(transactionManager);
            });

            Services.AddSingleton <IAssetsService>((provider) =>
            {
                var settings = provider.GetService <AppSettings>();

                return(new AssetsService(new Uri(settings.Assets.ServiceUrl)));
            });

            Services.AddSingleton <IBlockPassClient>((provider) =>
            {
                var settings = provider.GetService <BlockPassClientSettings>();
                BlockPassClientFactory factory = new BlockPassClientFactory();
                var client = factory.CreateNew(settings, false);

                return(client);
            });
        }