public void SetOutputState(OutputState state) { if (state == null) { return; } lock (listOutputslock) { var results = outputs.Where(x => x.hash == state.hash && x.idx == state.idx).ToList(); if (results.Count > 0) { var oldstate = results[0]; oldstate.spent = state.spent; oldstate.units = state.units; oldstate.hasoptreturn = state.hasoptreturn; } else { state.Id = state.ToId(); outputs.Add(state); } } }
private void StoreOutput(string transactionid, Output txout) { if (txout != null && (txout.value * PeercoinConstants.Coin >= 0)) { var hasoptreturn = txout.scriptPubKey != null && !string.IsNullOrWhiteSpace(txout.scriptPubKey.asm) && txout.scriptPubKey.asm.StartsWith("OP_RETURN"); var json = hasoptreturn ? JsonConvert.SerializeObject(txout, Formatting.None) : null; var outputState = new OutputState { Id = "to" + transactionid + "_" + txout.n, hash = transactionid, idx = (uint)txout.n, spent = false, units = Convert.ToUInt64(Math.Floor(txout.value * PeercoinConstants.Coin)), hasoptreturn = hasoptreturn, data = json }; transactionRepository.SetOutputState(outputState); } ; }