Example #1
0
        public IAPIResult GetConfirmations([APIParameter("Hash of transaction", "EE2CC7BA3FFC4EE7B4030DDFE9CB7B643A0199A1873956759533BB3D25D95322")] string hashText)
        {
            var result = new TxConfirmationResult();

            if (Hash.TryParse(hashText, out var hash))
            {
                int confirmations = -1;

                var block = Nexus.FindBlockForHash(hash);
                if (block != null)
                {
                    confirmations = Nexus.GetConfirmationsOfBlock(block);
                }
                else
                {
                    var tx = Nexus.FindTransactionByHash(hash);
                    if (tx != null)
                    {
                        block = Nexus.FindBlockForTransaction(tx);
                        if (block != null)
                        {
                            confirmations = Nexus.GetConfirmationsOfBlock(block);
                        }
                    }
                }

                Chain chain = (block != null) ? Nexus.FindChainForBlock(block) : null;

                if (confirmations == -1 || block == null || chain == null)
                {
                    return(new ErrorResult()
                    {
                        error = "unknown hash"
                    });
                }
                else
                {
                    result.confirmations = confirmations;
                    result.hash          = block.Hash.ToString();
                    result.height        = block.Height;
                    result.chainAddress  = chain.Address.Text;
                }

                return(result);
            }

            return(new ErrorResult()
            {
                error = "invalid hash"
            });
        }
Example #2
0
        private TransactionResult FillTransaction(Transaction tx)
        {
            var block = Nexus.FindBlockByTransaction(tx);
            var chain = Nexus.FindChainByAddress(block.ChainAddress);

            var result = new TransactionResult
            {
                hash          = tx.Hash.ToString(),
                chainAddress  = chain.Address.Text,
                timestamp     = block.Timestamp.Value,
                blockHeight   = block.Height,
                blockHash     = block.Hash.ToString(),
                confirmations = Nexus.GetConfirmationsOfBlock(block),
                script        = tx.Script.Encode()
            };

            var eventList = new List <EventResult>();

            var evts = block.GetEventsForTransaction(tx.Hash);

            foreach (var evt in evts)
            {
                var eventEntry = new EventResult
                {
                    address = evt.Address.Text,
                    data    = evt.Data.Encode(),
                    kind    = evt.Kind.ToString()
                };
                eventList.Add(eventEntry);
            }
            result.events = eventList.ToArray();

            var txResult = block.GetResultForTransaction(tx.Hash);

            result.result = txResult != null?Base16.Encode(txResult) : "";

            return(result);
        }