Example #1
0
        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);
                }
            }
        }
Example #2
0
        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);
            }
            ;
        }