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)); }