Exemplo n.º 1
0
        public QueryTransaction GetTransaction(string transactionId)
        {
            Storage.Types.SyncTransactionInfo  transaction      = BlockTransactionGet(transactionId);
            Storage.Types.SyncTransactionItems transactionItems = TransactionItemsGet(transactionId);

            if (transactionItems == null)
            {
                return(null);
            }

            var result = new QueryTransaction
            {
                Symbol           = chainConfiguration.Symbol,
                BlockHash        = transaction?.BlockHash ?? null,
                BlockIndex       = transaction?.BlockIndex ?? null,
                Confirmations    = transaction?.Confirmations ?? 0,
                Timestamp        = transaction?.Timestamp ?? 0,
                TransactionId    = transaction?.TransactionHash ?? transactionId,
                TransactionIndex = transaction?.TransactionIndex,
                RBF         = transactionItems.RBF,
                LockTime    = transactionItems.LockTime.ToString(),
                Version     = transactionItems.Version,
                IsCoinbase  = transactionItems.IsCoinbase,
                IsCoinstake = transactionItems.IsCoinstake,
                Fee         = transactionItems.Fee,
                Weight      = transactionItems.Weight,
                Size        = transactionItems.Size,
                VirtualSize = transactionItems.VirtualSize,
                HasWitness  = transactionItems.HasWitness,
                Inputs      = transactionItems.Inputs.Select(i => new QueryTransactionInput
                {
                    CoinBase           = i.InputCoinBase,
                    InputAddress       = i.InputAddress,
                    InputAmount        = i.InputAmount,
                    InputIndex         = i.PreviousIndex,
                    InputTransactionId = i.PreviousTransactionHash,
                    ScriptSig          = i.ScriptSig,
                    ScriptSigAsm       = new Script(NBitcoin.DataEncoders.Encoders.Hex.DecodeData(i.ScriptSig)).ToString(),
                    WitScript          = i.WitScript,
                    SequenceLock       = i.SequenceLock
                }),
                Outputs = transactionItems.Outputs.Select(o => new QueryTransactionOutput
                {
                    Address            = o.Address,
                    Balance            = o.Value,
                    Index              = o.Index,
                    OutputType         = o.OutputType,
                    ScriptPubKey       = o.ScriptPubKey,
                    SpentInTransaction = o.SpentInTransaction,
                    ScriptPubKeyAsm    = new Script(NBitcoin.DataEncoders.Encoders.Hex.DecodeData(o.ScriptPubKey)).ToString()
                }),
            };

            return(result);
        }
Exemplo n.º 2
0
        public QueryTransaction GetTransaction(string transactionId)
        {
            Storage.Types.SyncTransactionInfo  transaction      = storage.BlockTransactionGet(transactionId);
            Storage.Types.SyncTransactionItems transactionItems = storage.TransactionItemsGet(transactionId);

            if (transactionItems == null)
            {
                return(new QueryTransaction());
            }

            return(new QueryTransaction
            {
                Symbol = chainConfiguration.Symbol,
                BlockHash = transaction?.BlockHash ?? null,
                BlockIndex = transaction?.BlockIndex ?? null,
                Confirmations = transaction?.Confirmations ?? 0,
                Timestamp = transaction?.Timestamp.UnixTimeStampToDateTime() ?? null,
                TransactionId = transaction?.TransactionHash ?? transactionId,

                RBF = transactionItems.RBF,
                LockTime = transactionItems.LockTime.ToString(),
                Version = transactionItems.Version,
                IsCoinbase = transactionItems.IsCoinbase,
                IsCoinstake = transactionItems.IsCoinstake,
                Inputs = transactionItems.Inputs.Select(i => new QueryTransactionInput
                {
                    CoinBase = i.InputCoinBase,
                    InputAddress = string.Empty,
                    InputIndex = i.PreviousIndex,
                    InputTransactionId = i.PreviousTransactionHash,
                    ScriptSig = i.ScriptSig,
                    ScriptSigAsm = new Script(NBitcoin.DataEncoders.Encoders.Hex.DecodeData(i.ScriptSig)).ToString(),
                    WitScript = i.WitScript,
                    SequenceLock = i.SequenceLock
                }),
                Outputs = transactionItems.Outputs.Select(o => new QueryTransactionOutput
                {
                    Address = o.Address,
                    Balance = o.Value,
                    Index = o.Index,
                    OutputType = o.OutputType,
                    ScriptPubKey = o.ScriptPubKey,
                    SpentInTransaction = o.SpentInTransaction,
                    ScriptPubKeyAsm = new Script(NBitcoin.DataEncoders.Encoders.Hex.DecodeData(o.ScriptPubKey)).ToString()
                }),
            });
        }