public async Task <IEnumerable <ITxOutput> > GetOutputsAsync( string address, string afterTxId = null, CancellationToken cancellationToken = default(CancellationToken)) { try { var data = await _explorer .GetHash160AddressAsync(address) .ConfigureAwait(false); var outputs = new List <ITxOutput>(); foreach (var tx in data.Transactions) { foreach (var output in tx.Outputs) { if (output.Address == null || !output.Address.ToLowerInvariant().Equals(address.ToLowerInvariant())) { continue; } var spentTxPoint = output.Spent ? new TxPoint(output.SpendingOutpoints[0].N, (await _explorer.GetTransactionByIndexAsync(output.SpendingOutpoints[0].TxIndex) .ConfigureAwait(false)).Hash) : null; var amount = new Money(output.Value.Satoshis, MoneyUnit.Satoshi); var script = new Script(Hex.FromString(output.Script)); outputs.Add(new BitcoinBasedTxOutput( coin: new Coin( fromTxHash: new uint256(tx.Hash), fromOutputIndex: (uint)output.N, amount: amount, scriptPubKey: script), spentTxPoint: spentTxPoint)); } } return(outputs); } catch (Exception e) { throw new Exception(ResolveExceptionMessage(e)); } }
public async Task <decimal> GetBalanceAsync(string address160) { var address = await _blockExplorer.GetHash160AddressAsync(address160); return(address.FinalBalance.GetBtc()); }