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();
            }
        }
Example #2
0
 public async Task <string> GetTransactionHex(string hash)
 {
     return(await _rpcBitcoinClient.GetTransactionHex(hash));
 }