Author

Topic: bitHopper: Python Pool Hopper Proxy - page 156. (Read 355816 times)

donator
Activity: 2058
Merit: 1007
Poor impulse control.
July 25, 2011, 01:57:50 AM
Erh?

So you'd have to have a new account just to join

TEAM HOPPER!?

Well that sucks. Any new hoppers, join up!

Anyone who has an account and joins up, I'll forgo the first jackpot. I know that's unlikely and even if we do get a jackpot you'll have to trust me to pay you that fraction of a coin, but I'd love to see Team Hopper top the rankings.

I'll also split whatever the 'extra bonuses' are that I get from Triplemining. This way it's not a pyramid scheme of any type, and everyone wins. If it ends up being a pain in the arse to do lots of payouts I'll let someone else take over the Team Hopper name.

edit: ignore this last two paragraphs, wont work. See my next post. As far as the jackpot goes, (if and when we get a one) I'll split it among the first 5 joiners to make up for having to make a new account
sr. member
Activity: 476
Merit: 250
moOo
July 25, 2011, 12:52:43 AM
Quote
Join Team Hopper on Triplemining and show 'em what a buncha 'hoppers can do!


they have an incredibly major flaw in their minipool system.....it wont let people who have already set up accounts join your minipool, without setting up a completely new account.
donator
Activity: 2058
Merit: 1007
Poor impulse control.
July 25, 2011, 12:35:19 AM
Step right up, step right up! Join Team Hopper on Triplemining and show 'em what a buncha 'hoppers can do!

If you're not in a minipool then you miss out on jackpots and bonus stuff, so why not join this one?


https://organofcorti.triplemining.com/register

I hereby promise that I will never ban hoppers from this minipool  Grin
sr. member
Activity: 476
Merit: 250
moOo
July 24, 2011, 11:32:03 PM
he is saying bitcoinmonkey hasnt developed trust yet.. i believe.


and yes you do have to trust a pool operator.
bb
member
Activity: 84
Merit: 10
July 24, 2011, 11:22:44 PM
Whoever hops a pool with a whopping 2(!) blocks found is anyways just waiting to get screwed by the pool operator... Mining is all about trust in the pool operator! If I take a look at their thread, this trust is certainly NOT yet given, at least for me.

What?
legendary
Activity: 2618
Merit: 1007
July 24, 2011, 11:16:21 PM
Whoever hops a pool with a whopping 2(!) blocks found is anyways just waiting to get screwed by the pool operator... Mining is all about trust in the pool operator! If I take a look at their thread, this trust is certainly NOT yet given, at least for me.
donator
Activity: 2058
Merit: 1007
Poor impulse control.
July 24, 2011, 10:15:12 PM
yep, it stopped working for me not long after i signed up. If they're banning IPs they'd need to be doing it with a subnet mask since I have a dynamic IP.

http://www.downforeveryoneorjustme.com/bitcoinmonkey.com

is still showing it as up.
sr. member
Activity: 476
Merit: 250
moOo
July 24, 2011, 09:59:55 PM
anyone having trouble getting to bitcoinmonkey? are they banning IPs?

I noticed I couldnt get to the site earlier, and down for everyone or just me said it was just me.

called a bud, he could get on. He hadnt updated his hopper, so he signed up.. updated his hopper and now calls me saying he cant get on anymore.


I can get to the site through a proxy but cant login.
bb
member
Activity: 84
Merit: 10
July 24, 2011, 09:14:41 PM

For this to be useful at all you definately need a timestamp in there somewhere, so one can fall back on individual polling if your service fails.


Last warning .. Any more bot requests on the SSL servers will be fooled into mining.

Please use http://api.triplemining.com/json/stats

It just takes time until people update their clients, the fix is already in the code. Imho you can already start (again) faking stats, this will lead to faster updates on bitHopper side I guess...

Erm, there is different timezones you know. You should give people a chance to wake up...


I'm pretty good with Python so I could add miner stats (mhash/s, submitted shares, stales, etc) and health stats (from this script) to the pool hopping proxy if you want, just let me know and I'll get started.

I for one am monitoring my miners and my cards using a different set of scripts. The proxy has nothing to do with miner monitoring. You should really adhere to the Unix philosophy here.
member
Activity: 98
Merit: 11
July 24, 2011, 08:54:22 PM
3)differences between this and flexible miner proxy?
This one hops. Oh and it changes servers in the case of server death etc... We also have LP support
I know they have support for individual worker statistics which we don't have yet.

Can you (or someone) post a screenshot of the web interface so I can compare it to Flexible Proxy? I'd love to get started with pool hopping and this project sounds interesting. Flexible Proxy does have LP support, just in case anyone is wondering.

Um... individual worker stats, that is very useful and I'd certainly want to have that info displayed. I can add those to this pool hopping proxy quite easily if someone isn't already working on it. Also, let me just post this here code that I wrote this weekend. It adds health stats to the flexible proxy but can easily be modified so it adds the same health stats to the pool hopping proxy (as long as you're ok with adding a couple of tables to the mysql schema). Basically you just run one cronjob per miner on you servers and it polls aticonfig for device temperature, core clock speed, mem speed, fan speed, and then inserts those values into the DB.

I'm pretty good with Python so I could add miner stats (mhash/s, submitted shares, stales, etc) and health stats (from this script) to the pool hopping proxy if you want, just let me know and I'll get started.

Code:
#!/bin/bash
#########################################################
# Reports worker stats to BTC Mining Proxy 'modified'   #
# See schema changes below to setup database for script #
# Author: shotgun                                     #
# Date: 2011 07 22                                      #
# Donations welcome: 1BUV1p5Yr3xEtSGbixLSospmK6B8NCdqiW #
#########################################################

## Database settings for BTCproxy server. This should be a
## separate user that only has INSERT,SELECT on the
## worker_health table so that things are secure on the db
U="btcinsert"
P="password"
H="ip_address_of_proxy_database_server"
DB="btcproxy"

## SQL to create table in BTCproxy schema and GRANT
## statement for user that will insert health reports.
## This table and user must exist before running the script
## For [network] use only the class C address, ex: 10.1.1.%
## For [password] be secure, use the MD5 of a random string
## For [schema] set to the schema name from btc proxy
##
# CREATE TABLE worker_health_current (
#  id int(32) NOT NULL auto_increment,
#  worker_id int(11) NOT NULL,
#  temp int(5) NOT NULL,
#  speed_clock int(4) NOT NULL,
#  speed_mem int(4) NOT NULL,
#  speed_fan int(3) NOT NULL,
#  date datetime NOT NULL,
#  PRIMARY KEY  (id),
#  UNIQUE KEY worker_id_ix (worker_id)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
#
# CREATE TABLE worker_health_archive (
#  id int(32) NOT NULL auto_increment,
#  worker_id int(11) NOT NULL,
#  temp int(5) NOT NULL,
#  speed_clock int(4) NOT NULL,
#  speed_mem int(4) NOT NULL,
#  speed_fan int(3) NOT NULL,
#  date datetime NOT NULL,
#  PRIMARY KEY  (id),
#  KEY worker_id_ix (worker_id)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
#
# GRANT UPDATE,SELECT,INSERT ON [schema].worker_health_current TO 'btcinsert'@'[network]' IDENTIFIED BY '[password]';
# GRANT SELECT,INSERT ON [schema].worker_health_archive TO 'btcinsert'@'[network]' IDENTIFIED BY '[password]';
# GRANT SELECT ON [schema].worker TO 'btcinsert'@'[network]' IDENTIFIED BY '[password]';
#
## END DATABASE CHANGES

## CRONTAB entries to run health report on schedule
## I recommend polling at 5 minute intervals, but use whatever
## you need for your setup. You need one line entry per worker
## Set the arguments correctly, or your reporting won't work.
## Example below. Remove the leading # character when pasting
## into /etc/crontab, set the script location per your setup.
#
# ATI GPU Health Monitoring
# *    *    *    *    *  exec-user script-location worker_name device_number > logfile
# ┬   ┬   ┬   ┬   ┬
# │    │    │    │   └───── day of week (0 - 7) (Sunday=0 or 7)
# │    │    │    └────────── month (1 - 12)
# │    │    └─────────────── day of month (1 - 31)
# │    └──────────────────── hour (0 - 23)
# └───────────────────────── min (0 - 59) or interval (*/5 = every 5 minutes)
# */5 * * * * user /opt/phoenix-1.50_patched/worker-health.sh worker0 0 > /tmp/worker_health-0.log
# */5 * * * * user /opt/phoenix-1.50_patched/worker-health.sh worker1 1 > /tmp/worker_health-1.log
#

## Check for help
if [ $1 = "-h" ] || [ $1 = "help" ]; then
    echo "Usage: worker_health.sh [worker_name] [device number]"
    echo "Example: worker_health.sh quad0c0 0"
    exit 0
fi

## Check for arguments
if [ $# -ne 2 ]; then
    echo "Usage: worker_health.sh [worker_name] [device number]"
    exit 65
fi

WORKER=$1
DEVICE=$2

## Environment variables
export AMDAPPSDKSAMPLESROOT=/opt/AMD-APP-SDK-v2.4-lnx64
export LD_LIBRARY_PATH=/opt/AMD-APP-SDK-v2.4-lnx64/lib/x86_64:
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/opt/phoenix-1.50_patched
export AMDAPPSDKROOT=/opt/AMD-APP-SDK-v2.4-lnx64
export HOME=/home/user
export LOGNAME=user
export DISPLAY=:0
export _=/usr/bin/env

## Get health values
FAN=`/usr/bin/aticonfig --pplib-cmd "get fanspeed 0"|grep "Fan Speed"|awk -F: '{print $3}'`
TEMP=`/usr/bin/aticonfig --odgt --adapter=$DEVICE | grep -o '[0-9][0-9].[0-9][0-9]' | sed 's/\.[0-9][0-9]//g'`
CLOCK=`/usr/bin/aticonfig --odgc --adapter=$DEVICE | grep "Current Clock"| grep -o '[0-9][0-9][0-9]'|head -n 1`
MEM=`/usr/bin/aticonfig --odgc --adapter=$DEVICE | grep "Current Clock"| grep -o '[0-9][0-9][0-9][0-9]'|tail -n 1`
SQL0="INSERT INTO worker_health_archive (id,worker_id,temp,speed_clock,speed_mem,speed_fan,date) VALUES (NULL,(SELECT id FROM worker WHERE name='$WORKER'),'$TEMP','$CLOCK','$MEM','$FAN',NOW());"
SQL1="INSERT INTO worker_health_current (id,worker_id,temp,speed_clock,speed_mem,speed_fan,date) VALUES (NULL,(SELECT id FROM worker WHERE name='$WORKER'),'$TEMP','$CLOCK','$MEM','$FAN',NOW()) ON DUPLICATE KEY UPDATE temp='$TEMP', speed_clock='$CLOCK', speed_mem='$MEM', speed_fan='$FAN', date=NOW();"

## Locate mysql client binary
mysqlbinary=`which mysql`
if [ $mysqlbinary = "" ]; then
    echo "MySQL client not found in PATH=$PATH. Please install or put binary into path."
    exit 1
fi

## Insert SQL to the database
$mysqlbinary --user=$U --password=$P --host=$H $DB -e "$SQL0"
if [ "$?" = "0" ]; then
    $mysqlbinary --user=$U --password=$P --host=$H $DB -e "$SQL1"
    if [ "$?" = "0" ]; then
        echo "Health reported to database: successful. w: $WORKER d: $DEVICE"
        exit 0
    else
        echo "Health reported to database: failed current sql. Check user permissions. w: $WORKER d: $DEVICE"
    fi
else
    echo "Health reported to database: failed archive sql. Check user permissions. w: $WORKER d: $DEVICE"
    exit 1
fi
donator
Activity: 2058
Merit: 1007
Poor impulse control.
July 24, 2011, 08:35:28 PM
json isn't applicable as [] are used instead of {}

json IS capable of [] - its just an array. index 1 is round shares
(for me json.loads works)

Indeed.. Flower: can you post your configuration for others to copy ?

UPDATE: i changed it anyway - > {"solved":"2619271"}

Thanks mrsam.

Hope you'll be changing to an XXPPS type payout when you do so we can use you for back up.
legendary
Activity: 1428
Merit: 1000
July 24, 2011, 07:19:05 PM
i'll add namecoin pools (and other smaller pools) to this http://www.k1024.de/servers.json tomorrow
legendary
Activity: 2618
Merit: 1007
July 24, 2011, 07:16:13 PM
Last warning .. Any more bot requests on the SSL servers will be fooled into mining.

Please use http://api.triplemining.com/json/stats

It just takes time until people update their clients, the fix is already in the code. Imho you can already start (again) faking stats, this will lead to faster updates on bitHopper side I guess...


About Namecoin mining:
On http://www.nmcwatch.com/ there's a 24h running average BTC vs. NMC price (currently: "average: 0.02852482").
As long as this value is above NMCdiff/BTCdiff (94 037.96/1 690 906.20) = 0.0556139424, NMC mining (and hopping) for sure pays off.

It might even pay off at levels slightly below that, due to higher gains from hopping, but I think this solution is more safe.

All that is needed is:
* getting NMC difficulty additionally to BTC difficulty
* parsing NMCwatch every once in a while for the 24h average price
* comparing the price to the "calculated price" of NMCdiff/BTCdiff
* switching to NMC/BTC as needed
* ...
* PROFIT! Grin


Edit:
I also support a way to get the stats externally/centralized - I have a few ideas already and this could come in handy...
member
Activity: 112
Merit: 10
July 24, 2011, 06:23:10 PM
Last warning .. Any more bot requests on the SSL servers will be fooled into mining.

Please use http://api.triplemining.com/json/stats

legendary
Activity: 1428
Merit: 1000
July 24, 2011, 06:02:14 PM
i am trying with an pool hopping service.
atm its free - if i get any problems regarding traffic i'll come back to you Smiley

http://www.k1024.de/servers.json

my vserver (which rans bithopper) prints out this json file every ten seconds. this file is immediatly uploaded to an ftp-server (which you can access using the link above).

so at least: my hopper stays somewhat secure.

tomorrow i'll add hashrate and another round share counter (parsed through regex) - so pool stats-faking is little bit more detectable.

the format is as follows:
Code:
[
   {
       "shares": 3702496,
       "pool": "rfcpool",
       "mode": "prop"
   },
   {
       "shares": 2646553,
       "pool": "triplemining",
       "mode": "prop"
   },
   {
       "shares": 152019,
       "pool": "ozco",
       "mode": "prop"
   },
   {
       "shares": 136717,
       "pool": "nofee",
       "mode": "prop"},
   {
       "shares": 2360466,
       "pool": "polmine",
       "mode": "prop"
   },
   {
       "shares": 94054,
       "pool": "bitclockers",
       "mode": "prop"
   },
   {
       "shares": 24772,
       "pool": "mtred",
       "mode": "prop"
   }
]

BTW: if you are interested in joining this project please pm me. i have a job, so i can't watch the pool whole days. maybe four people from different timezones would be nice Smiley
full member
Activity: 196
Merit: 100
July 24, 2011, 05:34:42 PM
1) errors?
Fixed. Again. I messed that up a little.

2) Triple?
Changed to work. I still have it disabled.
legendary
Activity: 1428
Merit: 1000
July 24, 2011, 05:23:35 PM
json isn't applicable as [] are used instead of {}

json IS capable of [] - its just an array. index 1 is round shares
(for me json.loads works)

Indeed.. Flower: can you post your configuration for others to copy ?

wouldn't work with latest c00w, but anyway:

Code:

def triplemining_sharesResponse(response):
    global servers
    r = json.loads(response)
    shares = int(r[1])
    servers['triplemining']['shares'] = shares

member
Activity: 78
Merit: 10
July 24, 2011, 05:22:44 PM
json isn't applicable as [] are used instead of {}

json IS capable of [] - its just an array. index 1 is round shares
(for me json.loads works)

my bad. Got an pool api error when I tried the json approach.
member
Activity: 112
Merit: 10
July 24, 2011, 05:21:13 PM
json isn't applicable as [] are used instead of {}

json IS capable of [] - its just an array. index 1 is round shares
(for me json.loads works)

Indeed.. Flower: can you post your configuration for others to copy ?

UPDATE: i changed it anyway - > {"solved":"2619271"}
legendary
Activity: 1428
Merit: 1000
July 24, 2011, 05:20:20 PM
json isn't applicable as [] are used instead of {}

json IS capable of [] - its just an array. index 1 is round shares
(for me json.loads works)
Jump to: