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;
 }
Beispiel #3
0
 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));
            }
        }