Author

Topic: bitHopper: Python Pool Hopper Proxy - page 200. (Read 355689 times)

member
Activity: 61
Merit: 10
July 12, 2011, 06:09:17 AM
Hi,

I am getting the following errors each time I start bithopper, or when it switches pools:

Code:
Unhandled error in Deferred:
Unhandled Error
Traceback (most recent call last):
  File "C:\path\to\bithopper\pool.py", line 383, in
    main()
  File "C:\path\to\bithopper\pool.py", line 377, in main
    update_call.start(117)
  File "C:\Python27\lib\site-packages\twisted\internet\task.py", line 163, in start
    self()
  File "C:\Python27\lib\site-packages\twisted\internet\task.py", line 194, in __
call__
    d = defer.maybeDeferred(self.f, *self.a, **self.kw)
--- ---
  File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 133, in m
aybeDeferred
    result = f(*args, **kw)
  File "C:\path\to\bithopper\pool.py", line 253, in update_servers
    d = getPage(info['api_address'])
  File "C:\Python27\lib\site-packages\twisted\web\client.py", line 547, in getPage
    *args, **kwargs).deferred
  File "C:\Python27\lib\site-packages\twisted\web\client.py", line 525, in _make
GetterFactory
    from twisted.internet import ssl
  File "C:\Python27\lib\site-packages\twisted\internet\ssl.py", line 42, in ule>
    from OpenSSL import SSL
exceptions.ImportError: No module named OpenSSL
Trying to delag

I'm running bithopper on windows xp, with the latest phoenix miner. I'm not exactly sure if these errors are effecting the performance of bithopper, as it continues to rum seemingly unaffected.

Is this bad?

Yes. You need to install the python OpenSSL libraries on windows. https://launchpad.net/pyopenssl. I'm adding it to the readme.


Great, thanks c00w. The latest version seems to be working just fine now having installed openSSL. Not sure what was going on before but what i thought was pool hopping clearly wasn't  Tongue

My mini guide to getting this working on Windows XP has been updated: http://forum.bitcoin.org/index.php?topic=26866.msg351354#msg351354
legendary
Activity: 924
Merit: 1004
Firstbits: 1pirata
July 12, 2011, 05:57:45 AM
this prog is superb because it forces pool operators to finally take action against pool hopping.

Because I am too lazy to install it for now I will simply not use pools any more that are supported by this prog.   Tongue

yeah, maybe you´re right, actually there is no harm done because the calculating work is done by the "jumpers". Many pool operators appreciate any help they can get, although doesn´t stay till the end, and will not take any action against them.

edit: by the way, you are free to launch your own pool, using pushpool with any front-end, to study the "problem" from a pool operator point of view
legendary
Activity: 1708
Merit: 1020
July 12, 2011, 05:33:01 AM
this prog is superb because it forces pool operators to finally take action against pool hopping.

Because I am too lazy to install it for now I will simply not use pools any more that are supported by this prog.   Tongue
member
Activity: 74
Merit: 15
July 12, 2011, 04:51:51 AM
last exception:

Code:
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
Caught, jsonrpc_call insides
User timeout caused connection failure.
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
Caught, jsonrpc_call insides
User timeout caused connection failure.
Unhandled error in Deferred:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line 789, in runUntilCurrent
    call.func(*call.args, **call.kw)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/task.py", line 194, in __call__
    d = defer.maybeDeferred(self.f, *self.a, **self.kw)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 133, in maybeDeferred
    result = f(*args, **kw)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1141, in unwindGenerator
    return _inlineCallbacks(None, f(*args, **kwargs), Deferred())
--- ---
  File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1020, in _inlineCallbacks
    result = g.send(result)
  File "pool.py", line 296, in delag_server
    data = yield work.jsonrpc_call(json_agent, server, set_lp)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1141, in unwindGenerator
    return _inlineCallbacks(None, f(*args, **kwargs), Deferred())
exceptions.TypeError: jsonrpc_call() takes exactly 4 arguments (3 given)

writing screen session into logfile now, so next time i hopefully can give better crash info  Smiley

Edit: 420 shares 0 stales!
newbie
Activity: 40
Merit: 0
July 12, 2011, 03:56:50 AM
I just checked out the last commit and after some time it stops giving work while outputting loads of lines like these:

Code:
RPC request [] submitted to eligius
Caught, jsonrpc_call insides
User timeout caused connection failure.
Caught, jsonrpc_call insides
User timeout caused connection failure.
Caught, jsonrpc_call insides
User timeout caused connection failure.
Caught, jsonrpc_call insides
User timeout caused connection failure.
Caught, jsonrpc_call insides
User timeout caused connection failure.
RPC request [] submitted to eligius
Caught, jsonrpc_call insides
User timeout caused connection failure.
Caught, jsonrpc_call insides
User timeout caused connection failure.
RPC request [] submitted to eligius
Caught, jsonrpc_call insides
User timeout caused connection failure.
RPC request [] submitted to eligius
RPC request [] submitted to eligius
Caught, jsonrpc_call insides
User timeout caused connection failure.
full member
Activity: 196
Merit: 100
July 12, 2011, 01:41:42 AM
In case you haven't noticed I got Server Side LP working. And now my rejection rate is 0%. Which is pretty sweet.

I just did a pull and check out this hotness


I understand that you feel quite frustrated as you throw another layer in between you and your pool and it spews oodles of output and stops giving work. I try and make this software do everything it can to get your work submitted. In this case however it spewed loads of output for two reasons. 1) It literally tried every server in the book in order to get a getwork and failed. 2) I left a little bit too much LP debugging in because I had just released it and was worrying that it would die.
And after spewing output it did come back up which is the point of bitHopper.
-c00w

Answers:
1) Pastebin?
Yes I like pastbin for large files. I like opening an issue on github even better.

2) More details?
Your internet probably died for a brief second. It then chewed through every server before defaulting to an extreme corner case I never expected. It will select mineco if literally all the other servers fail. I fixed that now though. However the LP shouldn't have been retried more than once for each server. Let me doublecheck that code.

Edit: 3) More details?
On looking through the logs I realized that some of my debug messages don't make any sense. What happened in your case is most of that spewing was your miner submitting incorrect LP request. Probably because it always submits them and it got extra desperate when it had no work. But I'm rewriting most of my debug output to make this clearer and the normal output to hide it.

Nothing went wrong with the server side LP code. How many miners are you running though? Thats a lot of clients being triggered on a server change.
donator
Activity: 2058
Merit: 1007
Poor impulse control.
July 11, 2011, 11:46:22 PM
In case you haven't noticed I got Server Side LP working. And now my rejection rate is 0%. Which is pretty sweet.

I just did a pull and check out this hotness.


Username and passwords are correct and in the passwords file?
newbie
Activity: 19
Merit: 0
July 11, 2011, 11:16:12 PM
In case you haven't noticed I got Server Side LP working. And now my rejection rate is 0%. Which is pretty sweet.

I just did a pull and check out this hotness.

Quote
~/bitHopper $ ./pool.py
Trying to delag
Calling sharesResponse for btcg
btcguild :5835582
LP Triggering clients on server change to eclipsemc
LP Client Side Reset
Loading the request failed
LP RPC request [] From eclipsemc.com
Calling sharesResponse for mtred
mtred :22972
LP Call pacrim.eclipsemc.com:8337/LP
Calling sharesResponse for bitclockers
bitclockers :47959
Calling sharesResponse for mineco
mineco :2059918
Calling sharesResponse for bclc
bitcoin.lc :2382709
Calling sharesResponse for eclipsemc
eclipsemc :494116
LP Triggering clients on server change to mtred
LP Client Side Reset
reading request content failed
Loading the request failed
LP RPC request [] From mtred
LP Client Side Reset
Loading the request failed
LP RPC request [] From mtred
LP Client Side Reset
Loading the request failed
LP RPC request [] From mtred
LP Client Side Reset
Loading the request failed
LP RPC request [] From mtred
Error in json decoding, Server probably down

LP Triggering clients on server change to bitclockers
Error in json decoding, Server probably down

LP Triggering clients on server change to eclipsemc
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
Error in json decoding, Server probably down

LP Triggering clients on server change to eligius
Error in json decoding, Server probably down

MINECO SELECTED THIS SHOULD NEVER HAPPEN
LP Triggering clients on server change to mineco
RPC request [] From mineco.in
LP Call mineco.in:3000/LP

and after that I'm submitting shares to mineco!

Restarting has helped for a little bit, and then:

Quote
LP triggered from server bitclockers
LP Triggering clients on server change to mtred
LP Client Side Reset
Loading the request failed
LP RPC request [] From mtred
LP Client Side Reset
Loading the request failed
LP RPC request [] From mtred
LP Client Side Reset
reading request content failed
Loading the request failed
LP RPC request [] From mtred
LP Client Side Reset
reading request content failed
Loading the request failed
LP RPC request [] From mtred
LP Client Side Reset
Loading the request failed
LP RPC request [] From mtred
LP Client Side Reset
reading request content failed
Loading the request failed
LP RPC request [] From mtred
LP Client Side Reset
reading request content failed
Loading the request failed
LP RPC request [] From mtred
LP Client Side Reset
Loading the request failed
LP RPC request [] From mtred
LP Client Side Reset
Loading the request failed
LP RPC request [] From mtred
LP Client Side Reset
Loading the request failed
LP RPC request [] From mtred
LP Client Side Reset
Loading the request failed
LP RPC request [] From mtred
Error in json decoding, Server probably down

LP Triggering clients on server change to bitclockers
Error in json decoding, Server probably down

LP Triggering clients on server change to eclipsemc
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
Error in json decoding, Server probably down

LP Triggering clients on server change to eligius
Error in json decoding, Server probably down

MINECO SELECTED THIS SHOULD NEVER HAPPEN
LP Triggering clients on server change to mineco
Error in json decoding, Server probably down

LP Triggering clients on server change to bclc
Error in json decoding, Server probably down

LP Triggering clients on server change to btcg
Error in json decoding, Server probably down

LP Triggering clients on server change to eligius
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
Error in json decoding, Server probably down

Error in json decoding, Server probably down

Error in json decoding, Server probably down

caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
Error in json decoding, Server probably down

caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
Calling sharesResponse for btcg
btcguild :6133250
Calling sharesResponse for mtred
mtred :96698
Calling sharesResponse for bitclockers
bitclockers :75968
Calling sharesResponse for mineco
mineco :2088709
Calling sharesResponse for bclc
bitcoin.lc :2472519
LP triggered from server eligius
LP triggering clients manually
LP Client Side Reset
reading request content failed
Loading the request failed
LP RPC request [] From eligius
LP Client Side Reset
Loading the request failed
LP RPC request [] From eligius
LP Client Side Reset
reading request content failed
Loading the request failed
LP RPC request [] From eligius
LP Client Side Reset
Loading the request failed
LP RPC request [] From eligius
LP Client Side Reset
reading request content failed
Loading the request failed
LP RPC request [] From eligius
LP Client Side Reset
reading request content failed
Loading the request failed
LP RPC request [] From eligius
LP Client Side Reset
reading request content failed
Loading the request failed
LP RPC request [] From eligius
LP Client Side Reset
reading request content failed
Loading the request failed
LP RPC request [] From eligius
LP Client Side Reset
reading request content failed
Loading the request failed
LP RPC request [] From eligius
LP Client Side Reset
Loading the request failed
LP RPC request [] From eligius
LP Client Side Reset
Loading the request failed
LP RPC request [] From eligius
LP Client Side Reset
Loading the request failed
LP RPC request [] From eligius
LP Client Side Reset
Loading the request failed
LP RPC request [] From eligius
LP Client Side Reset
Loading the request failed
LP RPC request [] From eligius
Calling sharesResponse for mtred
mtred :96698
Calling sharesResponse for bitclockers
bitclockers :75968
LP Call su.mining.eligius.st:8337/LP
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
Calling sharesResponse for mineco
mineco :2088709
Calling sharesResponse for bclc
bitcoin.lc :2477036
Calling sharesResponse for btcg
btcguild :6133250
Calling sharesResponse for eclipsemc
eclipsemc :507240
Calling sharesResponse for eclipsemc


and now I'm on eligius....
donator
Activity: 2058
Merit: 1007
Poor impulse control.
July 11, 2011, 11:01:28 PM

4) Adding more pools and mine.co is now not poolhoppable?
I'll set it as a info pool. I'll add the other pools when I have the time. I'm not going to add slush's as a poolhopper pool because pool hopping seems to be mostly random chance.


I just read through the info on PPLNS, as used by mineco.in and I can't think of a way to get around their system. It's simple - proportional payout only for last 0.5* shares before the block is found. You could hop there after say 0.5* shares or even shares on the off chance that they'll find a block around normal difficulty, but with variance so huge and block shares competed in 0.5* or 2* being fairly common I get the idea that you lose out more than you'd gain.

I haven't done the math but it seems intuitively not to be profitably hoppable. Yay! Another pure prop pool converts.

Interestingly though (from Ekligius post on the matter, http://eligius.st/wiki/index.php/Pay_Per_Last_N_Shares):

Quote
If another block is found at share Y, where (Y-X)
So I'd be interested in seeing if it's worth sacrificing a few shares at the very start of a round (which would mostly die) in case there are two short rounds in a row. Unlikely though.



full member
Activity: 196
Merit: 100
July 11, 2011, 10:56:57 PM
#99
In case you haven't noticed I got Server Side LP working. And now my rejection rate is 0%. Which is pretty sweet.

EDIT: Actually Its not completely working. But it is a lot less broken.
full member
Activity: 196
Merit: 100
July 11, 2011, 09:37:43 PM
#98
Hi,

I am getting the following errors each time I start bithopper, or when it switches pools:

Code:
Unhandled error in Deferred:
Unhandled Error
Traceback (most recent call last):
  File "C:\path\to\bithopper\pool.py", line 383, in
    main()
  File "C:\path\to\bithopper\pool.py", line 377, in main
    update_call.start(117)
  File "C:\Python27\lib\site-packages\twisted\internet\task.py", line 163, in start
    self()
  File "C:\Python27\lib\site-packages\twisted\internet\task.py", line 194, in __
call__
    d = defer.maybeDeferred(self.f, *self.a, **self.kw)
--- ---
  File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 133, in m
aybeDeferred
    result = f(*args, **kw)
  File "C:\path\to\bithopper\pool.py", line 253, in update_servers
    d = getPage(info['api_address'])
  File "C:\Python27\lib\site-packages\twisted\web\client.py", line 547, in getPage
    *args, **kwargs).deferred
  File "C:\Python27\lib\site-packages\twisted\web\client.py", line 525, in _make
GetterFactory
    from twisted.internet import ssl
  File "C:\Python27\lib\site-packages\twisted\internet\ssl.py", line 42, in ule>
    from OpenSSL import SSL
exceptions.ImportError: No module named OpenSSL
Trying to delag

I'm running bithopper on windows xp, with the latest phoenix miner. I'm not exactly sure if these errors are effecting the performance of bithopper, as it continues to rum seemingly unaffected.

Is this bad?

Yes. You need to install the python OpenSSL libraries on windows. https://launchpad.net/pyopenssl. I'm adding it to the readme.

hero member
Activity: 742
Merit: 500
July 11, 2011, 08:19:38 PM
#97
it continues to rum seemingly unaffected.

That's my kind of script  Grin
member
Activity: 61
Merit: 10
July 11, 2011, 06:50:10 PM
#96
Hi,

I am getting the following errors each time I start bithopper, or when it switches pools:

Code:
Unhandled error in Deferred:
Unhandled Error
Traceback (most recent call last):
  File "C:\path\to\bithopper\pool.py", line 383, in
    main()
  File "C:\path\to\bithopper\pool.py", line 377, in main
    update_call.start(117)
  File "C:\Python27\lib\site-packages\twisted\internet\task.py", line 163, in start
    self()
  File "C:\Python27\lib\site-packages\twisted\internet\task.py", line 194, in __
call__
    d = defer.maybeDeferred(self.f, *self.a, **self.kw)
--- ---
  File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 133, in m
aybeDeferred
    result = f(*args, **kw)
  File "C:\path\to\bithopper\pool.py", line 253, in update_servers
    d = getPage(info['api_address'])
  File "C:\Python27\lib\site-packages\twisted\web\client.py", line 547, in getPage
    *args, **kwargs).deferred
  File "C:\Python27\lib\site-packages\twisted\web\client.py", line 525, in _make
GetterFactory
    from twisted.internet import ssl
  File "C:\Python27\lib\site-packages\twisted\internet\ssl.py", line 42, in ule>
    from OpenSSL import SSL
exceptions.ImportError: No module named OpenSSL
Trying to delag

I'm running bithopper on windows xp, with the latest phoenix miner. I'm not exactly sure if these errors are effecting the performance of bithopper, as it continues to rum seemingly unaffected.

Is this bad?
hero member
Activity: 742
Merit: 500
July 11, 2011, 06:31:14 PM
#95
Not client disconnects, the error I posted gets spammed several times per second, so quickly that it fills the buffer before I'm able to pause and see what occurred immediately prior.

The None error should be fixed. The other errors will still appear but should be properly recovered. They still print the full error text but I should probably throw in a debug flag for that output.


Awesome, updating from git then Smiley

Edit: you should also probably modify the readme to indicate password.py as the new location of the account info. Didn't take a substantial amount of brainpower to figure that one out but I've worked tech support enough to know that no matter how obviously wrong the directions are there will always be some idiot who will follow them and then complain when it didn't work  Grin
full member
Activity: 196
Merit: 100
July 11, 2011, 05:20:37 PM
#94
Not client disconnects, the error I posted gets spammed several times per second, so quickly that it fills the buffer before I'm able to pause and see what occurred immediately prior.

The None error should be fixed. The other errors will still appear but should be properly recovered. They still print the full error text but I should probably throw in a debug flag for that output.
full member
Activity: 196
Merit: 100
July 11, 2011, 05:17:48 PM
#93
Actually, you could probably still hop mine.co but will have to change the effective share range.

Maybe. I need to think about the math more and there are a million other things that need to be done for bitHopper. If you increased the effective share range I think you would still not make as much money hopping it as the other pools. The initial ramp up means you wouldn't get paid very much and then you could never quit or you would have to ramp up again...
member
Activity: 111
Merit: 10
July 11, 2011, 04:38:46 PM
#92
4) Adding more pools and mine.co is now not poolhoppable?
I'll set it as a info pool. I'll add the other pools when I have the time. I'm not going to add slush's as a poolhopper pool because pool hopping seems to be mostly random chance.

Actually, you could probably still hop mine.co but will have to change the effective share range.
hero member
Activity: 742
Merit: 500
July 11, 2011, 03:42:03 PM
#91
Not client disconnects, the error I posted gets spammed several times per second, so quickly that it fills the buffer before I'm able to pause and see what occurred immediately prior.
full member
Activity: 196
Merit: 100
July 11, 2011, 03:18:10 PM
#90
1) Lots of crashes?
Are you saying the server process died? Or your client got disconnected... Most of the crashes you guys reported were in your bitHopperLP and as of about 2 am last night had a lot of try catch blocks to deal with the bizarre behavior of miners. I added some more.

2) Spinning out the authentication info?
Yeah I'll do it.

3) That one with server_name being none?
I fixed it. I think if every server lags out it would do that. Now it never will.

4) Adding more pools and mine.co is now not poolhoppable?
I'll set it as a info pool. I'll add the other pools when I have the time. I'm not going to add slush's as a poolhopper pool because pool hopping seems to be mostly random chance.

5) How to put a 10-15 second delay before pulling servers after LP is triggered?
Well LP should't be triggered server side from pools. It triggers miners from the pool changing servers. There is a .addDelayedCall or something similiar in twisted that you could use.
hero member
Activity: 698
Merit: 500
July 11, 2011, 02:01:29 PM
#89
how do I put 10-15 seconds delay before pulling API data from all pools when LP is triggered?
Jump to: