Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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("");
        }