Madencilik zorluğu (mining difficulty), Bitcoin gibi blok zincir ağlarında yeni bloklar oluşturmanın ne kadar zor olduğunu gösteren bir ölçüdür. Temelde, karmaşık matematiksel problemleri çözerek yeni bloklar eklemeyi zorlaştırır veya kolaylaştırır.
Blok zincir ağının istikrarlı bir şekilde çalışmasını sağlamak için düzenli olarak ayarlanır. Amaç, blok oluşturma süresini belirli bir hedef sürede tutmaktır. Örneğin, Bitcoin'de bu süre yaklaşık 10 dakikadır.
Hedef (target), madencilerin bulmaya çalıştığı hash değerinin altında olması gereken sayıdır. Zorluk arttıkça, hedef küçülür ve doğru hash'i bulmak zorlaşır.
Hedef, 256 bitlik bir sayıdır. Bitcoin protokolünde, hedef değeri "bits" adı verilen sıkıştırılmış bir formatta saklanır.
Hash oranı (hash rate), bir madencilik cihazının veya ağının saniyede gerçekleştirdiği hash hesaplama sayısıdır. Daha yüksek hash oranı, blok bulma olasılığını artırır.
Hash oranı, genellikle terahash per second (TH/s) veya exahash per second (EH/s) gibi birimlerle ifade edilir.
Madencilik havuzu (mining pool), birden fazla madencinin işlem gücünü birleştirerek blok bulma olasılığını artıran bir yapıdır. Bulunan blok ödülleri, havuza katılan madencilere paylaştırılır.
Blok yüksekliği (block height), blok zincirindeki blokların sayısını ifade eder. Her yeni blok eklendiğinde, blok yüksekliği bir artar.
Blok zamanı (block time), yeni bir bloğun oluşturulması için geçen ortalama süredir. Bitcoin'de hedef blok zamanı 10 dakikadır.
Zorluk ayarlaması, blok zincir ağının protokolüne göre otomatik olarak yapılır. Bitcoin'de bu ayarlama, her 2016 blokta bir (yaklaşık iki haftada bir) gerçekleşir.
Ağ, son 2016 bloğun ne kadar sürede oluşturulduğunu hesaplar. Eğer bu süre, hedef süreden (Bitcoin için 2 hafta) kısaysa, zorluk artırılır. Eğer süre uzunsa, zorluk azaltılır.
Bu ayarlama, aşağıdaki formülle kabaca ifade edilebilir:
Yeni Zorluk = Mevcut Zorluk * (Hedef Süre / Gerçekleşen Süre)
Madenciler, blok başlığının bir parçası olan nonce değerini değiştirerek farklı hash değerleri üretirler. Amaç, hedefin altında bir hash değeri bulmaktır.
Zorluk arttıkça, doğru nonce değerini bulmak için daha fazla deneme yapmak gerekir. Bu da madencilerin daha fazla işlem gücü kullanmasını gerektirir.