예제 #1
0
        /// <summary>
        /// query transaction info
        /// </summary>
        /// <returns></returns>
        public async Task <PageList <TransferInfo> > QueryTransfers(TransferFilter filter)
        {
            using var db = new TrackDB();
            var result = db.QueryTransfers(filter) as PageList <TransferInfo>;

            return(result);
        }
예제 #2
0
        /// <summary>
        /// query transaction info
        /// </summary>
        /// <param name="txId"></param>
        /// <returns></returns>
        public async Task <object> GetTransaction(UInt256 txId)
        {
            var snapshot    = Helpers.GetDefaultSnapshot();
            var transaction = snapshot.GetTransaction(txId);

            if (transaction == null)
            {
                return(Error(ErrorCode.TxIdNotFound));
            }

            var model = new TransactionModel(transaction);

            var txState = snapshot.GetTransactionState(txId);

            if (txState != null)
            {
                Header header = snapshot.GetHeader(txState.BlockIndex);
                model.BlockHash     = header.Hash;
                model.BlockHeight   = txState.BlockIndex;
                model.Timestamp     = header.Timestamp;
                model.Confirmations = snapshot.GetHeight() - header.Index + 1;
            }
            using var db = new TrackDB();
            var trans = db.QueryTransfers(new TransferFilter()
            {
                TxIds = new List <UInt256>()
                {
                    txId
                }, PageSize = int.MaxValue
            }).List;

            model.Transfers = trans.Select(tx => tx.ToTransferModel()).ToList();

            var executeResult = db.GetExecuteLog(txId);

            if (executeResult?.Notifications.NotEmpty() == true)
            {
                model.Notifies.AddRange(
                    executeResult.Notifications.Select(n => new NotifyModel()
                {
                    Contract  = n.Contract,
                    EventName = n.EventName,
                    State     = JStackItem.FromJson(n.State),
                }));
            }
            return(model);
        }