Bitcoin Forum
December 03, 2016, 06:00:07 PM *
News: To be able to use the next phase of the beta forum software, please ensure that your email address is correct/functional.
 
   Home   Help Search Donate Login Register  
Pages: « 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ... 205 »
  Print  
Author Topic: bitHopper: Python Pool Hopper Proxy  (Read 332555 times)
c00w
Full Member
***
Offline Offline

Activity: 196


View Profile
July 10, 2011, 06:12:52 AM
 #61

Good catch. I'm fixing it.

1HEmzeuVEKxBQkEenysV1yM8oAddQ4o2TX
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1480788007
Hero Member
*
Offline Offline

Posts: 1480788007

View Profile Personal Message (Offline)

Ignore
1480788007
Reply with quote  #2

1480788007
Report to moderator
burp
Member
**
Offline Offline

Activity: 98


View Profile
July 10, 2011, 10:48:15 AM
 #62

What about using the backup pool (eligius) first when every other pool has reached <difficulty> number of shares? From that point on the maxpps system from eligius will be more beneficial than mining on the other pools with shares>difficulty.
organofcorti
Donator
Legendary
*
Offline Offline

Activity: 1946


Poor impulse control.


View Profile WWW
July 10, 2011, 10:58:51 AM
 #63

What about using the backup pool (eligius) first when every other pool has reached <difficulty> number of shares? From that point on the maxpps system from eligius will be more beneficial than mining on the other pools with shares>difficulty.

doesn't it already? I thought I saw mention of it in the code, and bithopper does default to eligius if all pools have shares over six hundred and something thousand. Or I could be wrong.

Bitcoin network and pool analysis 12QxPHEuxDrs7mCyGSx1iVSozTwtquDB3r
follow @oocBlog for new post notifications
burp
Member
**
Offline Offline

Activity: 98


View Profile
July 10, 2011, 11:10:04 AM
 #64

What about using the backup pool (eligius) first when every other pool has reached <difficulty> number of shares? From that point on the maxpps system from eligius will be more beneficial than mining on the other pools with shares>difficulty.

doesn't it already? I thought I saw mention of it in the code, and bithopper does default to eligius if all pools have shares over six hundred and something thousand. Or I could be wrong.

Yes, over 0.4*difficulty. But I mean this should probably be difficulty.

An other issue is that you added api_addresses into the servers configuration now and use getPage for all of these now. I think this removes a lot of flexibility. Think for instance of a pool that publishes its statistics only in logged in state where some additional handling is required. I just wanted to add triplemining.com to my bitHopper and saw that now it's basically not possible anymore without reverting some stuff back to gain more flexibility.
For triplemining.com I have to login and parse a html page to get the statistics.
This is what I meant earlier with generalizations that complicate things Wink
organofcorti
Donator
Legendary
*
Offline Offline

Activity: 1946


Poor impulse control.


View Profile WWW
July 10, 2011, 11:29:28 AM
 #65

Quote
Yes, over 0.4*difficulty. But I mean this should probably be difficulty.

I'd say this relates to a paper written by a forum member, Raoulo, described and linked to here: http://forum.bitcoin.org/index.php?topic=3165.0

Bitcoin network and pool analysis 12QxPHEuxDrs7mCyGSx1iVSozTwtquDB3r
follow @oocBlog for new post notifications
burp
Member
**
Offline Offline

Activity: 98


View Profile
July 10, 2011, 11:34:12 AM
 #66

Quote
Yes, over 0.4*difficulty. But I mean this should probably be difficulty.

I'd say this relates to a paper written by a forum member, Raoulo, described and linked to here: http://forum.bitcoin.org/index.php?topic=3165.0


That is not what I mean. I know that it's optimal to switch after 0.435*difficulty. But only if you have a better pool then. Switching to eligius when you are over 0.4*difficulty but below difficulty is imo worse than staying at the proportional pools until difficulty is reached.
organofcorti
Donator
Legendary
*
Offline Offline

Activity: 1946


Poor impulse control.


View Profile WWW
July 10, 2011, 12:02:56 PM
 #67

Gotcha - you mean at from 0.435 * <difficulty> to <difficulty> proportional will pay better than eligius but after <difficulty> shares proportional should pay less than eligius? After re-reading Raulo's paper I realise Raulo was only considering one proportional and one 'connected' only pool, and after reading this: http://forum.bitcoin.org/index.php?topic=24966.0 I'd have to agree with you.

This is not based on math though, just what seems logical. Could be wrong.

Changing at <difficulty> would have the side benefit of disguising you from looking like the typical hopper who uses the 0.435*<difficulty> rule.

Edit: I suppose you could make the change and then run it for a week or so and see if there's a difference. Need an easy way to get stats though.


Bitcoin network and pool analysis 12QxPHEuxDrs7mCyGSx1iVSozTwtquDB3r
follow @oocBlog for new post notifications
burp
Member
**
Offline Offline

Activity: 98


View Profile
July 10, 2011, 04:22:05 PM
 #68

Another fix:

Code:
@@ -241,7 +241,7 @@ def update_servers():
             info = servers[server]
             d = getPage(info['api_address'])
             d.addCallback(selectsharesResponse, (server))
-            d.addErrback(errsharesResponse, ('btcg'))
+            d.addErrback(errsharesResponse, (server))
             d.addErrback(log_msg)

And the recommended new btcguild server address is just us.btcguild.com.
enmaku
Hero Member
*****
Offline Offline

Activity: 742



View Profile WWW
July 10, 2011, 05:00:16 PM
 #69

Pointed a couple of my miners at a test setup last night, and so far they're performing about 20% over calculated estimates from hashrate alone. I think I'll be rolling out a full-scale setup very soon Smiley

c00w
Full Member
***
Offline Offline

Activity: 196


View Profile
July 10, 2011, 06:08:09 PM
 #70

1) Burf good catch with the error call back. I'll fix it soon.

2) Defaulting to eligius at over difficulty instead of .40*difficulty?
Hmmm. Let me think about it. We are using eligius as our 'solo' mining pool because the payouts are roughly consistent mathematically with what solo mining should be. And the sweet spot for switching from a single pool is .435%

3) I figured out why diablo and cgminer are broken!
They completely ignore how long polling is supposed to work and use a post instead of a get. I'm fixing it now.

1HEmzeuVEKxBQkEenysV1yM8oAddQ4o2TX
ahitman
Full Member
***
Offline Offline

Activity: 126


View Profile WWW
July 10, 2011, 08:13:27 PM
 #71

Code:
Unhandled error in Deferred:
Unhandled Error
Traceback (most recent call last):
  File "pool.py", line 195, in server_update
    select_best_server()
  File "pool.py", line 171, in select_best_server
    new_server.callback(None)
  File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 361, in callback
    self._startRunCallbacks(result)
  File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 455, in _startRunCallbacks
    self._runCallbacks()
--- <exception caught here> ---
  File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 542, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "pool.py", line 336, in bitHopperLP
    json_request = request.content.read()
exceptions.ValueError: I/O operation on closed file

I got this error, is there something wrong with my setup? It doesnt come up all the time, and it may have happened as bithopper decided to switch pools.

Also when I got home today my miners were sitting idle, but they didnt show a disconnected message, just that they had no work, ,looking back at the log from bithopper, looks like it was still getting the api data from pools, but was also showing the message:
Code:
Error in pool api for btcg
 
multiple times, unfortunatley the RPC request log line I commented out to not show the work units so Im not sure if it was trying to connect or not. Do you know what could have happened? I know its not alot of info, so is there a way if something sismilar happens again that I can investigate what bithopper is trying to do?  Thanks
c00w
Full Member
***
Offline Offline

Activity: 196


View Profile
July 10, 2011, 08:45:10 PM
 #72

1) Json decoding error with eligius looping?
It looks like eligius doesn't like us hammering it with getwork requests in the case of one failure. I think its some sort of DDOS proctection. I'll throw in another backup pool for it to swap between.

2) IO Operation on a closed file
It looks like someone connected with LP and then died before it could read. Not a huge issue. I'll wrap it in a try except.

3) Why it probably died?
Same issue as the JSON decoding error with eligius looping. I need to add another backup pool so that if one dies/decides we are DDOSing it we can still do stuff.
Edit: I couldn't find another pool with pool hopper protection that works except btcmine. And well... registration is down. I did redo the networking code to hopefully be a little nicer to eligius and convince it to not DDOS flake out on us as much.

1HEmzeuVEKxBQkEenysV1yM8oAddQ4o2TX
enmaku
Hero Member
*****
Offline Offline

Activity: 742



View Profile WWW
July 11, 2011, 02:36:34 AM
 #73

This thing is FANTASTIC. If this is beta I can't wait to see a gold release Grin

I also can't wait for some stats.

c00w
Full Member
***
Offline Offline

Activity: 196


View Profile
July 11, 2011, 07:31:43 AM
 #74

1) Stats?
Yeah. I'm trying to make it rock solid and get LP to work. If I get that the reject rate may actually be 0% which is cool. A lot of miners just drop shares after a connection failure or are just written oddly/ ignore standards. Then stats. Then scraper for all the pools that aren't deepbit. Then deepBit.

*rant*
Miners I have found issues with:
poclbm: Drops connection way to quickly.
phoenix: Drops shares on a network failure. *I haven't confirmed this but it looks like it*
Diablominer + cgminer: Uses get instead of post for longpolling. Completely ignoring the standard. And it was an obscure bug to find.
Edit: I bet they all have the same issue as phoenix. But I don't use them enough to notice.
*end rant*

2)Deepbit support?
Yeah that sounds like the way to do it. I also want to look at how the multipool guy did it and build in a share estimator given scraped hash information to know when to switch off.

1HEmzeuVEKxBQkEenysV1yM8oAddQ4o2TX
organofcorti
Donator
Legendary
*
Offline Offline

Activity: 1946


Poor impulse control.


View Profile WWW
July 11, 2011, 07:47:03 AM
 #75

for deepbit support i got a little idea  Grin
deepbit dont offer live stats but if we can see when all the other pools got a block we can guess if deepbit did or did not get a block(if not other pool get a new block then there is a big % to be deepbit)

That's a great idea - I never figured out how multipool did it. Downside is there are a shit tonne of pools to check these days.

Bitcoin network and pool analysis 12QxPHEuxDrs7mCyGSx1iVSozTwtquDB3r
follow @oocBlog for new post notifications
GoMaD
Jr. Member
*
Offline Offline

Activity: 50


View Profile
July 11, 2011, 08:03:03 AM
 #76

eclipsemc.com support (change USER, PASS and YOURAPIKEY)

Code:

mineco_pass = 'x
+eclipsemc_user = 'USER'
+eclipsemc_pass = 'PASS'

            'api_address':'https://bitclockers.com/api'},
+       'eclipsemc':{'shares': 0, 'name': 'eclipsemc.com',
+            'mine_address': 'pacrim.eclipsemc.com:8337', 'user': eclipsemc_user,
+            'pass': eclipsemc_pass, 'lag': False, 'LP': None,
+            'api_address':'https://eclipsemc.com/api.php?key=YOURAPIKEY&action=poolstats'}
         }


     log_msg( 'bitclockers :' + str(round_shares))

+def eclipsemc_sharesResponse(response):
+    global servers
+    info = json.loads(response)
+    round_shares = int(info['round_shares'])
+    servers['eclipsemc']['shares'] = round_shares
+    log_msg( 'eclipsemc :' + str(round_shares))
+

        'btcg':btcguild_sharesResponse,
+       'eclipsemc':eclipsemc_sharesResponse}
neptop
Sr. Member
****
Offline Offline

Activity: 314


View Profile
July 11, 2011, 08:43:10 AM
 #77

I think it would be a good idea to include the configuration from another file. Maybe just create a bithopper.conf.example, so you don't overwrite an existing one when checking out. Also with more and more pools being added it would be good if it'd ignore non existent ones. Maybe they should also be removed from the main file so one can simply add additional pools by creating a files inside a pools/ directory. Oh and of course a --quiet and a --daemon switch would be nice additions.

BitCoin address: 1E25UJEbifEejpYh117APmjYSXdLiJUCAZ
GoMaD
Jr. Member
*
Offline Offline

Activity: 50


View Profile
July 11, 2011, 09:15:58 AM
 #78

I think it would be a good idea to include the configuration from another file. Maybe just create a bithopper.conf.example, so you don't overwrite an existing one when checking out. Also with more and more pools being added it would be good if it'd ignore non existent ones. Maybe they should also be removed from the main file so one can simply add additional pools by creating a files inside a pools/ directory. Oh and of course a --quiet and a --daemon switch would be nice additions.

that would be great!


mining.mainframe.nl support (change USER, PASS):

Code:
mineco_pass = 'x
+miningmainframe_user = 'USER'
+miningmainframe_pass = 'PASS' 

            'api_address':'https://eclipsemc.com/api.php?key=YOURAPIKEY&action=poolstats'}
+'miningmainframe':{'shares': 0, 'name': 'mining.mainframe.nl',
+           'mine_address': 'mining.mainframe.nl:8343', 'user': miningmainframe_user,
+           'pass': miningmainframe_pass, 'lag': False, 'LP': None,
+            'api_address':'http://mining.mainframe.nl/api'}
         }

    log_msg( 'eclipsemc :' + str(round_shares))

+def mmf_sharesResponse(response):
+    global servers
+    info = json.loads(response)
+    round_shares = int(info['shares_this_round'])
+    servers['miningmainframe']['shares'] = round_shares
+    log_msg( 'mining.mainframe.nl :' + str(round_shares))

       'eclipsemc':eclipsemc_sharesResponse,
+      'miningmainframe':mmf_sharesResponse}

ups didn´t saw they use some kind of cheat-proof
GoMaD
Jr. Member
*
Offline Offline

Activity: 50


View Profile
July 11, 2011, 10:11:57 AM
 #79

slush support (change USER and PASS):

Code:
mineco_pass = 'x
+slush_user = 'USER'
+slush_pass = 'PASS'   

            'api_address':'https://eclipsemc.com/api.php?key=YOURAPIKEY&action=poolstats'}
+,'slush':{'shares': 0, 'name': 'mining.bitcoin.cz',
+            'mine_address': 'api2.bitcoin.cz:8332', 'user': slush_user,
+            'pass': slush_pass, 'lag': False, 'LP': None,
+            'api_address':'https://mining.bitcoin.cz/stats/json/'}       
     
+def slush_sharesResponse(response):
+    global servers
+    info = json.loads(response)
+    round_shares = int(info['shares'])
+    servers['slush']['shares'] = round_shares
+    log_msg( 'mining.bitcoin.cz (slush)) :' + str(round_shares))
           
       'eclipsemc':eclipsemc_sharesResponse,
+     'slush':slush_sharesResponse)
jkminkov
Hero Member
*****
Offline Offline

Activity: 534


View Profile
July 11, 2011, 10:13:42 AM
 #80

why default pool is not deepbit PPS but eligius Huh

Bleutrade
600 dollars in one place talking - Dudes, hooray, Bitcoin against us just one, but we are growing in numbers!
Pages: « 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ... 205 »
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!