public static NEP6Account FromJson(Newtonsoft.Json.Linq.JObject json, NEP6Wallet wallet) { var strAdd = (json["address"] as Newtonsoft.Json.Linq.JValue).Value as string; var pubkeyhash = Helper_NEO.GetScriptHash_FromAddress(strAdd); string key = null; if (json.ContainsKey("key") && json["key"] != null) { key = json["key"].Value <string>(); } var acc = new NEP6Account(pubkeyhash, key); if (json.ContainsKey("contract") && json["contract"] != null) { acc.Contract = NEP6Contract.FromJson(json["contract"] as JObject); } return(acc); }
private void Button_Click(object sender, RoutedEventArgs e) { Button btn = sender as Button; btn.IsEnabled = false; var address = AddressTextBox.Text; var startTime = StartTimeDatePicker.SelectedDate; try { Helper_NEO.GetScriptHash_FromAddress(address); } catch (Exception) { MessageBox.Show("Address Error"); return; } finally { btn.IsEnabled = true; } StateTextBlock.Text = $"Starting…"; DoEvents(); var totalEntries = 0; using (var web = new WebClient()) { var json = web.DownloadJson(address, 1); var totalPages = (int)json["total_pages"]; totalEntries = (int)json["total_entries"]; var pageSize = (int)json["page_size"]; txList.Clear(); var stop = false; for (int i = 1; i <= totalPages; i++) { json = web.DownloadJson(address, i); foreach (var item in json["entries"]) { var tx = Transaction.FromJson(item); if (tx != null) { if (startTime != null && tx.Time < startTime) { stop = true; break; } txList.Add(tx); } } if (stop) { break; } if (startTime == null) { StateTextBlock.Text = $"{Math.Min(i * pageSize, totalEntries)}/{totalEntries}"; } else { StateTextBlock.Text = $"{Math.Min(i * pageSize, totalEntries)}"; } DoEvents(); } } StateTextBlock.Text = $"Calculating…"; DoEvents(); ProcessData(); StateTextBlock.Text = $"Completed."; btn.IsEnabled = true; }