Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 public static async Task <Transaction> GetTransactionAsync(Transaction.Info info)
 {
     return(await Protocol.GetTransactionAsync(info));
 }
Ejemplo n.º 5
0
 public async virtual Task <Transaction> GetTransactionAsync(Transaction.Info info)
 {
     return(await NextProtocol.GetTransactionAsync(info));
 }