Exemplo n.º 1
0
        private static int GetMinLength(List <char[]> unSalted, int minLength, int maxLength)
        {
            int result = 0;

            for (int i = 1; i < 10; i++)
            {
                if (HexHashUtil.TryHexPosConversion(i, 1, unSalted, out double value))
                {
                    result += (int)value;
                }

                if (result > minLength - 1 & i > 3)
                {
                    if (result < maxLength)
                    {
                        return(result);
                    }
                    else
                    {
                        result = maxLength;
                    }
                }
            }

            return(maxLength - 1);
        }
Exemplo n.º 2
0
        public bool CreateValue(HexValue hexValue)
        {
            _hexValue = hexValue;

            if (_hexValue == null)
            {
                Console.WriteLine("HexValue is null, can\'t calculate value without.");
                return(false);
            }

            if (!HexHashUtil.TryHexPosConversion(Position, Size, Salted ? hexValue.Salted : hexValue.UnSalted, out var result))
            {
                Console.WriteLine($"CreateValue, failed trying to convert hex position.{Position}, {Size}, {Salted}");
                return(false);
            }

            var modValue = result % (Creation - MinRange) + MinRange;

            if (Math.Abs(modValue % 1) > Double.Epsilon)
            {
                Console.WriteLine($"CreateValue, failed to cast double in same int value.{modValue},{(int)modValue}");
                return(false);
            }

            _value = (int)modValue;
            return(true);
        }
Exemplo n.º 3
0
        public bool CreateValue(HexValue hexValue)
        {
            this._hexValue = hexValue;

            if (this._hexValue == null)
            {
                Console.WriteLine($"HexValue is null, can't calculate value without.");
                return(false);
            }

            if (!HexHashUtil.TryHexPosConversion(Position, Size, Salted? hexValue.Salted : hexValue.UnSalted, out double result))
            {
                Console.WriteLine($"CreateValue, failed trying to convert hex position.{Position}, {Size}, {Salted}");
                return(false);
            }

            double modValue = (result % (Creation - MinRange)) + MinRange;

            if (modValue % 1 != 0)
            {
                Console.WriteLine($"CreateValue, failed to cast double in same int value.{modValue},{(int)modValue}");
                return(false);
            }

            value = (int)modValue;
            return(true);
        }
Exemplo n.º 4
0
        private static bool TryMirrorPubKey(PubKey pubKey, out PubKey mirrorPubKey)
        {
            var pubKeyStr = HexHashUtil.ByteArrayToString(pubKey.ToBytes());

            var reversedArray = pubKeyStr.Substring(10, 54).ToCharArray();

            Array.Reverse(reversedArray);

            var mirrorPubKeyStr =
                pubKeyStr.Substring(0, 8)
                + pubKeyStr.Substring(8, 2)
                + new string(reversedArray)
                + pubKeyStr.Substring(64, 2);
            var mirrorPubKeyBytes = HexHashUtil.StringToByteArray(mirrorPubKeyStr);

            try
            {
                mirrorPubKey = new PubKey(mirrorPubKeyBytes, false);
                return(false);
            }
            catch (Exception)
            {
                //Console.WriteLine(ex.InnerException);
                mirrorPubKey = new PubKey(mirrorPubKeyBytes, true);
                return(true);
            }
        }
Exemplo n.º 5
0
        public SpellTest()
        {
            var lvlCleric = new LevelingAction(LevelingType.Class, ClassType.Cleric, 0, 1);

            var pubMogAddressHex = HexHashUtil.ByteArrayToString(Base58Encoding.Decode(MogAddress));

            var creation = new Shift(0, 1530914381, pubMogAddressHex,
                                     2000, "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
                                     2, "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
                                     1.00m,
                                     0.0001m);

            Assert.True(creation.History != null);

            var level = new Shift(1, 1530914381, pubMogAddressHex,
                                  2001, "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
                                  2, "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
                                  lvlCleric.GetValue1(),
                                  lvlCleric.GetValue2());

            Assert.True(level.History != null);

            var shifts = new Dictionary <long, Shift>
            {
                { 2000, creation },
                { 2001, level }
            };

            Mogwai = new Mogwai(MogAddress, shifts);
        }
Exemplo n.º 6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="shift"></param>
        public Dice(Shift shift)
        {
            string height = shift.Height.ToString();

            height = height.PadLeft(height.Length + height.Length % 2, '0');
            seed1  = HexHashUtil.HashSHA256(shift.AdHex + height);
            seed2  = HexHashUtil.HashSHA256(shift.AdHex + shift.BkHex).Substring(1);
            seed3  = HexHashUtil.HashSHA256(height + shift.BkHex).Substring(3);
        }
Exemplo n.º 7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="mirroraddress"></param>
        /// <returns></returns>
        public Dictionary <double, Shift> GetShifts(string mirroraddress)
        {
            var result = new Dictionary <double, Shift>();

            List <TxDetail> allTxs = ListMirrorTransactions(mirroraddress);

            var validTx = allTxs.Where(p => p.Confirmations > 0).OrderBy(p => p.Blocktime).ThenBy(p => p.Blockindex).ToList();

            // stop if there aren't any valid transactions ...
            if (!validTx.Any())
            {
                return(result);
            }

            var pubMogAddressHex = HexHashUtil.ByteArrayToString(Base58Encoding.Decode(mirroraddress));

            bool creation        = false;
            int  lastBlockHeight = 0;

            foreach (var tx in validTx)
            {
                decimal amount = Math.Abs(tx.Amount);
                if (!creation && amount < mogwaiCost)
                {
                    continue;
                }

                creation = true;

                var block = GetBlock(tx.Blockhash);

                if (lastBlockHeight != 0 && lastBlockHeight + 1 < block.Height)
                {
                    // add small shifts
                    for (int i = lastBlockHeight + 1; i < block.Height; i++)
                    {
                        result.Add(i, new Shift(result.Count(), pubMogAddressHex, i, blockHashDict[i]));
                    }
                }

                lastBlockHeight = block.Height;

                result.Add(block.Height, new Shift(result.Count(), tx.Blocktime, pubMogAddressHex, block.Height, tx.Blockhash, tx.Blockindex, tx.Txid, amount, Math.Abs(tx.Fee + txFee)));
            }

            // add small shifts
            if (creation)
            {
                for (int i = lastBlockHeight + 1; i < blockHashDict.Keys.Max(); i++)
                {
                    result.Add(i, new Shift(result.Count(), pubMogAddressHex, i, blockHashDict[i]));
                }
            }

            //result.ForEach(p => Console.WriteLine(p.ToString()));
            return(result);
        }
Exemplo n.º 8
0
        public HexValue(Shift shift)
        {
            string saltgrain = HexHashUtil.ByteArrayToString(BitConverter.GetBytes(shift.Time * Math.Pow(shift.Height, 2)));

            salt = String.Concat(Enumerable.Repeat(saltgrain, (int)(64 / saltgrain.Length) + 1)).ToCharArray();

            adHexChar = shift.AdHex.ToCharArray();
            bkHexChar = shift.BkHex.ToCharArray();
            txHexChar = shift.TxHex.ToCharArray();
        }
Exemplo n.º 9
0
        public EntityTest()
        {
            string pubMogAddressHex = HexHashUtil.ByteArrayToString(Base58Encoding.Decode(MogAddress));

            var lvlClass1 = new LevelingAction(LevelingType.Class, ClassType.Barbarian, 0, 1);
            var creation1 = new Shift(0, 1530914381, pubMogAddressHex,
                                      2000, "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
                                      2, "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
                                      1.00m,
                                      0.0001m);

            Assert.True(creation1.History != null);

            var level1 = new Shift(1, 1530914381, pubMogAddressHex,
                                   2001, "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
                                   2, "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
                                   lvlClass1.GetValue1(),
                                   lvlClass1.GetValue2());

            Assert.True(level1.History != null);

            var shifts1 = new Dictionary <long, Shift>
            {
                { 2000, creation1 },
                { 2001, level1 }
            };

            Mogwai1 = new Mogwai(MogAddress, shifts1);

            var lvlClass2 = new LevelingAction(LevelingType.Class, ClassType.Sorcerer, 0, 1);
            var creation2 = new Shift(0, 1530914381, pubMogAddressHex,
                                      2000, "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
                                      2, "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
                                      1.00m,
                                      0.0001m);

            Assert.True(creation2.History != null);

            var level2 = new Shift(1, 1530914381, pubMogAddressHex,
                                   2001, "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
                                   2, "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
                                   lvlClass2.GetValue1(),
                                   lvlClass2.GetValue2());

            Assert.True(level2.History != null);

            var shifts2 = new Dictionary <long, Shift>
            {
                { 2000, creation2 },
                { 2001, level2 }
            };

            Mogwai2 = new Mogwai(MogAddress, shifts2);
        }
Exemplo n.º 10
0
        private int GetNext()
        {
            var s1Val = HexHashUtil.GetHexVal(_seed1[_i1]);
            var s2Val = HexHashUtil.GetHexVal(_seed2[_i2]);
            var s3Val = HexHashUtil.GetHexVal(_seed3[_i3]);
            var value = s1Val + s2Val + s3Val;

            _i1 = (_i1 + 1) % _seed1.Length;
            _i2 = _i1 == 0 ? (_i2 + 1) % _seed2.Length : _i2;
            _i3 = _i2 == 0 ? (_i3 + 1) % _seed3.Length : _i3;
            return(value);
        }
Exemplo n.º 11
0
        private int GetNext()
        {
            int s1val = HexHashUtil.GetHexVal(seed1[i1]);
            int s2val = HexHashUtil.GetHexVal(seed2[i2]);
            int s3val = HexHashUtil.GetHexVal(seed3[i3]);
            int value = s1val + s2val + s3val;

            i1 = (i1 + 1) % seed1.Length;
            i2 = i1 == 0 ? (i2 + 1) % seed2.Length : i2;
            i3 = i2 == 0 ? (i3 + 1) % seed3.Length : i3;
            return(value);
        }
Exemplo n.º 12
0
        public Dice(Shift shift, int modifier)
        {
            string height = shift.Height.ToString();

            height = height.PadLeft(height.Length + height.Length % 2, 'a');

            string modifierStr = modifier.ToString();

            modifierStr = modifierStr.PadLeft(modifierStr.Length + modifierStr.Length % 2, 'a');

            seed1 = HexHashUtil.HashSHA256(HexHashUtil.HashSHA256(modifierStr) + height);
            seed2 = HexHashUtil.HashSHA256(modifierStr + height).Substring(1);
            seed3 = HexHashUtil.HashSHA256(height + modifierStr + shift.BkHex).Substring(3);
        }
Exemplo n.º 13
0
        public MogwaiTest()
        {
            var address          = "MJHYMxu2kyR1Bi4pYwktbeCM7yjZyVxt2i";
            var pubMogAddressHex = HexHashUtil.ByteArrayToString(Base58Encoding.Decode(address));

            Mogwai = new Mogwai(address, new Dictionary <long, Shift>
            {
                { 1001, new Shift(0, 1530914381, pubMogAddressHex,
                                  1001, "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
                                  2, "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
                                  1.00m,
                                  0.0001m) }
            });
        }
Exemplo n.º 14
0
        public void GenderTest()
        {
            var genderAttr = AttributeBuilder.Create("Gender")
                             .Salted(false).SetPosition(2).SetSize(1).SetCreation(2).SetMaxRange(2).Build();

            var dict = new Dictionary <int, int>();

            foreach (var b1 in Base58Encoding.Digits.ToCharArray())
            {
                foreach (var b2 in Base58Encoding.Digits.ToCharArray())
                {
                    var addr             = "M" + b1 + b2 + "KtKS3AeNuRFWE5Qj9tFiNAahWvQMTiz";
                    var pubMogAddressHex = HexHashUtil.ByteArrayToString(Base58Encoding.Decode(addr));
                    var hexValue         =
                        new HexValue(
                            new Shift(0,
                                      1530914381,
                                      pubMogAddressHex,
                                      7234,
                                      "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
                                      2,
                                      "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
                                      1.00m,
                                      0.0001m));

                    genderAttr.CreateValue(hexValue);

                    var value    = genderAttr.GetValue();
                    var orgValue = HexHashUtil.GetHexVal(pubMogAddressHex[1]);
                    if (dict.TryGetValue(value, out var count))
                    {
                        dict[value] = count + 1;
                    }
                    else
                    {
                        dict.Add(value, 1);
                    }
                }
            }

            Assert.Equal(2, dict.Count);
            var enumerator = dict.Keys.GetEnumerator();

            enumerator.MoveNext();
            Assert.Equal(1, enumerator.Current);
            enumerator.MoveNext();
            Assert.Equal(0, enumerator.Current);
            Assert.Equal(1692, dict[0]);
            Assert.Equal(1672, dict[1]);
        }
Exemplo n.º 15
0
        public void HashSHA256Test()
        {
            Shift shift = new Shift(0D,
                                    1530914381,
                                    "32ad9e02792599dfdb6a9d0bc0b924da23bd96b1b7eb4f0a68",
                                    7234,
                                    "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
                                    2,
                                    "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
                                    1.00m,
                                    0.0001m);

            var bytes       = HexHashUtil.StringToByteArray(shift.AdHex);
            var hashedBytes = HexHashUtil.HashSHA256(bytes);
            var hash        = HexHashUtil.ByteArrayToString(hashedBytes);

            Assert.AreEqual("bcd35d9f6de167fada34bfeb0c59d2b1a55974b9460c54f42dfff2e86cf8c58b", hash);
        }
Exemplo n.º 16
0
        public HomeTownTest()
        {
            var pubMogAddressHex = HexHashUtil.ByteArrayToString(Base58Encoding.Decode(MogAddress));

            var creation = new Shift(0, 1530914381, pubMogAddressHex,
                                     2000, "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
                                     2, "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
                                     1.00m,
                                     0.0001m);

            Assert.True(creation.History != null);

            var shifts = new Dictionary <long, Shift>
            {
                { 2000, creation }
            };

            Mogwai = new Mogwai(MogAddress, shifts);
        }
Exemplo n.º 17
0
        public static string GenerateName(HexValue hexValue)
        {
            var minLength = GetMinLength(hexValue.UnSalted, 3, 9);

            string[] consonants = { "b", "c", "ck", "d", "f", "g", "h", "j", "k", "l", "m", "l", "n", "p", "q", "r", "s", "sh", "zh", "t", "v", "w", "x" };
            string[] vowels     = { "a", "e", "i", "o", "u", "ae", "y" };
            var      name       = "";

            if (HexHashUtil.TryHexPosConversion(4, 2, hexValue.UnSalted, out var seedValues))
            {
                name += consonants[(int)seedValues % consonants.Length];
            }

            if (HexHashUtil.TryHexPosConversion(6, 2, hexValue.UnSalted, out seedValues))
            {
                name += vowels[(int)seedValues % vowels.Length];
            }

            var ind          = 8;
            var consonantNow = true;

            while (name.Length < minLength)
            {
                if (consonantNow && HexHashUtil.TryHexPosConversion(ind, 2, hexValue.UnSalted, out seedValues))
                {
                    name += consonants[(int)seedValues % consonants.Length];
                }
                else if (HexHashUtil.TryHexPosConversion(ind, 2, hexValue.UnSalted, out seedValues))
                {
                    name += vowels[(int)seedValues % vowels.Length];
                }
                else
                {
                    Log.Error("Generating names seems currently troublesome!");
                }

                consonantNow = !consonantNow;
                ind         += 2;
            }

            return(name.First().ToString().ToUpper() + name.Substring(1));
        }
Exemplo n.º 18
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="cuurentLevel"></param>
        /// <param name="shift"></param>
        /// <returns></returns>
        internal double GetExp(int cuurentLevel, Shift shift)
        {
            int hexSize      = shift.BkHex.Length;
            int lazyExpLevel = (int)cuurentLevel / 10;
            int lazyExp      = 0;

            for (int i = 0; i <= lazyExpLevel; i++)
            {
                string exPat  = expPats[i % 18];
                int    indExp = shift.BkHex.IndexOf(exPat);
                if (indExp != -1)
                {
                    var charMultiplierA = shift.BkHex[(hexSize + indExp - 1) % hexSize];
                    var charMultiplierB = shift.BkHex[(indExp + exPat.Length) % hexSize];
                    var exp             = HexHashUtil.GetHexVal(charMultiplierA) * HexHashUtil.GetHexVal(charMultiplierB);
                    lazyExp += exp;
                }
            }
            return(lazyExp);
        }
Exemplo n.º 19
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="cuurentLevel"></param>
        /// <param name="shift"></param>
        /// <returns></returns>
        internal double GetExp(int cuurentLevel, Shift shift)
        {
            var hexSize      = shift.BkHex.Length;
            var lazyExpLevel = cuurentLevel / 10;
            var lazyExp      = 0;

            for (var i = 0; i <= lazyExpLevel; i++)
            {
                var exPat  = _expPats[i % 18];
                var indExp = shift.BkHex.IndexOf(exPat, StringComparison.Ordinal);
                if (indExp != -1)
                {
                    var charMultiplierA = shift.BkHex[(hexSize + indExp - 1) % hexSize];
                    var charMultiplierB = shift.BkHex[(indExp + exPat.Length) % hexSize];
                    var exp             = HexHashUtil.GetHexVal(charMultiplierA) * HexHashUtil.GetHexVal(charMultiplierB);
                    lazyExp += exp;
                }
            }
            return(lazyExp);
        }
Exemplo n.º 20
0
        public DungeonTest()
        {
            var address          = "MJHYMxu2kyR1Bi4pYwktbeCM7yjZyVxt2i";
            var pubMogAddressHex = HexHashUtil.ByteArrayToString(Base58Encoding.Decode(address));
            var shifts           = new Dictionary <long, Shift>
            {
                { 1001, new Shift(0, 1530914381, pubMogAddressHex,
                                  1001, "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
                                  2, "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
                                  1.00m,
                                  0.0001m) },

                { 1002, new Shift(1, 1535295740, pubMogAddressHex,
                                  1002, "0000000033dbfc3cc9f3671ba28b41ecab6f547219bb43174cc97bf23269fa88",
                                  1, "db5639553f9727c42f80c22311bd8025608edcfbcfc262c0c2afe9fc3f0bcb29",
                                  0.01040003m,
                                  0.00001002m) }
            };

            Mogwai = new Mogwai("MJHYMxu2kyR1Bi4pYwktbeCM7yjZyVxt2i", shifts);
        }
Exemplo n.º 21
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="mirrorAddress"></param>
        /// <returns></returns>
        public Dictionary <long, Shift> GetShifts(string mirrorAddress)
        {
            var result = new Dictionary <long, Shift>();

            List <TxDetail> allTxs = ListMirrorTransactions(mirrorAddress);

            var validTx = allTxs.Where(p => p.Confirmations > 0).OrderBy(p => p.BlockTime).ThenBy(p => p.BlockIndex)
                          .ToList();

            // stop if there aren't any valid transactions ...
            if (!validTx.Any())
            {
                return(result);
            }

            var pubMogAddressHex = HexHashUtil.ByteArrayToString(Base58Encoding.Decode(mirrorAddress));

            var creation        = false;
            var lastBlockHeight = 0;

            foreach (TxDetail tx in validTx)
            {
                var amount = Math.Abs(tx.Amount);
                if (!creation && amount < MogwaiCost)
                {
                    continue;
                }

                creation = true;

                Block block = GetBlock(tx.BlockHash);

                if (lastBlockHeight != 0 && lastBlockHeight + 1 < block.Height)
                {
                    // add small shifts
                    for (var i = lastBlockHeight + 1; i < block.Height; i++)
                    {
                        // blockhashes aren't updated need to wait ...
                        if (!_blockHashDict.ContainsKey(i))
                        {
                            Log.Warn(
                                $"blockhashes aren't updated to the current block we got {block.Height} and our hashes are at {_blockHashDict.Keys.Max()}!");
                            return(result);
                        }

                        result.Add(i, new Shift(result.Count, pubMogAddressHex, i, _blockHashDict[i]));
                    }
                }

                lastBlockHeight = block.Height;

                result.Add(block.Height,
                           new Shift(result.Count, tx.BlockTime, pubMogAddressHex, block.Height, tx.BlockHash, tx.BlockIndex,
                                     tx.TxId, amount, Math.Abs(tx.Fee + TxFee)));
            }

            // add small shifts
            if (creation)
            {
                var max = _blockHashDict.Keys.Max();
                for (var i = lastBlockHeight + 1; i < max; i++)
                {
                    result.Add(i, new Shift(result.Count, pubMogAddressHex, i, _blockHashDict[i]));
                }
            }

            return(result);
        }
Exemplo n.º 22
0
        public MogwaiKeys TestMogwaiKeys()
        {
            //return GetKeysFor("M9whXm2mjrhySAH6D81Lk5mthw1mUEZpvi", "MGJ9VoguyKeRTYmpURgztife4N7PnuDH6u");

            var lvlBarbarian   = new LevelingAction(LevelingType.Class, ClassType.Barbarian, 0, 1);
            var lvlCleric      = new LevelingAction(LevelingType.Class, ClassType.Cleric, 0, 1);
            var lvlSorcerer    = new LevelingAction(LevelingType.Class, ClassType.Sorcerer, 0, 1);
            var dungAction     = new AdventureAction(AdventureType.Dungeon, DifficultyType.Easy, 2);
            var healAction     = new SpecialAction(SpecialType.Heal, SpecialSubType.None, CostType.Medium);
            var revivingAction = new SpecialAction(SpecialType.Reviving, SpecialSubType.None, CostType.High);

            var pubMogAddressHex =
                HexHashUtil.ByteArrayToString(Base58Encoding.Decode("MJHYMxu2kyR1Bi4pYwktbeCM7yjZyVxt2i"));
            var blockHeight = 84659;
            var index       = 0;
            var shifts      = new Dictionary <long, Shift>
            {
                {
                    blockHeight, new Shift(index++, 1530914381, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
                                           2, "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
                                           1.00m,
                                           0.0001m)
                },
                {
                    blockHeight, new Shift(index++, 1530914381, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
                                           2, "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
                                           lvlSorcerer.GetValue1(),
                                           lvlSorcerer.GetValue2())
                },
                {
                    blockHeight, new Shift(index++, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000033dbfc163de3671ba28b41ecab6f5d1cf9bb43174cc97bf2164d2e39")
                },
                {
                    blockHeight, new Shift(index++, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000033dbfc163de3671ba28b41ecab6f5d1cf9bb43174cc97bf2164d2e39")
                },
                {
                    blockHeight, new Shift(index++, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000033dbfc163de3671ba28b41ecab6f5d1cf9bb43174cc97bf2164d2e39")
                },
                {
                    blockHeight, new Shift(index++, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000033dbfc163de3671ba28b41ecab6f5d1cf9bb43174cc97bf2164d2e39")
                },
                {
                    blockHeight, new Shift(index++, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000033dbfc163de3671ba28b41ecab6f5d1cf9bb43174cc97bf2164d2e39")
                },
                {
                    blockHeight, new Shift(index++, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000033dbfc163de3671ba28b41ecab6f5d1cf9bb43174cc97bf2164d2e39")
                },
                {
                    blockHeight, new Shift(index++, 1539810141, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000044db5c3cc943271b324b31ecab6f547219bb43174cc97bf23269fa88",
                                           1, "cbcd39553f9727c434343222f1bd8025608edcfbcfc262c0c2afe9fc3f0bcb29",
                                           lvlBarbarian.GetValue1(),
                                           lvlBarbarian.GetValue2())
                },
                {
                    blockHeight, new Shift(index++, 1539815141, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000044db5c3cc943271b324b31ecab6f547219bb43174cc97bf23269fa88",
                                           1, "bbcd39553a9727c434343242f9bd8025608edcfbcfc262c0c2afe9fc3f0bff29",
                                           healAction.GetValue1(),
                                           healAction.GetValue2())
                },
                {
                    blockHeight, new Shift(index++, 1540417599, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "00000000b552e9c7c51ed793f87c51b2cc945fbb222efd6cec17666a5ecd18a5",
                                           1, "cb03db5029f426ed517fdfffd6a90c99a3111f2254f41f9a8f56320076b1f0e3",
                                           dungAction.GetValue1(),
                                           dungAction.GetValue2())
                },
                {
                    blockHeight, new Shift(index++, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000033dbfc163de3671ba28b41ecab6f547219bb43174cc97bf2164d2e39")
                },
                {
                    blockHeight, new Shift(index++, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000033dbfc163dc3671ba28b41ecab6f547219bb43174cc97bf2164d2e30")
                },
                {
                    blockHeight, new Shift(index++, 1555309745, "32ab20cfbef0ccddfe5c79e726f5fc48b151106f196f7ccb71",
                                           blockHeight++, "0000000044db5c3cc943271b324b31ecab6f547219bb43174cc97bf23269fa88",
                                           1, "bbcd39553a9727c434343242f9bd8025608edcfbcfc262c0c2afe9fc3f0bdf29",
                                           revivingAction.GetValue1(),
                                           revivingAction.GetValue2())
                },
                {
                    blockHeight, new Shift(index++, 1539815141, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000044db5c3cc943271b324b31ecab6f547219bb43174cc97bf23269fa88",
                                           1, "bbcd39553a9727c434343242f9bd8025608edcfbcfc262c0c2afe9fc3f0bff29",
                                           healAction.GetValue1(),
                                           healAction.GetValue2())
                },
                {
                    blockHeight, new Shift(index++, 1539810141, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000044db5c3cc943271b324b31ecab6f547219bb43174cc97bf23269fa88",
                                           1, "cbcd39553f9727c434343222f1bd8025608edcfbcfc262c0c2afe9fc3f0bcb29",
                                           lvlSorcerer.GetValue1(),
                                           lvlSorcerer.GetValue2())
                },
                {
                    blockHeight, new Shift(index++, 1540985507, "32ab20cfbef0ccddfe5c79e726f5fc48b151106f196f7ccb71",
                                           blockHeight++, "00000000b2204f48bb8d48542a6ada13bc86dde4d2909563fdb8f46389d1a1d2",
                                           1, "01d8c163c4f034f7d1f8d7e94fc9fc9a30bbef1aa41c2e03dab29787588c60c4",
                                           dungAction.GetValue1(),
                                           dungAction.GetValue2())
                },
                {
                    blockHeight, new Shift(index++, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000033dbfc163db3671ba28b41ecab6f547219bb43174cc97bf2164d2e31")
                },
                {
                    blockHeight, new Shift(index++, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000033dbfc163db3671ba28b41ecab6f547219bb43174cc97bf2164d2e31")
                },
                {
                    blockHeight, new Shift(index++, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000033dbfc163db3671ba28b41ecab6f547219bb43174cc97bf2164d2e31")
                },
                {
                    blockHeight, new Shift(index++, 1555309745, "32ab20cfbef0ccddfe5c79e726f5fc48b151106f196f7ccb71",
                                           blockHeight++, "0000000044db5c3cc943271b324b31ecab6f547219bb43174cc97bf23269fa88",
                                           1, "bbcd39553a9727c434343242f9bd8025608edcfbcfc262c0c2afe9fc3f0bdf29",
                                           revivingAction.GetValue1(),
                                           revivingAction.GetValue2())
                },
                {
                    blockHeight, new Shift(index++, 1556309745, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000044db5c3cc943271b324b31ecab6f547219bb43174cc97bf23269fa88",
                                           1, "bbcd39553a9727c434343242f9bd8025608edcfbcfc262c0c2afe9fc3f0bff29",
                                           healAction.GetValue1(),
                                           healAction.GetValue2())
                },
                {
                    blockHeight, new Shift(index++, 1557309745, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "0000000044db5c3cc943271b324b31ecab6f547219bb43174cc97bf23269fa88",
                                           1, "cbcd39553f9727c434343222f1bd8025608edcfbcfc262c0c2afe9fc3f0bcb29",
                                           lvlSorcerer.GetValue1(),
                                           lvlSorcerer.GetValue2())
                },
                {
                    blockHeight, new Shift(index++, 1541350482, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                           blockHeight++, "00000000341eea3f27e4ddaf72253cd6a35f54ece70fdeee0906a663f8403a60",
                                           1, "302e37f0c69b1b037bc178fce6f8493a76a4c844df5391a0a46e81fcad8657c8",
                                           0.01042002m,
                                           0.00019003m)
                },
            };

            for (var i = 0; i < 30; i++)
            {
                shifts.Add(blockHeight, new Shift(index++, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                                  blockHeight++, "0000000033dbfc163de3671ba28b41ecab6f5d1cf9bb43174cc97bf2164d2e39"));
            }

            for (var i = 0; i < 10; i++)
            {
                shifts.Add(blockHeight, new Shift(index++, 1530914381, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                                  blockHeight++, "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
                                                  2, "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
                                                  lvlBarbarian.GetValue1(),
                                                  lvlBarbarian.GetValue2()));
            }

            var dungActionNext = new AdventureAction(AdventureType.Dungeon, DifficultyType.Easy, 8);

            shifts.Add(blockHeight, new Shift(index++, 1540417599, "328e6077135a1012eae0c92dc624d1cbc02c69d45200e5f72c",
                                              blockHeight++, "00000000b552e9c7c51ed793f87c51b2cc945fbb222efd6cec17666a5ecd18a5",
                                              1, "cb03db5029f426ed517fdfffd6a90c99a3111f2254f41f9a8f56320076b1f0e3",
                                              dungActionNext.GetValue1(),
                                              dungActionNext.GetValue2()));


            //    var shifts = new Dictionary<long, Shift>
            //    {
            //        {
            //            1001, new Shift(0, 1530914381, pubMogAddressHex,
            //                1001, "00000000090d6c6b058227bb61ca2915a84998703d4444cc2641e6a0da4ba37e",
            //                2, "163d2e383c77765232be1d9ed5e06749a814de49b4c0a8aebf324c0e9e2fd1cf",
            //                1.00m,
            //                0.0001m)
            //        },
            //        {
            //            1002, new Shift(1, 1535295740, pubMogAddressHex,
            //                1002, "0000000033dbfc3cc9f3671ba28b41ecab6f547219bb43174cc97bf23269fa88",
            //                1, "db5639553f9727c42f80c22311bd8025608edcfbcfc262c0c2afe9fc3f0bcb29",
            //                0.01040003m,
            //                0.00001002m)
            //        },
            //        {
            //            1003, new Shift(2, pubMogAddressHex,
            //                1003, "0000000033dbfc3cc9f3671ba28b41ecab6f547219bb43174cc97bf2163d2e38")
            //        },
            //        {
            //            1004, new Shift(3, pubMogAddressHex,
            //                1004, "0000000033dbfc163df3671ba28b41ecab6f547219bb43174cc97bf2164d2e38")
            //        },
            //        {
            //            1005, new Shift(4, pubMogAddressHex,
            //                1005, "0000000033dbfc163de3671ba28b41ecab6f547219bb43174cc97bf2164d2e38")
            //        },
            //        {
            //            1006, new Shift(5, pubMogAddressHex,
            //                1006, "0000000033dbfc163dc3671ba28b41ecab6f547219bb43174cc97bf2164d2e38")
            //        },
            //        {
            //            1007, new Shift(6, pubMogAddressHex,
            //                1007, "0000000033dbfc163db3671ba28b41ecab6f547219bb43174cc97bf2164d2e38")
            //        },
            //        {
            //            1008, new Shift(7, pubMogAddressHex,
            //                1008, "0000000033dbfc163def671ba28b41ecab6f547219bb43174cc97bf2164d2e38")
            //        },
            //        {
            //            1009, new Shift(8, pubMogAddressHex,
            //                1009, "0000000033dbfc163dff671ba28b41ecab6f547219bb43174cc97bf2164d2e38")
            //        },
            //        {
            //            1010, new Shift(9, 1555295740, pubMogAddressHex,
            //                1010, "0000000044db5c3cc943271b324b31ecab6f547219bb43174cc97bf23269fa88",
            //                1, "cbcd39553f9727c434343222f1bd8025608edcfbcfc262c0c2afe9fc3f0bcb29",
            //                lvlAction.GetValue1(),
            //                lvlAction.GetValue2())
            //        },
            //        {
            //            1011, new Shift(10, pubMogAddressHex,
            //                1011, "0000000033dbfc163dff671ba28b41ecab6f547219bb43174cc97bf2164d2e38")
            //        },
            //        {
            //            1012, new Shift(11, 1555299745, pubMogAddressHex,
            //                1012, "0000000044db5c3cc943271b324b31ecab6f547219bb43174cc97bf23269fa88",
            //                1, "bbcd39553a9727c434343242f9bd8025608edcfbcfc262c0c2afe9fc3f0bcf29",
            //                dungAction.GetValue1(),
            //                dungAction.GetValue2())
            //        },
            //        {
            //            1013, new Shift(12, 1555309745, pubMogAddressHex,
            //                1013, "0000000044db5c3cc943271b324b31ecab6f547219bb43174cc97bf23269fa88",
            //                1, "bbcd39553a9727c434343242f9bd8025608edcfbcfc262c0c2afe9fc3f0bdf29",
            //                revivingAction.GetValue1(),
            //                revivingAction.GetValue2())
            //        },
            //        {
            //            1014, new Shift(13, 1555329745, pubMogAddressHex,
            //                1014, "0000000044db5c3cc943271b324b31ecab6f547219bb43174cc97bf23269fa88",
            //                1, "bbcd39553a9727c434343242f9bd8025608edcfbcfc262c0c2afe9fc3f0bff29",
            //                healAction.GetValue1(),
            //                healAction.GetValue2())
            //        },
            //        {
            //            1015, new Shift(14, 1539810141, "328b742623b139b29553d0c2cc2c785ed8feff324a37a6bc41",
            //                75422, "000000004eb637ffbdb8674dbe5ff5c339a50b0dac1723f1df44b7b790746a6e",
            //                1, "7876fde772cae5684ad133a007c92f5f209cc91fdc1814fe3dab2c6174557ea7",
            //                0.01042002m,
            //                0.00020002m)
            //        }
            //};

            var mogwai = new Mogwai("MJHYMxu2kyR1Bi4pYwktbeCM7yjZyVxt2i", shifts);

            return(new MogwaiKeys
            {
                Mogwai = mogwai,
                Balance = 2.1234m,
                IsUnwatched = false,
                LastUpdated = DateTime.Now,
                MogwaiKeysState = MogwaiKeysState.Bound,
                Shifts = shifts
            });
        }