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)); }
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); }