module CCL::Pow::Utils
Extended Modules
Defined in:
ccl-pow.crConstant Summary
-
MIN_NBITS =
"20100000"
-
MIN_TARGET =
BigInt.new("1000000000000000000000000000000000000000000000000000000000000000", 16)
Instance Method Summary
-
#calculate_hash(nonce : UInt64, data : String) : BlockHash
Returns the hash for
nonce
+data
-
#calculate_nbits(from target : BigInt) : NBits
Returns the target as nbits from a given numerical target
-
#calculate_target(from nbits : String) : BigInt
Returns the numerical target threshold based on the given difficulty
-
#retarget(start_time : Float64, end_time : Float64, wanted_timespan : Float64, current_target : BigInt, min_target = MIN_TARGET) : NBits
Returns the retargeted difficulty based on the timestamp of a given block and the timespan in minutes.
Instance Method Detail
Returns the hash for nonce
+ data
CCL::Pow::Utils.calculate_hash(nonce: 20151213_u64, data: "cocol") # => "5906039dfa0262343155216f0d73135d30fd48a0d4543c61d27169db12736d3a"
Returns the target as nbits from a given numerical target
CCL::Pow::Utils.calculate_nbits(from: BigInt.new("26959535291011309493156476344723991336010898738574164086137773096960")) # => "1d00ffff"
Returns the numerical target threshold based on the given difficulty
Find out more about it here https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch10.asciidoc#target-representation
CCL::Pow::Utils.calculate_target(from: "1d00ffff") # => 26959535291011309493156476344723991336010898738574164086137773096960
Returns the retargeted difficulty based on the timestamp of a given block and the timespan in minutes.
Assuming you want retarget for the last minute in which you targeted 12 blocks
you would pass the timestamp of the current_block - 12
and 60 seconds as wanted_timepan
CCL::Pow::Utils.retarget(
start_time: 1559306286_f64,
end_time: 1559306286_f64,
wanted_timespan: 60_f64,
current_target: CCL::Pow::Utils.calculate_target("1e38ae39")
) # => "1e00b560"