Difficulty (moeilijkheidsgraad) is de ingebouwde maatstaf van het netwerk voor hoeveel rekenkracht er op dit moment nodig is om een geldige block hash te vinden. De waarde wordt uitgedrukt als een veelvoud van het eenvoudigst mogelijke target, dus een difficulty van 100 biljoen betekent dat het netwerk als geheel ongeveer 100 biljoen keer meer werk moet verzetten dan bij de lancering van de chain om één block te produceren.
Niemand, geen persoon of bedrijf, stelt de difficulty in: het protocol berekent deze automatisch opnieuw via een vaste formule die is gekoppeld aan de werkelijke blocktijden. Bij Bitcoin vergelijkt de software elke 2.016 blocks de werkelijk benodigde tijd om die batch te minen met het streefdoel van 20.160 minuten (twee weken bij 10 minuten per block). Als blocks sneller binnenkwamen dan verwacht omdat er meer hash rate aan het netwerk werd toegevoegd, stijgt de difficulty voor de volgende periode; kwamen blocks juist trager binnen, bijvoorbeeld nadat onrendabele miners hun rigs uitschakelden of een regio zonder stroom kwam te zitten, dan daalt de difficulty. De regels van Bitcoin begrenzen elke aanpassing tot een factor vier in beide richtingen, wat voorkomt dat één extreme periode van twee weken de difficulty in één keer te ver laat uitslaan.
Andere Proof of Work-chains passen hetzelfde principe toe volgens een ander schema. Litecoin herberekent eveneens elke 2.016 blocks, maar mikt op blocks van 2,5 minuut, terwijl Monero de difficulty na elk afzonderlijk block herberekent voor een strakkere reactiesnelheid. Omdat een hogere difficulty direct de elektriciteits- en hardwarekosten per gewonnen coin verhoogt, is het een van de belangrijkste variabelen die miners in de gaten houden, naast de blockbeloning en de periodieke halving daarvan, die samen bepalen of minen winstgevend blijft.