public async Task CheckCommitmentBroadcast() { using (OffchainMonitorContext context = new OffchainMonitorContext()) { var commitmentsToSearchFor = (from c in context.Commitments where c.Punished == false select c).ToArray(); if (commitmentsToSearchFor.Count() > 0) { for (int i = 0; i < commitmentsToSearchFor.Count(); i++) { var c = commitmentsToSearchFor[i]; bool found = false; try { await rpcBitcoinClient.GetTransactionHex(c.CommitmentTxId); found = true; } catch (RPCException exp) { if (!exp.Message.Contains("No such mempool or blockchain transaction.")) { throw exp; } else { continue; } } catch (Exception exp) { throw exp; } if (found) { try { await rpcBitcoinClient.BroadcastTransaction(new Transaction(c.Punishment), new Guid()); c.Punished = true; } catch (Exception exp) { throw exp; } } } } await context.SaveChangesAsync(); } }
public async Task <string> GetTransactionHex(string hash) { return(await _rpcBitcoinClient.GetTransactionHex(hash)); }