public string GetAddress(WalletKind kind) { if (_wallets.ContainsKey(kind)) { return(_wallets[kind].Address); } CryptoWallet wallet; switch (kind) { case WalletKind.Phantasma: wallet = new PhantasmaWallet(keys); break; case WalletKind.Neo: wallet = new NeoWallet(keys); break; case WalletKind.Bitcoin: wallet = new BitcoinWallet(keys); break; case WalletKind.Ethereum: wallet = new EthereumWallet(keys); break; case WalletKind.EOS: wallet = new EOSWallet(keys); break; default: throw new Exception("Unsupported wallet kind: " + kind); } _wallets[kind] = wallet; return(wallet.Address); }
public CryptoCurrencyInfo(string symbol, string name, int decimals, WalletKind kind) { Symbol = symbol; Name = name; Decimals = decimals; Kind = kind; }
public Wallet(Guid id, string name, WalletKind kind, User user) { Id = id; Name = name; Kind = kind; User = user; UserId = user.Id; }
private async Task <Result <Guid> > CreateWalletAsync(Guid userId, string name, WalletKind kind, CancellationToken token) { var user = await _context.Users.SingleAsync(e => e.Id == userId, token); using (var transaction = await _context.BeginTransactionAsync(token)) { var wallet = new Domain.Wallet(Guid.NewGuid(), name, kind, user); await _context.AddAsync(wallet, token); await _context.SaveChangesAsync(token); var result = await _pspService.CreateWalletAsync(wallet, token); if (!result.Succeeded) { await transaction.RollbackAsync(token); return(Failure <Guid>(result)); } wallet.SetIdentifier(result.Data); await _context.SaveChangesAsync(token); await transaction.CommitAsync(token); return(Success(wallet.Id)); } }