private void RemoveTransactionFromTotals(WalletTransaction tx, Dictionary<Account, AccountProperties> modifiedAccounts)
{
var isCoinbase = BlockChain.IsCoinbase(tx.Transaction);
foreach (var input in tx.Inputs)
{
TotalBalance += input.Amount;
var accountProperties = LookupAccountProperties(input.PreviousAccount);
accountProperties.TotalBalance += input.Amount;
if (isCoinbase)
accountProperties.ImmatureCoinbaseReward += input.Amount;
modifiedAccounts[input.PreviousAccount] = accountProperties;
}
foreach (var output in tx.Outputs.OfType<WalletTransaction.Output.ControlledOutput>())
{
TotalBalance -= output.Amount;
var accountProperties = LookupAccountProperties(output.Account);
accountProperties.TotalBalance -= output.Amount;
if (isCoinbase)
accountProperties.ImmatureCoinbaseReward -= output.Amount;
modifiedAccounts[output.Account] = accountProperties;
}
_transactionCount--;
}