-- Rudimentary proof-of-work (POW): ensures that a block hash
-- is less than a certain value (i.e. contains a certain
-- amount of leading zeroes).
-- In our case, it's 4 leading zeroes. We're using the Integer type
-- since the current target is higher than the max for Int.
-- POW is useful because with this imposed difficulty to add values to
-- the blockchain, it becomes exponentially less feasible to edit the
-- chain - one would need to regenerate an entirely new valid chain
-- after the edited block(s)
difficultyTarget :: Integer
difficultyTarget =
  0x0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
difficultyTarget :: Integer
difficultyTarget =
  0x0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
difficultyTarget =
  0x0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff