Ejemplo n.º 1
0
        public void Mine(int difficulty)
        {
            var leadingZeros = new string('0', difficulty);

            while (Hash == null || Convert.ToBase64String(Hash).Substring(0, difficulty) != leadingZeros)
            {
                if (BreakMining)
                {
                    //in case incoming block was valid
                    logger.Debug("Broke from mining");
                    break;
                }

                if (Mining)
                {
                    Nonce++;
                    Hash = CalculateHash();
                    MinedHashUpdate?.Invoke(this, new MinedHashUpdateEventArgs(Convert.ToBase64String(Hash)));
                    System.Threading.Thread.Sleep(Speed); //indicates speed of minig
                }
                else
                {
                    logger.Debug("PoW paused, break or continue base on block ");
                }
            }
        }
 private void HashDiscovered(object sender, MinedHashUpdateEventArgs e)
 {
     MinedHashUpdate?.Invoke(this, new MinedHashUpdateEventArgs(e.Hash));
 }