public async Task SaveWallet(WalletHandler walletHandler, bool makeDefault = false) { try { await persistenceService.SaveObject(walletHandler, Path.Combine(Constants.WalletFolder, walletHandler.Id.ToString(), Constants.WalletHandlerFile)); if (walletHandler.Wallet == null) { var pubKey = walletHandler.MasterPrivKey.Neuter(); var walletCreation = new WalletCreation { Name = walletHandler.Id.ToString(), Network = Constants.CurrentNetwork, RootKeys = new[] { pubKey.ExtPubKey } }; walletHandler.Wallet = new Wallet(walletCreation); } await persistenceService.SaveFromStream( Path.Combine(Constants.WalletFolder, walletHandler.Id.ToString(), Constants.WalletFile), walletHandler.Wallet.Save); if (makeDefault) { _currentWalletHandler = walletHandler; } } catch (Exception e) { Console.WriteLine(e); throw; } }
public async Task <WalletHandler> GetCurrentWallet() { if (_currentWalletHandler == null) { var setting = await settingService.GetSetting(); if (setting?.CurrentWalletId == null) { return(null); } _currentWalletHandler = await GetWallet(setting.CurrentWalletId.Value); } return(_currentWalletHandler); }
public async Task <string> GetNextUnusedAddress(WalletHandler walletHandler) { //if(walletHandler.CurrentAddresses == null) // walletHandler.CurrentAddresses = new List<Address>(); //var unusedAddress = walletHandler.CurrentAddresses.FirstOrDefault(x => !x.HasHistory); //if (unusedAddress == null) //{ // var masterKey = ExtKey.Parse(walletHandler.Master.ExtPrivateKeyWif); // var currentIndex = walletHandler.CurrentAddresses.Count(); // var derivedKey = masterKey.Derive(currentIndex, true); // unusedAddress = new Address // { // ExtPrivateKeyWif = derivedKey.ToString(Constants.SupportedNetworkType.GetNetwork()), // PublicAddress = derivedKey.Neuter().PubKey.ToString(Constants.SupportedNetworkType.GetNetwork()), // HDPath = "" // }; // walletHandler.CurrentAddresses.Add(unusedAddress); // await SaveWallet(walletHandler); //} //return unusedAddress.PublicAddress; return(""); }