public async Task <BtgTransaction> GetTransaction(string txHash) { var tx = await GetTx((txHash)); if (tx == null) { return(null); } var btgTx = new BtgTransaction { Hash = txHash, Timestamp = ((uint)tx.BlockTime).FromUnixDateTime() }; btgTx.Inputs = tx.Inputs.Select(o => new BtgInput() { Address = o.Address, Value = new Money(o.AmountSatoshi) }).ToList(); btgTx.Outputs = tx.Outputs.Select(o => new BtgOutput() { Address = o.ScriptPubKey.Addresses.FirstOrDefault(), Value = new Money(o.ValueBtc, MoneyUnit.BTC) }).ToList(); return(btgTx); }
private HistoricalTransactionDto MapToHistoricalTransaction(BtgTransaction tx, string requestedAddress) { var isSending = tx.Inputs.Where(p => p.Address == requestedAddress).Sum(p => p.Value) >= tx.Outputs.Where(p => p.Address == requestedAddress).Sum(p => p.Value); string from; string to; long amount; if (isSending) { from = requestedAddress; to = tx.Outputs.Select(o => o.Address).FirstOrDefault(o => o != null && o != requestedAddress) ?? requestedAddress; amount = tx.Outputs.Where(o => o.Address != requestedAddress).Sum(o => o.Value); } else { to = requestedAddress; from = tx.Inputs.Select(o => o.Address).FirstOrDefault(o => o != null && o != requestedAddress) ?? requestedAddress; amount = tx.Outputs.Where(o => o.Address == requestedAddress).Sum(o => o.Value); } return(new HistoricalTransactionDto { TxHash = tx.Hash, IsSending = isSending, AmountSatoshi = amount, FromAddress = from, AssetId = Constants.Assets.BitcoinGold.AssetId, ToAddress = to, TimeStamp = tx.Timestamp }); }