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;
        }