public async override Task <Transaction> GetTransactionAsync(Transaction.Info info) { var json = JToken.Parse(await SendRPCAsync("blockchain.transaction.get", info.Hash, info.Height)); var rawTx = BinaryHelpers.HexToByteArray(json["result"].Value <string>()); var tx = new Transaction(info.Height); tx.ReadPayload(new BinaryReader(new MemoryStream(rawTx))); return(tx); }
public async override Task <Transaction> GetTransactionAsync(Transaction.Info info) { await txCacheLock.WaitAsync(); try { if (!TransactionCache.ContainsKey(info.Hash)) { TransactionCache.Add(info.Hash, await base.GetTransactionAsync(info)); } return(TransactionCache[info.Hash]); } finally { txCacheLock.Release(); } }
public override async Task <Transaction> GetTransactionAsync(Transaction.Info info) { PathInfo txCache = DefaultCachePath.SubPath("transactions"); FileInfo cache = FileInfo.Create(txCache, String.Format("{0}.{1}", info.Hash, "tx")); Transaction tx; if (cache.Exists) { tx = new Transaction(); tx.ReadPayload(new BinaryReader(FileStream.Create(cache, FileMode.Open))); tx.Height = info.Height; } else { tx = await base.GetTransactionAsync(info); tx.WritePayload(new BinaryWriter(FileStream.Create(cache, FileMode.Create))); } return(tx); }
public static async Task <Transaction> GetTransactionAsync(Transaction.Info info) { return(await Protocol.GetTransactionAsync(info)); }
public async virtual Task <Transaction> GetTransactionAsync(Transaction.Info info) { return(await NextProtocol.GetTransactionAsync(info)); }