Beispiel #1
0
        public void CanUseEquals()
        {
            Types.Outpoint o1 = new Types.Outpoint(new byte[] { 0x00 }, 1);
            Types.Outpoint o2 = new Types.Outpoint(new byte[] { 0x00 }, 1);

            Assert.IsFalse(o1.GetHashCode() != o2.GetHashCode());
            Assert.IsFalse(o1 == o2);
            Assert.IsTrue(o1.Equals(o2));
        }
Beispiel #2
0
        Types.Output GetUTXO(Types.Outpoint outpoint, TransactionContext dbTx, bool isInBlock, out bool valid, TransactionValidation.PointedTransaction validatingPtx = null)
        {
            valid = true;

            if (!isInBlock)
            {
                foreach (var item in memPool.TxPool)
                {
                    foreach (var pInput in item.Value.pInputs)
                    {
                        if (outpoint.Equals(pInput.Item1))
                        {
                            return(null);
                        }
                    }
                }
            }

            var result = UTXOStore.Get(dbTx, outpoint);

            if (result != null)
            {
                return(result.Value);
            }

            if (isInBlock)
            {
                return(null);
            }

            if (!memPool.TxPool.Contains(outpoint.txHash))
            {
                return(null);
            }

            if (validatingPtx == null)
            {
                var tx = memPool.TxPool[outpoint.txHash];

                if (tx.outputs.Count() > outpoint.index)
                {
                    return(tx.outputs[(int)outpoint.index]);
                }
                else
                {
                    valid = false;
                }
            }
            else
            {
                foreach (var pInput in validatingPtx.pInputs)
                {
                    if (outpoint.Equals(pInput.Item1))
                    {
                        return(pInput.Item2);
                    }
                }
            }

            return(null);
        }