add hashrate checker

master
lza_menace 4 years ago
parent a78ebeaa2b
commit b8b21092b9

@ -5,6 +5,7 @@ from tipbot.commands.tip import tip
from tipbot.commands.withdraw import withdraw from tipbot.commands.withdraw import withdraw
from tipbot.commands.balance import balance from tipbot.commands.balance import balance
from tipbot.commands.deposit import deposit from tipbot.commands.deposit import deposit
from tipbot.commands.mining import mine
all_commands = { all_commands = {
@ -41,5 +42,10 @@ all_commands = {
'debug': { 'debug': {
'func': debug, 'func': debug,
'admin': True 'admin': True
},
'mine': {
'func': mine,
'example': '/mine <hashes_per_second>',
'help': 'Determine how much WOW a miner with given hashrate will earn'
} }
} }

@ -0,0 +1,43 @@
import logging
import requests
from tipbot.db import User
from tipbot.helpers.decorators import wallet_rpc_required, log_event, check_debug
from tipbot import wownero
from tipbot import config
@wallet_rpc_required
@log_event
@check_debug
def mine(update, context):
# First delete message to remove clutter
update.message.delete()
# Check that enough arguments were provided
if len(context.args) < 1:
update.message.reply_text('Not enough arguments passed. Include hash rate per second to estimate.')
return False
# Check that hash rate arg is an actual number
try:
hr = float(context.args[0])
except:
update.message.reply_text('Invalid hashrate provided')
return False
# Run the numbers, tell the user
try:
payload = {'jsonrpc':'2.0', 'id':'0', 'method':'getlastblockheader'}
headers = {'Content-Type':'application/json'}
r = requests.post(config.DAEMON_URI + '/json_rpc', json=payload, headers=headers, timeout=5)
r.raise_for_status()
j = r.json()
diff = float(j['result']['block_header']['difficulty'])
lbr = float(j['result']['block_header']['reward'])
ttb = diff / hr
update.message.reply_text('The estimated time to find a block with {0:.2f} kh/s at diff {1:.2e} is {2:.2f} days. On average you will earn {3:.2f} WOW per day'.format(
hr/1e3, diff, ttb/(60*60*24), (lbr/1e11)/(ttb/(60*60*24))
))
except:
update.message.reply_text('Something b0rked -_-')
return False
Loading…
Cancel
Save