Пример #1
0
        public bool ApplyDiff(Dictionary <byte[], Tuple <long, LargeInteger> > diff)
        {
            var ret = true;

            foreach (var kvp in diff)
            {
                if (kvp.Value.Item2 < 0)
                {
                    ret = false;
                    break;
                }
            }

            if (ret)
            {
                foreach (var kvp in diff)
                {
                    //update balances
                    if (balanceCoder.ContainsKey(kvp.Key))
                    {
                        balanceCoder.Replace(kvp.Key, kvp.Value.Item2.GetBytes());
                    }
                    else
                    {
                        balanceCoder.Add(kvp.Key, kvp.Value.Item2.GetBytes());
                    }

                    //update nonces
                    if (nonceCoder.ContainsKey(kvp.Key))
                    {
                        if (kvp.Value.Item1 >= 0)
                        {
                            nonceCoder.Replace(kvp.Key, ByteManipulator.GetBytes((uint)kvp.Value.Item1));
                        }
                        else
                        {
                            nonceCoder.Remove(kvp.Key);
                        }
                    }
                    else
                    {
                        if (kvp.Value.Item1 >= 0)
                        {
                            nonceCoder.Add(kvp.Key, ByteManipulator.GetBytes((uint)kvp.Value.Item1));
                        }
                    }
                }
            }

            return(ret);
        }