public ImportPrivateKeyCommand(string signFacadeUrl, string apiKey, string blockchainType) { _blockchainType = blockchainType; var emptyLog = Lykke.Logs.EmptyLogFactory.Instance.CreateLog(this); _signFacadeClient = new Lykke.Service.BlockchainSignFacade.Client.BlockchainSignFacadeClient(signFacadeUrl, apiKey, emptyLog); }
private static async Task Migrate(string bwSettingsUrl, string bitcoinSettingsUrl, string apiKey) { if (!ValidateSettingsUrl(bwSettingsUrl)) { return; } if (!ValidateSettingsUrl(bitcoinSettingsUrl)) { return; } var logFactory = LogFactory.Create().AddConsole(); var appSettings = new SettingsServiceReloadingManager <AppSettings>(bwSettingsUrl, p => {}); var bitcoinSettings = new SettingsServiceReloadingManager <BitcoinAppSettings>(bitcoinSettingsUrl, p => { }) .CurrentValue.BitcoinService; var signingService = RestClient.For <ISigningServiceApi>(new HttpClient { BaseAddress = new Uri(bitcoinSettings.SignatureProviderUrl) }); signingService.ApiKey = bitcoinSettings.SigningServiceApiKey; var walletRepository = BlockchainWalletsRepository.Create(appSettings.Nested(o => o.BlockchainWalletsService.Db.DataConnString), logFactory); var firstGenerationBlockchainWalletRepository = FirstGenerationBlockchainWalletRepository.Create( appSettings.Nested(o => o.BlockchainWalletsService.Db.ClientPersonalInfoConnString), logFactory); var cqrs = Cqrs.CreateCqrsEngine(appSettings.CurrentValue.BlockchainWalletsService.Cqrs.RabbitConnectionString, logFactory); var blockchainSignFacade = new BlockchainSignFacadeClient ( appSettings.CurrentValue.BlockchainSignFacadeClient.ServiceUrl, apiKey, logFactory.CreateLog(nameof(BlockchainSignFacadeClient)) ); var counter = 0; const int batchSize = 10; await firstGenerationBlockchainWalletRepository.EnumerateBcnCredsByChunksAsync(AssetId, async records => { foreach (var batch in records.Batch(batchSize)) { await batch.SelectAsync(async o => { await Migrate(walletRepository, signingService, blockchainSignFacade, cqrs, o); return(true); }); counter += batchSize; Console.SetCursorPosition(0, Console.CursorTop); Console.Write($"{counter} wallets migrated"); } }); Console.WriteLine(); Console.WriteLine("Migration completed"); }
static async Task Main(string[] args) { Console.WriteLine("Press enter to start"); Console.ReadLine(); var client = new WalletManagerClient("http://localhost:5001"); var signFacadeClient = new BlockchainSignFacadeClient("http://blockchain-sign-facade.services.svc.cluster.local/", "350AFDCE-A027-4843-935F-EF5C377CE2EB", new EmptyLog()); var senderWallet = await signFacadeClient.CreateWalletAsync("Bitcoin"); var receiverWallet = await signFacadeClient.CreateWalletAsync("Bitcoin"); var walletKey = new WalletKey() { BlockchainAssetId = "BTC", BlockchainId = "Bitcoin", WalletAddress = senderWallet.PublicAddress }; var balance1 = await client.Balances.GetAllBalancesForBlockchainAsync(new GetAllBalancesForBlockchainRequest() { BlockchainId = "Bitcoin", Skip = 0, Take = 100 }); //await client.Operations.GetOperationsForWallet(); var task = client.Wallets.RegisterWalletAsync(new RegisterWalletRequest() { WalletKey = walletKey }).ResponseAsync.ContinueWith(async (prev) => { await prev; var operationId = Guid.NewGuid().ToString(); var builtTransaction = await client.Transfers.BuildTransactionAsync(new BuildTransactionRequest() { OperationId = operationId, BlockchainAssetId = "BTC", BlockchainId = "Bitcoin", FromAddress = senderWallet.PublicAddress, FromAddressContext = senderWallet.AddressContext, Amount = "1000000", ToAddress = receiverWallet.PublicAddress, IncludeFee = true }); var signedTransaction = await signFacadeClient.SignTransactionAsync("Bitcoin", new SignTransactionRequest() { PublicAddresses = new[] { senderWallet.PublicAddress }, TransactionContext = builtTransaction.TransactionContext }); var sendTransactionResult = await client.Transfers.BroadcastTransactionAsync(new BroadcastTransactionRequest() { BlockchainId = "Bitcoin", SignedTransaction = signedTransaction.SignedTransaction, OperationId = operationId }); var operations = await client.Operations.GetOperationsAsync(new GetOperationRequest() { WalletKey = walletKey, Skip = 0, Take = 100 }); var balance = await client.Balances.GetBalanceAsync(new GetBalanceRequest() { WalletKey = walletKey, }); }); while (true) { try { var sw = new Stopwatch(); sw.Start(); var result = await client.Monitoring.IsAliveAsync(new IsAliveRequest()); sw.Stop(); Console.WriteLine($"{result.Name} {sw.ElapsedMilliseconds} ms"); } catch (Exception ex) { Console.WriteLine(ex.Message); } await Task.Delay(1000); } }