示例#1
0
        public void blocks(DRSN.Business_Application.Block block)
        {
            Block = block.Index;
            String        connection = ConfigurationManager.ConnectionStrings["DRSNdatabase"].ConnectionString;
            SqlConnection sqlcon     = new SqlConnection(connection);

            try
            {
                sqlcon.Open();
                SqlCommand sqlcmd = new SqlCommand("insertblock", sqlcon);
                sqlcmd.CommandType = System.Data.CommandType.StoredProcedure;
                sqlcmd.Parameters.AddWithValue("@Block", block.Index);
                sqlcmd.Parameters.AddWithValue("@Timestamp", block.TimeStamp);
                sqlcmd.Parameters.AddWithValue("@Previoushash", block.PreviousHash);
                sqlcmd.Parameters.AddWithValue("@Hash", block.Hash);
                sqlcmd.Parameters.AddWithValue("@Data", block.Data);
                sqlcmd.Parameters.AddWithValue("@Nonce", block.Nonce);
                sqlcmd.Parameters.AddWithValue("@Sender", "Null");
                sqlcmd.Parameters.AddWithValue("@Receiver", "Null");
                sqlcmd.Parameters.AddWithValue("@Difficulty", "NA");
                sqlcmd.Parameters.AddWithValue("@Isvalid", "NA");
                sqlcmd.Parameters.AddWithValue("@Duration", "NA");
                sqlcmd.Parameters.AddWithValue("@hashe", block.Hash);
                sqlcmd.ExecuteNonQuery();
                sqlcon.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        public bool IsValid(DRSN.Business_Application.Block block)
        {
            for (int i = 1; i < block.Index; i++)
            {
                Block currentBlock = block;

                //need to get the whole prevhash data
                string     validprevhash = String.Empty;
                string     strConnString = ConfigurationManager.ConnectionStrings["DRSNdatabase"].ConnectionString;
                SqlCommand com;

                SqlConnection con = new SqlConnection(strConnString);
                com            = new SqlCommand();
                com.Connection = con;
                try
                {
                    con.Open();
                    com.CommandType = CommandType.StoredProcedure;
                    com.CommandText = "isvalidprevhash";
                    com.Parameters.Add("@prhash", SqlDbType.VarChar, 50);
                    com.Parameters["@prhash"].Direction = ParameterDirection.Output;
                    com.Dispose();
                    com.ExecuteScalar();
                    //Storing the output parameters value in 3 different variables.
                    validprevhash = Convert.ToString(com.Parameters["@prhash"].Value);
                    con.Close();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }

                //Block previousBlock = Convert.ToInt32(block.Index - 1);

                if (currentBlock.Hash != currentBlock.CalculateHash())
                {
                    return(false);
                }

                if (currentBlock.PreviousHash != validprevhash)
                {
                    return(false);
                }
            }
            bd.isvalid = "True";
            return(true);
        }