/// <summary>
        /// Method to list transactions for specify address.
        /// </summary>
        /// <param name="address"></param>
        /// <param name="direction"></param>
        /// <returns></returns>
        public ListTransactionsForAddressResult ListTransactionsForAddress(string address, TransactionDirection direction = TransactionDirection.BOTH)
        {
            ListTransactionsForAddressResult final = new ListTransactionsForAddressResult();

            final.transactions = new List <Transaction>();
            ListTransactionsResult list = ListTransactions(1000000);
            var transactions            = list.result.Where(x => x.address == address);

            if (direction == TransactionDirection.SENT)
            {
                transactions = transactions.Where(x => x.category == "send");
            }
            else if (direction == TransactionDirection.RECEIVED)
            {
                transactions = transactions.Where(x => x.category == "receive");
            }
            transactions = transactions.Select(x => x).OrderByDescending(x => x.blockindex);

            foreach (Transaction trans in transactions)
            {
                final.transactions.Add(trans);
            }

            return(final);
        }
        /// <summary>
        /// List transactions default.
        /// </summary>
        /// <returns></returns>
        public ListTransactionsResult ListTransactions()
        {
            IRestRequest req = new RestRequest(Method.POST);

            req = addMandatoryHeader(req);
            JObject obj = BodySkeleton("listtransactions");

            req.AddJsonBody(obj.ToString());
            var response = client.Execute(req);

            ValidateResponse(response);

            ListTransactionsResult res = JsonConvert.DeserializeObject <ListTransactionsResult>(response.Content);

            return(res);
        }
        private void CheckNewTransaction(object sender, EventArgs e)
        {
            if (!duringAction)
            {
                duringAction = true;
                ListTransactionsResult result = _instance.ListTransactions(100000);
                if (dataType == DataType.DATABASE)
                {
                    lock (_transactions)
                    {
                        foreach (Transaction transaction in result.result)
                        {
                            var exist = _transactions._transaction.Where(x => x.txid == transaction.txid && x.category == transaction.category).ToList();
                            if (exist.Count == 0)
                            {
                                _transactions.Add(transaction);
                                onTransaction.Invoke(transaction);
                            }
                        }
                        _transactions.SaveChanges();
                    }
                }
                if (dataType == DataType.LOCAL)
                {
                    lock (_listTransactions)
                    {
                        foreach (Transaction transaction in result.result)
                        {
                            var exist = _listTransactions.Where(x => x.txid == transaction.txid && x.category == transaction.category).Select(x => x).ToList();
                            if (exist.Count == 0)
                            {
                                _listTransactions.Add(transaction);
                                onTransaction.Invoke(transaction);
                            }
                        }
                    }
                }
            }



            duringAction = false;
        }
        /// <summary>
        /// List transactions with specify parameters.
        /// </summary>
        /// <param name="count">
        /// Default 10, count of transactions returned.
        /// </param>
        /// <param name="skip">
        /// how much transactions should be skipped?
        /// </param>
        /// <param name="include_watchonly">
        /// include watchonly addresses?
        /// </param>
        /// <param name="dummy">
        /// leave it alone.
        /// </param>
        /// <returns></returns>

        public ListTransactionsResult ListTransactions(int count = 10, int skip = 0, bool include_watchonly = false, string dummy = "*")
        {
            IRestRequest req = new RestRequest(Method.POST);

            req = addMandatoryHeader(req);
            JArray parameter = new JArray();

            parameter.Add(dummy);
            parameter.Add(count);
            parameter.Add(skip);
            parameter.Add(include_watchonly);
            JObject obj = BodySkeleton("listtransactions", parameter);

            req.AddJsonBody(obj.ToString());
            var response = client.Execute(req);

            ValidateResponse(response);
            ListTransactionsResult res = JsonConvert.DeserializeObject <ListTransactionsResult>(response.Content);

            return(res);
        }