Example #1
0
 private void calculateOutputs(Wallet.Wallet wallet)
 {
     if (Inputs != null)
     {
         long balance = BalanceHelper.GetBalanceOfAddresses(Inputs.Select(i => i.Key).ToArray());
         Outputs.Add(new Output(wallet.NewAddress().Key, balance - TransactionFee - Outputs.Select(o => o.Amount).Sum()));
     }
 }
Example #2
0
 public void AddTransaction(Transaction transaction)
 {
     if (transaction.Verify())
     {
         // Check if
         if (transaction.Outputs != null)
         {
             // If Coinbase transaction no validity
             if (transaction.Inputs == null)
             {
                 _memPool.Add(transaction);
             }
             else
             {
                 decimal balance = BalanceHelper.GetBalanceOfAddresses(transaction.Inputs.Select(i => i.Key).ToArray());
                 // Check if enough balance on inputs
                 if (balance >= (transaction.Outputs.Select(o => o.Amount).Sum() + transaction.TransactionFee))
                 {
                     bool everUsedAsInput = BalanceHelper.EverUsedAsInput(transaction.Inputs.Select(i => i.Key).ToArray());
                     // Check if ever used as input before
                     if (!everUsedAsInput)
                     {
                         if (!_memPool.Select(mp => mp.GenerateHash()).Any(t => t == transaction.GenerateHash()))
                         {
                             _memPool.Add(transaction);
                             _networkSynchronizer.BroadcastTransaction(transaction);
                         }
                     }
                     else
                     {
                         throw new Exception("Eine der Adressen wurde bereits als Input verwendet!");
                     }
                 }
                 else
                 {
                     throw new Exception("Nicht genug Guthaben!");
                 }
             }
         }
     }
     else
     {
         throw new Exception("Nicht valide Transaktion!");
     }
 }
Example #3
0
        public decimal GetBalance()
        {
            var walletAddresses = Addresses.Select(a => a.Key).ToArray();

            return(BalanceHelper.GetBalanceOfAddresses(walletAddresses));
        }