Skip to content

Instantly share code, notes, and snippets.

@5chdn
Created May 10, 2016 12:22
Show Gist options
  • Save 5chdn/6b282cccf5ae7dd5bcc0f4dc0c69a7e7 to your computer and use it in GitHub Desktop.
Save 5chdn/6b282cccf5ae7dd5bcc0f4dc0c69a7e7 to your computer and use it in GitHub Desktop.
difficulty bomp impact prediction as of may, 10, 2016.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, time
def f(diff, n):
"""
This function returns the new difficulty.
"""
period_count = (n + 1) // 100000
return max(diff + 2**(period_count - 1), 5000)
diff = 35144796295550 # starting diffculty (may 10, 2016)
blocknumber = 200000 # starting blocknumber (of difficulty bomb)
blockdate = 1441661589 # timestamp of the startblock (200,000)
numberOfBlocks2years = int(2*365*24*60*60/15)
for x in range(0, numberOfBlocks2years*5):
blocknumber = blocknumber + 1
diff = f(diff, blocknumber)
if (blocknumber % (50000)) == 0:
blocktime = 1.0 * diff / 2344796295550 # hashrate (may 10, 2016)
_diff = diff
str_diff = str("%.3f" % _diff)
if (_diff > 1000):
_diff /= 1000
str_diff = str("%.3f" % _diff) + " K"
if (_diff > 1000):
_diff /= 1000
str_diff = str("%.3f" % _diff) + " M"
if (_diff > 1000):
_diff /= 1000
str_diff = str("%.3f" % _diff) + " G"
if (_diff > 1000):
_diff /= 1000
str_diff = str("%.3f" % _diff) + " T"
if (_diff > 1000):
_diff /= 1000
str_diff = str("%.3f" % _diff) + " P"
if (_diff > 1000):
_diff /= 1000
str_diff = str("%.3f" % _diff) + " E"
str_blocktime = str("%.3f" % blocktime) + " seconds"
if (blocktime > 150):
blocktime /= 60
str_blocktime = str("%.3f" % blocktime) + " minutes"
if (blocktime > 150):
blocktime /= 60
str_blocktime = str("%.3f" % blocktime) + " hours"
if (blocktime > 60):
blocktime /= 24
str_blocktime = str("%.3f" % blocktime) + " days"
if (blocktime > 18):
blocktime /= 7
str_blocktime = str("%.3f" % blocktime) + " weeks"
if (blocktime > 10):
blocktime /= 4
str_blocktime = str("%.3f" % blocktime) + " month"
if (blocktime > 30):
blocktime /= 12
str_blocktime = str("%.3f" % blocktime) + " years"
if (blocktime > 1):
sys.exit()
print("Diff on",time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(blockdate+(blocknumber-200000.0) / (numberOfBlocks2years/24)*30.41*24*60*60)), "is:", str_diff, "and average blocktime is:", str_blocktime)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment