示例#1
0
        internal void InsertBlock(BlockS b)
        {
            connection.Open();

            string query = "INSERT INTO block (" +
                           "height, hash, version, merkleroot, time, nonce, bits, " +
                           "size, strippedsize, weight, chainwork, nextblockhash, versionhex" +
                           ") VALUES('" +
                           b.height + "', " +
                           "'" + b.hash + "', '" +
                           b.version + "', " +
                           "'" + b.merkleroot + "', '" +
                           b.time + "', '" +
                           b.nonce + "', " +
                           "'" + String.Format("{0:x}", b.bits) + "', '" +
                           b.size + "', '" +
                           b.strippedsize + "', '" +
                           b.weight + "', " +
                           "'" + b.chainwork + "', " +
                           "'" + b.nextblockhash + "', " +
                           "'" + String.Format("{0:x}", b.versionhex) + "');";

            //Create Command
            MySqlCommand cmd = new MySqlCommand(query, connection);

            //Execute the command

            cmd.ExecuteNonQuery();

            connection.Close();
        }
示例#2
0
        public void toBlockSTest()
        {
            // Object for connecting to Bitcoin node
            RPCClient RPCC = new RPCClient("mattyab:N1ceMeme!", "192.168.1.146", Network.Main);

            Block blck = RPCC.GetBlock(0);

            BlockS b = BlockS.toBlockS(blck, RPCC);
        }
示例#3
0
        public Block GetBlock(int height)
        {
            string query = "SELECT * FROM blockchain.block WHERE height = " + height + ";";

            //Create Command
            MySqlCommand cmd = new MySqlCommand(query, connection);
            //Create a data reader and Execute the command

            //Create default block
            Block block = default(Block);

            connection.Open();

            using (MySqlDataReader dataReader = cmd.ExecuteReader())
            {
                //Read the data and store them in the Block
                while (dataReader.Read())
                {
                    block = new Block();
                    BlockS b = new BlockS();

                    b.height        = Convert.ToInt32(dataReader.GetString("height"));
                    b.hash          = new uint256(dataReader.GetString("hash"));
                    b.version       = Convert.ToInt32(dataReader.GetString("version"));
                    b.merkleroot    = new uint256(dataReader.GetString("merkleroot"));
                    b.time          = Convert.ToUInt32(dataReader.GetString("time"));
                    b.nonce         = Convert.ToUInt32(dataReader.GetString("nonce"));
                    b.bits          = uint.Parse(dataReader.GetString("bits"), System.Globalization.NumberStyles.HexNumber);
                    b.size          = Convert.ToUInt32(dataReader.GetString("size"));
                    b.strippedsize  = Convert.ToUInt32(dataReader.GetString("strippedsize"));
                    b.weight        = Convert.ToUInt32(dataReader.GetString("weight"));
                    b.chainwork     = new uint256(dataReader.GetString("chainwork"));
                    b.nextblockhash = new uint256(dataReader.GetString("nextblockhash"));
                    b.versionhex    = uint.Parse(dataReader.GetString("versionhex"), System.Globalization.NumberStyles.HexNumber);

                    block = b.toBlock();
                }
            }

            connection.Close();

            if (block == default(Block))
            {
                return(null);
            }
            else
            {
                return(block);
            }
        }
示例#4
0
        //Public Constructor
        public Block()
        {
            BlockS tmp = new BlockS();

            tmp.blockID      = BlockList.Last.Value.blockID + 1;
            tmp.time_stamp   = DateTime.Now.ToString();
            tmp.previousHash = getprevHash();
            tmp.hash         = getHash();
            tmp.info         = getInfo();
            if (Search(BlockList, tmp.hash) != null)
            {
                BlockList.AddLast(tmp);
            }
            Save(BlockList);
        }
示例#5
0
        public void Load()
        {
            StreamReader lees = new StreamReader(@"C:\Users\User-PC\Desktop\test read\data.txt");

            lees = File.OpenText(@"C:\Users\User-PC\Desktop\test read\data.txt");
            string lyn;

            while ((lyn = lees.ReadLine()) != null)
            {
                string[] element = lyn.Split(',');
                BlockS   tmp     = new BlockS();
                tmp.blockID      = Convert.ToInt32(element[0]);
                tmp.time_stamp   = element[1];
                tmp.previousHash = element[2];
                tmp.hash         = element[3];
                tmp.info         = element[4];
                BlockList.AddLast(tmp);
            }
            lees.Close();
        }
示例#6
0
        public BlockHolder(int height, SqlConnector SQC, RPCClient RPCC)
        {
            this.height = height;
            this.SQC    = SQC;
            this.RPCC   = RPCC;

            Block SQLBlock = SQC.GetBlock(height);
            Block RPCBlock = GetFromRPC();

            //Console.Write("Got RPC block " + height + ": ");

            hash = RPCBlock.GetHash();

            if (SQLBlock == null)
            {
                wasOnSQL = false;
                //Console.Write("Not on SQL! ");
                SQC.InsertBlock(BlockS.toBlockS(RPCBlock, RPCC));
                //Console.WriteLine("Inserted.");
            }
        }
示例#7
0
    public void GenerateRandomBlock()
    {
        int random = randomblocks.Next(1, 9);

        switch (random)
        {
        case 1:
            nextTetrisBlock = new BlockI();
            break;

        case 2:
            nextTetrisBlock = new BlockJ();
            break;

        case 3:
            nextTetrisBlock = new BlockL();
            break;

        case 4:
            nextTetrisBlock = new BlockO();
            break;

        case 5:
            nextTetrisBlock = new BlockS();
            break;

        case 6:
            nextTetrisBlock = new BlockT();
            break;

        case 7:
            nextTetrisBlock = new BlockB();
            break;

        default:
            nextTetrisBlock = new BlockZ();
            break;
        }
        nextTetrisBlock.blockposition = new Point(14 * blocksize, blocksize);
    }