/// <summary>
        /// query all transactions(on chain)
        /// </summary>
        /// <returns></returns>
        public async Task <object> QueryTransactions(int pageIndex = 1, int limit = 100, uint?blockHeight = null)
        {
            using var db = new TrackDB();
            var trans = db.FindTransactions(new TransactionFilter()
            {
                BlockHeight = blockHeight, PageIndex = pageIndex, PageSize = limit
            });
            var transfers = new List <TransferInfo>();

            if (trans.List.NotEmpty())
            {
                transfers = db.FindTransfer(new TransferFilter()
                {
                    TxIds = trans.List.Select(tx => tx.TxId).ToList(), PageSize = int.MaxValue
                }).List;
            }
            var result = new PageList <TransactionPreviewModel>
            {
                TotalCount = trans.TotalCount,
                PageSize   = trans.PageSize,
                PageIndex  = pageIndex,
                List       = ConvertToTransactionPreviewModel(trans.List, transfers),
            };

            return(result);
        }