private void SaveLastBlockNumber(Transaction transaction, ulong block_number) { var bids_helper = new LoanBidsHelper(); var bid = CreateBid(0, null, null, transaction, block_number, -1); bids_helper.CreateOrUpdateLastBlock(bid); }
public void processBackersFromTransactions(Dictionary <string, List <Transaction> > transactions, HashSet <string> addresses, ulong block_number) { var all_transactions = transactions.Values.ToList().SelectMany(x => x).ToList(); Print("transactions: " + all_transactions.ToList().Count + ", addresses: " + addresses.Count + ", block number: " + block_number); var projects_helper = new LoansHelper(); var bids_helper = new LoanBidsHelper(); var all_bids = new List <LoanBids>(); var no_backer_bids = new Dictionary <string, List <LoanBids> >(); var backer_addressess = new HashSet <string>(); var projects = projects_helper.FindProjects(addresses.ToList()); var notifications = new List <NotificationData>(); int backers_counter = 0; if (projects == null || projects.Count == 0) { Print("no any backer transactions"); if (all_transactions.Count > 0) { SaveLastBlockNumber(all_transactions[0], block_number); Print("Sync block updated: " + block_number); } return; } Print("found projects: " + projects.Count); processProjects(projects, transactions, all_bids, no_backer_bids, backer_addressess, notifications, block_number, ref backers_counter); all_bids.AddRange(searchBackers(no_backer_bids, backer_addressess, notifications, ref backers_counter)); if (bids_helper.PopulateBackersFundingTransactions(all_bids)) { SendNotifications(notifications); } Print("identified backer transactions: " + backers_counter + ", " + "unidentified backer transactions: " + (all_bids.Count - backers_counter)); }
private static bool processPastBlocks(string[] args) { var bids_helper = new LoanBidsHelper(); var latest_block = bids_helper.getLatestBlock(); PrePrint("latest block: " + ((latest_block.HasValue) ? latest_block.Value.ToString() : "none")); if (args.Length > 0) { foreach (var block_hash in args) { PrePrint("recover block " + block_hash); var block_details = Ethereum.GetBlockDetails(block_hash); var block_processor = new BlockProcessor(); block_processor.onTransactionsTo = processTransactionsTo; block_processor.processBlockDetails(block_details, block_callback: false); } return(false); } else if (latest_block.HasValue) { var block_details = Ethereum.GetBlockDetails((ulong)latest_block.Value); while (block_details != null) { PrePrint("recover block " + block_details.hash); var block_processor = new BlockProcessor(); block_processor.onTransactionsTo = processTransactionsTo; block_processor.processBlockDetails(block_details, block_callback: false); latest_block++; block_details = Ethereum.GetBlockDetails((ulong)latest_block.Value); } PrePrint("recovering finished on block " + (latest_block - 1)); } return(true); }