Bitcoin Forum

Bitcoin => Mining software (miners) => Topic started by: c00w on July 07, 2011, 08:22:04 PM



Title: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 07, 2011, 08:22:04 PM
Bithopper is a Bitcoin Pool Hopper Proxy which supports ~30 pools at last count.
Its still in beta but works pretty well.

https://github.com/c00w/bitHopper

Instructions:

1) Download the project

<-------IMPORTANT---------->
2) Move user.cfg.default to user.cfg and modify it to use your accounts instead of mine for mining.
<-------IMPORTANT---------->

3) Install greenlet. Links and instructions are in the README
4) Then run bitHopper.py
5) Direct your miner to localhost:8337
6) Tell me if anything breaks at https://github.com/c00w/bitHopper/issues
6a) Or use the forums.
7) Look at stats and control pool at localhost:8337/stats

Current Features:
* Pool Hopping
* LP based Pool Hopping
* LP (Client and Server)
* Low Reject Rate
* Web based Statistics and Control
* Individual Miner Stats. Based on username
* RollNtime and NonceRange support
* Plugin API
* Scalability. Should scale to 10GH/s and beyond nicely.

Planned features:
Cleared issue list on github.
Stable Release
Integrated Miner

Think this is cool? Want me to hurry up and add more features?:
1HEmzeuVEKxBQkEenysV1yM8oAddQ4o2TX


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 07, 2011, 08:41:24 PM
Nice, finally some alternative to multipool for local proxy use. Looking forward for the further development :D

Is this working yet? I'm getting just rejects.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 07, 2011, 09:09:52 PM
+1 for somebody to port this to windows...

What part exactly is there to "port"? I see no reason why it shouldn't work for windows.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 07, 2011, 09:24:49 PM
1)What platforms does this work on?
It should work on windows if you have python and twisted. The reason I posted it is so that people can test it out and tell me what breaks.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 07, 2011, 09:30:23 PM
Data sent:[]
Pulled From eligius, Current shares 640841.478408
Data sent:[u'000000011f8c4bc098527d9df28578dcb367bbd2d5698ea0f339d0f20000080b00000000de58a9c 66f047c2d3353e9438a145f441031f7dd21a95a332c531d9129bfeb9f4e1624241a0abbcf37be74 2700000080000000000000000000000000000000000000000000000000000000000000000000000 0000000000080020000']

[Errno 111] Connection refused
[Errno 111] Connection refused
[Errno 111] Connection refused
[Errno 111] Connection refused
[Errno 111] Connection refused
[Errno 111] Connection refused
[Errno 111] Connection refused
[Errno 4] Interrupted system call

… then it's stuck in such a "Connection refused" loop and I have to SIGKILL it, because it seems to intercept SIGTERM.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 07, 2011, 09:35:14 PM
Data sent:[]
Pulled From eligius, Current shares 640841.478408
Data sent:[u'000000011f8c4bc098527d9df28578dcb367bbd2d5698ea0f339d0f20000080b00000000de58a9c 66f047c2d3353e9438a145f441031f7dd21a95a332c531d9129bfeb9f4e1624241a0abbcf37be74 2700000080000000000000000000000000000000000000000000000000000000000000000000000 0000000000080020000']

[Errno 111] Connection refused
[Errno 111] Connection refused
[Errno 111] Connection refused
[Errno 111] Connection refused
[Errno 111] Connection refused
[Errno 111] Connection refused
[Errno 111] Connection refused
[Errno 4] Interrupted system call

… then it's stuck in such a "Connection refused" loop and I have to SIGKILL it, because it seems to intercept SIGTERM.

I think I fixed the problem. And I rewrote my code to let you use SIGTERM.

Does it work with the latest revision?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 07, 2011, 09:39:37 PM
Yep, works now :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 07, 2011, 09:42:19 PM
Sweet. I found another error with submitting good work but I think I fixed it. I'm running my card with it but its only 180 MH/S so it might not catch all the errors.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 07, 2011, 10:38:59 PM
Sweet. I found another error with submitting good work but I think I fixed it. I'm running my card with it but its only 180 MH/S so it might not catch all the errors.

subscribing.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 08, 2011, 01:01:49 AM
You should mention that users should enter their own details in the py code, since its all filled with your own pool account details.

Just in case users dont know it, they will just end up mining for you.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 08, 2011, 01:19:49 AM
Its in both the readme and the initial instructions in the post. I modified it to make it more obvious though.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 08, 2011, 02:30:03 AM
i do see a problem
Quote
Creative Commons Attribution-NonCommercial-ShareAlike 3.0
 :(
Where exactly is the problem there? Wanna use it commercially? (Btw. isn't generating "money" commercial per se?!)

Thanks a lot for the program btw.!

Edit:
I think the *.pyc files are not really needed in the repository, hm?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 08, 2011, 02:38:15 AM
i do see a problem
Quote
Creative Commons Attribution-NonCommercial-ShareAlike 3.0
  :(

c00w prolly just doesn't want someone else to take some of the code and sell it as another proxy.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 08, 2011, 02:57:25 AM
I had a very quick look through and have a couple of questions:

1. I can't see how you got difficulty - is it entered manually or is it a wget from http://blockexplorer.com/q/getdifficulty ?
2. I can see you're getting user api data - are you providing an efficiency output? This is something I loved about Multipool - It's much harder to see that you're getting good efficiency otherwise. Easy enough: shares/difficulty*blockvalue.
3. Why 'shares':difficulty*.41 (line 33) for eligius?
4. Can you give simple-ish instructions on adding other pools ourselves?

Looks great - simple enough for me to (mostly) understand! Can't wait to give it a try tonight.



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 08, 2011, 03:13:08 AM
Answers

1. I can't see how you got difficulty - is it entered manually or is it a wget from http://blockexplorer.com/q/getdifficulty ?

Right now its entered manually. Thats a good idea though

2. I can see you're getting user api data - are you providing an efficiency output? This is something I loved about Multipool - It's much harder to see that you're getting good efficiency otherwise. Easy enough: shares/difficulty*blockvalue.

Hmm. I was scraping the user data in order to get server data. I could probably whip up a crude API quickly. My priority right now is wrestling LP support into place.

3. Why 'shares':difficulty*.41 (line 33) for eligius?

Eligius has switched to a shared max pps. This makes it a bad pool for pool hopping but a good pool to mine when we can't find anything better. The difficulty*.41 is there so that it will check the other pools instead of assuming eligius is the best pool. Its a hack that will be removed when I clean up my code.

4. Can you give simple-ish instructions on adding other pools ourselves?

Sure. I'll add it to the readme at some point but its pretty simple: Copy the structure in the servers dictionary for your new pool.
Create a function to call a getPage from your info source.
Set its deferred to a function which parses your info source and sets server['server_name']['shares'] to the current shares.

Add the getpage calling function function to update_servers.

After writing that I realize its not that simple. I'm planning on spinning out some parsing functions with regex into some sort of file structure.

If you have a pool in mind and have the function written for extracting shares or api details, just post it and i can integrate it in if it is annoying.

Issues with the license:
I'll probably relicense it under a GPLV2 at some point. Its mainly so no one steals the script and resells it or trojans it without me being able to have a solid legal complaint.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 08, 2011, 03:16:59 AM

I think the *.pyc files are not really needed in the repository, hm?

You mean in jsonrpc? Yeah. I didn't notice them. I'll delete them once I get my code rewritten and LP support added.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 08, 2011, 04:38:47 AM
Thanks for the response! I understand this is still a work in progress, I wasn't hassling or anything.

re point 2, if you have the time and inclination to rustle up something at some point I think it would be a big point in the proxy's favour. People like to see how much ahead they are! But I just like chart porn. But you're right of course, LP is just a tad more important

I'd figured that the diff*.41 was something to do with when the proxy decides on which pool to look at next - delaying until all pools are more than 41% of expected shares for a block?

As for point 4 I followed along right up until my heart sunk at the evil word "regex". Sigh. Now I really will have to relearn regexpr. Stupid random symbols and letters  >:( I might just wait until you've had time to add it in.

Cheers!

(edited)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 08, 2011, 05:06:01 AM
Well I could just have it dynamically import python modules. Should be pretty easy.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 08, 2011, 07:51:44 AM
I added support for mineco and bitclockers. I like how simple your program is, please don't overcomplicate things by unnecessary generalizations or such a regex-config. Writing a small sharesResponse function is much more flexible. One problem I can see is that shares get submitted to the wrong pool if the best pool changes while the miner has still data for the old pool. These few shares should be negligable though. If you add long-polling support you could make such a "new block" event when the best pool changes so that the miner flushes the work queue.

Code:
+        'mineco':{'time': time.time(), 'shares': 0, 'name': 'mineco.in',
+            'mine_address': 'mineco.in:3000', 'user': mineco_user,
+            'pass': mineco_pass, 'lag': False, 'LP': None},
+        'bitclockers':{'time': time.time(), 'shares': 0, 'name': 'bitclockers.com',
+            'mine_address': 'pool.bitclockers.com:8332', 'user': bitclockers_user,
+            'pass': bitclockers_pass, 'lag': False, 'LP': None}
         }
 current_server = None

@@ -86,16 +96,40 @@ def mtred_sharesResponse(response):
     print 'mtred :' + str(round_shares)
     server_update()

+def mineco_sharesResponse(response):
+    global servers
+    info = json.loads(response)
+    round_shares = int(info['shares_this_round'])
+    servers['mineco']['shares'] = round_shares
+    print 'mineco :' + str(round_shares)
+    server_update()
+
+def bitclockers_sharesResponse(response):
+    global servers
+    info = json.loads(response)
+    round_shares = int(info['roundshares'])
+    servers['bitclockers']['shares'] = round_shares
+    print 'bitclockers :' + str(round_shares)
+    server_update()
+
 def bclc_getshares():
     getPage('https://www.bitcoins.lc/stats.json').addCallback(bclc_sharesResponse)

 def mtred_getshares():
     getPage('https://mtred.com/api/user/key/d91c52cfe1609f161f28a1268a2915b8').addCallback( mtred_sharesResponse )

+def mineco_getshares():
+    getPage('https://mineco.in/stats.json').addCallback(mineco_sharesResponse)
+
+def bitclockers_getshares():
+    getPage('https://bitclockers.com/api').addCallback(bitclockers_sharesResponse)
+
 def update_servers():
     global servers
     bclc_getshares()
     mtred_getshares()
+    mineco_getshares()
+    bitclockers_getshares()



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 08, 2011, 09:11:21 AM
thx burp :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: TeaRex on July 08, 2011, 10:59:02 AM
It might be interesting to reduce this to just the website scraping part of it. Then run in combination with Chris Howie's AMP based Proxy and just let it change the priorities in the MySQL database instead of doing its own proxying, simply reordering them in the order of number of shares (just set priority in the DB to negative number of shares or sth like that). That should relieve you of re-inventing complicated (and proven to work) proxying code.

I *might* make an attempt at that later today or tomorrow. Note I said *might*. No promises whatsoever.

As for license I strongly suggest the AGPL (GNU Affero General Public License). It has an additional rule that if you host it on a server that others can access, you also have to give them any modifications to the source that you made, even if they themselves don't run it. Makes lots of sense for server apps (or potential server apps, as this thing is).


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 08, 2011, 07:07:12 PM
Hi,

I wrote this program so that each client could run their own pool hopper proxy. If you want a hopping pool multipool and multiclone already fill that gap.

However I am going to implement basic statistics and it should be pretty simple to add in the ability to record the user name and password people logged in with and store that with their shares.

So this should work pretty well as a pool. You are going to need to write your own custom payment functions however.

The license will be changed to something more pool friendly when this is in a decent state.

-c00w


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 08, 2011, 11:50:07 PM
Does it only bind to localhost or is there anything stopping me from running this on one system and pointing all of my rigs at it?

(read: I don't want to deal with the dependencies eight times)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 08, 2011, 11:55:42 PM
I'm running this on one machine, 3 clients pointed at it. Seems to run well, only sometimes it will go for the one from the list of pools with the second lowest shares, or it wont change over. Eg last night it chose btcguild over eclipse (btc guild on over 300000, eclipse at 20000), but after switching off and restarting it changed to eclipse. This morning it stayed with eclipse at 280000 when it should have moved to mineco.in at 240000.

Otherwise stable enough for last 12 hours - no crashes.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 09, 2011, 12:13:14 AM
Hi,

1) Does it only bind to localhost?
It uses the default twisted http server and should bind to all interfaces. So you can run it on one computer and have multiple workers, on other computers, pointed to it. This assumes your firewall doesn't get in the way.

2) Why doesn't it always hop to the lowest pool.
I currently have it set to only change pools if the shares of the current pool is over 40% of difficulty. However it would make sense to switch anytime a new block comes out. I'll add that once I get server side LP working. Its a pretty simple switch if I have server side LP.

The reason it only switches pools at 40% is I didn't want two pools with close amounts but desynced json api update rates to cause the proxy to hop back and forth between them wasting time and shares.

-c00w





Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 09, 2011, 12:58:12 AM
Quote
2) Why doesn't it always hop to the lowest pool.
I currently have it set to only change pools if the shares of the current pool is over 40% of difficulty. However it would make sense to switch anytime a new block comes out. I'll add that once I get server side LP working. Its a pretty simple switch if I have server side LP.

The reason it only switches pools at 40% is I didn't want two pools with close amounts but desynced json api update rates to cause the proxy to hop back and forth between them wasting time and shares.

Ah well, expected behaviour then! You could make it so that it only switches when the pool with lesser shares has say less than 50% of the pool you're on to avoid the jumping back and forth.

The earlier you come in on a round, the greater the value of a share on a prop pool. So you should really be hopping to whichever pool has started on a new block.

I currently have bit hopper running with 6 pools and it never has to go to eligius, so I'd say bithopper's working well so far. No set up issues like I had (still having) with multipool.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 09, 2011, 01:10:50 AM
Ah well, expected behaviour then! You could make it so that it only switches when the pool with lesser shares has say less than 50% of the pool you're on to avoid the jumping back and forth.

The earlier you come in on a round, the greater the value of a share on a prop pool. So you should really be hopping to whichever pool has started on a new block.

Well I almost have Long polling support enabled on the server side so it'll switch everytime a block is found.

Your idea of switching if its under 50% of the current pool sounds like a smart idea as well. I'll add that in.

Thanks
-C00w


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 09, 2011, 01:57:13 AM
Quote
Well I almost have Long polling support enabled on the server side so it'll switch everytime a block is found.

looking forward to LP support, but how will you know where to switch from LP? Won't it just tell you that a block was found somewhere in the network? I suppose you could use that info to determine when bithopper checks to see which pool has the least shares to see if one of them was the one that found the block?  Or maybe I'm just misunderstanding LP.

Again, thanks for such a simple and easy to use/modify proxy.








Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 09, 2011, 05:06:14 AM
1) How/why does LP switching help?
Well LP means a server found a block. And it may be one of ours. So we run a server switch to the server with the lowest share-count because it may be a new round and either way all the current get-works are invalid so the overhead is minor.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 09, 2011, 09:04:15 AM
Does the current version work?

[2011-07-09 11:00:46] LONGPOLL detected new block, flushing work queue
[2011-07-09 11:00:46] LONGPOLL detected new block, flushing work queue
[2011-07-09 11:00:47] LONGPOLL detected new block, flushing work queue
[2011-07-09 11:00:48] LONGPOLL detected new block, flushing work queue

It doesn't seem to choose a pool.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 09, 2011, 09:07:12 AM
This thing is great! I would like to be able to see better what its doing, is there any way to hide the Starting factory and Stopping factory messages?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 09, 2011, 09:32:21 AM
1) Stopping and starting messsages are annoying. Help?
Currently I started using the twisted logging system because it made finding bugs easier with the timestamps. The twisted logging system has no simple way that I can find to stop those messages from appearing. It hasn't gotten a lot of love.  I'm planning on adding an actual debug option and using print otherwise for purely informational messages.

If you want to write me a subclass of httpclient with those messages turned off though I'll happily accept it.

2) Server side Long Polling is working?
It does now. I had an issue with longpoll handing because I inverted a logic statement. Its pushed to the repo in the correct form and running on my servers.

3)What happened to Burps machine?
From the log it looks like the server started cycling endlessly because there was no internet connection? I'm guessing my changes making the server swap if another server has less than 25% of its shares is at fault since if there are multiple 0 share connections it would try each, lag them out, issue a LP to the client because it swapped server, try the next and rinse and repeat through the whole list. Which certainly looks like what happened. I'll redo that code to instead first check that the share > 10% of difficulty.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 09, 2011, 09:42:41 AM
Doesn't make a difference, here is the complete logfile: http://pastebin.com/1iY1pS3M

PS: It's no internet connectivity problem


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 09, 2011, 10:39:45 AM
Just using new bithopper - how can you tell which pool you're connected to?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 09, 2011, 10:45:35 AM
1) How can you tell what pool you are connected to?
It should say rpc request [] from blah.blah.
That blah.blah is the server it is pulling from.

2) Burf:
Its going to sound horrible but can you run git pull again? I just rewrote the client LP system to have a lot less bugs. It appears that miners implement LP in all sorts of ways because its actually not clearly specified anywhere.

Also what miner are you using? That might have a disturbingly significant effect. The logs look like nothing is wrong.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 09, 2011, 10:58:28 AM
1) How can you tell what pool you are connected to?
It should say rpc request [] from blah.blah.
That blah.blah is the server it is pulling from.

Sorry, I can only see an RPC request to mtred which hasn't yet recorded any shares from me. SHould I just dl and try the lastest?

Code:
011-07-09 10:47:37+0000 [HTTP11ClientProtocol,client] 127.0.0.1 - - [09/Jul/2011:10:47:36 +0000] "POST / HTTP/1.1" 200 608 "-" "poclbm/2011.beta4"
2011-07-09 10:47:38+0000 [HTTP11ClientProtocol,client] LP triggered <twisted.web._newclient.Response object at 0x1ae6490>
2011-07-09 10:47:38+0000 [HTTP11ClientProtocol,client] Starting factory <HTTPClientFactory: https://www.bitcoins.lc/stats.json>
2011-07-09 10:47:38+0000 [HTTP11ClientProtocol,client] Starting factory <HTTPClientFactory: https://mtred.com/api/user/key/d91c52cfe1609f161f28a1268a2915b8>
2011-07-09 10:47:38+0000 [HTTP11ClientProtocol,client] Starting factory <HTTPClientFactory: https://bitclockers.com/api>
2011-07-09 10:47:38+0000 [HTTP11ClientProtocol,client] Starting factory <HTTPClientFactory: https://mineco.in/stats.json>
2011-07-09 10:47:38+0000 [HTTPChannel,1,127.0.0.1] RPC request [] From mtred
2011-07-09 10:47:38+0000 [HTTPChannel,6,127.0.0.1] RPC request [] From mtred
2011-07-09 10:47:38+0000 [HTTPPageGetter,client] mtred :0
2011-07-09 10:47:38+0000 [HTTPPageGetter,client] Stopping factory <HTTPClientFactory: https://mtred.com/api/user/key/d91c52cfe1609f161f28a1268a2915b8>
2011-07-09 10:47:39+0000 [HTTP11ClientProtocol,client] LP Call mtred.com:8337/LP
2011-07-09 10:47:39+0000 [HTTP11ClientProtocol,client] 127.0.0.1 - - [09/Jul/2011:10:47:38 +0000] "POST / HTTP/1.1" 200 608 "-" "poclbm/2011.beta4"
2011-07-09 10:47:39+0000 [HTTP11ClientProtocol,client] LP Call mtred.com:8337/LP
2011-07-09 10:47:39+0000 [HTTP11ClientProtocol,client] 127.0.0.1 - - [09/Jul/2011:10:47:38 +0000] "POST / HTTP/1.1" 200 608 "-" "poclbm/2011.beta4"
2011-07-09 10:47:39+0000 [HTTPPageGetter,client] mineco :1415190
2011-07-09 10:47:39+0000 [HTTPPageGetter,client] Stopping factory <HTTPClientFactory: https://mineco.in/stats.json>
2011-07-09 10:47:39+0000 [HTTPPageGetter,client] bitclockers :1087070
2011-07-09 10:47:39+0000 [HTTPPageGetter,client] Stopping factory <HTTPClientFactory: https://bitclockers.com/api>
2011-07-09 10:47:39+0000 [HTTP11ClientProtocol,client] LP triggered <twisted.web._newclient.Response object at 0x1c2a810>
2011-07-09 10:47:39+0000 [HTTP11ClientProtocol,client] Starting factory <HTTPClientFactory: https://www.bitcoins.lc/stats.json>
2011-07-09 10:47:39+0000 [HTTP11ClientProtocol,client] Starting factory <HTTPClientFactory: https://mtred.com/api/user/key/d91c52cfe1609f161f28a1268a2915b8>
2011-07-09 10:47:39+0000 [HTTP11ClientProtocol,client] Starting factory <HTTPClientFactory: https://bitclockers.com/api>
2011-07-09 10:47:39+0000 [HTTP11ClientProtocol,client] Starting factory <HTTPClientFactory: https://mineco.in/stats.json>
2011-07-09 10:47:39+0000 [HTTP11ClientProtocol,client] LP triggered <twisted.web._newclient.Response object at 0x196af90>
2011-07-09 10:47:39+0000 [HTTP11ClientProtocol,client] Starting factory <HTTPClientFactory: https://www.bitcoins.lc/stats.json>
2011-07-09 10:47:39+0000 [HTTP11ClientProtocol,client] Starting factory <HTTPClientFactory: https://mtred.com/api/user/key/d91c52cfe1609f161f28a1268a2915b8>
2011-07-09 10:47:39+0000 [HTTP11ClientProtocol,client] Starting factory <HTTPClientFactory: https://bitclockers.com/api>
2011-07-09 10:47:39+0000 [HTTP11ClientProtocol,client] Starting factory <HTTPClientFactory: https://mineco.in/stats.json>
2011-07-09 10:47:39+0000 [HTTPPageGetter,client] bitcoin.lc :1485982
2011-07-09 10:47:39+0000 [HTTPPageGetter,client] Stopping factory <HTTPClientFactory: https://www.bitcoins.lc/stats.json>
2011-07-09 10:47:40+0000 [HTTPPageGetter,client] mtred :0
2011-07-09 10:47:40+0000 [HTTPPageGetter,client] Stopping factory <HTTPClientFactory: https://mtred.com/api/user/key/d91c52cfe1609f161f28a1268a2915b8>
2011-07-09 10:47:40+0000 [HTTPPageGetter,client] mtred :0
2011-07-09 10:47:40+0000 [HTTPPageGetter,client] Stopping factory <HTTPClientFactory: https://mtred.com/api/user/key/d91c52cfe1609f161f28a1268a2915b8>
2011-07-09 10:47:40+0000 [HTTPPageGetter,client] bitclockers :1087134
2011-07-09 10:47:40+0000 [HTTPPageGetter,client] Stopping factory <HTTPClientFactory: https://bitclockers.com/api>
2011-07-09 10:47:41+0000 [HTTPPageGetter,client] bitclockers :1087143
2011-07-09 10:47:41+0000 [HTTPPageGetter,client] Stopping factory <HTTPClientFactory: https://bitclockers.com/api>
2011-07-09 10:47:41+0000 [HTTPPageGetter,client] bitcoin.lc :1485982
2011-07-09 10:47:41+0000 [HTTPPageGetter,client] Stopping factory <HTTPClientFactory: https://www.bitcoins.lc/stats.json>
2011-07-09 10:47:41+0000 [HTTPPageGetter,client] bitcoin.lc :1485982
2011-07-09 10:47:41+0000 [HTTPPageGetter,client] Stopping factory <HTTPClientFactory: https://www.bitcoins.lc/stats.json>
2011-07-09 10:47:41+0000 [HTTPChannel,1,127.0.0.1] RPC request [u'00000001cce6f8a2cf82f32896d9cd75aaa1e86d626c29045094b6bd0000097e00000000ab84c24b1c41ebde8fef201eb19ba0b460acc681849e6d21d21e2a47892e05eb4e1831c81a0abbcfb83a58d6000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000'] From mtred


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 09, 2011, 11:10:14 AM
2) Burf:
Its going to sound horrible but can you run git pull again? I just rewrote the client LP system to have a lot less bugs. It appears that miners implement LP in all sorts of ways because its actually not clearly specified anywhere.

Also what miner are you using? That might have a disturbingly significant effect. The logs look like nothing is wrong.

Nope, no effect. I'm running cgminer (http://forum.bitcoin.org/index.php?topic=21275.0).


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 09, 2011, 11:28:21 AM
Hmmm. I see the problem and It has something to do with cgminer managing to call bitHopper quickly enough to make it make two LP connections one of which gets returned. I'll figure out why my code to stop this doesn't work tommorow. For now use poclbm or phoenix.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 09, 2011, 11:45:18 AM
Are the pool stats updated after each new share now, or am I misinterpreting the log spam? At least when I run the client without long-polling, or disable the long-polling header at bitHopper.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 09, 2011, 01:16:03 PM
Quote
[7/9/11 6:11:07 AM] Added Barts (#1) (14 CU, local work size of 128)
Waiting...Exception in thread "DiabloMiner LongPollAsync" java.lang.NullPointerE
Waiting...
        at com.diablominer.DiabloMiner.DiabloMiner.forceUpdate(DiabloMiner.java:
Waiting...
        at com.diablominer.DiabloMiner.DiabloMiner$LongPollAsync.run(DiabloMiner
Waiting...)
Waiting... java.lang.Thread.run(Unknown Source)

I get this exception on the DiabloMiner side when connecting to BitHopper. But it still seems to run after that.

Also, it seems btcguild doesn't have a get shares function? The user api json is broken when there are no workers, but luckily the site-wide api is functioning. And, server_update() should not be called in each get response actually, and should be done at the end of update_servers because each server_update does a comparison against the rest of the server and calls select_best_server() - logging is also much quieter this way :P

Code:
def btcguild_sharesResponse(response):
    global servers
    info = json.loads(response)
    round_shares = int(info['round_shares'])
    servers['btcg']['shares'] = round_shares
    log.msg( 'btcguild :' + str(round_shares))

def btcguild_getshares():
    d = getPage('https://www.btcguild.com/pool_stats.php')
    d.addCallback(btcguild_sharesResponse)
    d.addErrback(log.err)

def update_servers():
    global servers
    bitclockers_getshares()
    mineco_getshares()
    btcguild_getshares()

    server_update()

And, what's the reasoning for waiting until the server with the least shares to have more than half of the current server before switching?

Code:
       if min_shares < servers[current_server]['shares']:
            if servers[current_server]['shares'] - min_shares < .50 * servers[current_server]['shares']:
                select_best_server()
                return


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 09, 2011, 02:24:38 PM


And, what's the reasoning for waiting until the server with the least shares to have more than half of the current server before switching?

Code:
        if min_shares < servers[current_server]['shares']:
            if servers[current_server]['shares'] - min_shares < .50 * servers[current_server]['shares']:
                select_best_server()
                return

Check out http://forum.bitcoin.org/index.php?topic=26866.msg342833#msg342833 (http://forum.bitcoin.org/index.php?topic=26866.msg342833#msg342833)  its to avoid hopping back and fourth between two pools.
How much overhead is there when hopping between pools?  Would it be limited to how many work units a miner had queued up? Or is there some other losses Im missing?

Quote
Well I almost have Long polling support enabled on the server side so it'll switch everytime a block is found.

looking forward to LP support, but how will you know where to switch from LP? Won't it just tell you that a block was found somewhere in the network? I suppose you could use that info to determine when bithopper checks to see which pool has the least shares to see if one of them was the one that found the block?  Or maybe I'm just misunderstanding LP.

Again, thanks for such a simple and easy to use/modify proxy.

I think you understand correctly, and this is a good idea in theory, but if you are using the api of the pool to figure out which pool it is and it takes a while for some pools to update the stats, then your probably best off staying in the current pool until bithopper picks up a low block count from the winning pool through its regular checks, and switches anyways.

How often does bithopper check each pools apis?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 09, 2011, 02:36:20 PM
Here is some logic that popped in my head while looking through the code (I've never programmed in python but I have done some programming at school). Please let me know if this makes sense:

1. Check the api of each pool for share_count
2. If share_count[of the pool you are checking] < 1 then share_count[of the pool you are checking] = 10**10
3. Pick the pool with the lowest share count

Step 2 will catch any misbehaving api or a pool that is down and is returning a 0 for the share count.

Let me know if the code is doing this or something like this already, I have a hard time following some of the if statements, but you've inspired me to go and learn some python syntax!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 09, 2011, 02:44:25 PM
Sorry to take spam this thread with so many posts but I found this useful and maybe someone else will as well.

Just using new bithopper - how can you tell which pool you're connected to?

I added a line to my pool.py file that will display the chosen server name with **** around it so one can pick it out of the torrent of information flowwing through the log file. Please let me know if there is a better spot for this as Im not good at python (yet) so I just stuck it in to see what happens.

Code:
    for server in servers:
        info = servers[server]
        if info['shares']< min_shares and info['lag'] == False:
            log.msg( '***min_shares :' + str(min_shares))
            min_shares = servers[server]['shares']
            server_name = server

    if server_name == None:
        server_name = 'eligious'

    """This line added to show current server in a more visible way"""
    log.msg( '******New server **** :' + str(server_name))

    global new_server
    global lp_set


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 09, 2011, 03:13:20 PM


And, what's the reasoning for waiting until the server with the least shares to have more than half of the current server before switching?

Code:
        if min_shares < servers[current_server]['shares']:
            if servers[current_server]['shares'] - min_shares < .50 * servers[current_server]['shares']:
                select_best_server()
                return

Check out http://forum.bitcoin.org/index.php?topic=26866.msg342833#msg342833 (http://forum.bitcoin.org/index.php?topic=26866.msg342833#msg342833)  its to avoid hopping back and fourth between two pools.
How much overhead is there when hopping between pools?  Would it be limited to how many work units a miner had queued up? Or is there some other losses Im missing?

No I don't think so. As written it wouldn't do that. Rather it actually prevents a switch until the lowest share server has at least 50% of the current server, not the difficulty. The other problem is that it's doing an update_server every share submit, not just on each LP.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 09, 2011, 03:24:09 PM


And, what's the reasoning for waiting until the server with the least shares to have more than half of the current server before switching?

Code:
        if min_shares < servers[current_server]['shares']:
            if servers[current_server]['shares'] - min_shares < .50 * servers[current_server]['shares']:
                select_best_server()
                return

Check out http://forum.bitcoin.org/index.php?topic=26866.msg342833#msg342833 (http://forum.bitcoin.org/index.php?topic=26866.msg342833#msg342833)  its to avoid hopping back and fourth between two pools.
How much overhead is there when hopping between pools?  Would it be limited to how many work units a miner had queued up? Or is there some other losses Im missing?

No I don't think so. As written it wouldn't do that. Rather it actually prevents a switch until the lowest share server has at least 50% of the current server, not the difficulty. The other problem is that it's doing an update_server every share submit, not just on each LP.

I think your right, should it be
Code:
if servers[current_server]['shares'] - min_shares > .50 * servers[current_server]['shares']:
?

I think I would prefer my miners to switch as soon as there is anything lower, to maximize effectiveness. Unless the switching lowers your hasrate too much, but I dont see how it would.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 09, 2011, 04:47:44 PM
I think your right, should it be
Code:
if servers[current_server]['shares'] - min_shares > .50 * servers[current_server]['shares']:
?

I think I would prefer my miners to switch as soon as there is anything lower, to maximize effectiveness. Unless the switching lowers your hasrate too much, but I dont see how it would.

Actually, I changed it to:

Code:
            if servers[current_server]['shares'] / 2 > min_shares:

Which really achieves the same thing as using >. But this means it only switches if a pool has less than half the shares of the current pool. Though I think to prevent pool hopping backing back and forth you only need to require a 1-5% difference in shares.

The bigger issue I'm seeing is that it's doing an API stats pull every share accepted and that's going to raise some eyes from the pool operator side. I'm not sure if server side LP is even working.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 09, 2011, 08:33:44 PM
1) Server side LP is broken?
Yeah. It is. I'm disabling it until I can figure out why twisted is ending the calls early.

2) Screwy logic with regards to switching?
Yeah. I missed that. I'm switching it over.

3) Better location of pool update function?
Well thats the wrong location because it gets called before we get new information. Where it is now if the logic wasn't broken it would work a lot better.

4) How often does bitHopper check pool API's?
EDIT: Changed to every 117 seconds.

5) BTCguild is broken?
I was waiting for their api to come up so that I could add the update function.





Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 09, 2011, 09:12:25 PM
Here is how to make twisted less noisy:

http://stackoverflow.com/questions/5078980/twisted-starting-stopping-factory-protocol-less-noisy-log-messages

EDIT: I just noticed you fixed a couple of things, nice :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 09, 2011, 09:27:30 PM
Here is some logic that popped in my head while looking through the code (I've never programmed in python but I have done some programming at school). Please let me know if this makes sense:

1. Check the api of each pool for share_count
2. If share_count[of the pool you are checking] < 1 then share_count[of the pool you are checking] = 10**10
3. Pick the pool with the lowest share count

Step 2 will catch any misbehaving api or a pool that is down and is returning a 0 for the share count.

Let me know if the code is doing this or something like this already, I have a hard time following some of the if statements, but you've inspired me to go and learn some python syntax!

I implemented something similar to this. Now if the API call fails it changes that server's difficulty to something along the line of 10^10. Your code is a good idea but wouldn't work because when the calls fail the server returns nothing and the error functions are called. Not a json api repsonse which can be parsed into a share count of 0.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 09, 2011, 09:31:24 PM
Here is how to make twisted less noisy:

http://stackoverflow.com/questions/5078980/twisted-starting-stopping-factory-protocol-less-noisy-log-messages

EDIT: I just noticed you fixed a couple of things, nice :)

Well the issue is that the noisy factories are embedded in getPage. I could rewrite it but its a lot simpler to not bother.

I'm going to add a option parser so I can have a flag to turn off client side LP for cgminer and diablominer users as well as a debug flag for me which turns on the twisted output.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 09, 2011, 09:40:05 PM
Here is how to make twisted less noisy:

http://stackoverflow.com/questions/5078980/twisted-starting-stopping-factory-protocol-less-noisy-log-messages

EDIT: I just noticed you fixed a couple of things, nice :)

Well the issue is that the noisy factories are embedded in getPage. I could rewrite it but its a lot simpler to not bother.

I'm going to add a option parser so I can have a flag to turn off client side LP for cgminer and diablominer users as well as a debug flag for me which turns on the twisted output.

You can just turn off LP support with --no-longpoll for cgminer, so it's no problem now. (A:4339  R:77, and accepted/rejected ratio is still good) But fixing the issue doesn't harm either ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 09, 2011, 09:53:17 PM
The issue is that when I use a twisted deffered mechanism to handle LP requests, which is the only way I can see to do it, twisted sends back a packet with no http data to say," We're alive but we are not done processing no http response"

All the python based miners are cool with this.

Diablominer takes this packet and tries to operate on it and breaks.

Cgminer accepts this packet, goes LP WAS FIRED and grabs a new block via getwork. Which isn't how LP is supposed to work either. They should try and read a getwork from the response like Diablominer and crash or they should check for a null packet and do something like oh not cycle endlessly through getworks.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 09, 2011, 10:05:47 PM
Btw, this is missing to make btcguild actually work:

Code:
def get_difficulty():
@@ -171,6 +171,7 @@ def btcguild_sharesResponse(response):
     round_shares = int(info['round_shares'])
     servers['btcg']['shares'] = round_shares
     log.msg( 'btcguild :' + str(round_shares))
+    server_update()

 def bclc_sharesResponse(response):
     global servers
@@ -213,7 +214,7 @@ def errsharesResponse(error, args):

 def btcg_getshares():
     d = getPage('https://www.btcguild.com/pool_stats.php')
-    d.addCallback(bclc_sharesResponse)
+    d.addCallback(btcguild_sharesResponse)
     d.addErrback(errsharesResponse, ('btcg'))
     d.addErrback(log.err)

@@ -247,6 +248,7 @@ def update_servers():
     mtred_getshares()
     bitclockers_getshares()
     mineco_getshares()
+    btcg_getshares()


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 09, 2011, 10:15:56 PM
Fixed.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 09, 2011, 10:47:54 PM
The issue is that when I use a twisted deffered mechanism to handle LP requests, which is the only way I can see to do it, twisted sends back a packet with no http data to say," We're alive but we are not done processing no http response"

All the python based miners are cool with this.

Diablominer takes this packet and tries to operate on it and breaks.

Cgminer accepts this packet, goes LP WAS FIRED and grabs a new block via getwork. Which isn't how LP is supposed to work either. They should try and read a getwork from the response like Diablominer and crash or they should check for a null packet and do something like oh not cycle endlessly through getworks.

I actually encountered a new problem with DiabloMiner where it loops RPC Request in BitHopper continuously. This only happens IF DiabloMiner doesn't error out as described earlier.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 09, 2011, 11:20:23 PM

I actually encountered a new problem with DiabloMiner where it loops RPC Request in BitHopper continuously. This only happens IF DiabloMiner doesn't error out as described earlier.

Hmm. I ran diablo miner and didn't get the LP problem. I did see an abnormally high number of RPC requests. I am seeing an issue where my code is submitting 2-4 times as many RPC request as it should. I'm debugging.

EDIT: Turns out my logging function double printed certain things. Fixed now. It looks like Diablominer just pulls a lot of work. I'll keep playing with it and see if I can find the LP issue though.

EDIT AGAIN: Actually I remember causing that error in one of my commits. I fixed it once I tested it on my server and it didn't work roughly 2 minutes later. Git Pull and see if it works?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 09, 2011, 11:33:11 PM

I actually encountered a new problem with DiabloMiner where it loops RPC Request in BitHopper continuously. This only happens IF DiabloMiner doesn't error out as described earlier.

Hmm. I ran diablo miner and didn't get the LP problem. I did see an abnormally high number of RPC requests. I am seeing an issue where my code is submitting 2-4 times as many RPC request as it should. I'm debugging.

EDIT: Turns out my logging function double printed certain things. Fixed now. It looks like Diablominer just pulls a lot of work. I'll keep playing with it and see if I can find the LP issue though.

If Diablo Miner errors on start, it's ok:
Code:
[7/9/11 4:29:32 PM] Started
[7/9/11 4:29:32 PM] Connecting to: http://localhost:8337/
[7/9/11 4:29:32 PM] Using AMD Accelerated Parallel Processing OpenCL 1.1 AMD-APP
-SDK-v2.5 (684.211)
[7/9/11 4:29:34 PM] BFI_INT patching enabled, disabling hardware checking
[7/9/11 4:29:34 PM] Added Barts (#1) (14 CU, local work size of 256)
Waiting...Exception in thread "DiabloMiner LongPollAsync" java.lang.NullPointerE
Waiting...
        at com.diablominer.DiabloMiner.DiabloMiner.forceUpdate(DiabloMiner.java:
504)
        at com.diablominer.DiabloMiner.DiabloMiner$LongPollAsync.run(DiabloMiner
.java:1363)
        at java.lang.Thread.run(Unknown Source)
[7/9/11 4:29:37 PM] Accepted block 1 found on Barts (#1)

If it doesn't error, then we have problem. Log @ paste bin below. There may be some logging differences since I've made some small changes, but it still has same problem with the pool.py I downloaded.

Code:
[7/9/11 4:29:47 PM] Started
[7/9/11 4:29:47 PM] Connecting to: http://localhost:8337/
[7/9/11 4:29:47 PM] Using AMD Accelerated Parallel Processing OpenCL 1.1 AMD-APP
-SDK-v2.5 (684.211)
[7/9/11 4:29:49 PM] BFI_INT patching enabled, disabling hardware checking
[7/9/11 4:29:49 PM] Added Barts (#1) (14 CU, local work size of 256)
[7/9/11 4:30:35 PM] Accepted block 1 found on Barts (#1)

http://pastebin.com/e4hUXD6R


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 09, 2011, 11:44:49 PM
Its an LP issue. Diablominer doesn't actually read from the LP channel. Once it gets a packet it triggers and asks for more work from the normal channel. There is a way to rewrite the clientside LP and I'll add it to the list but for now just run with pool.py --noLP.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 09, 2011, 11:46:19 PM
Its an LP issue. Diablominer doesn't actually read from the LP channel. Once it gets a packet it triggers and asks for more work from the normal channel. There is a way to rewrite the clientside LP and I'll add it to the list but for now just run with pool.py --noLP.

That's fine. I'm actually using poclbm with phatk because DiabloMiner is returning high rejects (but maybe this is also due to LP).

Code:
mhash: 279.6/280.2 | accept: 32 | reject: 5 | hw error: 0

I get 1-2% reject on poclbm.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: toasty on July 10, 2011, 06:00:28 AM
Code:
def selectsharesResponse(response, args):
    log_msg('Calling sharesResponse for '+ args)
    func_map= {'bitclockers':bitclockers_sharesResponse,
        'mineco':mineco_sharesResponse,
        'mtred':mtred_sharesResponse,
        'bclc':bclc_sharesResponse,
        'bitclockers':bitclockers_sharesResponse,
        'btcg':btcguild_sharesResponse}

Bitclockers is defined twice here. Not hurting anything, but might cause a bug down the road if only one of them gets changed.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 10, 2011, 06:12:52 AM
Good catch. I'm fixing it.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 10, 2011, 10:48:15 AM
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 10, 2011, 10:58:51 AM
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 10, 2011, 11:10:04 AM
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 ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 10, 2011, 11:29:28 AM
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 (http://forum.bitcoin.org/index.php?topic=3165.0)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 10, 2011, 11:34:12 AM
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 (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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 10, 2011, 12:02:56 PM
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 (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.



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 10, 2011, 04:22:05 PM
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 10, 2011, 05:00:16 PM
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 :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 10, 2011, 06:08:09 PM
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 10, 2011, 08:13:27 PM
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


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 10, 2011, 08:45:10 PM
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 11, 2011, 02:36:34 AM
This thing is FANTASTIC. If this is beta I can't wait to see a gold release ;D

I also can't wait for some stats.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 11, 2011, 07:31:43 AM
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 11, 2011, 07:47:03 AM
for deepbit support i got a little idea  ;D
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: GoMaD on July 11, 2011, 08:03:03 AM
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}


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: neptop on July 11, 2011, 08:43:10 AM
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: GoMaD on July 11, 2011, 09:15:58 AM
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


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: GoMaD on July 11, 2011, 10:11:57 AM
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)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: jkminkov on July 11, 2011, 10:13:42 AM
why default pool is not deepbit PPS but eligius ???


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 11, 2011, 10:48:06 AM
why default pool is not deepbit PPS but eligius ???

Deepbit PPS costs 10%. Eligius SMPPS has a negligible fee.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 11, 2011, 02:13:28 PM
Crashed during the night. I was running it directly so there was no helpful error message waiting for me, the window simply closed itself while I slept. I ran it from within a command prompt this time so that if it crashes again I'll have an error to post. Hopefully it's just a fluke  :P


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: GoMaD on July 11, 2011, 02:30:42 PM
crashed during my breakfast!

last i saw was something like:

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

linenumbers didn't match cause i have some changes and comments


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 11, 2011, 02:53:58 PM
crashed during my breakfast!

last i saw was something like:

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

linenumbers didn't match cause i have some changes and comments


Got it to crash again, came back here to post about it and saw the exact error already there. Same error for myself as well


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: anty on July 11, 2011, 03:47:16 PM
It just crashed for me too.
None the less, thanks for developing this proxy! I primarily use it to automatically switch to another pool when one goes down. The pool hopping is a nice bonus ;)
I want to +1 the request of putting the configuration into a separate file. I'd love to just do a "git update" without needing to merge my config into pool.py.

Edit: Here's another crash:
Code:
nishRequestBody
    self.allContentReceived()
  File "/usr/lib/python2.7/dist-packages/twisted/web/http.py", line 1641, in allContentReceived
    req.requestReceived(command, path, version)
  File "/usr/lib/python2.7/dist-packages/twisted/web/http.py", line 807, in requestReceived
    self.process()
--- <exception caught here> ---
  File "/usr/lib/python2.7/dist-packages/twisted/web/server.py", line 125, in process
    self.render(resrc)
  File "/usr/lib/python2.7/dist-packages/twisted/web/server.py", line 132, in render
    body = resrc.render(self)
  File "/usr/lib/python2.7/dist-packages/twisted/web/resource.py", line 210, in render
    return m(request)
  File "/home/anty/bitHopper/pool.py", line 342, in render_POST
    return bitHopper_Post(request)
  File "/home/anty/bitHopper/pool.py", line 281, in bitHopper_Post
    pool_server=servers[current_server]
exceptions.KeyError: None


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: koopa on July 11, 2011, 04:21:29 PM
Confirmed as working on Windows XP  ;D

Was looking for a proxy + hopper and stumbled across bithopper... installed this morning and it seems to be chugging along just fine. Thanks to c00w for taking the time to put this up and continue to develop it. Cheers.

As a python virgin here's what I did to get this going on XP....

Files required for a 32bit Windows XP install:

Bithopper - Obviously.
https://github.com/c00w/bitHopper (https://github.com/c00w/bitHopper)

Python 2.7.2 - Version 2.7.2 is the latest version compatible with Twisted on Windows XP
http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi (http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi)
Other Python versions available here:
http://www.python.org/getit/ (http://www.python.org/getit/)

Twisted 11.0.0 - XP compatible:
http://twistedmatrix.com/Releases/Twisted/11.0/Twisted-11.0.0.winxp32-py2.7.msi (http://twistedmatrix.com/Releases/Twisted/11.0/Twisted-11.0.0.winxp32-py2.7.msi)
Other Twisted versions available here:
http://twistedmatrix.com/trac/wiki/Downloads (http://twistedmatrix.com/trac/wiki/Downloads)

pyOpenSSL 0.11.winxp32-py2.7.msi - XP compatible:
http://launchpad.net/pyopenssl/main/0.11/+download/pyOpenSSL-0.11.winxp32-py2.7.msi (http://launchpad.net/pyopenssl/main/0.11/+download/pyOpenSSL-0.11.winxp32-py2.7.msi)
Other pyOpenSSL versions available here
https://launchpad.net/pyopenssl (https://launchpad.net/pyopenssl)

Zope.interface - XP compatible:
http://pypi.python.org/packages/2.7/z/zope.interface/zope.interface-3.6.4-py2.7-win32.egg#md5=887bffa4e7739c03f2dec72145a67b69 (http://pypi.python.org/packages/2.7/z/zope.interface/zope.interface-3.6.4-py2.7-win32.egg#md5=887bffa4e7739c03f2dec72145a67b69)
Other Zope.interface versions available here:
http://pypi.python.org/pypi/zope.interface#downloads (http://pypi.python.org/pypi/zope.interface#downloads)

OK, so to get this up and running, install python, twisted and pyOpenSSL. Unzip the zope.interface file (it's a .egg file) and place the contents in C:\Python26\Lib\site-packages\

You should be able to run it following c00w's instructions from there.

*Edit 12-06-11 - Added link to pyOpenSSL and expanded.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 11, 2011, 05:07:44 PM
Here's my actual error, just crashed again:
Code:
--- <exception caught here> ---
  File "D:\Python27\lib\site-packages\twisted\web\server.py", line 127, in proce
ss
    self.render(resrc)
  File "D:\Python27\lib\site-packages\twisted\web\server.py", line 147, in rende
r
    body = resrc.render(self)
  File "D:\Python27\lib\site-packages\twisted\web\resource.py", line 216, in ren
der
    return m(request)
  File "D:\bithopper\pool.py", line 342, in render_POST
    return bitHopper_Post(request)
  File "D:\bithopper\pool.py", line 281, in bitHopper_Post
    pool_server=servers[current_server]
exceptions.KeyError: None
Unhandled Error
Traceback (most recent call last):
  File "D:\Python27\lib\site-packages\twisted\web\http.py", line 1349, in dataRe
ceived
    finishCallback(data[contentLength:])
  File "D:\Python27\lib\site-packages\twisted\web\http.py", line 1563, in _finis
hRequestBody
    self.allContentReceived()
  File "D:\Python27\lib\site-packages\twisted\web\http.py", line 1619, in allCon
tentReceived
    req.requestReceived(command, path, version)
  File "D:\Python27\lib\site-packages\twisted\web\http.py", line 773, in request
Received
Edit: It's now crashing like this ~once per hour... Help!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 11, 2011, 05:43:51 PM
mtred share information is actually incorrect. Numbers from both servers need to be combined.

Code:
def mtred_sharesResponse(response):
    global servers
    info = json.loads(response)
-   round_shares = int(info['server']['servers']['n0']['roundshares'])
+   round_shares = int(info['server']['roundshares'])
    servers['mtred']['shares'] = round_shares
    log_msg('mtred :' + str(round_shares))


Also just noticed mine.co is now PPLNS. Maybe should stop hopping to it or adjust its value.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: jkminkov on July 11, 2011, 06:01:29 PM
how do I put 10-15 seconds delay before pulling API data from all pools when LP is triggered?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 11, 2011, 07:18:10 PM
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 11, 2011, 07:42:03 PM
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 11, 2011, 08:38:46 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.

Actually, you could probably still hop mine.co but will have to change the effective share range.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 11, 2011, 09:17:48 PM
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...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 11, 2011, 09:20:37 PM
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 11, 2011, 10:31:14 PM
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 :)

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  ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: koopa on July 11, 2011, 10:50:10 PM
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 <module>
    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)
--- <exception caught here> ---
  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 <mod
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?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 12, 2011, 12:19:38 AM
it continues to rum seemingly unaffected.

That's my kind of script  ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 12, 2011, 01:37:43 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 <module>
    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)
--- <exception caught here> ---
  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 <mod
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.



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 12, 2011, 02:56:57 AM
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 12, 2011, 03:01:28 AM

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*<difficulty> shares before the block is found. You could hop there after say 0.5*<difficulty> shares or even <difficulty> 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*<difficulty> or 2*<difficulty> 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 (http://eligius.st/wiki/index.php/Pay_Per_Last_N_Shares)):

Quote
If another block is found at share Y, where (Y-X)<N, the shares in both lookback windows wind up getting paid again. Thus, multiple quick hits can mean a single share is paid multiple times.

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.





Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bigbeerjr on July 12, 2011, 03:16:12 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.

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....


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 12, 2011, 03:46:22 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.


Username and passwords are correct and in the passwords file?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 12, 2011, 05: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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: anty on July 12, 2011, 07: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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: GoMaD on July 12, 2011, 08: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())
--- <exception caught here> ---
  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  :)

Edit: 420 shares 0 stales!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: phelix on July 12, 2011, 09: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.   :P


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 12, 2011, 09: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.   :P

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


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: koopa on July 12, 2011, 10: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 <module>
    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)
--- <exception caught here> ---
  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 <mod
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  :P

My mini guide to getting this working on Windows XP has been updated: http://forum.bitcoin.org/index.php?topic=26866.msg351354#msg351354 (http://forum.bitcoin.org/index.php?topic=26866.msg351354#msg351354)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 12, 2011, 12:39:50 PM
So, what about some more advanced modes?

There are servers delaying statistics (especially deepbit), actually a lot of servers already do this already - how to deal with these?

Also it might be the case that statistics can be faked. Should we try to detect at least some obvious cases (negative amount of shares, fixed amount of shares...) and more obscure ones (statistical analysis of blocks solved in the past, calculating hashrate for this + averaging, then checking plausibility of current hashrate + shares reported)?

As far as I get it, the single most important thing to know with high confidence is the current amount of shares in any pool at each point of time. To estimate it, you need to know a hash rate and a point in time when the round started. Hash rates can be aproximated quite well after some time but I'm not sure how to detect (if everything is delayed for some time) if a new round started.
Weirdly, you know this actually globally REALLY fast, but as far as I looked, pools seem to generate a new address for each generated amount by default, which makes it hard to guess which one this belongs to until payouts (to you or known/trusted adresses) are being made from that block that are traceable to a generation.

A possible way would be to look at long polls (theoretically the first long poll should be from the pool that solved a block), connecting to the bitcoinds at the pool servers to get new blocks as fast as possible (and the first one from whom you get a new block is also more likely the one solving it).

What needs to be done anyways would be a website (google app engine or so) that records the block numbers of blocks that this pool has solved for each pool. Would also be important for other statistics like the ones on bitcoinwatch...
With these numbers then you could get the time it took to solve the blocks and so some hashrate estimations.
This could/should be even done as a plugin/extension to the alternative block explorer (recording for each block if it was mined by a known pool or is it still unknown who mined it)

Any more ideas to not rely on statistics by the servers themselves and still getting meaningful results? Might also be useful to not slow pools down - I bet the constant API calls hurt miners there far more (stale shares) than any hopping atm!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 12, 2011, 01:14:44 PM
Quote
So, what about some more advanced modes?

Whoa there, Nellie! That's a huge amount of work.

I have no wish to be a wet blanket, but I think before you start down this road you might want to look at results first.

If we can get stats working on this - just enough to tell you what efficiency you're getting (coinage/expected coinage for a block based on the shares accepted from you) then you'll get a better idea of how many pools obfuscate their data. If you don't see many pools with less than 1.0 efficiency, then it's not an issue. Get rid of them and get a new pool. Plenty more pools in the ...er waterpark?

Anyway, it'll be a while before all pools do this and if they're sensible they'll go for a provably unhoppable solution of which there are already a few.

But if you have the time and inclination - go for it! You'll still need the stats to assess whether or not your solution works though.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bigbeerjr on July 12, 2011, 03:56:24 PM

Answers:
1) Pastebin?
Yes I like pastbin for large files. I like opening an issue on github even better.
My bad, next time I'll open a ticket.

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.

Network connection was good throughout the rest of my network, maybe I just enabled too many miners at the same time. At this point I am unable to reproduce so I don't expect much to happen on your end. I have 7 pointing to bithopper.



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 12, 2011, 04:50:49 PM
There is actually another bug which could have caused this. It looks like I screwed up the delag call and didn't notice. So calls could fail slowly one after each other lagging out each pool in turn. And then you'd get the massive failover which happened to you.

Its fixed now. I think I should attach timestamps to the non debug calls also.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 12, 2011, 05:48:02 PM
Alright, different suggestion:

Let's get this thing ready for Google App Engine! For small miners this would be much better/convenient than hosting it locally and with the free quotas it should still be possible to have this for free.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 12, 2011, 05:52:37 PM
Google App Engine Eh? Maybe. Stats are first. Then a webpage to show them.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: jkminkov on July 12, 2011, 06:18:29 PM
requesting easy way to remove some pools


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 12, 2011, 06:45:43 PM
If you are not adverse to source just add 'info':'' to the info for the pool in servers.

I'll add a command line option later tonight.

Is there a specific pool you don't want to use because its become hopper proof? Or is it just a case of a lot of pools and you don't want to make all of the accounts.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: jkminkov on July 12, 2011, 06:52:00 PM
some pools produce more rejected shares and I preffer not to use them and sometimes if pool is DDOS-ed it'd be wise to turn it off for a while


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 12, 2011, 06:54:47 PM
some pools produce more rejected shares and I preffer not to use them and sometimes if pool is DDOS-ed it'd be wise to turn it off for a while

k. Which pools produce more rejected shares? there is an error in phoenix where it times out and double submits the same share.

In terms of DDOS the software will recognize when it can't connect, mark the pool as lagged and move on. It will try and delag the pool though.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: jkminkov on July 12, 2011, 07:00:36 PM
it is just for me - btcguild, as Germany servers gone, US are too far


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: nebiki on July 12, 2011, 07:48:36 PM
it is just for me - btcguild, as Germany servers gone, US are too far

btcguild had issues with stale shares on their german servers, too. that's why i've switched to btcmine. 4% -> 0.7%. pm me when you get low stales on btcguild so i can switch back. thanks :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 12, 2011, 07:57:45 PM
Huh. I was actually going to add btcmine as the second backup pool but I can't register on it since registration is closed.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 12, 2011, 09:08:25 PM
As stats/website would most likely require a database that's why I suggested google app engine! ;)
Just use a no-sql backend if possible please to make porting more easy later on.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 12, 2011, 09:21:52 PM
Stats are in the work. Short term efficiency stats are next on the list. I'm probably going to run with sqlite or mongodb at first if a database is required. However I think I can get away without one for a bit.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 12, 2011, 09:29:39 PM
http://mining.mainframe.nl/ claims they use a hopper-proof algorithm. Might not be so useful to hop there.

Quote
Pool Hashrate: 1.55 GH/s
Pool Workers: 9

The above might be a reason why noone hopped there so far! ;)

I think just deleting the respective line from "selectsharesResponse(response, args):" should be enough, right?
[Edit: it is, but throws errors (and continues) - I also commented the section in the "servers" dictionary]

Thanks for considering the database backend!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 12, 2011, 09:31:08 PM
don't bother adding btcmine. They have AntiHopperTechnology added. With multipool the efficiency for 90000 shares with btcmine was 0.785.  

Bitpit are golden so far, I'd add them.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bigbeerjr on July 12, 2011, 10:06:20 PM
What is the deal with commit 22535ca0778280861f9ba5616194aa8cf2ded4b3?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 12, 2011, 10:09:46 PM
Namecoin should by the way also be possible...

There are however just a few considerations:
You can estimate the "worth" of 1 NMC as the ratio between BTC difficulty and NMC difficulty. However this is not an exact measure, only what would be expected, and Namecoins are currently "undersold" on the Namecoin exchange.

A better estimate would be an average value, for example from http://www.nmcwatch.com/ (would be a simple regex). This would lead to increased queries though.

@bigbeer: seems to me he/she disabled the wrong pool, hm?! ???


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 12, 2011, 10:23:42 PM
Fixed disabling of the wrong pool. Also I think I fixed the RPC cycling bugs. Found a new bug in the client side long polling of certain miners which are unable to handle a LP call returning an error JSON RPC call.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 12, 2011, 11:03:42 PM
keep up the good work man, bitcoins coming your way :)  (when I get them)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 13, 2011, 02:30:26 AM
And I reordered the code again to try and stop tripping eligius's DDOS settings. To whoever sent me some bitcoins: Thank you very much.

I hope I'll do some stats soon but I'm spending too much time tracking down bugs. Its on the list. I swear.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 13, 2011, 03:04:43 AM
@ c00w: Does entering an invalid or empty username/password combo cause problems?

The reason I ask is that atm if a user doesn't like a pool or the pool starts withholding rewards, giving too many stales, or starts using an antihopping algo users have to go into going to pool.py in starts commenting out lines It might be easier for users to simply delete the username and password to turn a pool 'off'.

An advantage for you (c00w) is that you wouldn't have to worry about finding out which pools are good or not, adding them or deleting them. You could just add the top (say) 15 pools, don't worry about whether they use antihopping or not and let everyone take their pick. The only extra work for you would be figuring out the pool's api.

Then, if the stats show a pool is crapping out, the user can just delete the relevant username and password. Or maybe comment them out.

tl;dr
1. c00w adds top 15 pools and their api.
2. Users enter the username/passwords/api (if necessary) only of pools they actually want to use.
3. Username/passwords/api can be added or deleted later on.

I think this would reduce duplication of effort for both you and users.

What do you think?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 13, 2011, 03:43:42 AM
Getting the following a lot:

Code:
Unhandled error in Deferred:
Unhandled Error
Traceback (most recent call last):
  File "D:\Python27\lib\site-packages\twisted\internet\defer.py", line 361, in c
allback
    self._startRunCallbacks(result)
  File "D:\Python27\lib\site-packages\twisted\internet\defer.py", line 455, in _
startRunCallbacks
    self._runCallbacks()
  File "D:\Python27\lib\site-packages\twisted\internet\defer.py", line 542, in _
runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "D:\Python27\lib\site-packages\twisted\internet\defer.py", line 1076, in
gotResult
    _inlineCallbacks(r, g, deferred)
--- <exception caught here> ---
  File "D:\Python27\lib\site-packages\twisted\internet\defer.py", line 1020, in
_inlineCallbacks
    result = g.send(result)
  File "D:\bitHopper\work.py", line 140, in jsonrpc_getwork
    request.finish()
  File "D:\Python27\lib\site-packages\twisted\web\http.py", line 866, in finish
    "Request.finish called on a request after its connection was lost; "
exceptions.RuntimeError: Request.finish called on a request after its connection
 was lost; use Request.notifyFinish to keep track of this.

Doesn't seem to crash or anything, it recovers quickly, just thought I'd notify you :)
Edit: Scratch that, it is now happening so often that I'm getting more errors than actual traffic and an unreasonable amount of hashing power is falling to my backup pool, I've switched back to a previous build that still seems to work just fine, but whatever this is, it's BAD.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zapeta on July 13, 2011, 04:08:42 AM
Just FYI, Mineco.in has implemented a Pay Per Last N Shares reward scheme.  I'm guessing their change in payment scheme would require some adjustment of the pool hopper.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 13, 2011, 04:18:14 AM
1)Minecoin?
They are already out of the rotation.

2) Crashes on that line?
Removed it. Not needed. I'm unsure why it was sucking so much work though... I did up the timer for the stalls to half a second a piece. It looks like your miner is timing out too quickly. I got these sorts of stalls with poclbm. Phoenix stalls less although it will try and double submit shares.

EDIT: Actually I think it is a server side LP issue. Which I think I just fixed. I accidentally had error'd LP calls call the lp handler

3) Invalid username/password taking out a pool?
Yeah it already does this assuming the pool won't accept the work. Sometimes it does. its a little dicey. I'm going to try and add an option for going --skip Name1, Name2, etc... as well as a --list to help tell people which servers are installed.

EDIT: Enabled and in the repository. Note the format for disable should have no spaces.
Oh and I used --disable not --skip


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zapeta on July 13, 2011, 04:46:33 AM
1)Minecoin?
They are already out of the rotation.

Sorry, I misread Mineco as minecoin in the password file!  My apologies.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 13, 2011, 05:57:57 AM
Code:
print "You just disabled the backup pool. I hope you know what you are doing"

*That* made me grin. The snarkier the better!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 13, 2011, 06:06:38 AM
2) Crashes on that line?
Removed it. Not needed. I'm unsure why it was sucking so much work though... I did up the timer for the stalls to half a second a piece. It looks like your miner is timing out too quickly. I got these sorts of stalls with poclbm. Phoenix stalls less although it will try and double submit shares.

EDIT: Actually I think it is a server side LP issue. Which I think I just fixed. I accidentally had error'd LP calls call the lp handler

Updated, it appears to be running and I haven't seen another error yet. I'm keeping my eyes open and fingers crossed though :)

Thanks! (damn you work fast)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: nob on July 13, 2011, 06:07:12 AM
First things first, Thanks for BitHopper!

Second: Thought about ArsBitcoin as second Backup Pool? Like Eligius thery are using SMPPS. I mined on Ars when Eligius had problems, and had 0 Downtimes.



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 13, 2011, 07:10:43 AM
Yet another wall of errors and half my hashrate is going to my backup pool (running at -f60 priority in case the proxy fails)  ???

Code:
Request.finish called on a request after its connection was lost; use Request.no
tifyFinish to keep track of this.
[00:09:22] RPC request [] submitted to bitclockers.com
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.no
tifyFinish to keep track of this.
Caught, jsonrpc_call insides
TCP connection timed out: 10060: A connection attempt failed because the connect
ed party did not properly respond after a period of time, or established connect
ion failed because connected host has failed to respond..


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 13, 2011, 07:21:10 AM
As far as fail over goes, try using the new poclbm. It haa built in failover to whatever your back up pool its at whatever -f you have for your main pool. Even if poclbm isn't as fast for you as whatever you're using, it might be worthwhile until bitHopper is working properly for you.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 13, 2011, 07:24:56 AM
As far as fail over goes, try using the new poclbm. It haa built in failover to whatever your back up pool its at whatever -f you have for your main pool. Even if poclbm isn't as fast for you as whatever you're using, it might be worthwhile until bitHopper is working properly for you.

Don't really feel like changing all of my miners and re-building all my scripts around a new executable. Might be minor for those of you who have two or three nodes but I'm playing with 14  ;)
Edit: For the record, since I'm pretty sure I haven't stated before, I'm running puddinpop's opencl miner under winxp


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: GoMaD on July 13, 2011, 07:50:55 AM
nice update thx.

But wish i had more options to pass like: --port --hideRPCrequests --showServerShares..

And it would be great for statistic if you could count each valid share for each server and save it in a stats.blub file or something like that. 

From time to time i get:

Code:
2011-07-13 09:20:14+0200 [-] Caught, jsonrpc_call insides
2011-07-13 09:20:14+0200 [-] User timeout caused connection failure.
2011-07-13 09:20:18+0200 [-] Caught, jsonrpc_call insides
2011-07-13 09:20:18+0200 [-] User timeout caused connection failure.
...
2011-07-13 09:23:07+0200 [-] User timeout caused connection failure.
2011-07-13 09:23:15+0200 [-] Caught, jsonrpc_call insides
2011-07-13 09:23:15+0200 [-] User timeout caused connection failure.

In that time my workers feel bored and didn't work.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: nob on July 13, 2011, 07:58:36 AM
nice update thx.

But wish i had more options to pass like: --port --hideRPCrequests --showServerShares..

And it would be great for statistic if you could count each valid share for each server and save it in a stats.blub file or something like that.  

From time to time i get:

Code:
2011-07-13 09:20:14+0200 [-] Caught, jsonrpc_call insides
2011-07-13 09:20:14+0200 [-] User timeout caused connection failure.
2011-07-13 09:20:18+0200 [-] Caught, jsonrpc_call insides
2011-07-13 09:20:18+0200 [-] User timeout caused connection failure.
...
2011-07-13 09:23:07+0200 [-] User timeout caused connection failure.
2011-07-13 09:23:15+0200 [-] Caught, jsonrpc_call insides
2011-07-13 09:23:15+0200 [-] User timeout caused connection failure.

In that time my workers feel bored and didn't work.


Same here.
I'm on mtred now, and everythings fine.
But on bitclockers before, there where a lot of these errors. And about 20% stales.
Maybe some kind of DDOS-protection from Bitclockers?

phoenix wrote this in the console:

Code:
2011-07-13 09:22:38: Traceback (most recent call last):
2011-07-13 09:22:38: File "phoenix.py", line 125, in <module>
2011-07-13 09:22:38: File "twisted\internet\base.pyo", line 1166, in run
2011-07-13 09:22:38: File "twisted\internet\base.pyo", line 1175, in mainLoop
2011-07-13 09:22:38:  --- <exception caught here> ---
2011-07-13 09:22:38: File "twisted\internet\base.pyo", line 779, in runUntilCurrent
2011-07-13 09:22:38: File "minerutil\RPCProtocol.pyo", line 130, in callback
2011-07-13 09:22:38: File "minerutil\RPCProtocol.pyo", line 352, in handleWork
2011-07-13 09:22:38: exceptions.TypeError: string indices must be integers

DiabloMiner was idle after the rp_call connection lost erros:

Code:
java.lang.NullPointerException

Only m0mchilds poclbm seems to run smooth.

//EDIT:
Oops you uploaded a new Version, i'll test it


//EDIT2:
Thanks, works great now.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 13, 2011, 10:34:31 AM
mt.red stats failed me couple a minutes ago
Code:
Time: UTC+2

[12:09:06] mining.mainframe.nl :3622349
[12:09:06] Server change to eligius, telling client with LP
[12:09:06] mineco :66088
[12:09:06] bitcoin.lc :480294
[12:09:06] Server change to bclc, telling client with LP
[12:09:06] mtred :754610
[12:09:06] pool.bitp.nl :1569718
[12:09:06] btcguild :57456
[12:09:06] Server change to btcg, telling client with LP
[12:09:06] bitclockers :611500
[12:09:07] eclipsemc :2549766
[12:09:16] RPC request [] submitted to BTC Guild
[12:09:17] LP Call us.btcguild.com:8332/LP
[12:09:37] RPC request [] submitted to BTC Guild
[12:09:57] RPC request [] submitted to BTC Guild
[12:09:59] RPC request [u'000000014610341ceb92ab33cbe0e555229c8e5999d99021bbc1f0c90000015000000000ad6cbce0f8afebe71d19f71464eb622a01d17c41cd014c16256f5b84bd869a4c4e1d6e8b1a0abbcf6b779c16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to BTC Guild
[12:10:08] RPC request [u'000000014610341ceb92ab33cbe0e555229c8e5999d99021bbc1f0c90000015000000000ad6cbce0f8afebe71d19f71464eb622a01d17c41cd014c16256f5b84bd869a4c4e1d6e8b1a0abbcf3dedf17f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to BTC Guild
[12:10:18] RPC request [] submitted to BTC Guild
[12:10:38] RPC request [] submitted to BTC Guild
[12:10:59] RPC request [] submitted to BTC Guild
[12:11:02] mining.mainframe.nl :3622490
[12:11:03] mineco :75772
[12:11:03] bitcoin.lc :567786
[12:11:03] bitclockers :616410
[12:11:03] mtred :0
[12:11:03] pool.bitp.nl :1571346
[12:11:03] btcguild :116551
[12:11:04] eclipsemc :2551778
[12:11:10] RPC request [u'000000014610341ceb92ab33cbe0e555229c8e5999d99021bbc1f0c90000015000000000e68dc07f3973e7d42b69c79942a63eb7de1b5e4577b53412795421af314056204e1d6ec91a0abbcff6130688000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to BTC Guild
[12:11:14] RPC request [u'000000014610341ceb92ab33cbe0e555229c8e5999d99021bbc1f0c90000015000000000e68dc07f3973e7d42b69c79942a63eb7de1b5e4577b53412795421af314056204e1d6ec91a0abbcf9e724bbb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to BTC Guild
[12:11:19] RPC request [] submitted to BTC Guild
[12:11:40] RPC request [] submitted to BTC Guild
[12:12:00] RPC request [] submitted to BTC Guild
[12:12:15] RPC request [u'000000014610341ceb92ab33cbe0e555229c8e5999d99021bbc1f0c900000150000000003ff9095133cdd7ce5a5db8c9836cd9cc1dd2e9abde9a4a1c32e66c9890a3aab24e1d6f061a0abbcf8251a8b4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to BTC Guild
[12:12:21] RPC request [] submitted to BTC Guild
[12:12:33] RPC request [u'000000014610341ceb92ab33cbe0e555229c8e5999d99021bbc1f0c90000015000000000a166b70401e554527ff71b723a75f693e3a8798c6a38f140968f5478b4b4159c4e1d6f1b1a0abbcf36bbc88e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to BTC Guild
[12:12:37] RPC request [u'000000014610341ceb92ab33cbe0e555229c8e5999d99021bbc1f0c90000015000000000a166b70401e554527ff71b723a75f693e3a8798c6a38f140968f5478b4b4159c4e1d6f1b1a0abbcf8faca9c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to BTC Guild
[12:12:39] RPC request [u'000000014610341ceb92ab33cbe0e555229c8e5999d99021bbc1f0c90000015000000000a166b70401e554527ff71b723a75f693e3a8798c6a38f140968f5478b4b4159c4e1d6f1b1a0abbcfc0a47fe2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to BTC Guild
[12:12:41] RPC request [] submitted to BTC Guild
[12:13:00] mining.mainframe.nl :3622490
[12:13:00] mineco :75772
[12:13:00] bitcoin.lc :567786
[12:13:00] bitclockers :621155
[12:13:00] mtred :0
[12:13:00] pool.bitp.nl :1572960
[12:13:00] btcguild :176268
[12:13:00] Server change to mtred, telling client with LP
[12:13:01] eclipsemc :2553709
[12:13:02] RPC request [] submitted to mtred
[12:13:02] LP Call mtred.com:8337/LP
[12:13:17] RPC request [u'000000014610341ceb92ab33cbe0e555229c8e5999d99021bbc1f0c900000150000000008e9838f1e4fd79ceecf50420e84a588ecb9213a20131f2820eb1afc84ee9be7c4e1d6f441a0abbcf0d19aeb8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to mtred
[12:13:22] RPC request [] submitted to mtred
[12:13:43] RPC request [] submitted to mtred
[12:13:49] RPC request [u'000000014610341ceb92ab33cbe0e555229c8e5999d99021bbc1f0c90000015000000000a64dfa76d8141ce09c2fc668f42a267db3f249c8a46a21fa81d2c8f26250c70a4e1d6f6d1a0abbcf52c9eb4b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to mtred
[12:13:52] RPC request [u'000000014610341ceb92ab33cbe0e555229c8e5999d99021bbc1f0c90000015000000000a64dfa76d8141ce09c2fc668f42a267db3f249c8a46a21fa81d2c8f26250c70a4e1d6f6d1a0abbcf3a83066a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to mtred
[12:14:03] RPC request [] submitted to mtred
[12:14:17] LP triggered from server mtred
[12:14:17] LP triggering clients manually
[12:14:17] mining.mainframe.nl :3622587
[12:14:18] mineco :75772
[12:14:18] bitcoin.lc :567786
[12:14:18] mtred :0
[12:14:18] pool.bitp.nl :1573711
[12:14:18] bitclockers :623600
[12:14:18] btcguild :235357
[12:14:19] LP triggered from server mtred
[12:14:19] LP triggering clients manually
[12:14:19] mining.mainframe.nl :3622587
[12:14:19] mineco :75772
[12:14:20] mtred :0
[12:14:20] pool.bitp.nl :1573711
[12:14:20] bitclockers :623600
[12:14:20] btcguild :235357
[12:14:22] bitcoin.lc :567786
[12:14:24] RPC request [] submitted to mtred
[12:14:24] LP Call mtred.com:8337/LP
[12:14:24] RPC request [] submitted to mtred
[12:14:25] RPC request [] submitted to mtred
[12:14:25] eclipsemc :2555007
[12:14:25] RPC request [] submitted to mtred
[12:14:25] RPC request [] submitted to mtred
[12:14:26] RPC request [] submitted to mtred
[12:14:28] eclipsemc :2555044
[12:14:45] RPC request [] submitted to mtred
[12:14:50] RPC request [u'0000000117fd24eaa050282730a84371a5eb57bdaeb390cfe5a0b11000000a340000000014572add3e2f6d6397f9de08cbd0f3e36738d1551c7a47f73181288f9ce459594e1d6ffa1a0abbcfa0041633000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to mtred
[12:14:57] mining.mainframe.nl :3622587
[12:14:57] mineco :75772
[12:14:57] bitcoin.lc :567786
[12:14:57] mtred :0
[12:14:57] pool.bitp.nl :1574462
[12:14:57] bitclockers :625442
[12:14:58] btcguild :235357
[12:14:58] eclipsemc :2555547
[12:15:06] RPC request [] submitted to mtred
[12:15:27] RPC request [] submitted to mtred
[12:15:29] RPC request [u'0000000117fd24eaa050282730a84371a5eb57bdaeb390cfe5a0b11000000a34000000008d36a7ea7eab4dd2d6f93e7c3044846ec2d95def6ae21d2c11f07bdc79343c8f4e1d6ffb1a0abbcf3e79a311000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to mtred
[12:15:39] RPC request [u'0000000117fd24eaa050282730a84371a5eb57bdaeb390cfe5a0b11000000a34000000008d36a7ea7eab4dd2d6f93e7c3044846ec2d95def6ae21d2c11f07bdc79343c8f4e1d6ffb1a0abbcf693abb94000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to mtred
[12:15:44] RPC request [u'0000000117fd24eaa050282730a84371a5eb57bdaeb390cfe5a0b11000000a34000000008d36a7ea7eab4dd2d6f93e7c3044846ec2d95def6ae21d2c11f07bdc79343c8f4e1d6ffb1a0abbcf66ea9ece000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'] submitted to mtred

restarted and everything goes fine


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 13, 2011, 10:52:54 AM
just downloaded the last version and have a small request: please do not hide the pool share count from time to time, please. It helps allot if everything keeps transparent and for debugging purposes too. Thanks


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: anty on July 13, 2011, 11:51:37 AM
Just a little feedback:
The latest version seems pretty stable. It didn't crash for me in the last 4 hours.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: nob on July 13, 2011, 12:08:27 PM
Yes, the new Version runs great for about 6 Hours and 9 Workers connected.

No Errors, fast pool switching and nearly 0 stales.



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 13, 2011, 12:28:15 PM
I started writing a google spreadsheet to have a few stats form the pools. The biggest problem currently is that the pools don't show which shares were mined with which difficulty --> you usually get a "total_shares" or something like that, most of the time also a total payout or similar but you can't calculate efficiency over several rounds (as you don't know how many shares were mined with which difficulty).
For this you would need a "canonical" metapool, that does not really give out work or accept it but just takes an arbitrary number of shares for each round and outputs the expected 0% PPS payout after the block was confirmed (to make sure also transaction fees are accounted for - important in the long run). This data should then be queriable aggregated via APIs like in most other pools. From this you could then determine if your pool cheats you or not (ideally for non-hoppers it should show about the same payouts on the metapool and the real pool, if it's a 0% fee pool).

Also some pools don't have a (useful) API at all, you'd need to login and scrape their website...

All in all, I fear that only client side stats from bithopper will be useful (but might not reflect the reality 100%, as in the end only what reaches your wallet counts!). The ones from pools might be interesting for basic statistics, but you can't even see how lucky/unlucky you were each round (something that I'm interested in). They could be used to verify the local stats though and/or to correct them.


Edit:
It seems to me that bitHopper hops to early! According to https://forum.bitcoin.org/index.php?topic=3165.0 line 169 should read min_shares = difficulty*.435, not min_shares = difficulty*.40! We still loose some "hot" share this way in the worst case.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zybron on July 13, 2011, 02:22:57 PM
Hey, c00w, what's the chance we could have the code a bit refactored so each pool has an include or something similar? Something along the lines that the user/pass, server definition, shares definition, etc. are in a single location? The reason I ask is that it would then be very easy to 'plug in' another pool option just by adding a new .py file for that pool.

I think that would make it pretty easy for some of us that just play around with python to add a custom pool into the rotation.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 13, 2011, 02:43:00 PM
Edit:
It seems to me that bitHopper hops to early! According to https://forum.bitcoin.org/index.php?topic=3165.0 line 169 should read min_shares = difficulty*.435, not min_shares = difficulty*.40! We still loose some "hot" share this way in the worst case.

the min_shares = difficulty*.435 comes from a special case of hopping from a 'contributed' model to a 'connected' model. It was a proof-of-concept, and I don't know how applicable the exact figure is to hopping multiple proportional pools. I was trying to figure it out and then thought it might just be easier to run a simulation and vary the percentages to see what the best outcomes were.

Unfortunately I can't find a good poisson distribution random number generator for non-integers (ie fractions of difficulty). Any ideas?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: roos on July 13, 2011, 03:07:32 PM

[17:05:01] Error in pool api for eclipsemc
[17:05:01] [Failure instance: Traceback: <type 'exceptions.ValueError'>: No JSON object could be decoded
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1076:gotResult
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1063:_inlineCallbacks
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:361:callback
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:455:_startRunCallbacks
--- <exception caught here> ---
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:542:_runCallbacks
pool.py:309:selectsharesResponse
pool.py:250:eclipsemc_sharesResponse
/usr/lib/python2.7/json/__init__.py:326:loads
/usr/lib/python2.7/json/decoder.py:360:decode
/usr/lib/python2.7/json/decoder.py:378:raw_decode
]



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 13, 2011, 03:11:54 PM

All in all, I fear that only client side stats from bithopper will be useful (but might not reflect the reality 100%, as in the end only what reaches your wallet counts!). The ones from pools might be interesting for basic statistics, but you can't even see how lucky/unlucky you were each round (something that I'm interested in). They could be used to verify the local stats though and/or to correct them.


A whole heap of Multipool is devoted to this. I couldn't do it, but Nick from Multiclone seems like a nice guy, and he's on the case and might be able to give a hand adapting it by explaining the bits to do with html scraping.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: koopa on July 13, 2011, 03:29:29 PM

[17:05:01] Error in pool api for eclipsemc
[17:05:01] [Failure instance: Traceback: <type 'exceptions.ValueError'>: No JSON object could be decoded
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1076:gotResult
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1063:_inlineCallbacks
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:361:callback
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:455:_startRunCallbacks
--- <exception caught here> ---
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:542:_runCallbacks
pool.py:309:selectsharesResponse
pool.py:250:eclipsemc_sharesResponse
/usr/lib/python2.7/json/__init__.py:326:loads
/usr/lib/python2.7/json/decoder.py:360:decode
/usr/lib/python2.7/json/decoder.py:378:raw_decode
]


I think this is caused by the fact that eclipse mining website https://eclipsemc.com/ (https://eclipsemc.com/) is not currently working 100%, so no API data is currently available from them. Bithopper sees this and is reporting it as an API error; expected behavior I would say.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: roos on July 13, 2011, 03:32:11 PM
ah, ofcourse. :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: neptop on July 13, 2011, 04:10:05 PM
Instead of or in addition to --disbale what about just evaluating the existence of username and/or password. If it doesn't exist ignore it. 


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 13, 2011, 06:00:37 PM
I think that would make it pretty easy for some of us that just play around with python to add a custom pool into the rotation.
It's the same difficulty as now, only that you have to write the function(s) in pool.py, not in a seperate file.

There's not much to do anyways: A sharesResponse function, a entry in the dictionary and the user/pass info.

I am writing one for triplemining right now, the only problem is that I need to load their stats-page and manually scrape it (with beautiful soup it would be easier but that adds another library - I'll try to do it with some regex kung-fu) instead of having it in json. That can all go in the sharesResponse though, so no big deal.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zybron on July 13, 2011, 06:32:15 PM
I actually have a sharesResponse definition for triplemining. I used regex and I'm sure it would break if the layout changed at all, but it's functional. I'll post the code when I get home.

The main point for refactoring the code is that changes in the main pool.py routines wouldn't require merging those changes with my own changes. Maybe I'll see if I can do some of that myself and do a proper fork.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 13, 2011, 06:46:44 PM
I guess I am faster with my code! :P

in pools.py:
Code:
@@ -9,6 +9,7 @@ import sys
 import exceptions
 import optparse
 import time
+import re
 
 from twisted.web import server, resource
 from client import Agent
@@ -68,7 +69,11 @@ servers = {
         'bitp':{'shares': default_shares, 'name': 'bitp.it',
            'mine_address': 'pool.bitp.it:8334', 'user': bitp_user,
            'pass': bitp_pass, 'lag': False, 'LP': None,
-            'api_address':'https://pool.bitp.it/api/pool'}
+            'api_address':'https://pool.bitp.it/api/pool'},
+        'triplemining':{'shares': default_shares, 'name': 'triplemining.com',
+           'mine_address': 'eu.triplemining.com:8344', 'user': triplemining_user,
+           'pass': triplemining_pass, 'lag': False, 'LP': None,
+            'api_address':'https://www.triplemining.com/stats'}
         }
 
 current_server = 'btcg'
@@ -289,6 +294,14 @@ def bitclockers_sharesResponse(response):
     servers['bitclockers']['shares'] = round_shares
     log_dbg( 'bitclockers :' + str(round_shares))
 
+def triplemining_sharesResponse(response):
+    global servers
+    statpage = response
+    shares = re.search(r"<td>[0-9]*</td>", statpage).group(0)[4:-5]
+    round_shares = int(shares)
+    servers['triplemining']['shares'] = round_shares
+    log_dbg( 'triplemining :' + str(round_shares))
+
 def errsharesResponse(error, args):
     log_msg('Error in pool api for ' + str(args))
     log_msg(str(error))
@@ -305,7 +318,8 @@ def selectsharesResponse(response, args):
         'btcg':btcguild_sharesResponse,
         'eclipsemc':eclipsemc_sharesResponse,
         'miningmainframe':mmf_sharesResponse,
-        'bitp':bitp_sharesResponse}
+        'bitp':bitp_sharesResponse,
+        'triplemining':triplemining_sharesResponse}
     func_map[args](response)
     server_update()
and you need a triplemining_user and a triplemining_pass of course in the passwords file.

Th regex currently just takes the first number in a <td> tag which luckily is the current shares number. A bit more safe would be to check for the "MINING" line and then take the next number or so... however: It works for the time being!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 13, 2011, 07:10:01 PM
1) Arsbitcoin as the second backup?
Sweet. I'll add it.

EDIT: The website is broken and I can't login. So I haven't added it. Will try later on a windows machine.

2) Refactor code?
Yeah. I want to do it. I was going to move everything thats not explicitly pool related out of pool.py and into bithopper.py and lp.py

3) Pool share count?
I can reenable it.

4) dumping the stats to a file?
Yeah I was going to try and make an sqlite database and then well LP errors and crazy cycling.

EDIT: I added it as --statsdump

5) Triplemining?
Well it seems like a little bit of a ponzi scheme. I have no issues hopping them however.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zybron on July 13, 2011, 08:23:19 PM
I guess I am faster with my code! :P

Yep, but good to see we used the same methods.  ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 13, 2011, 08:45:09 PM
Can anybody give an estimate on what % increase they are seeing in revenue through using this tool?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 14, 2011, 12:05:20 AM
Well in terms of revenue it should mathematically be 28% more if you are hopping all the time. Earlier someone said they got ~20% more. At the worst case you'll get the same revenue you'd get normally and be stuck mining at eligius all day.

Stats are slowly in the process of going up. There is a stat dump file which records shares, difficulty, and server.

I originally wanted the stats to be integrated into the server but I might just write a program which allows you to enter you rewards from each server and calculates its efficiency.

EDIT: I did some quick calculations on btcguild and I have 9362 shares. I expected to get 0.299 btc for those shares. I got 0.384 for those shares. So I got about 28% more that I should have. Which is actually pretty amazing.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 14, 2011, 12:22:30 AM
How is efficiency calculated? I was under the impression that one should expect to get:

(Payout per block / difficulty) * number of shares submitted     

As difficulty is the average number of shares that are needed to solve a block so each share should be worth 50BTC / 1,564,057 = 0.000031968BTC per share? Please correct me if I'm wrong.

If that right then I would guess efficiency is how much you get over that expected amount?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 14, 2011, 12:24:51 AM
Efficiency can mean a number of things. A lot of people use it as hashes/getwork request.

In terms of payouts yes. Expected payout = shares/difficulty * 50 for normal mining. Payout per share = 50/difficulty.

I would probably just display the efficiency as actual/estimated * 100.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 14, 2011, 12:38:38 AM
Can anybody give an estimate on what % increase they are seeing in revenue through using this tool?
I got a crazy 200% increase as I hopped in on a very lucky round yesterday that gave nearly a day's earning within an hour or so...

I'd need more stats to give a definite answer though, I currently just slapped together a bit in excel/google spreadsheets but then gave up since it's useless after the next difficulty change anyways to read directly from APIs and dumping stats seems already to be implemented.

(Edit: @c00w: Of course feel free to include my code for triplemining, I just don't have a github account and am not that used to git anyways, so I just posted a diff instead of making a proper pull request)

Edit2: triplemining is not a ponzi scheme, it is a 1 level pyramid scheme with actually no gains for the operator - so not much better/worse than any other referral thingie out there. the other 1% that is distributed via a "lottery" is just increasing variance a bit... In the end you can just mine solo there without referring ppl and have 1% fees (+ potentially a long time until you get that other 1% back) or maybe even create 2 accounts (1 referred by the other) and gain back a little bit of this 1%. The only thing thats not cool imho is the spam it produced lately, other than that it's a solid proportional pool just waiting to be hopped! :D
Writing this stuff is btw. really easy - jsut tell me/us a few more pools and I'll try to add them.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 14, 2011, 03:10:13 AM
OK so maybe I'm just too impatient but --statsdump creates an empty file and hasn't populated anything yet. How often does this file get written to?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 14, 2011, 03:16:23 AM
Do you have an plan for what will be logged? I have a suggestion: It would be good to have logged the number of shares sent to which pool, as well as which worker completed the work (maybe log the username of the worker that connected to the proxy with each share) to help with troubleshooting and statistics.

Log for each share:
Timestamp, Pool, Worker Name, pool round shares as per api at the time share was sent, difficulty

As for the hopping aspect log:
Timestamp, pool hopped to, pool share count

A log to a text file or two would be great for now, just so we can get it into a spreadsheet or parse it somehow with a different program.

Thats what I'd like to see, any other info that should be logged?

EDIT: Maybe for each share also record what block number we were on at the time, although now that I think about it every share will end up being for a different block then when it was submitted...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 14, 2011, 03:34:59 AM
Hi,

Statsdump is a sort of median step. It had a bug which should be fixed. On server change it dumps shares, server, and difficulty.

I'm trying to rig something up with btcguild. Then mtred then we'll see.
EDIT: btcguild rigged. Add your api key to passwords.py or you will get my stats.
-c00w


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 14, 2011, 05:35:26 AM
It looks like bitclockers is using a payment scheme based on hashing rate not number of shares. I'm disabling it for now. And I got its efficiency statistics written.

EDIT: bitp is coded as well.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: jkminkov on July 14, 2011, 07:18:46 AM
It looks like bitclockers is using a payment scheme based on hashing rate not number of shares. I'm disabling it for now. And I got its efficiency statistics written.

it's proportional scheme, # shares = hash rate


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 14, 2011, 07:20:47 AM
Its hash rate when the block is found. And my efficiency is about 76%. If yours is higher or you want to use it go right ahead. I'm disabling it because I'd rather mine on eligius.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: roos on July 14, 2011, 07:26:02 AM
new pool.py exits without any output


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 14, 2011, 07:42:42 AM
new pool.py exits without any output

Run python bitHopper.py.

Pool.py is now only for the pool functions.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: roos on July 14, 2011, 08:02:35 AM
new pool.py exits without any output

Run python bitHopper.py.

Pool.py is now only for the pool functions.


Well, i might be 100% ignorant, but i cant find bitHopper.py in the git.

Edit: found it now, stupid cache


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: nob on July 14, 2011, 08:17:37 AM
another question:

i'm using bithopper for some days and never mined on bitcoins.lc

is this right? or a bug?

looks kinda weird to me


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: koopa on July 14, 2011, 10:37:29 AM
Thanks for the latest version c00w - just updated to it. However, I come bearing errors ;D

When bithopper attempts to jump to BTC Guild , the connection seems flaky at best, usually the following error is reported just before the connection dies and bithopper switches to another pool:

Code:
[11:18:54] LP triggered from server btcg
Unhandled error in Deferred:
Unhandled Error
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 1076, in gotResult
    _inlineCallbacks(r, g, deferred)
  File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 1020, in _inlineCallbacks
    result = g.send(result)
  File "C:\path\to\bithopper\c00w-bitHopper-8324470\work.py", line 66, in jsonrpc_lpcall
    d = update(body)
  File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 1141, in unwindGenerator
    return _inlineCallbacks(None, f(*args, **kwargs), Deferred())
--- <exception caught here> ---
  File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 1020, in _inlineCallbacks
    result = g.send(result)
  File "C:\path\to\bithopper\c00w-bitHopper-8324470\lp.py", line 25, in update_lp
    except ResponseFailed:
exceptions.NameError: global name 'ResponseFailed' is not defined
[11:18:59] RPC request [] submitted to BTC Guild
[11:18:59] RPC request [] submitted to BTC Guild
Caught, jsonrpc_call insides
TCP connection timed out: 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond..
[11:19:02] Server change to mtred, telling client with LP
[11:19:03] LP triggered serving miner
[11:19:03] LP triggered serving miner
[11:19:03] LP triggered serving miner
[11:19:03] LP triggered serving miner
[11:19:03] LP Call eu.mtred.com: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, jsonrpc_call insides
TCP connection timed out: 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond..
[11:19:14] RPC request [] submitted to mtred

Could bithopper be triggering some sort of flood protection over at BTC Guild? Is there a way around it?

Cheers.

*Edit - LP errors are cropping up on other pools, connection to BTC Guild seems a little more stable now.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 14, 2011, 10:49:53 AM
@c00w

just installed most recent from git. Thx for stats!

I've been trying to add ozco.in I've done it successfully previously. Now bitHopper reports the round shares for ozco.in but wont change over to it when it has the fewest. Is there something in the new bitHopper I have to change?

tia


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: phelix on July 14, 2011, 10:51:01 AM
Well in terms of revenue it should mathematically be 28% more if you are hopping all the time. Earlier someone said they got ~20% more. At the worst case you'll get the same revenue you'd get normally and be stuck mining at eligius all day.

Stats are slowly in the process of going up. There is a stat dump file which records shares, difficulty, and server.

I originally wanted the stats to be integrated into the server but I might just write a program which allows you to enter you rewards from each server and calculates its efficiency.

EDIT: I did some quick calculations on btcguild and I have 9362 shares. I expected to get 0.299 btc for those shares. I got 0.384 for those shares. So I got about 28% more that I should have. Which is actually pretty amazing.

I cross posted this over on the btcguild thread.

http://arcade-junkies.com/wp-content/uploads/2008/05/fight.jpg    :P   ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 14, 2011, 11:15:50 AM
LP isn't working with the new cgminer.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 14, 2011, 11:26:37 AM
I've been trying to add ozco.in I've done it successfully previously. Now bitHopper reports the round shares for ozco.in but wont change over to it when it has the fewest. Is there something in the new bitHopper I have to change?

tia

Show/share your code, otherwise it's a bit hard to tell where you are missing something.

Its hash rate when the block is found. And my efficiency is about 76%. If yours is higher or you want to use it go right ahead. I'm disabling it because I'd rather mine on eligius.
That means they use a PPLNM system (pay per last n minutes). Interesting, but as far as I can see quite hopping proof. It increases variance though, so let's see how thir users react... ;)
Disabling it is the right choice here, the pool can't be hopped that way.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 14, 2011, 11:27:21 AM
hey ppl, if you want pretty stats and pool fail-over protection I recommend you install a proxy (https://github.com/cdhowie/Bitcoin-mining-proxy) Have been running proxy-bithopper setup for 48 hours with no issues. With the proxy in between you can have your friends help you and hop together :)  Thanks c00w for making a great script. Now my miners never idle.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kripz on July 14, 2011, 11:35:34 AM
those 2 projects should jsut get together :D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 14, 2011, 11:42:03 AM

Show/share your code, otherwise it's a bit hard to tell where you are missing something.


Thanks for the response, Sukrim. I didn't post the code because it ran well in yesterday's version. I'm just following on from the existing code and making a change based on the api. The code goes where the other relevant lines are (i'm sure you recognise the stanzas - no line numbers, I'm doing this out of notepad, sorry.)

passwords.py:
Code:
ozcoin_user = 'user.0'
ozcoin_pass = 'pass.0'

pool.py:

Code:
'ozcoin':{'shares': default_shares, 'name': 'ozcoin',
            'mine_address': 'ozco.in:8332', 'user': ozcoin_user,
            'pass': ozcoin_pass, 'lag': False, 'LP': None,
            'api_address':'https://ozco.in/api.php', 'role':'info'},

.....



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

.....

'ozcoin':ozcoin_sharesResponse,


 This works fine in yesterdays 'hopper, but with with the further split today in bitHopper.py from pool.py I think I've missed something new. I can't see any reference to pool names in bitHopper.py

Any ideas, mate?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 14, 2011, 11:44:17 AM

Show/share your code, otherwise it's a bit hard to tell where you are missing something.


Thanks for the response, Sukrim. I didn't post the code because it ran well in yesterday's version. I'm just following on from the existing code and making a change based on the api. The code goes where the other relevant lines are (i'm sure you recognise the stanzas - no line numbers, I'm doing this out of notepad, sorry.)

passwords.py:
Code:
ozcoin_user = 'user.0'
ozcoin_pass = 'pass.0'

pool.py:

Code:
'ozcoin':{'shares': default_shares, 'name': 'ozcoin',
            'mine_address': 'ozco.in:8332', 'user': ozcoin_user,
            'pass': ozcoin_pass, 'lag': False, 'LP': None,
            'api_address':'https://ozco.in/api.php', 'role':'info'},

.....



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

.....

'ozcoin':ozcoin_sharesResponse,


 This works fine in yesterdays 'hopper, but with with the further split today in bitHopper.py from pool.py I think I've missed something new. I can't see any reference to pool names in bitHopper.py

Any ideas, mate?

role needs to be 'mine'


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 14, 2011, 11:46:04 AM
those 2 projects should jsut get together :D
Yeah because php and Python are the same language... NOT! :P

About Ozcoin:
try it with 'role':'mine' instead of info... :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 14, 2011, 11:54:56 AM
Its hash rate when the block is found. And my efficiency is about 76%. If yours is higher or you want to use it go right ahead. I'm disabling it because I'd rather mine on eligius.

They still claim proportional on the forums. 321 shares @ 853012 shares in round at 0.5% fee comes out to 0.01862752 while the dashboard is reporting ~0.01862784. Sounds about right. Though not sure about the bad efficiency.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 14, 2011, 12:05:10 PM
Thanks Sukrim and OCedHrt - you just saved me hours on eligius - not that that's bad thing, just not exciting. I owe you both.

btw, why use two proxies?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 14, 2011, 12:12:51 PM
Its hash rate when the block is found. And my efficiency is about 76%. If yours is higher or you want to use it go right ahead. I'm disabling it because I'd rather mine on eligius.

They still claim proportional on the forums. 321 shares @ 853012 shares in round at 0.5% fee comes out to 0.01862752 while the dashboard is reporting ~0.01862784. Sounds about right. Though not sure about the bad efficiency.
I have still 115 MH/s displayed there for the last 15 minutes, though my miner was not even online in the last few hours. I think there's something broken on their end... We'll see after this round if we still get paid or not (if yes --> prop, if not --> PPL15M)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 14, 2011, 12:19:00 PM
Its hash rate when the block is found. And my efficiency is about 76%. If yours is higher or you want to use it go right ahead. I'm disabling it because I'd rather mine on eligius.

They still claim proportional on the forums. 321 shares @ 853012 shares in round at 0.5% fee comes out to 0.01862752 while the dashboard is reporting ~0.01862784. Sounds about right. Though not sure about the bad efficiency.
I have still 115 MH/s displayed there for the last 15 minutes, though my miner was not even online in the last few hours. I think there's something broken on their end... We'll see after this round if we still get paid or not (if yes --> prop, if not --> PPL15M)

It's definitely prop, but they have really bad luck. Do that math on their block statistics.

A total of 22774221 shares for the last 13 blocks. That's 0.00002854/share. Or 1751863 shares/block. And 48428226 for the last 25 blocks. That's even worse at 1937129 shares/block.

Either really bad luck or someone is share stuffing/block stealing. This is compared to 29438078 shares for the last 25 blocks at mineco - coming out to 1177523 shares/block.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 14, 2011, 12:21:56 PM
Haha, I know itīs a little dumb (running 2 proxys) but every one has itīs pros and cons. With the php proxy in between bithopper and miner can have nice graphs and stats without bugginī c00w to implement it. Have various friends connect to me and hop them on the same pool I am working thanks to bithopper and share rewards after counting the shares in a adjustable time-frame. If hopper fails for some reason (which happen allot when something is hours new creation) have all my workers mine for a backup pool till a I see what happened or restart bithopper.

Btw, would like an option to shutdown nicely bithopper that passes done work and stop getting new one (donīt really like brute force method ctrl-c )


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 14, 2011, 12:29:41 PM
Thanks Sukrim and OCedHrt - you just saved me hours on eligius - not that that's bad thing, just not exciting. I owe you both.
A pleasure! ;)

ozcoin seems really hot atm, so thanks for sharing that code! They also already have ~80 GH/s, so not too bad (one might get "stuck" if we include very tiny pools and the higher chance of getting scammed there is not in the calculation... ::))


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 14, 2011, 12:32:25 PM
Thanks Sukrim and OCedHrt - you just saved me hours on eligius - not that that's bad thing, just not exciting. I owe you both.
A pleasure! ;)

ozcoin seems really hot atm, so thanks for sharing that code! They also already have ~80 GH/s, so not too bad (one might get "stuck" if we include very tiny pools and the higher chance of getting scammed there is not in the calculation... ::))

Let me give ozcoin a try as well, since stuck on eligius right now.

I re-enabled bitclockers but re-adjusted their share count for their crappy luck (shares / (0.78 / 1.28)) or something like that.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 14, 2011, 12:40:25 PM
mind-blowing thought... In an not very far future the pool operators will be asking bithopper rotation to increase the chances finding a block a little bit faster :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zybron on July 14, 2011, 12:55:03 PM
Just saw this error pop up while watching output:

Code:
Unhandled error in Deferred:
Unhandled Error
Traceback (most recent call last):
  File "d:\python27\lib\site-packages\twisted\internet\defer.py", line 1076, in
gotResult
    _inlineCallbacks(r, g, deferred)
  File "d:\python27\lib\site-packages\twisted\internet\defer.py", line 1020, in
_inlineCallbacks
    result = g.send(result)
  File "D:\Bithopper\work.py", line 66, in jsonrpc_lpcall
    d = update(body)
  File "d:\python27\lib\site-packages\twisted\internet\defer.py", line 1141, in
unwindGenerator
    return _inlineCallbacks(None, f(*args, **kwargs), Deferred())
--- <exception caught here> ---
  File "d:\python27\lib\site-packages\twisted\internet\defer.py", line 1020, in
_inlineCallbacks
    result = g.send(result)
  File "D:\Bithopper\lp.py", line 25, in update_lp
    except ResponseFailed:
exceptions.NameError: global name 'ResponseFailed' is not defined


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 01:46:10 PM
Does anyone know why im getting these API errors for bitclockers/bitpit ?


Code:
Error in user api for bitp
"[Failure instance: Traceback: <type 'exceptions.ZeroDivisionError'>: float division by zero\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1076:gotResult\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1063:_inlineCallbacks\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:361:callback\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:455:_startRunCallbacks\n--- <exception caught here> ---\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:542:_runCallbacks\n/home/miner1/bitHopper/stats.py:65:selectsharesResponse\n/home/miner1/bitHopper/stats.py:55:parse_bitp\n]"

Code:
"[Failure instance: Traceback: <type 'exceptions.ZeroDivisionError'>: float division by zero\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1076:gotResult\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1063:_inlineCallbacks\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:361:callback\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:455:_startRunCallbacks\n--- <exception caught here> ---\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:542:_runCallbacks\n/home/miner1/bitHopper/stats.py:65:selectsharesResponse\n/home/miner1/bitHopper/stats.py:39:parse_bitclockers\n]"


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 14, 2011, 01:52:28 PM
I get error in my api for bitclockers and same for btcguild.. tripple checked the api..


and is there anyway I can copy the the output I see in my command prompt window in windows? Or output the errors to a text file so I can be more concise?

says something about a divide by zero error.. running python 2.7.. error message  seems to be coming from twisted

edit: thanks koopa


Code:
[09:57:14] mining.mainframe.nl :3661888
[09:57:14] Server change to eligius, telling client with LP
[09:57:15] mtred :1467948
[09:57:16] bitclockers :1149461
[09:57:16] Error in user api for bitclockers
"[Failure instance: Traceback: <type 'exceptions.ZeroDivisionError'>: float divi
sion by zero\nD:\\Python27\\lib\\site-packages\\twisted\\internet\\defer.py:1076
:gotResult\nD:\\Python27\\lib\\site-packages\\twisted\\internet\\defer.py:1063:_
inlineCallbacks\nD:\\Python27\\lib\\site-packages\\twisted\\internet\\defer.py:3
61:callback\nD:\\Python27\\lib\\site-packages\\twisted\\internet\\defer.py:455:_
startRunCallbacks\n--- <exception caught here> ---\nD:\\Python27\\lib\\site-pack
ages\\twisted\\internet\\defer.py:542:_runCallbacks\nD:\\Users\\joulesbeef\\Down
loads\\c00w-bitHopper-8324470\\c00w-bitHopper-8324470\\stats.py:65:selectsharesR
esponse\nD:\\Users\\joulesbeef\\Downloads\\c00w-bitHopper-8324470\\c00w-bitHoppe
r-8324470\\stats.py:39:parse_bitclockers\n]"
[09:57:16] bitp.it efficiency: 501.717153311%
[09:57:16] pool.bitp.it :1086776
[09:57:16] Error in user api for btcg
"[Failure instance: Traceback: <type 'exceptions.ZeroDivisionError'>: float divi
sion by zero\nD:\\Python27\\lib\\site-packages\\twisted\\internet\\defer.py:1076
:gotResult\nD:\\Python27\\lib\\site-packages\\twisted\\internet\\defer.py:1063:_
inlineCallbacks\nD:\\Python27\\lib\\site-packages\\twisted\\internet\\defer.py:3
61:callback\nD:\\Python27\\lib\\site-packages\\twisted\\internet\\defer.py:455:_
startRunCallbacks\n--- <exception caught here> ---\nD:\\Python27\\lib\\site-pack
ages\\twisted\\internet\\defer.py:542:_runCallbacks\nD:\\Users\\joulesbeef\\Down
loads\\c00w-bitHopper-8324470\\c00w-bitHopper-8324470\\stats.py:65:selectsharesR
esponse\nD:\\Users\\joulesbeef\\Downloads\\c00w-bitHopper-8324470\\c00w-bitHoppe
r-8324470\\stats.py:23:parse_btcguild\n]"
[09:57:16] mineco :236436
[09:57:16] btcguild :468482
[09:57:16] Server change to btcg, telling client with LP
[09:57:17] eclipsemc :3709664
[09:57:21] bitcoin.lc :4486079


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: koopa on July 14, 2011, 01:56:26 PM
I get error in my api for bitclockers and same for btcguild.. tripple checked the api..


and is there anyway I can copy the the output I see in my command prompt window in windows? Or output the errors to a text file so I can be more concise?

To copy output from cmd window.. right click the top of the winodw -> Edit -> Mark.

Mark the text you wish to copy.

Right click the top of the winodw -> Edit -> Copy.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 14, 2011, 02:01:56 PM
Efficiency is kinda neat, but

Quote
15:57:40] btcguild efficiency: 873998.638431%

sounds a little bit off... ;)

Reason:
You only take into account the current difficulty. With this I really would be the king of all hoppers... but as I mined in the past already quite a bit (I'm one of the first miners there) this screws the results "a bit".


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: callmeivan on July 14, 2011, 02:03:07 PM
mind-blowing thought... In an not very far future the pool operators will be asking bithopper rotation to increase the chances finding a block a little bit faster :)

mind-blowing thought... In an not very far future small pool operators will have lost all their users to the biggest pools out there were hopping is either not possible or irrelevant.

You guys walk in and raid little pools of existing users and "steal" part of their profits.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 14, 2011, 02:05:14 PM
Efficiency is kinda neat, but

Quote
15:57:40] btcguild efficiency: 873998.638431%

sounds a little bit off... ;)

Reason:
You only take into account the current difficulty. With this I really would be the king of all hoppers... but as I mined in the past already quite a bit (I'm one of the first miners there) this screws the results "a bit".

Not just that, btcguild lost all past share count after the last DDOS. At least for me anyways.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 14, 2011, 02:06:41 PM
You guys walk in and raid little pools of existing users and "steal" part of their profits.
Uhm no...

Whoever is stupid enough to mine 24/7 in a proportional pool deserves it. AND whoever sets up a proportional pool also deserves being hopped. There are at least 2 guaranteed safe hopping proof payout methods out there with 0 risk for the operator and other miners and the same or similar variance for miners.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: koopa on July 14, 2011, 02:17:07 PM
You guys walk in and raid little pools of existing users and "steal" part of their profits.
Uhm no...

Whoever is stupid enough to mine 24/7 in a proportional pool deserves it. AND whoever sets up a proportional pool also deserves being hopped. There are at least 2 guaranteed safe hopping proof payout methods out there with 0 risk for the operator and other miners and the same or similar variance for miners.

+1. Bithopper was set up in order to help these proportional pools wise up to the fact and switch over to fairer methods. Before proxy's like Bithopper were publicly available hopping still occurred, just the people who were doing it weren't telling you.

We're actually helping the bitcoin community over here... Hopping is helping shall we say!  ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: callmeivan on July 14, 2011, 02:31:35 PM
You guys walk in and raid little pools of existing users and "steal" part of their profits.
Uhm no...

Whoever is stupid enough to mine 24/7 in a proportional pool deserves it. AND whoever sets up a proportional pool also deserves being hopped. There are at least 2 guaranteed safe hopping proof payout methods out there with 0 risk for the operator and other miners and the same or similar variance for miners.

Look! There are people out in the streets without any guns. They are stupid to run around 24/7 without protection, they deserve to be robbed.  :D

You guys walk in and raid little pools of existing users and "steal" part of their profits.
Uhm no...

Whoever is stupid enough to mine 24/7 in a proportional pool deserves it. AND whoever sets up a proportional pool also deserves being hopped. There are at least 2 guaranteed safe hopping proof payout methods out there with 0 risk for the operator and other miners and the same or similar variance for miners.

+1. Bithopper was set up in order to help these proportional pools wise up to the fact and switch over to fairer methods. Before proxy's like Bithopper were publicly available hopping still occurred, just the people who were doing it weren't telling you.

We're actually helping the bitcoin community over here... Hopping is helping shall we say!  ;D

It is quite different to have a few smart people figure out ways to gain the system compared to a publicly available refined tool which enables a large part of the community to "help pools switch over to fairer methods".


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 02:41:49 PM
Uh oh when in trouble just phone D.W ... DARKWING DUCK.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Rino on July 14, 2011, 02:43:23 PM
It is quite different to have a few smart people figure out ways to gain the system compared to a publicly available refined tool which enables a large part of the community to "help pools switch over to fairer methods".
There was very noticeable amount of hopping miners for pretty long time now, they were clearly seen on eligus graph weeks ago.
And i wouldn't call this tool "refined" in any sense except maybe it doesn't crash.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 14, 2011, 03:03:01 PM
Look! There are people out in the streets without any guns. They are stupid to run around 24/7 without protection, they deserve to be robbed.  :D
If you think a gun protects you, you might also mine proportionally! :P

The publicly available refined tool which enables a large part of the community to "help pools switch over to fairer methods" already exists in the form of hopping-proof payout algorithms. For about half a year now. If (new!) pools like triplemining choose to still proportional payouts, this is knowing that it's users can and will be exploited (some even write this on their main page).


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 14, 2011, 03:04:57 PM
Quote
Look! There are people out in the streets without any guns. They are stupid to run around 24/7 without protection, they deserve to be robbed.


Um not even the same. Look what if I took Us dollars and traded them for various currencies around the world and then back into dollars and got a proffit. You held onto your dollars 24/7 and are pissed I made money off mine.

Quote
It is quite different to have a few smart people figure out ways to gain the system compared to a publicly available refined tool which enables a large part of the community to "help pools switch over to fairer methods".


not really, you are just upset at scale. If you consider it cheating than it is cheating weather one does it or 20. It doesnt matter if only a few smart people do it, it is still cheating.  Pool operators dont give a shit, it doesnt hurt them. So nothing will change unless you actually let people understand this is going on.

Plus I find it hard to think of it as cheating when their isnt even the slightest of obstacles to get around. Not even a user agreement that says I cant do this. Kinda hard to claim I am breaking the rules when you cant even point to the rule I broke.

What If i found a way to edit the miner software and add say 3% of speed.. none of you have that speed increase.. would that be cheating? Shouldnt we all be forced to use the same mining software?



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 14, 2011, 03:29:52 PM
Plus I find it hard to think of it as cheating when their isnt even the slightest of obstacles to get around. Not even a user agreement that says I cant do this. Kinda hard to claim I am breaking the rules when you cant even point to the rule I broke.

What If i found a way to edit the miner software and add say 3% of speed.. none of you have that speed increase.. would that be cheating? Shouldnt we all be forced to use the same mining software?

+1

Also joulesbeef: Greatest Avatar Ever +1111111


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 03:32:42 PM
Im getting pretty high rejected rates using bithopper, is this normal?

between 8-15% rejected.

Also another issue it seems to jump to silly pools while still below the 40-50% market of a new block on another pool.

Example: I am on btcguild block thats still new around 100k shares , it then jumps to bitpit which is over 1.5mil shares.

Am I missing something ? :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: koopa on July 14, 2011, 03:33:49 PM
It is quite different to have a few smart people figure out ways to gain the system compared to a publicly available refined tool which enables a large part of the community to "help pools switch over to fairer methods".

Well think about this then...

One "smart" person has 500+ GH/s at their disposal and uses their own coded pool hopper. Then 500 1GH/s "average Joe's" turn up and start pool hopping using Bithopper.

IMO that one "smart" person is doing more damage. At least with Bithopper the pools know it is happening > their users know it is happening > users get angry at pools for letting it happen > pools take appropriate measures to stop it from happening.

Hopping is helping ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: koopa on July 14, 2011, 03:36:12 PM
Im getting pretty high rejected rates using bithopper, is this normal?

between 8-15% rejected.

Yes, I was also getting around 10% rejected today. I think there is a problem with LP support in the recent bithopper build.

I have reverted to the previous version for now, I'm sure c00w will resolve this later.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 14, 2011, 03:39:53 PM
Does anyone know why im getting these API errors for bitclockers/bitpit ?


Code:
Error in user api for bitp
"[Failure instance: Traceback: <type 'exceptions.ZeroDivisionError'>: float division by zero\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1076:gotResult\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1063:_inlineCallbacks\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:361:callback\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:455:_startRunCallbacks\n--- <exception caught here> ---\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:542:_runCallbacks\n/home/miner1/bitHopper/stats.py:65:selectsharesResponse\n/home/miner1/bitHopper/stats.py:55:parse_bitp\n]"

Code:
"[Failure instance: Traceback: <type 'exceptions.ZeroDivisionError'>: float division by zero\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1076:gotResult\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1063:_inlineCallbacks\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:361:callback\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:455:_startRunCallbacks\n--- <exception caught here> ---\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:542:_runCallbacks\n/home/miner1/bitHopper/stats.py:65:selectsharesResponse\n/home/miner1/bitHopper/stats.py:39:parse_bitclockers\n]"

I'm getting the same thing....


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 03:44:46 PM
Well the log with floating error seems to be fixed with issue posted by ryo on the issues page.

Im mainly concerned with the other issues listed:

1. high stales/rejected.
2. randomly connecting to high share rounds on pools it shouldnt connect to.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: callmeivan on July 14, 2011, 03:50:36 PM
Look! There are people out in the streets without any guns. They are stupid to run around 24/7 without protection, they deserve to be robbed.  :D
If you think a gun protects you, you might also mine proportionally! :P

The publicly available refined tool which enables a large part of the community to "help pools switch over to fairer methods" already exists in the form of hopping-proof payout algorithms. For about half a year now. If (new!) pools like triplemining choose to still proportional payouts, this is knowing that it's users can and will be exploited (some even write this on their main page).

People dont seem to be able to grasp the hopping-proof payout structure - new pools are forced to offer the traditional system. Large enough pools can switch but might as well lose user.


Quote
Look! There are people out in the streets without any guns. They are stupid to run around 24/7 without protection, they deserve to be robbed.


Um not even the same. Look what if I took Us dollars and traded them for various currencies around the world and then back into dollars and got a proffit. You held onto your dollars 24/7 and are pissed I made money off mine.

Quote
It is quite different to have a few smart people figure out ways to gain the system compared to a publicly available refined tool which enables a large part of the community to "help pools switch over to fairer methods".


not really, you are just upset at scale. If you consider it cheating than it is cheating weather one does it or 20. It doesnt matter if only a few smart people do it, it is still cheating.  Pool operators dont give a shit, it doesnt hurt them. So nothing will change unless you actually let people understand this is going on.

Plus I find it hard to think of it as cheating when their isnt even the slightest of obstacles to get around. Not even a user agreement that says I cant do this. Kinda hard to claim I am breaking the rules when you cant even point to the rule I broke.

What If i found a way to edit the miner software and add say 3% of speed.. none of you have that speed increase.. would that be cheating? Shouldnt we all be forced to use the same mining software?

If you trade your dollars you also take a risk, i am fine with that.

I am upset about the fact that i am forced to either gain the system like you guys or switch to another pool with hopping measures in place.

If you find a way to increase the speed you could use it yourself and have little impact at all, sell it (again, little impact) or release it for free which wouldnt hurt anybody - word spreads fast and people would upgrade to your miner.

It is quite different to have a few smart people figure out ways to gain the system compared to a publicly available refined tool which enables a large part of the community to "help pools switch over to fairer methods".

Well think about this then...

One "smart" person has 500+ GH/s at their disposal and uses their own coded pool hopper. Then 500 1GH/s "average Joe's" turn up and start pool hopping using Bithopper.

IMO that one "smart" person is doing more damage. At least with Bithopper the pools know it is happening > their users know it is happening > users get angry at pools for letting it happen > pools take appropriate measures to stop it from happening.

Hopping is helping ;D

There is nobody with 500+ GH/s at their disposal. Most of the userbase consist of little hashing power/user.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 14, 2011, 03:52:03 PM
1. Can be also because of poor pool performance. If you try to manually connect to that pool and not through bitHopper, do your stales get less?

2. Is something I never experienced yet. Currently I'm mining away at ozco.in with:
[17:46:51] mining.mainframe.nl :3664244
[17:46:51] mineco :474659
[17:46:51] bitcoin.lc :5291446
[17:46:51] mtred :1915681
[17:46:51] triplemining :1046166
[17:46:51] bitclockers efficiency: xxx
[17:46:51] bitclockers :1404907
[17:46:51] bitp.it efficiency: xxx
[17:46:51] pool.bitp.it :1206567
[17:46:51] btcguild :600806
[17:46:52] btcguild efficiency: xxx
[17:46:52] eclipsemc :3799559
[17:46:52] ozcoin :358315

and it doesn't seem to have jumped anywhere. Do you use the latest version from github?

If you trade your dollars you also take a risk, i am fine with that.

I am upset about the fact that i am forced to either gain the system like you guys or switch to another pool with hopping measures in place.

If you find a way to increase the speed you could use it yourself and have little impact at all, sell it (again, little impact) or release it for free which wouldnt hurt anybody - word spreads fast and people would upgrade to your miner.
You would (if all other adopt this) increase the hash rate worldwide by 3%, thus you'd earn less than if you kept the tweak to yourself.

Pool hopping also has a risk of earning less in the short run (on long rounds you loose), pools switching payout systems, pool operators plainly stealing from you (which is REALLY easy by the way, look it up in the pools forum) etc.

If users are too stupid to be able to get a system like PPLNS (which is 100% like proportional, only that the definition of "round" doesn't start when a new block is found) or SMPPS (which is in the longer run just like PPS) then they also shouldn't complain if someone is smart enough to not mine full time in their pool if it pays off less and less over time.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 04:11:16 PM
1. Can be also because of poor pool performance. If you try to manually connect to that pool and not through bitHopper, do your stales get less?

2. Is something I never experienced yet. Currently I'm mining away at ozco.in with:
[17:46:51] mining.mainframe.nl :3664244
[17:46:51] mineco :474659
[17:46:51] bitcoin.lc :5291446
[17:46:51] mtred :1915681
[17:46:51] triplemining :1046166
[17:46:51] bitclockers efficiency: xxx
[17:46:51] bitclockers :1404907
[17:46:51] bitp.it efficiency: xxx
[17:46:51] pool.bitp.it :1206567
[17:46:51] btcguild :600806
[17:46:52] btcguild efficiency: xxx
[17:46:52] eclipsemc :3799559
[17:46:52] ozcoin :358315

and it doesn't seem to have jumped anywhere. Do you use the latest version from github?

If you trade your dollars you also take a risk, i am fine with that.

I am upset about the fact that i am forced to either gain the system like you guys or switch to another pool with hopping measures in place.

If you find a way to increase the speed you could use it yourself and have little impact at all, sell it (again, little impact) or release it for free which wouldnt hurt anybody - word spreads fast and people would upgrade to your miner.
You would (if all other adopt this) increase the hash rate worldwide by 3%, thus you'd earn less than if you kept the tweak to yourself.

Pool hopping also has a risk of earning less in the short run (on long rounds you loose), pools switching payout systems, pool operators plainly stealing from you (which is REALLY easy by the way, look it up in the pools forum) etc.

If users are too stupid to be able to get a system like PPLNS (which is 100% like proportional, only that the definition of "round" doesn't start when a new block is found) or SMPPS (which is in the longer run just like PPS) then they also shouldn't complain if someone is smart enough to not mine full time in their pool if it pays off less and less over time.

1. Yep without bithopper Im getting ~0.5% stales on btcguild, with bithopper it average out at 8% stales.

2. Im using the latest version , the hopping happens quite often then resets to proper lowest shares pool after ~2mins


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 14, 2011, 04:37:13 PM
There seems to be an edit on github a few minutes ago on the LP.py maybe c00w fixed it?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 14, 2011, 05:07:22 PM
Using phoenix and -u localhost:8337 I just get:


Unknown protocol:


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 14, 2011, 05:11:52 PM
Using phoenix and -u localhost:8337 I just get:


Unknown protocol:


Try throwing any credentials at it and see if it works


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 14, 2011, 05:26:00 PM
Weird... ozco.in reports 446976 shares but I seem to mine at eligius sometimes.

Also nothing was yet written to my stats file, maybe try to flush the writes every once in a while - or maybe I did something wrong...
Edit: no, just kill it with Ctrl+c and the stats magically appear. Seems like the writes don't get flushed to me.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 05:28:54 PM
Weird... ozco.in reports 446976 shares but I seem to mine at eligius sometimes.

Also nothing was yet written to my stats file, maybe try to flush the writes every once in a while - or maybe I did something wrong...
Edit: no, just kill it with Ctrl+c and the stats magically appear. Seems like the writes don't get flushed to me.

Same problem i have, jumping to eligius mainly and other times bitpit or whatever other higher than the lowest available share block available.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: gno on July 14, 2011, 05:29:43 PM
I must be missing something... I grabbed the latest git-  setup the accounts I have in password.py, commented out a couple of the pools in pools.py that I don't have accounts for and when I run it, I don't see any errors but it only seems to be mining to eligius.

This is what my run looks like:

Code:
[root@localhost c00w-bitHopper-8324470]# python bitHopper.py
[13:27:13] RPC request [] submitted to BTC Guild
[13:27:13] mtred :2319433
[13:27:13] Server change to eligius, telling client with LP
[13:27:13] pool.bitp.it :1315972
[13:27:13] btcguild :3773677
[13:27:13] RPC request [] submitted to eligius
[13:27:13] btcguild efficiency: 41.2121798097%
[13:27:13] LP Call su.mining.eligius.st:8337/LP
[13:27:13] bitp.it efficiency: 118.788564677%
[13:27:13] bitcoin.lc :5764834
[13:27:13] RPC request [] submitted to eligius
[13:27:15] RPC request [] submitted to eligius

... followed by ongoing eligius entries.

What am I missing?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 14, 2011, 05:51:08 PM
I must be missing something... I grabbed the latest git-  setup the accounts I have in password.py, commented out a couple of the pools in pools.py that I don't have accounts for and when I run it, I don't see any errors but it only seems to be mining to eligius.

This is what my run looks like:

Code:
[root@localhost c00w-bitHopper-8324470]# python bitHopper.py
[13:27:13] RPC request [] submitted to BTC Guild
[13:27:13] mtred :2319433
[13:27:13] Server change to eligius, telling client with LP
[13:27:13] pool.bitp.it :1315972
[13:27:13] btcguild :3773677
[13:27:13] RPC request [] submitted to eligius
[13:27:13] btcguild efficiency: 41.2121798097%
[13:27:13] LP Call su.mining.eligius.st:8337/LP
[13:27:13] bitp.it efficiency: 118.788564677%
[13:27:13] bitcoin.lc :5764834
[13:27:13] RPC request [] submitted to eligius
[13:27:15] RPC request [] submitted to eligius

... followed by ongoing eligius entries.

What am I missing?


I don't think you're missing anything. Same thing happens to me right now...grabbed the latest version of the git as of a few minutes ago and same thing.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 05:52:01 PM
I must be missing something... I grabbed the latest git-  setup the accounts I have in password.py, commented out a couple of the pools in pools.py that I don't have accounts for and when I run it, I don't see any errors but it only seems to be mining to eligius.

This is what my run looks like:

Code:
[root@localhost c00w-bitHopper-8324470]# python bitHopper.py
[13:27:13] RPC request [] submitted to BTC Guild
[13:27:13] mtred :2319433
[13:27:13] Server change to eligius, telling client with LP
[13:27:13] pool.bitp.it :1315972
[13:27:13] btcguild :3773677
[13:27:13] RPC request [] submitted to eligius
[13:27:13] btcguild efficiency: 41.2121798097%
[13:27:13] LP Call su.mining.eligius.st:8337/LP
[13:27:13] bitp.it efficiency: 118.788564677%
[13:27:13] bitcoin.lc :5764834
[13:27:13] RPC request [] submitted to eligius
[13:27:15] RPC request [] submitted to eligius

... followed by ongoing eligius entries.

What am I missing?


I don't think you're missing anything. Same thing happens to me right now...grabbed the latest version of the git as of a few minutes ago and same thing.

same here, must be the recent changes <20mins ago cow made, version just before that didnt do this.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 14, 2011, 05:55:27 PM
You're missing pools to hop into:
1 563 027.9961162 * 0.4 = 625 211.198

If all your pools have more than 625211 shares, there's no point in hopping anywhere but it's better to mine in a 0% PPS pool like eligius. (I still think it should rather be 0.435 though... ;) )

Currently it seems that only ozco.in is hot, so you need to wait until/if it gets added to git or add it yourself.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 05:57:04 PM
You're missing pools to hop into:
1 563 027.9961162 * 0.4 = 625 211.198

If all your pools have more than 625211 shares, there's no point in hopping anywhere but it's better to mine in a 0% PPS pool like eligius. (I still think it should rather be 0.435 though... ;) )

Currently it seems that only ozco.in is hot, so you need to wait until/if it gets added to git or add it yourself.

Ah ok that explains it. In mean time I changed it to 0.435 as you suggested ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 14, 2011, 06:04:47 PM
1) Where have you been?
For some reason my browser wasn't updating the forums so like 2 pages of posts showed up in 1 minute.

2) Lp Error?
I think they are ironed out now. And the code is less of a complete disaster.

3) ozco.in?
I'll add it. I just wasted two hours of my life trying to reset my bitcoins.lc account before they told me they banned it.

4) Lots of eligius?
Well it only hops onto pools as Sukrim said at shares < diff * .40.
I'm getting lots of arstechnica.

5) Why oh why did you rewrite the code and cause all these errors?
Because it makes it a lot cleaner to read the code and try and comprehend it.

6) Stats?
Yeah I added some basic ones. They are messed up in a number of ways including difficulty changes, old shares, old dropped shares, and plenty of other errors. I'm going to rewrite the system to use a sqlite database and we'll see whats up.

7) Database not another dependancy!
I'm going to make it strictly optional and try and rig it so it is only include if you pass a --stats command or something similar.

8)Connecting to pools with high share counts when it shouldn't?
If both the backups lag out it will jump on mining pools again with high share counts. Now that there are two backups it should do it less.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 06:15:58 PM
mmm still incredibly high stales.

Im using latest version and after LP and running on btcguild atm its between 12-17% stales , I think alot of the stales came from the LP new block but still if I run on btcguild directly with same defined server I get <1% gauranteed stales.

Is this related to bithopper or something you are working on to resolve?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 14, 2011, 06:23:10 PM
mmm still incredibly high stales.

Im using latest version and after LP and running on btcguild atm its between 12-17% stales , I think alot of the stales came from the LP new block but still if I run on btcguild directly with same defined server I get <1% gauranteed stales.

Is this related to bithopper or something you are working on to resolve?

I'm not sure. LP was screwed up until a recent commit due to the code reorganization. It should be fixed now.

Can you update to the latest version and if the issue is still apparent:
1) open an issue on github (or just repost here)
2) run bitHopper.py --debug and give me a link to the logs
3) Tell me what miner you are using so I can duplicate it on my test machine.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 14, 2011, 06:24:24 PM
OP can you change something on thread title or first post to node when you make a major code update :D

You mean everyone doesn't run git log!
Sure. I'll throw it in the first post When a big change is made. There shouldn't be too many more besides database integration.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 06:27:58 PM
Ok no --debug yet but can confirm atleast its LP related.

I am using phoenix 1.5 with phatk(same version i use directly giving <1% stales) but just for interest sake i used poclbm and poclbm with phatk, same issue with stales around LP.

Since I can clearly see its around LP it should be easy to replicate these stales for anyone , thus i dont think its specific to me that you would require a debug log just yet :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 14, 2011, 06:39:55 PM
Does anyone know why im getting these API errors for bitclockers/bitpit ?


Code:
Error in user api for bitp
"[Failure instance: Traceback: <type 'exceptions.ZeroDivisionError'>: float division by zero\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1076:gotResult\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1063:_inlineCallbacks\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:361:callback\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:455:_startRunCallbacks\n--- <exception caught here> ---\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:542:_runCallbacks\n/home/miner1/bitHopper/stats.py:65:selectsharesResponse\n/home/miner1/bitHopper/stats.py:55:parse_bitp\n]"

Code:
"[Failure instance: Traceback: <type 'exceptions.ZeroDivisionError'>: float division by zero\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1076:gotResult\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1063:_inlineCallbacks\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:361:callback\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:455:_startRunCallbacks\n--- <exception caught here> ---\n/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:542:_runCallbacks\n/home/miner1/bitHopper/stats.py:65:selectsharesResponse\n/home/miner1/bitHopper/stats.py:39:parse_bitclockers\n]"

I'm getting the same thing....

Because you have no submitted shares for them.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 14, 2011, 06:51:33 PM
3) ozco.in?
I'll add it. I just wasted two hours of my life trying to reset my bitcoins.lc account before they told me they banned it.

What did they ban your account for? With funds?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 14, 2011, 06:58:41 PM
1) account banning?
Pool Hopping. Go figure. I had some funds. I have no idea how much. I was trying to log in and check.

2) Errors in LP?
I think I fixed some. I might be using the wrong agent. Let me check. And a debug log or any log helps because then I can clearly see the error. And then I can try and check my logs for it. I have a flaky DNS resolver though so my reject rates are higher than they should be so sometimes I see errors and think it is because of that.

EDIT: And I used the wrong agent... So the latest revision has that fixed as well. Probably why LP wasn't working.

3) zero division errors?
Bad code on my part. Its fixed in the latest revision.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 14, 2011, 07:09:53 PM
Using phoenix and -u localhost:8337 I just get:


Unknown protocol:


Try throwing any credentials at it and see if it works

Doh, just forgot the http://.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 07:12:37 PM
1) account banning?
Pool Hopping. Go figure. I had some funds. I have no idea how much. I was trying to log in and check.

2) Errors in LP?
I think I fixed some. I might be using the wrong agent. Let me check. And a debug log or any log helps because then I can clearly see the error. And then I can try and check my logs for it. I have a flaky DNS resolver though so my reject rates are higher than they should be so sometimes I see errors and think it is because of that.

EDIT: And I used the wrong agent... So the latest revision has that fixed as well. Probably why LP wasn't working.

3) zero division errors?
Bad code on my part. Its fixed in the latest revision.

I think you nailed the problem here :) 0% stales and counting.

EDIT: may have spoken to early or it could just be ozco.in that is staled to shit. While mining on btcguild the stales remained at 0% then it switched over to ozco.in and stales went to 10%


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 14, 2011, 07:22:06 PM
is it possible for bitHopper to switch between pools very fast without producing stales?

if so, i think it could be better to decide pool target per submitted share:
one (simple) example for each client getwork request:

DIFF = 10000 (example)
btcguild =     1/100    = 0.01 (means btcguild has 100 shares right now)
bitpit =         1/3000  = 0.0003
bitclockers =  1/500    = 0.002
bitcoinslc =    1/10000 = 0.00001

BREAKEVEN = DIFF * 0.4 = 4000 (only switch between pools lower than break even)
RAND(0, (btcguild + bitpit + bitclockers))
0-0.01 -> btcguild
0.01-0.0103 -> bitpit
0.0103-0.0303 -> bitclockers

i want to implement this (and submit a pull request if it works of course). but i don't know if is feasible to switch that fast. i dont want to have much more stales


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 14, 2011, 07:34:59 PM
1) bithopper switching pools quickly?

Its is feasible. The lag is the network connection not the server. Stale shares should also be going down a lot hopefully since I ironed out a lot of LP bugs.

2) Random idea
I'm actually tempted to write the code to submit each share to every server... Seems like it'd make it possible to get more credit. But it would also probably increase stales a lot since some servers won't accept random shares but only the shares they gave you the getwork for.

4) High stales with oczo.in?
I think oczo.in is getting a little overloaded. Might be our fault


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 14, 2011, 07:44:58 PM
i just read point 2)

are you saing it would be possible to submit the same share to multiple pools????

i am pretty sure you must deliever a share where the getwork came from.

i'll try the idea to switch pools fast tonight. lets see... my python skills still lack


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 14, 2011, 07:53:08 PM
If a server accepted valid shares of other servers that would be a bug in the server code, not an intended feature. Something to try out, but not something worth doing in the long run.

What could be more interesting would be to prefetch getworks - so you always already have one available once your miner requests a new one instead of having internet delays at each new request.

I got some json decoding errors at btcguild btw., but they mine so fast that it's hard to really debug it...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 14, 2011, 07:54:41 PM
What could be more interesting would be to prefetch getworks - so you always already have one available once your miner requests a new one instead of having internet delays at each new request.

I think this is the job of a proper mining client.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 14, 2011, 08:00:03 PM
What could be more interesting would be to prefetch getworks - so you always already have one available once your miner requests a new one instead of having internet delays at each new request.

I think this is the job of a proper mining client.
A mining client is designed to only fetch from one pool. In this case it would be bitHopper. Especially if you want to switch pools fast, you could already fetch a getwork from the pool(s) you want to switch to and then serve this to the miner(s). The miner itself would always just stick to one pool (or maybe failover, like poclbm) unless you build bithopper as an actual plugin/patch for a miner... (which is not even that hard! ;) )

About that BTCGuild error:
2011-07-14 21:57:37+0200 [HTTPChannel,0,127.0.0.1] RPC request [] submitted to BTC Guild
2011-07-14 21:57:38+0200 [HTTP11ClientProtocol,client] Error in json decoding, Server probably down
2011-07-14 21:57:38+0200 [HTTP11ClientProtocol,client]
2011-07-14 21:57:38+0200 [HTTP11ClientProtocol,client] Server change to ozcoin, telling client with LP

not very descriptive unfortunately...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 14, 2011, 08:01:40 PM
1) Only mining eligius?
I disabled bitcoins.lc a while ago because they are banning pool hoppers.
Since none of the pools have sharecounts < difficulty * .40 it won't hop to any of them and uses the two backup pools: eligius and arstechnica.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 08:04:23 PM
4) High stales with oczo.in?
I think oczo.in is getting a little overloaded. Might be our fault

Yep, seems its ozco.in causing those 8-10% stales, new block on btcguild giving me normal ~0.5% stales.

I will keep monitoring and see over couple of blocks how stales progress across pools.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 14, 2011, 08:11:40 PM
I disabled bitcoins.lc a while ago because they are banning pool hoppers.

Why did you disable bitclockers though?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 14, 2011, 08:15:53 PM
Well, at least it doesn't seem they have automations in place for banning hoppers... it might be that you triggered something since most likely a few people mined with the default accounts - thus making you look like a botnet.

Bitclockers seem very fishy (abnormally "bad luck" with some wild claims their bitcoind is being hacked or something), and they claim to have a different payout system now.

Next on the possible features list: logging in on websites + "manually" paying out asap to make sure you don't loose money when/if being banned.

Edit:
Another possible pool would be x8s.de. Stats are openly available + live --> but only after a login.

Edit2:
MtRed just found a block - and just take a look at that sudden 100 GH/s hash rate increase! https://mtred.com/site/page/view/about.html


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 08:34:35 PM
Edit2:
MtRed just found a block - and just take a look at that sudden 100 GH/s hash rate increase! https://mtred.com/site/page/view/about.html

Fastest Bitcoin I made in a while ;) considering poolsize/my hashing rate and the low shares on that block.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 08:59:00 PM
Just a follow up, seems the stales is still the same, it evened out at 10% stales (was ~15% before your last fix) and doesnt seem to be a ozco.in issue.

I notice it actually on btcguild aswell with LP still, strange that no one else using bithopper is reporting this, unless they to lazy ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 14, 2011, 09:04:05 PM
Well, at least it doesn't seem they have automations in place for banning hoppers... it might be that you triggered something since most likely a few people mined with the default accounts - thus making you look like a botnet.

Bitclockers seem very fishy (abnormally "bad luck" with some wild claims their bitcoind is being hacked or something), and they claim to have a different payout system now.

Next on the possible features list: logging in on websites + "manually" paying out asap to make sure you don't loose money when/if being banned.

Edit:
Another possible pool would be x8s.de. Stats are openly available + live --> but only after a login.

Edit2:
MtRed just found a block - and just take a look at that sudden 100 GH/s hash rate increase! https://mtred.com/site/page/view/about.html

And the moment I mentioned their 1 month bad luck in the thread they now have good luck. Their bad luck starts on June 15.

Just a follow up, seems the stales is still the same, it evened out at 10% stales (was ~15% before your last fix) and doesnt seem to be a ozco.in issue.

I notice it actually on btcguild aswell with LP still, strange that no one else using bithopper is reporting this, unless they to lazy ;)

Mine isn't that high. I don't have stats since poclbm doesn't track it, but it's less than 10% for sure:

Code:
localhost:8337 14/07/2011 14:00:53, def52202, accepted
localhost:8337 14/07/2011 14:01:33, 8cd52f20, accepted
localhost:8337 14/07/2011 14:01:42, 9e7ada0c, accepted
localhost:8337 14/07/2011 14:01:44, 9b32622d, accepted
localhost:8337 14/07/2011 14:02:27, 54be5614, accepted
localhost:8337 14/07/2011 14:02:28, f26f6d65, accepted
localhost:8337 14/07/2011 14:02:29, 4ed9c523, accepted
localhost:8337 14/07/2011 14:02:31, 773171c4, accepted
localhost:8337 14/07/2011 14:02:34, f6a1ce11, accepted
localhost:8337 14/07/2011 14:02:50, 465e0050, accepted
localhost:8337 14/07/2011 14:03:03, 9e67fe05, accepted
localhost:8337 14/07/2011 14:03:15, a30828d9, accepted
localhost:8337 14/07/2011 14:03:16, 6d664135, accepted
localhost:8337 14/07/2011 14:03:28, 2b85be70, accepted
localhost:8337 14/07/2011 14:03:34, 1c11aac7, accepted
localhost:8337 14/07/2011 14:03:40, ccf82762, accepted
localhost:8337 14/07/2011 14:04:03, b5cfb474, accepted
localhost:8337 14/07/2011 14:04:12, 3c4f25cf, accepted
localhost:8337 14/07/2011 14:04:17, 85206078, accepted
localhost:8337 14/07/2011 14:04:40, 06f78bbd, accepted
localhost:8337 14/07/2011 14:04:55, 229beaf5, accepted
localhost:8337 14/07/2011 14:05:07, ae85dd8f, accepted
localhost:8337 14/07/2011 14:05:11, 635da02e, accepted
localhost:8337 14/07/2011 14:05:13, 646692dd, accepted
localhost:8337 289858 khash/s


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 14, 2011, 09:20:51 PM
1) Stale Share?
He's talking about stales not rejects.
I stopped bitHopper from changing servers with getworks that contain shares. That should help a bit. And  fixed a bunch of LP issues. I am still see some artificially high stale share counts. Let me play with it a bit. I don't know where they are coming from currently though.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: h2 on July 14, 2011, 09:21:37 PM
Just a follow up, seems the stales is still the same, it evened out at 10% stales (was ~15% before your last fix) and doesnt seem to be a ozco.in issue.

I notice it actually on btcguild aswell with LP still, strange that no one else using bithopper is reporting this, unless they to lazy ;)

I'm seeing the same (mostly on ozco.in, but now also on arsbitcoin)

:-/

edit: i'm talking about rejects ;) (i'm using phoenix btw.)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 09:24:21 PM
1) Stale Share?
He's talking about stales not rejects.
I stopped bitHopper from changing servers with getworks that contain shares. That should help a bit. And  fixed a bunch of LP issues. I am still see some artificially high stale share counts. Let me play with it a bit. I don't know where they are coming from currently though.

Rejects = stales , unless I missed some arbitrary details about how these 2 differ.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: jkminkov on July 14, 2011, 10:05:09 PM
5) Triplemining?
Well it seems like a little bit of a ponzi scheme. I have no issues hopping them however.

I have no issues hopping in your tripplemining minipool however :D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 14, 2011, 10:21:15 PM
Oh. Hmmm. My stale shares were quite high. But my rejects are at roughly oh 3.5%. And I'm having some network issues.

I thought most servers would accept stales but mark them as stales for you information.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 14, 2011, 10:41:00 PM
You just nailed the stale share problem c00w, itīs the DNS servers. I had the google ones (8.8.8.8 and 8.8.4.4) and changed to my provider dnsīs. Stale shares 5% from 25% in one hour, you rock :)

About the ethical problem I really think we are helping pools to build up shares a little faster at start and keep up with the other pools, like filling a bucket of water faster at start and slowly pouring at the end. The hopper method keeps us, the miners, informed too when a pool itīs attacked,DOSīed or down.

btw:  stale=rejected (same thing)  edit: not the same thing like I thought, sorry. Organofcorti explains it


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 10:48:14 PM
Just started to get these kinda errors:

Code:

User timeout caused connection failure.
Caught, jsonrpc_call insides
User timeout caused connection failure.
Caught, jsonrpc_call insides
User timeout caused connection failure.
[00:46:20] RPC request [] submitted to eligius
[00:46:21] RPC request [] submitted to eligius



Not sure whats causing it, or why its only happening on random miners connected to my bithopper server.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 14, 2011, 10:49:55 PM
Just started to get these kinda errors:

Code:

User timeout caused connection failure.
Caught, jsonrpc_call insides
User timeout caused connection failure.
Caught, jsonrpc_call insides
User timeout caused connection failure.
[00:46:20] RPC request [] submitted to eligius
[00:46:21] RPC request [] submitted to eligius



Not sure whats causing it, or why its only happening on random miners connected to my bithopper server.


They probably closed json stats on pools, I donīt get my stats either.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 14, 2011, 10:50:56 PM
Quote
Rejects = stales , unless I missed some arbitrary details about how these 2 differ.

Stale shares have already been accepted and are not always credited [edit] as shares by a pool. Rejected shares are corrupted, not from the pools getwork [edit], or otherwise just plain wrong and are never accepted.

Quote
Yep, seems its ozco.in causing those 8-10% stales, new block on btcguild giving me normal ~0.5% stales.

Ozco.in is an Australian pool. They're great guys, and very responsive. However, being an Australian pool means that most of you are going to have pings of 200 to 400 ms, which is going to mean a few more stales than normal. I'm only a few thousand km away and I have 3% stales due to a tortuous path between me and western australia. If you're not in Australasia I wouldn't mine at Ozco.in if your stales are consistently high and you have a high ping there.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 14, 2011, 10:57:57 PM
Nah my ozco.in issues cleared up mostly with recent LP adjustments made by coow.

I am used to 400ms to btcguild and that still gave me <1% stales, packetloss would be the only devil and not so much latency.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 15, 2011, 01:41:45 AM
x8s currently voting (in german) on pool hopping countermeasures http://forum.bitcoin.org/index.php?topic=28848.msg362984#msg362984

I wouldn't bother adding them until they've decided what to do.

I think as a group we are definitely having a positive effect. Unfortunately, not everyone is going for changes from proportional reward systems - they're just trying to make it harder to figure out when rounds have started, or are banning suspected hoppers. These countermeasures are not impossible to overcome and just encourage an arms race in development.

When you consider this thread has been open for 7 days and is now 14 pages long, I'd say we have enough interested parties to make a responsive adversary. The only way pool hoppers will be permanently stopped is by the pool members pressuring the pool owners to come up with a non-proportional reward system that doesn't reward hopping.

Seeing this thread bounce to the top lots of times a day might be just what is needed.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: error on July 15, 2011, 01:47:11 AM
I suspect there will always be people running proportional pools and doing nothing about pool hoppers. There's just too much demand (from miners) for proportional payouts, and not enough interest (again from miners) in stopping pool hoppers.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 15, 2011, 04:34:24 AM
 
I suspect there will always be people running proportional pools and doing nothing about pool hoppers. There's just too much demand (from miners) for proportional payouts, and not enough interest (again from miners) in stopping pool hoppers.

I agree that this is the case right now and will be if there's no intervention. So ... now we have stats, why don't we start posting our efficiencies? Am I right in assuming the stats are based on all shares and coins received, not just for the current round?

Then it would be great to see how other people are doing efficiency wise, and even better to show on the front a of this thread what efficiencies we are getting, and to really drive the point home, how many extra coins that was for the hopper. Or, how many fewer coins the normal members of the pool got, assuming a particular total hopper hashrate (which is not so hard to find given the stats pages some prop pools have - just watch the drop off some of them have after 40% difficulty).

I'm not home so I can't start this off, but anyone want to post their stats so far?



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 15, 2011, 04:37:22 AM
Also, how do we re-enable bitclockers?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 15, 2011, 05:47:57 AM
1) Bitclockers reenable?
Change their role in the servers dictionary in pool.py from info to mine

2) Stats?
Well I'm rewriting it now to use a database. And to show stats for all the servers we mine.

Mine are 133% for btcguild.

Around 800% for bitp.it. I withdrew some money and because their api doesn't tell me that its a rough estimate from what I remember.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: jkminkov on July 15, 2011, 06:17:42 AM
I suspect there will always be people running proportional pools and doing nothing about pool hoppers. There's just too much demand (from miners) for proportional payouts, and not enough interest (again from miners) in stopping pool hoppers.

you are right, I have 4*5870 @ x8s moved when btcguild went down and will move them back to btcguild if they change proportional to something else


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 09:28:51 AM
I just noticed it switching from bitpit(that is still <100k shares) to arsbitcoin thats >800k shares..

Surely it shouldnt have switched at all ? It did switch back to bitpit after a few minutes, just curious why it would be doing this since it could overtime count for alot of wasted work on wrong pools.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 15, 2011, 09:40:46 AM
Quote from: flower1024
DIFF = 10000 (example)
btcguild =     1/100    = 0.01 (means btcguild has 100 shares right now)
bitpit =         1/3000  = 0.0003
bitclockers =  1/500    = 0.002
bitcoinslc =    1/10000 = 0.00001

BREAKEVEN = DIFF * 0.4 = 4000 (only switch between pools lower than break even)
RAND(0, (btcguild + bitpit + bitclockers))
0-0.01 -> btcguild
0.01-0.0103 -> bitpit
0.0103-0.0303 -> bitclockers

i now have a working implementation. i just starts a new server select whenever your client founds a share

its based on an old version with lp disabled completly - but (for me) its more stable.

(no password.py, no stats...) i don't know if i iwill upgrade the code. depends if i can go > 48hours without error

please remeber to change your pool accounts in pool.py!

here: www.k1024.de/dev.zip


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 15, 2011, 10:00:23 AM
I dont think I need to comment - except ... been 'hopped much, Mt Red?

http://img19.imageshack.us/img19/8510/breyvzd2lp0day.png

(thanks to mperth's stats at http://mksv.ath.cx/bit/stats.php (http://mksv.ath.cx/bit/stats.php))


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 15, 2011, 10:06:41 AM
Btcguild is now (like deepbit) thinking of delaying stats instead of switching to a secure payout system...

It looks however as if they just want to remove some stats from the API - setting donation to 2.5% and just monitoring changes in the account balance might still work...

It's time however I think to start beating stuff like delayed stats too, as this would re-enable hopping deepbit + BTCguild, who are huge in comparison to other pools.

@Mtred hopping:
Interestingly we seem to have helped them nevertheless (as there are more people who keep mining after 40% than the round before).
For operators that's actually a very good thing, for users... not that much. ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 10:16:26 AM
There is more good than bad coming from "us" hoppers.

Network spikes increase the likelihood of more users moving/joining different pools thus spreading load across pools rather than one pool hogging 50%+ of network hashrate.

Its a psychological effect, people see success and follow.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 15, 2011, 10:21:51 AM
Which is why if I were to start a pool, I would start it proportionally and submit code + live stats for pool hoppers. Then pay regular miners out of my own pocket a little bonus so they don't loose out.

After some time, if the pool has grown enough to have reasonably low variance, switch to PPLNS (I'm not that much of a fan of SMPPS, as it suggests that miners will always be paid PPS, which isn't true in some bad luck cases) and still enjoy a few rounds of pool hoppers who are too slow to update.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 15, 2011, 10:30:37 AM
Any reason not to start adding up and comers instead of going after the big guys? The problem with btcguild is that I hardly get any shares before they're out of range. Maybe we should start encouraging the little guys, say 30 Ghps and over, and help them ramp up? We'll give them a boost and maybe encourage others to join increasing diversity in the pools.

And that's why, Sukrim, someone like you  ;)  with lots of kudos should approach NoFeeMining and get them to allow access to their stats on a trial basis.

As for me, I'm waiting for Bit hasher to hit the 30Ghps mark. They look good, api seems useable.



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 15, 2011, 10:37:32 AM
Yupii, seems like bitp.it just got lucky ;)

edit: Here are my stats from the proxy  http://www.2shared.com/file/IpuYpwOJ/stats.html


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 10:41:03 AM
Yupii, seems like bitp.it just got lucky ;)

Yep between them and mtred, its been a glorious 24hrs ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 15, 2011, 10:41:38 AM

2) Stats?
Well I'm rewriting it now to use a database. And to show stats for all the servers we mine.

Mine are 133% for btcguild.

Around 800% for bitp.it. I withdrew some money and because their api doesn't tell me that its a rough estimate from what I remember.

Long term stats - sweet, mayne!

my current stats:
Bitpit efficiency: 33838%
Btcguild efficiency: 152%
Bitclockers efficiency: 118%

(bitpit certainly did get lucky! As did I)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 15, 2011, 10:44:57 AM
Any reason not to start adding up and comers instead of going after the big guys?
Rounds there last forever aaand the risk of being scammed is also a LOT higher if they just have a userbase of ~50 ppl. Especially since they might view it as "cheating the cheaters" and not even feel wrong about it.

https://www.nofeemining.com/ has anyways "round shares" on their front page, that's all you need really. As they only found 2 blocks so far though I'm still a bit sceptical...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 10:48:29 AM
I think right now bithopper have a decently big-enough per pool balanced list.

Its only really worth it to include 100gh+ sized pools at this point.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 15, 2011, 10:53:59 AM
I think right now bithopper have a decently big-enough per pool balanced list.

Its only really worth it to include 100gh+ sized pools at this point.

I think youīre right but for testing purposes I just enabled all pools and temporarily disabled the backup (have other failsafe method)


My last hour stats:  http://www.2shared.com/file/IpuYpwOJ/stats.html


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 10:58:00 AM
I think right now bithopper have a decently big-enough per pool balanced list.

Its only really worth it to include 100gh+ sized pools at this point.

I think youīre right but for testing purposes I just enabled all pools and temporarily disabled the backup (have other failsafe method)


My last hour stats:  http://www.2shared.com/file/IpuYpwOJ/stats.html

2shared just seems to hang, weirdness.

Anyhow, its worth it for people to test out different approaches other than default current bithopper methods.

Would be nice to see the different outcomes :)



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 15, 2011, 11:02:30 AM
I think right now bithopper have a decently big-enough per pool balanced list.

Its only really worth it to include 100gh+ sized pools at this point.

I think youīre right but for testing purposes I just enabled all pools and temporarily disabled the backup (have other failsafe method)


My last hour stats:  http://www.2shared.com/file/IpuYpwOJ/stats.html

2shared just seems to hang, weirdness.

Anyhow, its worth it for people to test out different approaches other than default current bithopper methods.

Would be nice to see the different outcomes :)



Uploading to another service..... http://www.megaupload.com/?d=B8DCBLGU ...  Done


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 11:18:00 AM
not to be a pain in the ass, but could you put it on mediafire.

For some reason my internet is terribly slow to 2shared and megaupload and just timesout, mediafire seems fast however.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 15, 2011, 11:19:53 AM
not to be a pain in the ass, but could you put it on mediafire.

For some reason my internet is terribly slow to 2shared and megaupload and just timesout, mediafire seems fast however.

np  here you go .... http://www.mediafire.com/?3ywhg717wwcbxns


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 15, 2011, 11:32:57 AM
Anyone trialled taking the the round share proportion of difficulty before hopping to eligius to 1.0?

I'd be interested to see if it affects efficiency at all (from my admittedly rusty math i dont think Raulo's hypothesis applies to multi-pool hopping and http://forum.bitcoin.org/index.php?topic=24966.0 and http://forum.bitcoin.org/index.php?topic=28499.msg358718#msg358718 have nice little explanations).

 I'm starting to think staying until difficulty (if you have to) is the way to go.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 15, 2011, 11:36:41 AM
Any reason not to start adding up and comers instead of going after the big guys?
Rounds there last forever aaand the risk of being scammed is also a LOT higher if they just have a userbase of ~50 ppl. Especially since they might view it as "cheating the cheaters" and not even feel wrong about it.

https://www.nofeemining.com/ has anyways "round shares" on their front page, that's all you need really. As they only found 2 blocks so far though I'm still a bit sceptical...


Rounds last forever shouldn't be an issue for 'hoppers. We'll get payment eventually - unless the new pool wants to ruin their reputation early on. And i think they'd be glad of the extra hashes and do whatever they can *not* to put us off.

See your point with nfm, but i didn't want to add html scraping to the bithopper code. TFL.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 11:37:59 AM
So onto a another topic but related :0 , anyone got code snippets to add triplemining.com to the rotation ?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 15, 2011, 11:44:52 AM
So onto a another topic but related :0 , anyone got code snippets to add triplemining.com to the rotation ?

You could make your own if you donīt like waiting, you have the snipet right in "pool.py" file. Donīt foget to make 2 new entries in "password.py" for user and pass


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 11:46:56 AM
So onto a another topic but related :0 , anyone got code snippets to add triplemining.com to the rotation ?

You could make your own if you donīt like waiting, you have the snipet right in "pool.py" file. Donīt foget to make 2 new entries in "password.py" for user and pass


Yeh, was just busy with some other stuff and figured if someone had it on hand they could post it. If I get around to it I will post it here.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 15, 2011, 11:48:01 AM
So onto a another topic but related :0 , anyone got code snippets to add triplemining.com to the rotation ?
I already posted one a few pages back - you need to import the re (regular expressions) package though, as you have to scrape HTML. Other than that I didn't have any issues with it so far. c00w did not(yet?) include it on git though, maybe because of the HTML?

nofeemining can be done fairly similar, it doesn't matter anyways if you decode a json file or search for some numbers in a HTML response... Usually you won't need something fancy like beautifulsoup...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 11:53:35 AM
found your post, thanks.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 15, 2011, 11:58:43 AM
It might need some tiny adjustments (I think the log function is now in a different module) but it should/does work...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 15, 2011, 12:19:02 PM
holy crap, mt red does it again!



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 15, 2011, 12:44:52 PM
Just found a little bug: when "backup" servers are changed to "info" the script refuses to work properly blaiming it on json stats.

@c00w would be nice to leave at our decision with pools are banning or not. Yes, Iīm aware it happened to you but ppl were using your credentials from different ipīs, simulating a botnet jeje


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 15, 2011, 02:47:30 PM
now that nofeemining.com are no longer protecting their stats with a captcha, i decided to add them (i added and defined nofee_user_apikey in passwords.py):

Code:
      'nofee':{'shares': default_shares, 'name': 'nofee',
           'mine_address': 'nofeemining.com:8332', 'user': nofee_user,
           'pass': nofee_pass, 'lag': False, 'LP': None,
           'api_address':'https://www.nofeemining.com/api.php?key=' + nofee_user_apikey, 'role':'mine'}
...

def nofee_sharesResponse(response):
    global servers
    info = json.loads(response)
    round_shares = int(info['poolRoundShares'])
    servers['nofee']['shares'] = round_shares
    bitHopper.log_msg('nofee:' + FormatShares(round_shares))

...

'nofee':nofee_sharesResponse,

but i get the following error:


Code:
"[Failure instance: Traceback: <type 'exceptions.ValueError'>: No JSON object could be decoded\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:1076:gotResult\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:1063:_inlineCallbacks\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:361:callback\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:455:_startRunCallbacks\n--- <exception caught here> ---\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:542:_runCallbacks\n/home/user/bitHopper/pool.py:195:selectsharesResponse\n/home/user/bitHopper/pool.py:169:nofee_sharesResponse\n/usr/lib/python2.6/json/__init__.py:307:loads\n/usr/lib/python2.6/json/decoder.py:319:decode\n/usr/lib/python2.6/json/decoder.py:338:raw_decode\n]"

the api definitely works from curl and wget, and the identifier is 'poolRoundShares'.

no fee mining is a prop pool that proudly proclaim on their website :"no pool hopping protection" !  they want us bad. i like being wanted. So any ideas on a fix?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 15, 2011, 04:10:13 PM
To me they seem FAR too tiny (25 GH/s, only 2 blocks found) to not be a scam/trustworthy.

Got an API key by any chance? Also it might be that it just isn't JSON what this API delivers...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 15, 2011, 05:29:22 PM
1) Why haven't I added more pools? Specifically triple mining and whatever else has been posted?
I'm working on database stats for all pools we hop. And sleeping.

2)Why did I disable bclc for everyone?
The pool operator annoyed me, was rude and boorish and I didn't want to give him my business.

3) Changing backup pools to info breaks things?
Well yeah. They have no api in the servers dictionary so when it tries to pull it an error appears.

4) I jump to arstechnica then back to bitp.it?
The backup pools have a fair algorithm so it doesn't matter. They are used when no other pool is good. If only 1 pool is good i.e. bitp.it and we have a little network trouble it'll jump from the pool it can't connect to and use the next pool (backup) until the best pool comes back up.

5) How to hop deepbit or btcguild with delayed stats?
Well they still use LP... I'm going to need some functions to look inside the data we send to the clients however which I haven't implemented.

6) Ignoring websites with regex?
I haven't been. I've mostly been sleeping. I'll throw on some with it after I get the stats database working or if someone submits a pull request.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 05:47:49 PM
I think its long overdue to say, great work so far c00w.

Good to know you are also human and require sleep :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 15, 2011, 06:47:33 PM
I think its long overdue to say, great work so far c00w.

Good to know you are also human and require sleep :)

+1


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 15, 2011, 08:10:09 PM
I'm also going to be completely out of communication on saturday. We'll see if the database is ready by tonight.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 08:48:33 PM
I'm also going to be completely out of communication on saturday. We'll see if the database is ready by tonight.

If its not, I will simply have to cancel my subscription and request a refund ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 09:13:03 PM
Btw what is the current delay set to for scanning new pool to hop to ?

Also is there any reason to not scan every 5 or even less seconds or is it to prevent pools from banning due to getting hammered?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 15, 2011, 09:53:50 PM
1) Current delay?
current delay is 117 seconds. You can decrease it if you want. Most pools don't update their stats very frequently.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 15, 2011, 10:09:29 PM
Time to remove eclipsemc, they switched to a score system.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: anty on July 15, 2011, 10:24:33 PM
I think eclipsemc delays their API stats. On their website they say round duration is 4:51h but we just started mining there.
And you can clearly see in their graph that 20 min ago the first hoppers joined (raised from 60gh/s to 100gh/s.
So I guess the delay is 4:30h. I disabled eclipsemc for me.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 10:59:48 PM
mmm just updated to latest git and bithopper just crash .

Code:
Traceback (most recent call last):
  File "./bitHopper.py", line 7, in <module>
    import work
  File "/home/miner1/bitHopper/work.py", line 12, in <module>
    from bitHopper import *
  File "/home/miner1/bitHopper/bitHopper.py", line 9, in <module>
    import stats
  File "/home/miner1/bitHopper/stats.py", line 6, in <module>
    import pool
  File "/home/miner1/bitHopper/pool.py", line 21, in <module>
    'api_address':'https://mtred.com/api/user/key/' + mtred_user_apikey,
NameError: name 'mtred_user_apikey' is not defined



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bigbeerjr on July 15, 2011, 11:11:01 PM
mmm just updated to latest git and bithopper just crash .

Code:
Traceback (most recent call last):
  File "./bitHopper.py", line 7, in <module>
    import work
  File "/home/miner1/bitHopper/work.py", line 12, in <module>
    from bitHopper import *
  File "/home/miner1/bitHopper/bitHopper.py", line 9, in <module>
    import stats
  File "/home/miner1/bitHopper/stats.py", line 6, in <module>
    import pool
  File "/home/miner1/bitHopper/pool.py", line 21, in <module>
    'api_address':'https://mtred.com/api/user/key/' + mtred_user_apikey,
NameError: name 'mtred_user_apikey' is not defined


do you have mtred_user_apikey defined in password.py?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 11:16:20 PM
yes, nothing changed from my previous bithopper version.

All I did was git pull to the latest version posted 20mins ago.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 15, 2011, 11:29:59 PM
1) Define mtred_user_apikey.

2) I fixed the difficulty pull to revert to a hard defined value. I'll fix it later.

3) I removed eclipsemc from the latest git version.

4) There is a vestigial database in the latest version. Ignore it. Its disabled and doesn't work.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 15, 2011, 11:34:10 PM
allright, was strange error randomly cropped up with permissions.

Wow knuckle award for me.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dewon on July 15, 2011, 11:56:33 PM
What I am doing wrong?

Code:
root@linuxcoin:/opt/miners/phoenix/bithopper# sudo python bitHopper.py
Traceback (most recent call last):
  File "bitHopper.py", line 7, in <module>
    import work
  File "/opt/miners/phoenix/bithopper/work.py", line 12, in <module>
    from bitHopper import *
  File "/opt/miners/phoenix/bithopper/bitHopper.py", line 8, in <module>
    import diff
  File "/opt/miners/phoenix/bithopper/diff.py", line 13, in <module>
    difficulty = get_difficulty()
  File "/opt/miners/phoenix/bithopper/diff.py", line 9, in get_difficulty
    response = urllib2.urlopen(req)
  File "/usr/lib/python2.6/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/usr/lib/python2.6/urllib2.py", line 397, in open
    response = meth(req, response)
  File "/usr/lib/python2.6/urllib2.py", line 510, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.6/urllib2.py", line 435, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.6/urllib2.py", line 518, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 503: Service Unavailable


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: roos on July 15, 2011, 11:59:41 PM
Same here

What I am doing wrong?

Code:
root@linuxcoin:/opt/miners/phoenix/bithopper# sudo python bitHopper.py
Traceback (most recent call last):
  File "bitHopper.py", line 7, in <module>
    import work
  File "/opt/miners/phoenix/bithopper/work.py", line 12, in <module>
    from bitHopper import *
  File "/opt/miners/phoenix/bithopper/bitHopper.py", line 8, in <module>
    import diff
  File "/opt/miners/phoenix/bithopper/diff.py", line 13, in <module>
    difficulty = get_difficulty()
  File "/opt/miners/phoenix/bithopper/diff.py", line 9, in get_difficulty
    response = urllib2.urlopen(req)
  File "/usr/lib/python2.6/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/usr/lib/python2.6/urllib2.py", line 397, in open
    response = meth(req, response)
  File "/usr/lib/python2.6/urllib2.py", line 510, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.6/urllib2.py", line 435, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.6/urllib2.py", line 518, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 503: Service Unavailable


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Keninishna on July 16, 2011, 12:54:38 AM
blockexplorer is having issues getting the current difficulty, what I did to fix was change the code in diff.py like so:

Code:
#License#
#bitHopper by Colin Rice is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
#Based on a work at github.com.

import urllib2

def get_difficulty():
   # req = urllib2.Request('http://blockexplorer.com/q/getdifficulty')
   # response = urllib2.urlopen(req)
   # diff_string = response.read()
    diff_string = "1564057"
    return float(diff_string)

difficulty = get_difficulty()

this just hard codes the difficulty in the meantime.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Keninishna on July 16, 2011, 01:36:30 AM
Wow code update already on github, "Updated eclipse mc to not be hopped and added a default difficulty if calls fail"


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 16, 2011, 06:03:48 AM
1) Code already updated?
I'm a beast! In reality I run the software the same as you guys. Global issues get fixed quickly. Non global issues get fixed when someone tells me about them.

2) Update on progress with regards to stats?
So I know what I have to do. And I know how to do it. But all of tomorrow is busy. I'll see If I can knock it out on sunday. I'll need to rewrite everything again though in a less dramatic fashion. And I already figured out the system. I'm not going to automate pulling payouts from wallets though so if you want accurate stats you are going to have to tell the system when you get payouts from most pools. Some like btcguild have enough data in the API. Most don't.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 16, 2011, 10:55:01 AM
Is there a way to simply re-enable bitcoins.lc?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 16, 2011, 11:28:56 AM
Is there a way to simply re-enable bitcoins.lc?

In pools.py, change the last part of

Code:
  'bclc':{'shares':default_shares, 'name':'bitcoins.lc',
            'mine_address':'bitcoins.lc:8080', 'user':bclc_user, 'pass':bclc_pass,
            'lag':False, 'LP':None,
            'api_address':'https://www.bitcoins.lc/stats.json', 'role':'info' },

to
 
Code:
                                                                 'role':'mine' },
                       


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 16, 2011, 11:36:07 AM
Efficiency update, calculated from the website data (only using bitHopper, all same difficulty):

bitcoins-lc: 67.9%
btc guild: 181.0%
eclipse: 146.5%
Mt Red: 181.7%
 
for a total earnings increase of 158.7%


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 16, 2011, 12:24:22 PM
Interestingly, the 'cheater function' shows that even hopping at <your shares>=<difficulty> has a 22% increase in effective hashrate (and thus coinage), which is better than eligius/arsbitcoin at 0% increase. So I it seems like it might pay have the jump off proportion of difficulty at 1.0 instead of 0.4

burp mentioned it earlier in the thread, be interesting to see if anyone tried it.

tl;dr change the hop shares from 0.4*diff to 1.0*diff


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 16, 2011, 12:52:02 PM
I dont think I need to comment - except ... been 'hopped much, Mt Red?

http://img19.imageshack.us/img19/8510/breyvzd2lp0day.png

(thanks to mperth's stats at http://mksv.ath.cx/bit/stats.php (http://mksv.ath.cx/bit/stats.php))

Why is it though that Mt. Red has 100 Mhash jumps, while others only get ~10 Mhash jumps?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zybron on July 16, 2011, 01:16:50 PM
Why is it though that Mt. Red has 100 Mhash jumps, while others only get ~10 Mhash jumps?
I'd guess it's not all us. There must be lots of people out there hopping Mt. Red.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 16, 2011, 01:43:00 PM
100Ghps seems correct. Bitpit seems to have extra 100Ghps at the start of last round:
http://mksv.ath.cx/bit/graph.php?node=XS1YWGD4UA

http://img17.imageshack.us/img17/636/xs1ywgd4ua0day.png

Deepbit's variation is an easy 100Ghps, although it's hard to tell if it coincides with rounds:
http://mksv.ath.cx/bit/graph.php?node=2AC1BVST4N

 (http://mksv.ath.cx/bit/graph.php?node=2AC1BVST4N)http://img638.imageshack.us/img638/3851/2ac1bvst4n0day.png

Arsbitcoin seems to have reverse hopping - where everyone goes into hopping limbo:
http://mksv.ath.cx/bit/graph.php?node=29MPXJT6WF
 (http://mksv.ath.cx/bit/graph.php?node=29MPXJT6WF)

http://img43.imageshack.us/img43/695/29mpxjt6wf0day.png

Anyone with hopping strategies in place (eg multipool) would be adding to this, not just us. We're not even doing deepbit yet.



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 16, 2011, 02:51:14 PM
Quote
Is there a way to simply re-enable bitcoins.lc?

I would look to see how he handled the multiclone situation before re-enabling.

He banned multiclone but decided to keep their coins they generated.

after outcry, he relented but the guy comes off as a real douche.

I can see being annoyed with hoppers, and dont have a problem with the banning, but taking the coins and being a dick about it was wrong.

I dont care if you hop him, just think you should know the kinda guy he is, and just know unlike multiclone, if he bans you and steals your coin, it is hard to have an outcry with only one individual.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 16, 2011, 03:28:11 PM
Quote
Is there a way to simply re-enable bitcoins.lc?

I would look to see how he handled the multiclone situation before re-enabling.

He banned multiclone but decided to keep their coins they generated.

after outcry, he relented but the guy comes off as a real douche.

I can see being annoyed with hoppers, and dont have a problem with the banning, but taking the coins and being a dick about it was wrong.

I dont care if you hop him, just think you should know the kinda guy he is, and just know unlike multiclone, if he bans you and steals your coin, it is hard to have an outcry with only one individual.

I know.  I just feel that the chances of getting banned are slim to none.  he banned multiclone because one account had thousands of connections every second and it was harming the pool.  bithopper doesnt work like that.

On a separate note, what is a better implementation of bithopper.  Running a separate bithopper instance on each machine I am mining in or pointing all my miners on various rigs to one machine running bithopper on my network?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: murfshake on July 16, 2011, 04:12:56 PM
C:\c00w-bitHopper-50ab019>bitHopper.py
Traceback (most recent call last):
  File "C:\c00w-bitHopper-50ab019\bitHopper.py", line 7, in <module>
    import work
  File "C:\c00w-bitHopper-50ab019\work.py", line 12, in <module>
    from bitHopper import *
  File "C:\c00w-bitHopper-50ab019\bitHopper.py", line 16, in <module>
    import lp
  File "C:\c00w-bitHopper-50ab019\lp.py", line 11, in <module>
    from twisted.internet import reactor, defer
  File "C:\Python27\lib\site-packages\twisted\internet\reactor.py", line 37, in
<module>
    from twisted.internet import selectreactor
  File "C:\Python27\lib\site-packages\twisted\internet\selectreactor.py", line 1
7, in <module>
   from zope.interface import implements
ImportError: No module named zope.interface


C:\c00w-bitHopper-50ab019>

I had python installed already, I installed twisted.. that didn't work.  I installed zope.interface by putting it in "C:\Python27\Lib\site-packages" directory...

I am still getting this damn error.  What is the problem and why won't this damn zope.interface install correctly on Win7?

Thank you and please help me.

***____________________________________***

How I got it working.. I downloaded easy install from here http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11.win32-py2.7.exe#md5=57e1e64f6b7c7f1d2eddfc9746bbaf20

Then i put the .egg file from http://pypi.python.org/pypi/zope.interface#download

in the "C:\Python27\Scripts" directory

Then I went to a cmd and went into the "C:\Python27\Scripts" directory and typed  "easy_install.exe zope.interface-3.6.4-py2.7-win32.egg"

And I could run the stuff.



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 16, 2011, 04:15:20 PM
C:\c00w-bitHopper-50ab019>bitHopper.py
Traceback (most recent call last):
  File "C:\c00w-bitHopper-50ab019\bitHopper.py", line 7, in <module>
    import work
  File "C:\c00w-bitHopper-50ab019\work.py", line 12, in <module>
    from bitHopper import *
  File "C:\c00w-bitHopper-50ab019\bitHopper.py", line 16, in <module>
    import lp
  File "C:\c00w-bitHopper-50ab019\lp.py", line 11, in <module>
    from twisted.internet import reactor, defer
  File "C:\Python27\lib\site-packages\twisted\internet\reactor.py", line 37, in
<module>
    from twisted.internet import selectreactor
  File "C:\Python27\lib\site-packages\twisted\internet\selectreactor.py", line 1
7, in <module>
    from zope.interface import implements
ImportError: No module named zope.interface


C:\c00w-bitHopper-50ab019>

I had python installed already, I installed twisted.. that didn't work.  I installed zope.interface by putting it in "C:\Python27\Lib\site-packages" directory...

I am still getting this damn error.  What is the problem and why won't this damn zope.interface install correctly on Win7?

Thank you and please help me.

Are you placing the .egg file in that directory?  Thats what I did and I got the same error.  You have to unzip the .egg file and place the contents in that directory, then it works perfectly.  Just open it up with winrar or whatever you use to extract things.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 16, 2011, 04:15:58 PM
i made a small linux-vm for this purpose.
works well :)

(i used debian which is a little tricky when it comes to python 2.6; you could try latest ubuntu)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 16, 2011, 04:27:09 PM
why kickout python 2.6?
for me this version works...(debian)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 16, 2011, 05:45:07 PM
request
can you add the option to put 2/3/4 workers per pool in pwds.py

You could just run more bitHoppers on different ports. How would it know which client is which worker?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 16, 2011, 06:51:23 PM
now that nofeemining.com are no longer protecting their stats with a captcha, i decided to add them (i added and defined nofee_user_apikey in passwords.py):

Code:
      'nofee':{'shares': default_shares, 'name': 'nofee',
           'mine_address': 'nofeemining.com:8332', 'user': nofee_user,
           'pass': nofee_pass, 'lag': False, 'LP': None,
           'api_address':'https://www.nofeemining.com/api.php?key=' + nofee_user_apikey, 'role':'mine'}
...

def nofee_sharesResponse(response):
    global servers
    info = json.loads(response)
    round_shares = int(info['poolRoundShares'])
    servers['nofee']['shares'] = round_shares
    bitHopper.log_msg('nofee:' + FormatShares(round_shares))

...

'nofee':nofee_sharesResponse,

but i get the following error:


Code:
"[Failure instance: Traceback: <type 'exceptions.ValueError'>: No JSON object could be decoded\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:1076:gotResult\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:1063:_inlineCallbacks\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:361:callback\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:455:_startRunCallbacks\n--- <exception caught here> ---\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:542:_runCallbacks\n/home/user/bitHopper/pool.py:195:selectsharesResponse\n/home/user/bitHopper/pool.py:169:nofee_sharesResponse\n/usr/lib/python2.6/json/__init__.py:307:loads\n/usr/lib/python2.6/json/decoder.py:319:decode\n/usr/lib/python2.6/json/decoder.py:338:raw_decode\n]"

the api definitely works from curl and wget, and the identifier is 'poolRoundShares'.

no fee mining is a prop pool that proudly proclaim on their website :"no pool hopping protection" !  they want us bad. i like being wanted. So any ideas on a fix?

I'm having the same issues, have you figured this out? Ive on NFM for a while and it looks and sounds decent. If you hit up  https://www.nofeemining.com/api.php you get the pool stats, no API key required. What does No JSON object could be decoded mean? It seems like there is a poolRoundShares item in the response.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Brian DeLoach on July 16, 2011, 09:03:53 PM
BTC Guild is now under a one hour delay for their stats.

From IRC: <@Eleuthria> 1 hour stat delay

Time to look elsewhere, or figure out a way to determine when a new round starts.

Edit: The API is showing fake stats to show 100 round shares and a start time of 1 second. Consequently, 100+ Ghps jumped into the pool. Disable BTC Guild immedietly until a work around is determined, if any is possible.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 16, 2011, 09:17:31 PM
just FYI you can disable btc guild yourself in pools.py by changing 'mine' to 'info' under the btcg section.

thanks for the heads up


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: koopa on July 16, 2011, 09:29:54 PM
Looks like were down to just three hopable pools + backups now....  :-\

Methinks we need too look at adding some of the newer pools who really want that extra hash boost...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 16, 2011, 09:39:09 PM
bitcoins.lc also does the same thing like BTCguild

I don't think so.  BTC guild spoofs their shares so bithopper would never stop mining at their pool.

Also, is it possible for bithopper to absolutely cripple an internet connection?  I have fiber directly to my house and for the first time in years it was brought to its knees for about 20 minutes today (first day running bithopper).


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 16, 2011, 11:18:14 PM
bitcoins.lc also does the same thing like BTCguild

I don't think so.  BTC guild spoofs their shares so bithopper would never stop mining at their pool.

Also, is it possible for bithopper to absolutely cripple an internet connection?  I have fiber directly to my house and for the first time in years it was brought to its knees for about 20 minutes today (first day running bithopper).

.... here I have a 3mb adsl and browsing works pretty well on various pcīs while my miners do their stuff :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 16, 2011, 11:43:17 PM
Seems like bitcoins.lc has a 30 minute delay on reporting a block solved.  Just switched over exactly 30 minutes after they solved a block after mining on a backup pool for the prior 30 minutes.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 16, 2011, 11:47:58 PM
now that nofeemining.com are no longer protecting their stats with a captcha, i decided to add them (i added and defined nofee_user_apikey in passwords.py):

Code:
      'nofee':{'shares': default_shares, 'name': 'nofee',
           'mine_address': 'nofeemining.com:8332', 'user': nofee_user,
           'pass': nofee_pass, 'lag': False, 'LP': None,
           'api_address':'https://www.nofeemining.com/api.php?key=' + nofee_user_apikey, 'role':'mine'}
...

def nofee_sharesResponse(response):
    global servers
    info = json.loads(response)
    round_shares = int(info['poolRoundShares'])
    servers['nofee']['shares'] = round_shares
    bitHopper.log_msg('nofee:' + FormatShares(round_shares))

...

'nofee':nofee_sharesResponse,

but i get the following error:


Code:
"[Failure instance: Traceback: <type 'exceptions.ValueError'>: No JSON object could be decoded\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:1076:gotResult\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:1063:_inlineCallbacks\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:361:callback\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:455:_startRunCallbacks\n--- <exception caught here> ---\n/usr/lib/python2.6/dist-packages/twisted/internet/defer.py:542:_runCallbacks\n/home/user/bitHopper/pool.py:195:selectsharesResponse\n/home/user/bitHopper/pool.py:169:nofee_sharesResponse\n/usr/lib/python2.6/json/__init__.py:307:loads\n/usr/lib/python2.6/json/decoder.py:319:decode\n/usr/lib/python2.6/json/decoder.py:338:raw_decode\n]"

the api definitely works from curl and wget, and the identifier is 'poolRoundShares'.

no fee mining is a prop pool that proudly proclaim on their website :"no pool hopping protection" !  they want us bad. i like being wanted. So any ideas on a fix?

I'm having the same issues, have you figured this out? Ive on NFM for a while and it looks and sounds decent. If you hit up  https://www.nofeemining.com/api.php you get the pool stats, no API key required. What does No JSON object could be decoded mean? It seems like there is a poolRoundShares item in the response.


No luck. Also no luck in getting triplemining up and running either.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 01:31:24 AM
Holy shit bitp.it.  I think I love you.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 17, 2011, 01:42:39 AM
btc guild now reporting total shares - only not via the pools stats page. luckily if you want to mine btcg, you can find and use (with some regex) the data here:

http://fasthoop.appspot.com/

edit oooops - now fasthoop no longer has it either. must've just been a delay.

going to be relying on smaller pools now, and tightening up the algo for scoring pools too. I always got better efficiency than 1.0 with slush on multipool. Going to add him here now, see how it goes. I think you have to have smaller acceptable total shares before you hop, but not sure what that figure is. Anyone know?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 01:47:00 AM
btc guild now reporting total shares - only not via the pools stats page. luckily if you want to mine btcg, you can find and use (with some regex) the data here:

http://fasthoop.appspot.com/



Thats a pretty awesome page.  Wonder why they see bitcoins.lc as the best pool to mine right now instead of bitp.it, which is where bithopper has me mining.  Bitp.it just gave me my daily quota of BTC on a single 50 minute round, so I am inclined to disagree with that site on that one, lol.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 17, 2011, 01:51:10 AM
yep, not sure how the decision making process works. but the most important bit for us - total round shares - are there. i asked the site operator if he could be bothered adding triplemining and nofeemining and his own json api - would give us an easy way to add those pools that have messy or non json apis.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 01:57:27 AM
yep, not sure how the decision making process works. but the most important bit for us - total round shares - are there. i asked the site operator if he could be bothered adding triplemining and nofeemining and his own json api - would give us an easy way to add those pools that have messy or non json apis.

I would gladly donate to that site if it would enable deepbit support in bithopper. 

Quote
deepbit support is only provided to donators


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 17, 2011, 02:10:06 AM
yep, not sure how the decision making process works. but the most important bit for us - total round shares - are there. i asked the site operator if he could be bothered adding triplemining and nofeemining and his own json api - would give us an easy way to add those pools that have messy or non json apis.

I would gladly donate to that site if it would enable deepbit support in bithopper. 

Quote
deepbit support is only provided to donators

If techwtf provided a json feed then it would, and I'd be donating too.

btw, nofeemining.com is using https for their pool api page, which i think is causing the problem. Anyone know how to enable the --nocertficate or --insecure or whatever option in python?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 17, 2011, 02:32:24 AM
ok, nofeemining is working, if you want to try (yes i know they're new and could scam us). use the code i have earlier, just change the api address to http://www.nofeemining.com/api.php

The person running nofeemining fixed the api within a few minutes of my request - so i'm def donating to them. I hope those of you that add nofeemining do too. a responsive, engaged pool owner is the best sort. helps get thing sorted quickly - one way or the other.

as an aside - i think it's a good idea to donate even a little bit - even 0.5% - to any pool you hop. adding 100ghps at round start is prolly a pain for the pool operators, so why you may wish to sweeten it for them and they may keep their pools hoppable longer.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 04:12:20 AM
Wow, bitp.it just started having connection problems and within minutes their hashrate fell 50%.  Think they might be getting a little hopped.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 17, 2011, 04:17:45 AM
I already reward at least 1-2% donation to the pools that I use, make sure they can afford to upgrade the pools to support surges in hashrates from bitHopper.

Thanks for getting nofeemining to work, hope it turns out to be a legit pool.

P


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 17, 2011, 04:35:13 AM
Wow, bitp.it just started having connection problems and within minutes their hashrate fell 50%.  Think they might be getting a little hopped.

they were totally hopped:

http://img89.imageshack.us/img89/636/xs1ywgd4ua0day.png

but it was only a small hitch at the end there after stable hashrate for 2.5 hours. Don't think hopping was the issue. Mt Red has the ball now anyway, and bitpit are back to 50 Ghps.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 04:42:27 AM
Wow, bitp.it just started having connection problems and within minutes their hashrate fell 50%.  Think they might be getting a little hopped.

they were totally hopped:

http://img89.imageshack.us/img89/636/xs1ywgd4ua0day.png

but it was only a small hitch at the end there after stable hashrate for 2.5 hours. Don't think hopping was the issue. Mt Red has the ball now anyway, and bitpit are back to 50 Ghps.

No, I don't think hopping caused the connection issues.  I am just amazed at how pervasive hopping is that it more than doubled their hash rate.  Makes me feel like a chump for not jumping on the hopping bandwagon sooner.  Used to "hop" manually only when long blocks came up with fairly good success, but nothing like what I am seeing with bithopper. 


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 17, 2011, 04:44:56 AM
Wow, bitp.it just started having connection problems and within minutes their hashrate fell 50%.  Think they might be getting a little hopped.

they were totally hopped:

http://img89.imageshack.us/img89/636/xs1ywgd4ua0day.png

but it was only a small hitch at the end there after stable hashrate for 2.5 hours. Don't think hopping was the issue. Mt Red has the ball now anyway, and bitpit are back to 50 Ghps.

No, I don't think hopping caused the connection issues.  I am just amazed at how pervasive hopping is that it more than doubled their hash rate.  Makes me feel like a chump for not jumping on the hopping bandwagon sooner.  Used to "hop" manually only when long blocks came up with fairly good success, but nothing like what I am seeing with bithopper. 

what sort of efficiencies you seeing? mine are mostly 1.5 to 1.8


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 05:08:59 AM
what sort of efficiencies you seeing? mine are mostly 1.5 to 1.8

I don't have any fancy stats setup or anything, but the first 24 hours I mined, which ended about an hour ago for me, I mined 92.3% more than I normally do.  Almost doubled what I should be making. That is only counting what is confirmed and unconfirmed.  Have unfinished rounds at ozco.in and bitp.it which should boost todays efficiency up pretty high when the blocks are finally found.  

Bitp.it has efficiency off the charts which is why I did so well today.

How do you calculate the efficiency on a per pool basis?  Are you using that proxy setup?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 17, 2011, 05:33:22 AM
I just do it manually. For btcguild, eclipse, mt red and bitcoins-lc, they publish your block contribution history. Just take your total shares and total coinage. Then efficiency = <total coinage>/(<total shares>*50/<difficulty>).



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Tmoney on July 17, 2011, 07:38:53 AM
ok, nofeemining is working, if you want to try (yes i know they're new and could scam us). use the code i have earlier, just change the api address to http://www.nofeemining.com/api.php

The person running nofeemining fixed the api within a few minutes of my request - so i'm def donating to them. I hope those of you that add nofeemining do too. a responsive, engaged pool owner is the best sort. helps get thing sorted quickly - one way or the other.

as an aside - i think it's a good idea to donate even a little bit - even 0.5% - to any pool you hop. adding 100ghps at round start is prolly a pain for the pool operators, so why you may wish to sweeten it for them and they may keep their pools hoppable longer.

I figured out the original issue.  You can have him disable http on the api agian.  This is what it should look like:
Code:
        'nofee':{'shares': default_shares, 'name': 'nofee',
           'mine_address': 'nofeemining.com:8332', 'user': nofee_user,
           'pass': nofee_pass, 'lag': False, 'LP': None,
           'api_address':'https://www.nofeemining.com/api.php', 'role':'mine',
           'user_api_address':'https://www.nofeemining.com/api.php?key=' + nofee_user_apikey},

The earlier example you posted had left out 'user_api_address' and combined nofee_user_apikey with 'api_address'.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 17, 2011, 08:54:34 AM
Alright, already got some ideas how to break delayed stats? Currently it looks like pools would rather rework sensible parts of their code and screw with their users (adding intransparency) by delaying statistics than simply integrating an algorithm like PPLNS which is nearly the same as prop (when the pool is lucky, you get more), just without the chance of getting hopped ever.

At least Eligius' blocks can be fairly easily identified. As can the blocks from pools that are NOT delaying stats. The problem is, that now BTCguild and deepbit seem to delay, so there's a very high chance for a new block to have no known owner for an hour or more...
I have a few ideas already, but I'd like to collect some input from you to see some approaches you would take to deal with delayed/faked stats to still detect which pool solved which block.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 17, 2011, 08:56:11 AM
Im getting api errors with btcguild and mtred and then it doesnt pull the roundstats, anyone else?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: error on July 17, 2011, 09:10:15 AM
Oh look, a new proportional pool (https://forum.bitcoin.org/index.php?topic=27101.0).


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 17, 2011, 09:16:43 AM
"WTF man" is a proper expression when I read such stuff. Pool hopping is over 6 months old now, and people STILL don't care about their miners?!

At least a lot of medium sized pools recently are actively working on switching to secure payout systems. On one hand bad for me, because I earn less from there, but on the other hand great for their users and the community!
I wonder however what we can/shall do about deepbit and BTC guild...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 09:57:14 AM
I wonder however what we can/shall do about deepbit and BTC guild...

how is deepbit handeld by multipool/multiclone?

the only way i can imagine is watching historic data and if they had bad luck, thank think they'll get lucky.

but this only works with an algorithm that spreads shares and does not stays within a pool ( i posted such a variant before; but it has too much rejects and i dont know how to handle them)



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dewon on July 17, 2011, 12:51:35 PM
Does anyone know how to fix this:

EDIT: The answer was in readme  :)
Code:
[15:49:15] Error in user api for bitp
"[Failure instance: Traceback: <type 'exceptions.AssertionError'>: SSL support is not present\nC:\\Python27\\lib\\site-packages\\twisted\\internet\\task.py:194:__call__\nC:\\Python27\\lib\\site-packages\\twisted\\internet\\defer.py:133:maybeDeferred\nD:\\aaaphoenix\\bithopper\\stats.py:93:update_api_stats\nC:\\Python27\\lib\\site-packages\\twisted\\internet\\defer.py:1141:unwindGenerator\n--- <exception caught here> ---\nC:\\Python27\\lib\\site-packages\\twisted\\internet\\defer.py:1020:_inlineCallbacks\nD:\\aaaphoenix\\bithopper\\work.py:70:get\nD:\\aaaphoenix\\bithopper\\client.py:748:request\nD:\\aaaphoenix\\bithopper\\client.py:797:_request\nD:\\aaaphoenix\\bithopper\\client.py:698:_connect\nC:\\Python27\\lib\\site-packages\\twisted\\internet\\protocol.py:289:connectSSL\nC:\\Python27\\lib\\site-packages\\twisted\\internet\\protocol.py:239:_connect\nC:\\Python27\\lib\\site-packages\\twisted\\internet\\posixbase.py:434:connectSSL\n]"

Same error for all pools. I have apiīs defined in psdws.py and logins in pools.py.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 17, 2011, 12:55:22 PM
ok, nofeemining is working, if you want to try (yes i know they're new and could scam us). use the code i have earlier, just change the api address to http://www.nofeemining.com/api.php

The person running nofeemining fixed the api within a few minutes of my request - so i'm def donating to them. I hope those of you that add nofeemining do too. a responsive, engaged pool owner is the best sort. helps get thing sorted quickly - one way or the other.

as an aside - i think it's a good idea to donate even a little bit - even 0.5% - to any pool you hop. adding 100ghps at round start is prolly a pain for the pool operators, so why you may wish to sweeten it for them and they may keep their pools hoppable longer.

I figured out the original issue.  You can have him disable http on the api agian.  This is what it should look like:
Code:
        'nofee':{'shares': default_shares, 'name': 'nofee',
           'mine_address': 'nofeemining.com:8332', 'user': nofee_user,
           'pass': nofee_pass, 'lag': False, 'LP': None,
           'api_address':'https://www.nofeemining.com/api.php', 'role':'mine',
           'user_api_address':'https://www.nofeemining.com/api.php?key=' + nofee_user_apikey},

The earlier example you posted had left out 'user_api_address' and combined nofee_user_apikey with 'api_address'.

No.

This is my original:

 
Code:
'nofee':{'shares': default_shares, 'name': 'nofee',
           'mine_address': 'nofeemining.com:8332', 'user': nofee_user,
           'pass': nofee_pass, 'lag': False, 'LP': None,
           'api_address':'https://www.nofeemining.com/api.php?key=' + nofee_user_apikey, 'role':'mine'}

I defined the api as the user api address because i didn't know the pool stats address, but try it - it works fine for pool stats too. Just because you use the user api for user stats doesn't mean you can't use it for pool stats if they're there too. Hope this helps!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 17, 2011, 01:04:32 PM
I wonder however what we can/shall do about deepbit and BTC guild...

how is deepbit handeld by multipool/multiclone?

the only way i can imagine is watching historic data and if they had bad luck, thank think they'll get lucky.

but this only works with an algorithm that spreads shares and does not stays within a pool ( i posted such a variant before; but it has too much rejects and i dont know how to handle them)



Wont work. Each new round length is still governed by a poisson process. On of the properties of the poisson process is that is has no memory of prior events. A short round wont make a long one more likely, nor visa versa. Sorry about that. I think though long polling is a help. ALso using the known hashrate of the pool means that we know how long an average round should be, and if it's over an hour will help us predict when it is most likely to end. Not much use for deepbit, but at least btcg have a few > 1hr rounds.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 01:13:57 PM

Not much use for deepbit, but at least btcg have a few > 1hr rounds.

^^ but still we have the problem to know when btcg did found the block.

lp:
i am not sure. but we could try to monitor lp's and guessing that the first lp coming in is probably from the pool who found the block (still we have no clue about solo or pools we dont monitor)

still interested in the way multipool did with bit deepbit. reading perl is a PITA


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Aexoden on July 17, 2011, 01:34:48 PM
Interestingly, the 'cheater function' shows that even hopping at <your shares>=<difficulty> has a 22% increase in effective hashrate (and thus coinage), which is better than eligius/arsbitcoin at 0% increase. So I it seems like it might pay have the jump off proportion of difficulty at 1.0 instead of 0.4

It's better to think in terms of the expected value of a share. If x is (50 / difficulty) The first share submitted in a round has an expected value of about 13x. The multiplier drops below 1 at approximately 0.4348 * difficulty. In other words, on average, there's no good reason to submit a share to a proportional pool after it has crossed that threshold, when SMPPS, PPLNS, or Geometric alternatives are available. (If for some reason you wanted to use Deepbit PPS as your backup, no idea why you'd do such a thing, you can wait until more like 0.525 * difficulty.)

Work is being done on identifying the who created each block with various heuristics, but it's not incredibly accurate yet, and it may prove difficult or impossible to be reliably accurate.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 17, 2011, 01:42:13 PM
Interestingly, the 'cheater function' shows that even hopping at <your shares>=<difficulty> has a 22% increase in effective hashrate (and thus coinage), which is better than eligius/arsbitcoin at 0% increase. So I it seems like it might pay have the jump off proportion of difficulty at 1.0 instead of 0.4

It's better to think in terms of the expected value of a share. If x is (50 / difficulty) The first share submitted in a round has an expected value of about 13x. The multiplier drops below 1 at approximately 0.4348 * difficulty. In other words, on average, there's no good reason to submit a share to a proportional pool after it has crossed that threshold, when SMPPS, PPLNS, or Geometric alternatives are available. (If for some reason you wanted to use Deepbit PPS as your backup, no idea why you'd do such a thing, you can wait until more like 0.525 * difficulty.)


This goes against nearly everything I've read - could you please explain a little more where you got these figures from? If you're referring to expected efficiency, that of course goes to 1.0 at <difficulty> total shares. If you're referring to Raulo's paper, that has a maximum at 0.435, but is still providing a 22% hashrate increase at <difficulty> total shares.

So I guess I'm missing something here - can you find a simple way to explain the results you got above?

btw, I've had multipliers of over 120x for a few shares of short rounds. 13x is *not* the maximum.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Aexoden on July 17, 2011, 02:04:35 PM
This goes against nearly everything I've read - could you please explain a little more where you got these figures from? If you're referring to expected efficiency, that of course goes to 1.0 at <difficulty> total shares. If you're referring to Raulo's paper, that has a maximum at 0.435, but is still providing a 22% hashrate increase at <difficulty> total shares.

So I guess I'm missing something here - can you find a simple way to explain the results you got above?

btw, I've had multipliers of over 120x for a few shares of short rounds. 13x is *not* the maximum.

These are expected values. If the round finishes on the first share, then you will receive 50BTC, which is difficulty * x, as far as efficiency goes. However, the average value of that first share is more like 14.2x. (Sometimes it'll be a long round and get a much lower payout.)

Sticking around until the difficulty still has a positive net effect because you already feasted on tons of early-round shares, which have a higher expected value. Every share you submit after 0.4348 diminishes your overall expected efficiency, but that overall efficiency will remain greater than 1 as long as you switch out at some point.

EDIT: Updated the expected value of the first share, since it depends on difficulty, and I was using a figure from an older difficulty.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 17, 2011, 02:08:08 PM
Work is being done on identifying the who created each block with various heuristics, but it's not incredibly accurate yet, and it may prove difficult or impossible to be reliably accurate.

Some things that might work:
  • Monitoring block announces on bitcoind (especially which node told you of which block first). I assume pools don't switch neighbours too often, so blocks from pools might take similar routes to you. Especially great if you manage to directly connect to a pool's bitcoind.
  • LongPoll timing
  • Measuring somehow server load (getwork response speed?) - after a block was solved, some database load should kick in. This might be delayed though, so not that reliable...
  • Monitor own getwork submissions for winning blocks and announce these not just to the pool but also on a 3rd party website (maybe with some incentives?). If everyone did it, we wouldn't need to guess! Also very hard (current difficulty hard!) to fake.
  • Combining all of the above measures on a website, ideally submitted automatically by a poolhop program. Attached could be a valid share for any pool with a certain difficulty, so it's not easy to submit bogus data, but these shares will emerge anyways during a miner's day ensuring constant submissions.
  • Monitoring the coinbase hash in the getwork. At least it can be assumed that NO block has been found globally if it stays the same...

Most of these things are NOT possible to be delayed at all, and most are even time critical (especially block announcements have to be done as fast as possible, no matter the cost), so pools have to get them out fast, no matter the payout scheme.

Edit:
If this can be done in an at least sufficiently reliable way, we wouldn't even need these stupid fakeable APIs any more!
LP timing could already be done by bitHopper, the more difficult part would be to emulate bitcoind traffic and to establish + monitor connections to other "real" bitcoind nodes (as many as possible...)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 17, 2011, 02:10:48 PM

Quote
Every share you submit after 0.4348 diminishes your overall expected efficiency, but that overall efficiency will remain greater than 1 as long as you switch out at some point.
OK, that sounds about right. But earlier you wrote:

Quote
The multiplier drops below 1 at approximately 0.4348 * difficulty

These seem contradictory statements to me, so I'm still missing something! ???


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 02:13:13 PM
Work is being done on identifying the who created each block with various heuristics, but it's not incredibly accurate yet, and it may prove difficult or impossible to be reliably accurate.

Some things that might work:
  • Monitoring block announces on bitcoind (especially which node told you of which block first). I assume pools don't switch neighbours too often, so blocks from pools might take similar routes to you. Especially great if you manage to directly connect to a pool's bitcoind.
  • LongPoll timing
  • Measuring somehow server load (getwork response speed?) - after a block was solved, some database load should kick in. This might be delayed though, so not that reliable...
  • Monitor own getwork submissions for winning blocks and announce these not just to the pool but also on a 3rd party website (maybe with some incentives?). If everyone did it, we wouldn't need to guess! Also very hard (current difficulty hard!) to fake.
  • Combining all of the above measures on a website, ideally submitted automatically by a poolhop program. Attached could be a valid share for any pool with a certain difficulty, so it's not easy to submit bogus data, but these shares will emerge anyways during a miner's day ensuring constant submissions.
  • Monitoring the coinbase hash in the getwork. At least it can be assumed that NO block has been found globally if it stays the same...

Most of these things are NOT possible to be delayed at all, and most are even time critical (especially block announcements have to be done as fast as possible, no matter the cost), so pools have to get them out fast, no matter the payout scheme.

VERY nice; that could give good data

could you pm techwtf?
maybe he is able to put some of those on his site: http://fasthoop.appspot.com/

(i guess we need people working at isps to watch winning getwork requests too)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dewon on July 17, 2011, 02:13:56 PM
I have multiple gpu's so soes it matter if I have 1 worker for each pool and running multiple phoenix clients pointed to only 1 bithopper client or should I have 1 worker, 1 bithopper client and 1 phoenix client for each gpu?

Also I get syntax error and script wont start when applying nofee's code to pools.py, any clue why's that?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 17, 2011, 02:17:31 PM
I have multiple gpu's so soes it matter if I have 1 worker for each pool and running multiple phoenix clients pointed to only 1 bithopper client or should I have 1 worker, 1 bithopper client and 1 phoenix client for each gpu?

Bithopper is a proxy. Point as many clients as you like at it.

Quote
Also I get syntax error and script wont start when applying nofee's code to pools.py, any clue why's that?

Can you post your code as entered in pools.py and password.py as well as the error?



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dewon on July 17, 2011, 02:27:08 PM
I have multiple gpu's so soes it matter if I have 1 worker for each pool and running multiple phoenix clients pointed to only 1 bithopper client or should I have 1 worker, 1 bithopper client and 1 phoenix client for each gpu?

Bithopper is a proxy. Point as many clients as you like at it.

Quote
Also I get syntax error and script wont start when applying nofee's code to pools.py, any clue why's that?

Can you post your code as entered in pools.py and password.py as well as the error?



Error:
Code:
Traceback (most recent call last):
  File "D:\aaaphoenix\bithopper\bitHopper.py", line 7, in <module>
    import work
  File "D:\aaaphoenix\bithopper\work.py", line 12, in <module>
    from bitHopper import *
  File "D:\aaaphoenix\bithopper\bitHopper.py", line 9, in <module>
    import stats
  File "D:\aaaphoenix\bithopper\stats.py", line 6, in <module>
    import pool
  File "D:\aaaphoenix\bithopper\pool.py", line 62
    'nofee':{'shares': default_shares, 'name': 'nofee',
          ^
SyntaxError: invalid syntax
>>>

pools:
Code:
  'nofee':{'shares': default_shares, 'name': 'nofee',
           'mine_address': 'nofeemining.com:8332', 'user': nofee_user,
           'pass': nofee_pass, 'lag': False, 'LP': None,
           'api_address':'http://www.nofeemining.com/api.php?key=' + nofee_user_apikey, 'role':'mine'}
        }
.
.
.
def nofee_sharesResponse(response):
    global servers
    info = json.loads(response)
    round_shares = int(info['poolRoundShares'])
    servers['nofee']['shares'] = round_shares
    bitHopper.log_msg('nofee:' + FormatShares(round_shares))
.
.
.
'nofee':nofee_sharesResponse,

password:
Code:
#nofee
nofee_user = 'my worker id'
nofee_pass= 'my password'
nofee_user_apikey = 'my api'


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 17, 2011, 02:43:13 PM
you are missing a comma

you pasted this


Code:
 'nofee':{'shares': default_shares, 'name': 'nofee',
           'mine_address': 'nofeemining.com:8332', 'user': nofee_user,
           'pass': nofee_pass, 'lag': False, 'LP': None,
           'api_address':'http://www.nofeemining.com/api.php?key=' + nofee_user_apikey, 'role':'mine'}

at the end of the list of others?

the one above it that used to be the last one.. NOW needs a comma after 'mine'}


so

      
Code:
'ozco':{'shares': default_shares, 'name': 'ozco.in',
           'mine_address': 'ozco.in:8332', 'user': ozco_user,
           'pass': ozco_pass, 'lag': False, 'LP': None,
           'api_address':'https://ozco.in/api.php', 'role':'mine'},

'nofee':{'shares': default_shares, 'name': 'nofee',
           'mine_address': 'nofeemining.com:8332', 'user': nofee_user,
           'pass': nofee_pass, 'lag': False, 'LP': None,
           'api_address':'http://www.nofeemining.com/api.php?key=' + nofee_user_apikey, 'role':'mine'}


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dewon on July 17, 2011, 02:47:05 PM
you are missing a comma

Working now, thanks  :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 17, 2011, 02:56:23 PM
has any hopper actually made any coin on ozco.in? seems like I have mined there quite a bit to have a zero account.

they dont seem to post any info on pending... Are we sure they are proportional?

I also get a high stale rate there, anyone else?


and why does our hopper disagree with fasthopper.com so often?

er what is the formula for hopping?



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 03:07:49 PM
has any hopper actually made any coin on ozco.in? seems like I have mined there quite a bit to have a zero account.

they dont seem to post any info on pending... Are we sure they are proportional?

I also get a high stale rate there, anyone else?


and why does our hopper disagree with fasthopper.com so often?

er what is the formula for hopping?



I was just semi freaking out about this exact thing.  Thought they might have sent automatic payment or something but it wasn't showing up.  Their website needs to be updated to show unconfirmed payment.  To see how much you have made, go to Pool Stats, go to the section that says "Last 10 Blocks Found" and click on All Blocks Found and it will tell you how much you earned per block and how many confirmations are left.


I get like 10% stales there because they are apparently hosting their site in the middle of the outback off of a laptop using a tethered cell phone for internet access.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 17, 2011, 03:12:18 PM
mmm just questioning again, do any of you also get api errors with mtred ? I assume mtred is also unusable now or am I wrong?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 03:22:50 PM
mmm just questioning again, do any of you also get api errors with mtred ? I assume mtred is also unusable now or am I wrong?

I never get api errors with mtred.  I get api errors with btcguild.

Also, weirdness with ozcoi.in.  I have two solved blocks with them, and the newer one has 3x the confirmations as the older one??  How is that possible? 


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 17, 2011, 03:27:48 PM
btcg no longer reporting pool shares at all?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 17, 2011, 03:36:03 PM
mmm just questioning again, do any of you also get api errors with mtred ? I assume mtred is also unusable now or am I wrong?

I never get api errors with mtred.  I get api errors with btcguild.

Also, weirdness with ozcoi.in.  I have two solved blocks with them, and the newer one has 3x the confirmations as the older one??  How is that possible? 

Well its not hopping to mtred anymore so the API in latest bithopper doesnt work with mtred anymore? Did you change anything?

Mtred is at ~130k shares so it should have been hopping to mtred long ago, just gettin api error similar to btcg api error :/


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 17, 2011, 03:40:56 PM
btcg no longer reporting pool shares at all?

Yeh, not sure if its just for hoppers or also so users cant see how unlucky the round is.

Maybe bit of both, To be honest even if I didnt use bithopper I wouldnt use a pool that doesnt show shares.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 17, 2011, 04:13:32 PM
I was mining mtred earlier. so it still hops there.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 04:49:03 PM
mmm just questioning again, do any of you also get api errors with mtred ? I assume mtred is also unusable now or am I wrong?

I never get api errors with mtred.  I get api errors with btcguild.

Also, weirdness with ozcoi.in.  I have two solved blocks with them, and the newer one has 3x the confirmations as the older one??  How is that possible?  

Well its not hopping to mtred anymore so the API in latest bithopper doesnt work with mtred anymore? Did you change anything?

Mtred is at ~130k shares so it should have been hopping to mtred long ago, just gettin api error similar to btcg api error :/

My bithopper jumped the INSTANT mtred solved a block to mtred.  What I am wondering is why it switched off of mtred and went back to ozcoin before hitting the magic 43% or whatever number.  I don't know exactly when bithopper hopped off of mtred and back to ozcoin, but it was before 500k shares on mtred.  Does bithopper see greater potential in mining at ozcoin at 250k shares than at mtred at 500k shares or something?  No idea how that works.

I thought bithopper jumped to a new pool and mined there until 680k shares unless there was a block solved at one of the other pools?  It seems to jump to a pool after it solves a block but then switch pools again before hitting or coming near to 680k shares and return to the smaller pool with fewer shares that hasn't solved a block in hours.  Maybe this is the right way to do it, i have no idea.  


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 17, 2011, 05:05:03 PM
Quote
To see how much you have made, go to Pool Stats, go to the section that says "Last 10 Blocks Found" and click on All Blocks Found and it will tell you how much you earned per block and how many confirmations are left.

thanks I thought I looked everywhere. They didnt hide it or anything huh? Surprised it wasnt down a broken flight of stairs in a darken room with a sign on the door saying beware of leopard.


Quote
What I am wondering is why it switched off of mtred and went back to ozcoin before hitting the magic 43% or whatever number.


Try as I might, I cant seem to figure out the logic in the hopper but I havent tried to look too much at the code.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 05:08:59 PM

thanks I thought I looked everywhere. They didnt hide it or anything huh? Surprised it wasnt down a broken flight of stairs in a darken room with a sign on the door saying beware of leopard.


Quote
What I am wondering is why it switched off of mtred and went back to ozcoin before hitting the magic 43% or whatever number.


Try as I might, I cant seem to figure out the logic in the hopper but I havent tried to look too much at the code.

No kidding right?  I was freaking out a little when I saw:
Current Balance   0.00000000 BTC
Total Earned   0.00000000 BTC

and no payment in my wallet.  They really need to add an unconfirmed balance.

As for the logic of bithopper, I have no clue either.  I gotta say it works though.  Ive only been mining with it for like 36 hours but the first 24 has made me a believer.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: msb8r on July 17, 2011, 05:39:14 PM

thanks I thought I looked everywhere. They didnt hide it or anything huh? Surprised it wasnt down a broken flight of stairs in a darken room with a sign on the door saying beware of leopard.


Quote
What I am wondering is why it switched off of mtred and went back to ozcoin before hitting the magic 43% or whatever number.


Try as I might, I cant seem to figure out the logic in the hopper but I havent tried to look too much at the code.

No kidding right?  I was freaking out a little when I saw:
Current Balance   0.00000000 BTC
Total Earned   0.00000000 BTC

and no payment in my wallet.  They really need to add an unconfirmed balance.

As for the logic of bithopper, I have no clue either.  I gotta say it works though.  Ive only been mining with it for like 36 hours but the first 24 has made me a believer.

As far as I can tell looking through the code - and someone please correct me, if I'm wrong - it uses the pool with fewest shares. The exception to this is if the pool with fewest shares has 10% or less fewer shares than the pool currently being mined for.

e.g. if you're currently mining for Mt Red and Mt Red has 200K shares, then any pool with less than 180K shares will be hopped to.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 17, 2011, 05:39:32 PM

thanks I thought I looked everywhere. They didnt hide it or anything huh? Surprised it wasnt down a broken flight of stairs in a darken room with a sign on the door saying beware of leopard.


Quote
What I am wondering is why it switched off of mtred and went back to ozcoin before hitting the magic 43% or whatever number.


Try as I might, I cant seem to figure out the logic in the hopper but I havent tried to look too much at the code.

No kidding right?  I was freaking out a little when I saw:
Current Balance   0.00000000 BTC
Total Earned   0.00000000 BTC

and no payment in my wallet.  They really need to add an unconfirmed balance.

As for the logic of bithopper, I have no clue either.  I gotta say it works though.  Ive only been mining with it for like 36 hours but the first 24 has made me a believer.

For ozcoin your earnings are here: https://ozco.in/blocks.php


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 17, 2011, 05:40:47 PM
a solution to btc guild and deepbit delayed stats ?
1) run a bitcoin client for each of this pools on different ports
2) config that bitcoin clients to allow the connection ONLY to this pools
3) record the time for the new block found whit each bitcoin clients, check this time against normal "new block" event, the time on the bitcoin clients should be lower
4) suppose that if the time is lower the pool got block and change the hopper on that pool


if the hopper mine at pool X and the bitcoin client is connected only on pool Z when pool Z get new block the "announcement" goes from the pool Z to bitcoin client and normal scenario from the pool Z to pool X then to the hopper

I don't think that would work. BTCG will still report new block for anyone who finds it, not necessarily just BTCG.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 05:43:27 PM
it'll only work if you bitcoind client listens to MANY other clients.

when it sees the message from btcguild first it's very likely btcguilds block.

shouldn't be that difficult to code either.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 05:53:19 PM
As far as I can tell looking through the code - and someone please correct me, if I'm wrong - it uses the pool with fewest shares. The exception to this is if the pool with fewest shares has 10% or less fewer shares than the pool currently being mined for.

e.g. if you're currently mining for Mt Red and Mt Red has 200K shares, then any pool with less than 180K shares will be hopped to.


OK, so in the situation where ozcoin is at 250k shares and then mtred finds a block, bithopper jumps to mtred until mtred has 10% more shares than ozcoin?  Is that the most efficient?  I am sure people smarter and more well versed in hopping than I know better, but wouldn't it be smart to have bithopper stay with mtred until a certain % of difficulty was reached?  Or is the benefit of mining at a much smaller much slower pool greater than staying with mtred?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 05:58:06 PM
earlier sharesare worth more than later shares.
you always (prop) want to go the pool which founds a block.

it gets a little tricky if two pools found a block very close. i made a patch for that - have to discussed with c00w (just see git if interested)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 17, 2011, 06:12:52 PM
Quote
Ive only been mining with it for like 36 hours but the first 24 has made me a believer.

LOL without a doubt me too. Sometimes I get ahead of myself with the desire to "tweak" just a little more. But I have to say I am very happy with the results of the hopper so far. I am doing far better than I was mining pools solo.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 17, 2011, 06:14:02 PM
earlier sharesare worth more than later shares.
you always (prop) want to go the pool which founds a block.

it gets a little tricky if two pools found a block very close. i made a patch for that - have to discussed with c00w (just see git if interested)

I will wait till c00w update bithopper if neccesary.

So what you suggest is, no matter the speed of a pool, if one pool moves above X shares in current difficulty, it is allways better to switch to another pool that has lower than X shares in current difficulty, even if X shares from first pool is less than the predefined hop percentage ie. 40% ?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 06:21:25 PM
earlier sharesare worth more than later shares.
you always (prop) want to go the pool which founds a block.

it gets a little tricky if two pools found a block very close. i made a patch for that - have to discussed with c00w (just see git if interested)

I will wait till c00w update bithopper if neccesary.

So what you suggest is, no matter the speed of a pool, if one pool moves above X shares in current difficulty, it is allways better to switch to another pool that has lower than X shares in current difficulty, even if X shares from first pool is less than the predefined hop percentage ie. 40% ?

this current version i published to discuss it only works with pools which has an more-or-less equal hashrate.

i don't say you should ever not switch to a pool with the most less shares.

but if there are two pools which found a block the same second you don't know which of them is better (means: who will solve this block first).

so best thing would be to divide your shares 50/50 (again: same hashrate atm only, could be improved)

i would prefer to switch pool whenever a share is found on a random basis (see my other version, not on git but in this forum - just for a look; it isnt really usable), but that just do only work if you have just one miner attached. with two or more you'll fuck up some getworks and get way more stales.

i am using my "time-slice" method since ten hours now (tweaked it a little more) and it seems good.

eg: the last mtred -> ozcoin switch. for you it switched immediatly. for me my shares has been splitted


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 17, 2011, 06:23:20 PM
Well it would be nice to get a seperate bithopper version using your method, so I can run both evenly split among my available mhash and see over 24-48hrs if there is a different in earnings.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 06:27:35 PM
here you go:

www.k1024.de/dev.7z

it has a small web interface:

http://ip:mineport/current/index

i emptied password.py completely

EDIT: please check pool.py. sometimes i change keys there too.... to lazy to look at it right now :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 17, 2011, 06:42:01 PM
Thanks will check it out and report back.

Appreciate it :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 06:42:26 PM
Damnit, bitcoins.lc. . .   They routinely let their site misreport the length of rounds and then after the fact correct them.  They had a "14 hour" round that suddenly turned into a 12 hour round, a 13 minute round and an hour and 45 minute round.  Bithopper didn't jump in on the 13 minute or hour and 45 minute round because of the misreporting.  They do this almost everytime there is a very long round.  Wonder if its an attempt to stop hopping or if there is an issue with the pool itself.  People complain about this regularly in their thread in the Pools section.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 06:44:13 PM
bitcoins.lc is known to HATE hoppers.
and the owner is a really unkind person

i wont ever mine their again (even when hopping [hopefully someday] becomes unprofitable)

i don't work for douches!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 17, 2011, 06:57:09 PM
yeah not a fan of bitcoin.lc.. how he handled the whole multiclone affair left a foul taste in my mouth. He eventually gave them back their bitcoin but doesnt change how he handled it in the first place.

I'd rather just deal with one less place to hop even if our list is rather short.


cool flower, I will check out your hopper as well. and let you know.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 07:00:36 PM
cool flower, I will check out your hopper as well. and let you know.

its not mine... its c00w. just for clarification :)
i am just playing with the maths

and it is not perfect right now!

planned:
 - better handling of backup bools
 - regard pools hashrate

but next i'll try to patch bitcoin itself to detect btcguild block - just because i think its possible


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 07:03:07 PM
yeah not a fan of bitcoin.lc.. how he handled the whole multiclone affair left a foul taste in my mouth. He eventually gave them back their bitcoin but doesnt change how he handled it in the first place.

I'd rather just deal with one less place to hop even if our list is rather short.


cool flower, I will check out your hopper as well. and let you know.

Yea, the way he handled that was ridiculous.  I think his issue was the thousands of connections going to one account, but trying to keep the money is plain theft.

The only reason I would consider to continue mining there is because there simply isn't that many pools to hop to right now, and I feel the larger the list of hoppable pools the more I will make.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 07:05:44 PM
you take the risk of getting banned.
its VERY easy for pool operators to caught a hopper if he stays for more- let's say - 5 rounds.

and make a new account every 3 blocks: you need much hashrate to afford that, as there is a minimum payout :)

edit: btw the time-slice-method makes it more difficult for pool operators will detect you. as your hashrate will slowly go down


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 17, 2011, 07:20:04 PM
I meant your modification of his hopper.
I do like how you cleaned out the cobwebs

but I am having problems making it work, cause I am soo noob


Code:
D:\Users\joulesbeef\Desktop\dev\dev\c00w-bitHopper-50ab019>bithopper.py
Unhandled error in Deferred:
Unhandled Error
Traceback (most recent call last):
  File "D:\Users\joulesbeef\Desktop\dev\dev\c00w-bitHopper-50ab019\bitHopper.py"
, line 391, in <module>
    main()
  File "D:\Users\joulesbeef\Desktop\dev\dev\c00w-bitHopper-50ab019\bitHopper.py"
, line 383, in main
    slice_call.start(2)
  File "D:\Python27\lib\site-packages\twisted\internet\task.py", line 163, in st
art
    self()
  File "D:\Python27\lib\site-packages\twisted\internet\task.py", line 194, in __
call__
    d = defer.maybeDeferred(self.f, *self.a, **self.kw)
--- <exception caught here> ---
  File "D:\Python27\lib\site-packages\twisted\internet\defer.py", line 133, in m
aybeDeferred
    result = f(*args, **kw)
  File "D:\Users\joulesbeef\Desktop\dev\dev\c00w-bitHopper-50ab019\bitHopper.py"
, line 48, in slice_server
    select_best_server()
  File "D:\Users\joulesbeef\Desktop\dev\dev\c00w-bitHopper-50ab019\bitHopper.py"
, line 128, in select_best_server
    log_msg("reslice 1: " + str(info["slice"]) + " " + str(info["shares"]) + " "
 + str(info['slicedShares']))
exceptions.KeyError: 'slice'
[15:14:39] bitHopper Calculating MHash
[15:14:39] MHash0
[15:14:41] nofee:   5773049 3.69107
[15:14:41] Error in pool api for nofee
"[Failure instance: Traceback: <type 'exceptions.KeyError'>: 'slice'\nD:\\Python
27\\lib\\site-packages\\twisted\\internet\\defer.py:1076:gotResult\nD:\\Python27
\\lib\\site-packages\\twisted\\internet\\defer.py:1063:_inlineCallbacks\nD:\\Pyt
hon27\\lib\\site-packages\\twisted\\internet\\defer.py:361:callback\nD:\\Python2
7\\lib\\site-packages\\twisted\\internet\\defer.py:455:_startRunCallbacks\n--- <
exception caught here> ---\nD:\\Python27\\lib\\site-packages\\twisted\\internet\
\defer.py:542:_runCallbacks\nD:\\Users\\joulesbeef\\Desktop\\dev\\dev\\c00w-bitH
opper-50ab019\\pool.py:132:selectsharesResponse\nD:\\Users\\joulesbeef\\Desktop\
\dev\\dev\\c00w-bitHopper-50ab019\\bitHopper.py:195:server_update\nD:\\Users\\jo
ulesbeef\\Desktop\\dev\\dev\\c00w-bitHopper-50ab019\\bitHopper.py:128:select_bes
t_server\n]"
[15:14:42] mtred:             1172395 0.74959
[15:14:42] Error in pool api for mtred

using python 2.7 if that makes any difference.

I copied over my password file from the cows unmodified version, erasing what i didnt need

any ideas?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 07:22:06 PM
please recheck pool.py

there are entries missing. my new keys: slice and slicedShares (or sth like that)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 17, 2011, 07:22:59 PM
cool flower, I will check out your hopper as well. and let you know.

its not mine... its c00w. just for clarification :)
i am just playing with the maths

and it is not perfect right now!

planned:
 - better handling of backup bools
 - regard pools hashrate

but next i'll try to patch bitcoin itself to detect btcguild block - just because i think its possible

me too "thinks that", don't remember where i read something about a central hub patch for the pools to announce it's blocks very fast. We could connect to that hub instead of patching bitcoin, what do you think


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 07:25:44 PM
i think we need to be that hub itself.
because if the hub announces the new block it wouldn't tell us where it get it from.

but: the long way to go is with a central server like fasthopper.appspot.
^^ the only question is how good that service would/could be


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 17, 2011, 07:26:39 PM
Quote
there are entries missing. my new keys: slice and slicedShares (or sth like that)


I actually came back as quick as I could to erase my last post.. but you are too quick.


I tried to add arsbitcoin as a backup and screwed something up

ahh you use multiclone instead as a backup.. cool. I tried them a little, seems like a good backup.


how does it choose to use the backups? will too many screw me up? can i still add arscoin?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 07:29:07 PM
you take the risk of getting banned.
its VERY easy for pool operators to caught a hopper if he stays for more- let's say - 5 rounds.

and make a new account every 3 blocks: you need much hashrate to afford that, as there is a minimum payout :)

edit: btw the time-slice-method makes it more difficult for pool operators will detect you. as your hashrate will slowly go down

I don't think he cares about hopping.  Pretty sure his main concern was thousands of connections coming from a single IP to a single account.  Me jumping in and out of rounds with 1 connection from 1 ip, I don't think he cares, but we will see.  His pool has had major connection issues, with multiclone and botnets overwhelming his servers.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 07:32:23 PM
btw: does bitp.it fakes it stats?
second time today that my hopper reports > 70%/diff and then immediatly goes down to 28%

unconfirmed reward did not change. so did they even found a block?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 17, 2011, 07:33:09 PM
i think we need to be that hub itself.
because if the hub announces the new block it wouldn't tell us where it get it from.

but: the long way to go is with a central server like fasthopper.appspot.
^^ the only question is how good that service would/could be

I was just thinking all the posib. around that fasthopper. Btw, we could view and correlate some ip's with block announce in central hubs making a static list, hope pools don't stay on dynamic ip's :) ... just joking


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 17, 2011, 07:36:42 PM
still some problems flower if you can help.

I dont seem to get any error messages(that I recognize) but cant seem to connect, did you change the ports or anything?

Code:
D:\Users\joulesbeef\Desktop\dev\dev\c00w-bitHopper-50ab019>bitHopper.py
[15:32:48] reslice 1: -1 938434.470503 0
[15:32:48] reslice 1: -1 1564057.45084 0
[15:32:48] reslice 1: -1 1094840.21559 0
[15:32:48] reslice 1: -1 1564057.45084 0
[15:32:48] reslice 1: -1 1564057.45084 0
[15:32:48] reslice 1: -1 1564057.45084 0
[15:32:48] reslice 1: -1 1564057.45084 0
[15:32:48] slicing True
[15:32:48] multiclone weighted to 2.96311510161e-16
[15:32:48] eligius weighted to 1.98466422248e-16
[15:32:48] multiclone sliced to 359.326668493
[15:32:48] eligius sliced to 240.673331507
[15:32:48] Server change to multiclone, telling client with LP
[15:32:48] bitHopper Calculating MHash
[15:32:48] MHash0
[15:32:48] nofee:   5777681 3.69403
[15:32:48] reslice 1: 359.326668493 938434.470503 938434.470503
[15:32:48] OK NOT slicing because of multiclone
[15:32:48] reslice 1: -1 1564057.45084 1564057.45084
[15:32:48] reslice 1: 240.673331507 1094840.21559 1094840.21559
[15:32:48] OK NOT slicing because of eligius
[15:32:48] reslice 1: -1 1564057.45084 1564057.45084
[15:32:48] reslice 1: -1 5777681 1564057.45084
[15:32:48] reslice 1: -1 1564057.45084 1564057.45084
[15:32:48] reslice 1: -1 1564057.45084 1564057.45084
[15:32:48] slicing False
[15:32:49] mtred:             1254179 0.80188
[15:32:49] reslice 1: 359.326668493 938434.470503 938434.470503
[15:32:49] OK NOT slicing because of multiclone
[15:32:49] reslice 1: -1 1254179 1564057.45084
[15:32:49] FORCE slicing because of mtred
[15:32:49] slicing True
[15:32:49] multiclone weighted to 2.96311510161e-16
[15:32:49] eligius weighted to 1.98466422248e-16
[15:32:49] multiclone sliced to 359.326668493
[15:32:49] mtred sliced to 169.046142328
[15:32:49] eligius sliced to 240.673331507
[15:32:49] bitclockers:       2441503 1.56101
[15:32:49] reslice 1: 359.326668493 938434.470503 938434.470503
[15:32:49] OK NOT slicing because of multiclone


It just keeps doing that... and mine guiminer just says connecting.. it looks cool I want to try if you can help.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 07:37:26 PM
in case of dynamic ips we could just use hubs near to the pools (near means: known to be connected to that pool)

social engineering times begin :)

but i don't believe that: from a pool's point of view it is important to spread new blocks as fast as possible - to reduce invalids.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 07:38:49 PM
still some problems flower if you can help.

I dont seem to get any error messages(that I recognize) but cant seem to connect, did you change the ports or anything?


sorry
i am running it at port 80
you can change it in bithopper.py at the very end)

that was the main reason i use a proxy: i wanted to be able to mine from work


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: anty on July 17, 2011, 07:58:12 PM
btw: does bitp.it fakes it stats?
second time today that my hopper reports > 70%/diff and then immediatly goes down to 28%

unconfirmed reward did not change. so did they even found a block?
Looks like it. They are still on round 14 but suddenly got a 90 Gh/s boost


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 08:17:49 PM
btw: does bitp.it fakes it stats?
second time today that my hopper reports > 70%/diff and then immediatly goes down to 28%

unconfirmed reward did not change. so did they even found a block?
Looks like it. They are still on round 14 but suddenly got a 90 Gh/s boost

They got the boost because of how bithopper works I think.  We discussed this within the last page or two of comments.  Bitp.it was sitting around 420k shares while we were all mining at ozco.in.  Ozco.in passed 420k shares + 10%, so bithopper jumped over to bitp.it.  You will see ozco.in lost about the same hashrate that bitp.it gained.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 08:22:52 PM
if you are not on ozcoin something is wrong on your hopper
 

no it's confirmed

bitp.it is faking stats. so it stays at 438035 - which is "better" than ozcoin 581449

just implementing a feature to automatic disable pools which didnt changed their round_shares in a 30minute frame.

btw: bitp.it is currently thinking about a new payout system. maybe just kick them out.

my patched hopper evenly splits my shares between them atm :)

Edit: (Thank you bitpit for good sample data for two pools next to each other. now i need a pool at 40% and all others at 60% - ok i think i just have to do the math myelf :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 17, 2011, 08:32:54 PM
sweet! it is working now..

Thanks for the help and the work.

You too c00w


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 08:40:45 PM
ozcoin has a 15min stats update-delay and sometimes an unstable api.
thats why i thought about 30min.

EDIT: btw: suggestions are welcome
EDIT: regarding github: i want to wait for c00w. maybe we can combine our "trees". i dont like the idea of multiple versions. one version which is configurable - that should be enough


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 17, 2011, 08:44:43 PM
ozcoin has a 15min stats update-delay and sometimes an unstable api.
thats why i thought about 30min.

EDIT: btw: suggestions are welcome
EDIT: regarding github: i want to wait for c00w. maybe we can combine our "trees". i dont like the idea of multiple versions. one version which is configurable - that should be enough

I second that thought about one version thats configurable. c00wie where art thou ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 08:47:25 PM
Just disabled bitp.it by changing 'mine' to 'info'.  Starting to get pretty thin here on the hoppable pool front. 


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 17, 2011, 08:51:36 PM
also if i can config this time is much better :)

i also do think we need more configuration options (eg port). i just didn't do it, because i want to merge easily with c00w's new versions (you know... he is really fast; my old versions couldn't never catch him up)

soo it's late (germany)... will come back tomorror evening.
enjoy your hopping :


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 08:54:31 PM
From the bitp.it thread:


and btw, the current shares are displayed wrong, I think they are over 1 million shares till now, but there are only 438000 displayed.


The shares and scoring system are currently correct, and working fine. Those API and stats in the top bar are driven via static files. Perhaps a cron task has failed to update them, I will look into it.

Edit:  Bitp.it fixed their stuck share problem.  Re-enabled them and we will see how stable they are.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 17, 2011, 09:17:26 PM
From the bitp.it thread:


and btw, the current shares are displayed wrong, I think they are over 1 million shares till now, but there are only 438000 displayed.


The shares and scoring system are currently correct, and working fine. Those API and stats in the top bar are driven via static files. Perhaps a cron task has failed to update them, I will look into it.

Edit:  Bitp.it fixed their stuck share problem.  Re-enabled them and we will see how stable they are.

What kind of scoring are they using? May not be worth hopping. They also don't list any past shares. The lack of transparency isn't good.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 17, 2011, 09:37:36 PM
What kind of scoring are they using? May not be worth hopping. They also don't list any past shares. The lack of transparency isn't good.

Pretty sure its proportional right now.  They are apparently going to be switching to a different method soon though, but I highly doubt they would do that in a middle of a block.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 17, 2011, 11:49:46 PM
me too "thinks that", don't remember where i read something about a central hub patch for the pools to announce it's blocks very fast. We could connect to that hub instead of patching bitcoin, what do you think

Maybe that was my suggestion a few pages back?

Anyways:
For detecting (at least quite) reliably which pools solved which block we need an alternative implementation of the P2P protocol of bitcoind itself.

We need a pure listening node that can connect reliably and steadily to a lot of bitcoind clients and keep this connection alive.

We do NOT need direct connections to pools, what I suggested was to measure from which nodes you FIRST get a block announce (since we just listen and do not relay, we should get a "new block found" from node 23, then a few miliseconds later from node 42 and so on) and in which order. Still there might be a certain churn rate in the network, but with a little bit of luck (and enough connections/quickly enough found blocks...) it should be possible after an hour to say that blocks which are first announced by node 23 and then node 42 are from deepbit and blocks that are first announced by node 79 and then node 38 are from btcg for example.

Of course it would be easier if we connect directly or to neighbours of pools (with ~20 000 nodes online this is kinda hard to just randomly get out of luck though) but even a bit further away we still would hopefully see some patterns (which would naturally change over time as intermediate nodes leave and come who verify + relay blocks slower/faster) that would only shift slowly over time.

This entity should however in my opinion be open source (and hand out the acquired data via an API for free) BUT be hosted on Google App Engine or something similar, as I'm not 100% sure if it does not harm the network to have some well connected black holes in there (I seriously doubt it, but you never know...)

Advantages:
No need for ANY statistics besides eventually numbers of solved blocks (not even that is really needed as you get payouts that can be traced back to generations).

No way to delay or to develop countermeasures, as pools HAVE to rely on announcing their blocks to all neighbours as fast as possible. We just count on the fact that the pools have some different neighbours and this way new block announcements spread differently though the net.

Once in place this can be even useful beyond finally getting rid of proportional pools: It might be useful to find out if pool operators really don't steal blocks, detect hidden pools (or at least proof their existance) and/or huge solo miners and maybe other stuff I didn't think of yet.

Disadvantages:
Countermeasures from pools would involve hiding any kind of statistics to the users (noone is allowed to ever see which blocks are found by it's users) and additionally putting income of several pools in a mixing cascade before paying out. Even then we could probably guess that Pool X has found a block and by trying out deduct which one Pool X is after some time though. These countermeasures would be even worse than just faking/delaying stats for users there, but the fanbois would still praise them for their pool hopping fight.

It also might not be as reliable as APIs, but these fail also all the time (as you see).

Also it might be hard(er) to track small pools - hopping deepbit + btcguild should anyways be far more fun though, hm? ;D

Most likely some serious development work needed (probably, I have no idea how complex the P2P protocol of bitcoind really is)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 17, 2011, 11:57:20 PM
earlier sharesare worth more than later shares.
you always (prop) want to go the pool which founds a block.

it gets a little tricky if two pools found a block very close. i made a patch for that - have to discussed with c00w (just see git if interested)

I will wait till c00w update bithopper if neccesary.

So what you suggest is, no matter the speed of a pool, if one pool moves above X shares in current difficulty, it is allways better to switch to another pool that has lower than X shares in current difficulty, even if X shares from first pool is less than the predefined hop percentage ie. 40% ?

this current version i published to discuss it only works with pools which has an more-or-less equal hashrate.

i don't say you should ever not switch to a pool with the most less shares.

but if there are two pools which found a block the same second you don't know which of them is better (means: who will solve this block first).

so best thing would be to divide your shares 50/50 (again: same hashrate atm only, could be improved)

i would prefer to switch pool whenever a share is found on a random basis (see my other version, not on git but in this forum - just for a look; it isnt really usable), but that just do only work if you have just one miner attached. with two or more you'll fuck up some getworks and get way more stales.

i am using my "time-slice" method since ten hours now (tweaked it a little more) and it seems good.

eg: the last mtred -> ozcoin switch. for you it switched immediatly. for me my shares has been splitted


It won't net you more coins, just a more consistent supply by dividing risk by two pools, so this mod is to reduce variation, right?



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 12:19:24 AM
me too "thinks that", don't remember where i read something about a central hub patch for the pools to announce it's blocks very fast. We could connect to that hub instead of patching bitcoin, what do you think

Maybe that was my suggestion a few pages back?

Anyways:
For detecting (at least quite) reliably which pools solved which block we need an alternative implementation of the P2P protocol of bitcoind itself.

We need a pure listening node that can connect reliably and steadily to a lot of bitcoind clients and keep this connection alive.

We do NOT need direct connections to pools, what I suggested was to measure from which nodes you FIRST get a block announce (since we just listen and do not relay, we should get a "new block found" from node 23, then a few miliseconds later from node 42 and so on) and in which order. Still there might be a certain churn rate in the network, but with a little bit of luck (and enough connections/quickly enough found blocks...) it should be possible after an hour to say that blocks which are first announced by node 23 and then node 42 are from deepbit and blocks that are first announced by node 79 and then node 38 are from btcg for example.

Of course it would be easier if we connect directly or to neighbours of pools (with ~20 000 nodes online this is kinda hard to just randomly get out of luck though) but even a bit further away we still would hopefully see some patterns (which would naturally change over time as intermediate nodes leave and come who verify + relay blocks slower/faster) that would only shift slowly over time.

This entity should however in my opinion be open source (and hand out the acquired data via an API for free) BUT be hosted on Google App Engine or something similar, as I'm not 100% sure if it does not harm the network to have some well connected black holes in there (I seriously doubt it, but you never know...)

Advantages:
No need for ANY statistics besides eventually numbers of solved blocks (not even that is really needed as you get payouts that can be traced back to generations).

No way to delay or to develop countermeasures, as pools HAVE to rely on announcing their blocks to all neighbours as fast as possible. We just count on the fact that the pools have some different neighbours and this way new block announcements spread differently though the net.

Once in place this can be even useful beyond finally getting rid of proportional pools: It might be useful to find out if pool operators really don't steal blocks, detect hidden pools (or at least proof their existance) and/or huge solo miners and maybe other stuff I didn't think of yet.

Disadvantages:
Countermeasures from pools would involve hiding any kind of statistics to the users (noone is allowed to ever see which blocks are found by it's users) and additionally putting income of several pools in a mixing cascade before paying out. Even then we could probably guess that Pool X has found a block and by trying out deduct which one Pool X is after some time though. These countermeasures would be even worse than just faking/delaying stats for users there, but the fanbois would still praise them for their pool hopping fight.

It also might not be as reliable as APIs, but these fail also all the time (as you see).

Also it might be hard(er) to track small pools - hopping deepbit + btcguild should anyways be far more fun though, hm? ;D

Most likely some serious development work needed (probably, I have no idea how complex the P2P protocol of bitcoind really is)

Do you mean just one listening post, which would 'learn' after a while which pool announced blocks first, second, third etc? Or multiple listening posts?

I think multiple listening posts - as many as there are hoppers - would be a better bet since multiple sample will be more accurate more quickly than one sample multiple times.

Of course you then have to be able to trust the other contributors though. Any consistently very significant difference in estimated pool guess would let you brand the contributor as a plant, I suppose.

Wow, this really feels like we're on a war footing.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 18, 2011, 12:52:31 AM
Do we jump at 43.5%?  Isn't that 630k shares?  Seems to have jumped off of mtred onto arsbitcoin at around 550k shares.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 18, 2011, 12:59:54 AM
The nice thing is that we can only win, as there are only so many things "they" can hide... ;)

Multiple listening posts might be fine, the difficult task then would be aggregating them as anyone could sends bogus data.

Also the data from multiple listening nodes might be hard to combine, as geographical distance and other stuff makes network latency really uncomparable... all you could say is that block 1234 was likely from the same source as block 1230. If a lot of listening nodes agree, this might be a stronger indicator, that it's correct. BUT there's no guarantee that they don't all just send fake data, so the only listening node I would trust would be either my own or a big trusted one that had correct predictions in the past already (+ is open source).

In the end we need to find a way to be able to be individually spammed by as many nodes as possible when a block gets announced - preferrably in the hundreds, thousands or beyond. The more nodes send us that data, the finer that "fingerprint" would become - and the less we have to rely on certain nodes.

Specs are here btw.: https://en.bitcoin.it/wiki/Protocol_specification

Seems like you need to send a "version" packet first, then you get a similar one back from the other client (to gain the current block count, just send out a few ones and look at the answers, then report the max. value from there). It might be necessary to have the headers stored though, as the listener node might be asked for them (you can claim to not have any full block data) via "getheaders". I don't know what happens if you just ignore these request: in the worst case, the other node drops the connection/blacklists you. In the best case you just send nothing and the other client tries somewhere else.

On https://en.bitcoin.it/wiki/Protocol_rules you can see that there is a lot of computation going on, until a block is verified. It is only communicated to other clients AFTER this. This means a bigger block can take nearly half a second in reality to verify --> should show nice patterns!

According to https://en.bitcoin.it/wiki/Network we need to send something (maybe a "ping" message? https://en.bitcoin.it/wiki/Protocol_specification at the bottom...) every hour or so to our neighbours.
"Heartbeat
If thirty minutes or more has passed since the client has transmitted any messages it will transmit a message to keep the connection to the peer node alive.
If ninety minutes has passed since a peer node has communicated any messages, then the client will assume that connection has closed."


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 03:25:21 AM
Quote
Also the data from multiple listening nodes might be hard to combine, as geographical distance and other stuff makes network latency really uncomparable... all you could say is that block 1234 was likely from the same source as block 1230. If a lot of listening nodes agree, this might be a stronger indicator, that it's correct. BUT there's no guarantee that they don't all just send fake data, so the only listening node I would trust would be either my own or a big trusted one that had correct predictions in the past already (+ is open source).

Actually, I didn't explain myself well. I was thinking that you'd compare, for each listening node, arrival times and then compare that to which block actually was first. Collect say 24 hours of data for each listener. This will calibrate each listener to it's particular circumstance. Then the listener send its best guess to a central collecting website. If this is reliable, then you'll get a whole lots of listeners sending you their best guess. As long as:

a) Fakers don't make up a large percentage of the group;
b) non-faking listening nodes tend to agree most of the time
c) you can automatically remove fakers by their monitoring how consistently well or poorly they guess

then you'll get much better results than using one listening node alone.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 18, 2011, 05:29:12 AM
1) Where have you been?
Hiking traffic etc...

2) btcguild doesn't work!
I know I disabled it.

3) There is a wierd miner hanging issue?
I know I just saw it.

4) You need to merge flower's version into yours?
I'll talk to him. I literally just read the thread.

5) How are stats coming?
I did no work this weekend. So the same as friday.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 18, 2011, 05:30:26 AM
2) btcguild doesn't work!
I know I disabled it.


You can remove bitp.it too now.  They just disabled their share stats so miners will be mining with them all night long if they don't catch it.  Its a shame because they gave me some awesome payouts.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 05:35:39 AM
I'm still getting bitp.it's total shares in my user api. I didn't mine with them all night - although I did mine with btcg all night the night before, which killed my stats for them.

BTW, bitpit is on 25226 shares, only one hour from start of round. Jump on folks!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 05:37:08 AM
1) Where have you been?
Hiking traffic etc...

......

5) How are stats coming?
I did no work this weekend. So the same as friday.

You mean (*looks incredulous*) you actually have some kind of *life*?
Huh. What that like, then?



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 18, 2011, 05:40:13 AM
bitp now too, we need new pools, our list if getting rather short.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 18, 2011, 05:42:10 AM
I'm still getting bitp.it's total shares in my user api. I didn't mine with them all night - although I did mine with btcg all night the night before, which killed my stats for them.

BTW, bitpit is on 25226 shares, only one hour from start of round. Jump on folks!

How are you getting that information?  On the website it says N/A and in bithopper is says 0 and in the bitp.it thread the last post is the operator talking about disabling the share stats.  I really want to keep mining at bitp.it because its been an awesome pool the last couple of days, but with no share stats that not a possibility . . .yet.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 05:45:58 AM
try using your user api instead of pool stats. Works for me.

edit wait, wrote too soon. User api total shares are down too now. If this is on purpose, why would they do that at the start of a round? Better off doing that at the end of a long round.

Ah well, little pool. Say good-bye to the 'hopper boost'! For the moment, eh Sukrim?  ;)


edit 2 Fools! They take away total shares, but they do not take away time since start of round and average hashrate! BWA-HA-HA-HA-HAAAAA!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 18, 2011, 05:50:13 AM
try using your user api instead of pool stats. Works for me.

edit wait, wrote too soon. User api total shares are down too now. If this is on purpose, why would they do that at the start of a round? Better off doing that at the end of a long round. I reckon they're just having problems with their database.



Edit:  No point now that you have seen the change too.  Damn, was getting excited there for a second.  


I think he timed it so that miners in the US would be mining all night long on his pool without switching.  I think it was a coincidence that they found a block.  At least, that is what I would do if I was a pool operator.  Squeeze out a little bit more form that glorious hopper boost before fixing it for the users.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 05:54:46 AM
bitp now too, we need new pools, our list if getting rather short.

Did you add nofeemining and rfcpool? Bithasher too, although I'm having problems getting a log in to work there. Finally, I haven't gotten triplemining to work yet, but they're the ones to add if you can get them working. I haven't, Sukrim has.

I'm going to add slush tonight, just to see how bad the efficiency is with their scoring method. Might be ok. However multipool does it, it was always above 1.0



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 05:57:08 AM
I think c00w might need to add a 'don't hop if shares = 0' function. Then of course everyone will list their shares as = 1, and we have to change it to 'don't hop if shares = 1'. Then 2. Then 3. Wash, rinse, repeat.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 18, 2011, 06:04:36 AM
Ah well, little pool. Say good-bye to the 'hopper boost'! For the moment, eh Sukrim?  ;)

I give 'em a week max.

Doesn't look too difficult to write a basic bitcoind listener... Hopefully I outlined my ideas well enough so anyone can take on from there. I unfortunately(?) am coding other stuff at the moment and don't really have time for this.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 18, 2011, 06:05:01 AM
I think c00w might need to add a 'don't hop if shares = 0' function. Then of course everyone will list their shares as = 1, and we have to change it to 'don't hop if shares = 1'. Then 2. Then 3. Wash, rinse, repeat.

Add a function to consider a pool broken and disable it if the shares are unchanged between the 2 minute interval bithopper polls them.  And re-add the pool if later on the shares start changing again because it could be a minor glitch or temporary problem.  That would solve both problems most likely.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 18, 2011, 06:08:15 AM
Quote
Did you add nofeemining and rfcpool? Bithasher too, although I'm having problems getting a log in to work there. Finally, I haven't gotten triplemining to work yet, but they're the ones to add if you can get them working. I haven't, Sukrim has.

i have nofee, i'll have to look into the others.

Tripplemining sounds a bit ffy to me,


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: indio007 on July 18, 2011, 06:12:42 AM
Can you add solo mining to the mix? Might get lucky ya know?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: roos on July 18, 2011, 06:13:27 AM
Quote
ahh you use multiclone instead as a backup.. cool. I tried them a little, seems like a good backup.

I do that too, and its been working very well.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 18, 2011, 06:16:30 AM
Quote
Did you add nofeemining and rfcpool? Bithasher too, although I'm having problems getting a log in to work there. Finally, I haven't gotten triplemining to work yet, but they're the ones to add if you can get them working. I haven't, Sukrim has.

i have nofee, i'll have to look into the others.

Tripplemining sounds a bit ffy to me,
Triplemining is easy,

Just ignore their features (they redistribute 1% as a weekly jackpot and 1% between referrers) and treat it as a 2% fee pool and it's still ok.

I mine there right now btw., only ~400k shares! :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 18, 2011, 06:18:59 AM
Quote
Triplemining is easy,


do you have the code handy for pools.py?


This thread is getting busy enough that hopping might need it's own sub category on this forum, so we can split pool talk from development talk.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 06:20:48 AM
I think c00w might need to add a 'don't hop if shares = 0' function. Then of course everyone will list their shares as = 1, and we have to change it to 'don't hop if shares = 1'. Then 2. Then 3. Wash, rinse, repeat.

Add a function to consider a pool broken and disable it if the shares are unchanged between the 2 minute interval bithopper polls them.  And re-add the pool if later on the shares start changing again because it could be a minor glitch or temporary problem.  That would solve both problems most likely.

Well done , that man!

Actually, as long as they're updating pool hashrate and time since start of round, you have a fairly good estimate of how many shares have been produced unless there's huge amounts of variation (at the start or end of a hop for example). So you'd only need to cancel them out if they stopped updating hashrate and time since start of round, too.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 18, 2011, 06:24:16 AM
is there an irc channel for bithopper yet?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 18, 2011, 06:33:56 AM
Quote
Triplemining is easy,

do you have the code handy for pools.py?

This thread is getting busy enough that hopping might need it's own sub category on this forum, so we can split pool talk from development talk.
http://forum.bitcoin.org/index.php?topic=26866.msg359540#msg359540

Might need a few minor adjustments (the log function is now in a different file for example) though, but its easy enough to do I guess.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 06:51:59 AM
For bitp.it, cant we just read the Total code on the leaderboard? https://pool.bitp.it/leaderboard

It updates pretty fast.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 18, 2011, 07:12:59 AM
1) bitp.it?
Total code is a good idea I'll code it up.
Oh and its disabled for now.

2) I'm going to rewrite the api to use a dynamic scaling function. I'll set it so if it scales to 10 minutes the server is disabled. That should stop all the api mucking about.

3) Future of bitHopper?
Well the plan was to hop until all the algorithms were good. Then to switch to a really nice backup pool program and stats table. Looks like nobody wants to change their algorithms and I need to crack out the regex and brains again.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 18, 2011, 07:32:12 AM
latest release just scrolls through empty RPC request [[]] to ozco.in.

I've validated that password.py has the right info.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 07:35:04 AM
Quote
Triplemining is easy,

do you have the code handy for pools.py?

This thread is getting busy enough that hopping might need it's own sub category on this forum, so we can split pool talk from development talk.
http://forum.bitcoin.org/index.php?topic=26866.msg359540#msg359540

Might need a few minor adjustments (the log function is now in a different file for example) though, but its easy enough to do I guess.

I tried it, couldn't get it to work. I'll try again tonight, and post errors if they occur.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 18, 2011, 07:38:00 AM
For bitp.it, cant we just read the Total code on the leaderboard? https://pool.bitp.it/leaderboard

It updates pretty fast.

Not for nothing but since the above, the Total has read: 270460 for me with no updates.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 18, 2011, 07:38:44 AM
Quote
Might need a few minor adjustments (the log function is now in a different file for example) though, but its easy enough to do I guess.


thanks Sukrim I think I got it working, would have never figured that out without your code

Quote
I tried it, couldn't get it to work. I'll try again tonight, and post errors if they occur.

I'm using flowers mod but here is the  code i used to get it working if it helps


Code:
import re

I almost missed that.. needs to be near the top chillin with the rest of the elitist import statements.

Code:
       'triplemining':{'shares': default_shares, 'name': 'triplemining.com',
           'mine_address': 'eu.triplemining.com:8344', 'user': triplemining_user,
           'pass': triplemining_pass, 'lag': False, 'LP': None,'slice':-1, 'slicedShares':0,
           'api_address':'https://www.triplemining.com/stats', 'role':'mine'},

you can cut out the slice stuff if using cows, just look at another one for example


Code:
def triplemining_sharesResponse(response):
    global servers
    statpage = response
    shares = re.search(r"<td>[0-9]*</td>", statpage).group(0)[4:-5]
    round_shares = int(shares)
    servers['triplemining']['shares'] = round_shares
    bitHopper.log_msg( 'triplemining :' + FormatShares(round_shares))


that had some minor adjustments :)


and of course

Code:
def selectsharesResponse(response, args):
    #bitHopper.log_dbg('Calling sharesResponse for '+ args)
    func_map= {'bitclockers':bitclockers_sharesResponse,
        'mtred':mtred_sharesResponse,
'nofee':nofee_sharesResponse,
'triplemining':triplemining_sharesResponse,
'ozco':ozco_sharesResponse,
        'bitp':bitp_sharesResponse}
    func_map[args](response)
    bitHopper.server_update()


and dont forget the password file


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 18, 2011, 07:39:58 AM
Wow, this really feels like we're on a war footing.

The difference being that every strategy session from the PoolHopper side of the war takes place in a public forum. A public forum that is likely monitored by the PoolOperator side of the war.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 07:52:19 AM
Wow, this really feels like we're on a war footing.

The difference being that every strategy session from the PoolHopper side of the war takes place in a public forum. A public forum that is likely monitored by the PoolOperator side of the war.

 ;D

Well, we are trying to learn 'em. If they see as a group we can keep going as long as they proportionate (is that really a verb?) then - we win.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 07:53:21 AM
Wow, this really feels like we're on a war footing.

The difference being that every strategy session from the PoolHopper side of the war takes place in a public forum. A public forum that is likely monitored by the PoolOperator side of the war.

Yeh this is turning out to be semi-counter productive lol

On a sidenote, I have a small problem with latest update(I think its related to that), if my connection drops while busy on ozco.in for instance, it goes to backup server and doesnt seem to return to proper server even while that server is <my assigned 43.5%

Im also getting this error with latest git version from time to time,

Code:
Caught, jsonrpc_call insides
'NoneType' object is not callable


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 18, 2011, 07:58:33 AM
i think doing this publicity is the only way to go.
i dont want that only some people can hop.

everybody or nobody. (ok everybody means nobody too, as if everybody would do it ALL prop pools will die shortly)

so my goal ist: make the best hopper available. and publish it.
then prop-pools have two choices: still try to counter it (which will get them an endless story - they can't really win. at least the pool's isp or the pool owner itself always has the possibility to hop] or just go with another payout system)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: nob on July 18, 2011, 08:08:16 AM
Quote
Might need a few minor adjustments (the log function is now in a different file for example) though, but its easy enough to do I guess.


thanks Sukrim I think I got it working, would have never figured that out without your code

Quote
I tried it, couldn't get it to work. I'll try again tonight, and post errors if they occur.

I'm using flowers mod but here is the  code i used to get it working if it helps


Code:
import re

I almost missed that.. needs to be near the top chillin with the rest of the elitist import statements.

Code:
       'triplemining':{'shares': default_shares, 'name': 'triplemining.com',
           'mine_address': 'eu.triplemining.com:8344', 'user': triplemining_user,
           'pass': triplemining_pass, 'lag': False, 'LP': None,'slice':-1, 'slicedShares':0,
           'api_address':'https://www.triplemining.com/stats', 'role':'mine'},

you can cut out the slice stuff if using cows, just look at another one for example


Code:
def triplemining_sharesResponse(response):
    global servers
    statpage = response
    shares = re.search(r"<td>[0-9]*</td>", statpage).group(0)[4:-5]
    round_shares = int(shares)
    servers['triplemining']['shares'] = round_shares
    bitHopper.log_msg( 'triplemining :' + FormatShares(round_shares))


that had some minor adjustments :)


and of course

Code:
def selectsharesResponse(response, args):
    #bitHopper.log_dbg('Calling sharesResponse for '+ args)
    func_map= {'bitclockers':bitclockers_sharesResponse,
        'mtred':mtred_sharesResponse,
'nofee':nofee_sharesResponse,
'triplemining':triplemining_sharesResponse,
'ozco':ozco_sharesResponse,
        'bitp':bitp_sharesResponse}
    func_map[args](response)
    bitHopper.server_update()


and dont forget the password file

Thanks got it working


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 08:37:18 AM
Can anyone comment on this ?

On a sidenote, I have a small problem with latest update(I think its related to that), if my connection drops while busy on ozco.in for instance, it goes to backup server and doesnt seem to return to proper server even while that server is <my assigned 43.5%


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 18, 2011, 09:01:39 AM
Wow, this really feels like we're on a war footing.

The difference being that every strategy session from the PoolHopper side of the war takes place in a public forum. A public forum that is likely monitored by the PoolOperator side of the war.
I don't want to pool hop forever. I want all pools to be as secure, reliable and open as possible. In the mean time, I get a little cut from hopping (as I don't get paid anything else anyways)

What I find important is to finally get rid of that broken beyond measurement payout scoring system that ONLY exists, because deepbit as one of the first pools (unknowingly that it can be exploited) implemented it and all the "sheep" started copying.

The reason why I write this stuff in public is to show that proportional pools are broken. Peroid. No matter what you do on pool side, you will always be able to be hopped and you will compromise your transparency and security by doing so. Without any reason at all.

If I rather wanted to profit, I would silently keep this to myself, start moaning that "hopping now has been countered effectively by delaying stats" and secretly just measure block announcements and hop on or even just sell that code/idea.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 09:05:37 AM
The triplemining code worked except it spaz out api errors

I did add triplemining_user_apikey to password.py


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 18, 2011, 09:10:22 AM
The triplemining code worked except it spaz out api errors

I did add triplemining_user_apikey to password.py

...and why? I don't see this being used anywhere in the code!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 09:14:22 AM
The triplemining code worked except it spaz out api errors

I did add triplemining_user_apikey to password.py

...and why? I don't see this being used anywhere in the code!

hmmm good point ;) I got confused with the api inclusion in the first part of the code, my bad.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 09:40:13 AM
I removed that api part from password.py and still get triplemining api error.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: nob on July 18, 2011, 09:45:35 AM
i just pasted the code mentioned above into pool.py and everything was fine.

Have you imported re ?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 09:59:34 AM
yeh I did, but quite possibly in the wrong file, should it be in pool.py or bithopper.py ? I put it in pool.py.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: nob on July 18, 2011, 10:04:40 AM
uhm.. pool.py is correct


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 10:05:37 AM
yeh so my settings do check out however api doesnt meh


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 10:11:22 AM
ok seems to be working for me. Thanks again Sukrim!

OK, Clipse, if you are going to use the code as given with c00w's bitHopper, you'll need to remove the
Code:
'slice':-1, 'slicedShares':0,
from the code.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 10:16:21 AM
yeh I did remove the slice part since first tried with default c00w bithopper.

Will try now as is with slice bithopper.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 10:33:19 AM
Sorry that didn't help. I have no idea what I did differently this time, but it's working with c00w's bithopper. Previously I got the same error as you.

On a different but related note, anyone tell me how to parse the following simple but nested json feed? looking for 'round_shares' doesn't work.

Code:
{"poolstats":{"hashrate_unit":"GH/s","hashrate":25.02,"workers":81,"round_time_unit":"seconds","round_time":177163,"round_shares":1120942}}



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 10:35:14 AM
Sorry that didn't help. I have no idea what I did differently this time, but it's working with c00w's bithopper. Previously I got the same error as you.

On a different but related note, anyone tell me how to parse the following simple but nested json feed? looking for 'round_shares' doesn't work.

Code:
{"poolstats":{"hashrate_unit":"GH/s","hashrate":25.02,"workers":81,"round_time_unit":"seconds","round_time":177163,"round_shares":1120942}}



Weird yeh, seems to work with slice bithopper version, I double checked and compared with default bithopper version and except for removing sliced parts it checked out.

Anyhow, im test running sliced version now.

Btw, any reason bitpit is still enabled to mine with the slice bithopper version?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zybron on July 18, 2011, 10:52:12 AM
On a different but related note, anyone tell me how to parse the following simple but nested json feed? looking for 'round_shares' doesn't work.

Code:
{"poolstats":{"hashrate_unit":"GH/s","hashrate":25.02,"workers":81,"round_time_unit":"seconds","round_time":177163,"round_shares":1120942}}
Here's the line you'll need:
Code:
round_shares = int(info['poolstats']['round_shares'])


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 10:52:25 AM
Wow, this really feels like we're on a war footing.

The difference being that every strategy session from the PoolHopper side of the war takes place in a public forum. A public forum that is likely monitored by the PoolOperator side of the war.
i can set a private forum if needed :)

Would be handy for some counter measures, I think its good idea that pools change but we are helping them way to much without them having to do much work right now ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 10:54:01 AM
Wow, this really feels like we're on a war footing.

The difference being that every strategy session from the PoolHopper side of the war takes place in a public forum. A public forum that is likely monitored by the PoolOperator side of the war.
i can set a private forum if needed :)

I dunno. The whole point is to be open and help the pool operators 'hop' to a better system. We're aiming to put ourselves out of business! By not hopping on a prop pool, miners are cheating themselves.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 10:54:27 AM
Mmm just started to get a ton of this.

Code:
12:53:38] OK NOT slicing because of arsbitcoin
[12:53:38] reslice 1: -1 677034 677034
[12:53:38] reslice 1: 63.9894742825 1094840.21559 1094840.21559
[12:53:38] OK NOT slicing because of eligius
[12:53:38] reslice 1: 183.360485614 730747 730307
[12:53:38] OK NOT slicing because of triplemining
[12:53:38] reslice 1: 95.5366532248 938434.470503 938434.470503
[12:53:38] OK NOT slicing because of multiclone
[12:53:38] reslice 1: -1 5977429 5977429
[12:53:38] reslice 1: -1 1295915 1295915
[12:53:38] reslice 1: -1 2939783 2939783
[12:53:38] reslice 1: -1 0 0
[12:53:38] slicing False
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.


This seems to happen when connecting to eligius and not ozcoin.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 10:59:57 AM
On a different but related note, anyone tell me how to parse the following simple but nested json feed? looking for 'round_shares' doesn't work.

Code:
{"poolstats":{"hashrate_unit":"GH/s","hashrate":25.02,"workers":81,"round_time_unit":"seconds","round_time":177163,"round_shares":1120942}}
Here's the line you'll need:
Code:
round_shares = int(info['poolstats']['round_shares'])

Thank mate!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 11:13:03 AM
Mmm just started to get a ton of this.


Dude, you are having a crappy night! Hope you get it sorted. Maybe for the time being you should revert back to an earlier git clone that worked for you?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 11:22:10 AM
So heres a thought, anyone here consider putting together a theoretical luckbased approach ?

I know its been discussed here but I think it would still be interesting to actually do it.

Pull the last 2 or 3 blocks and see how far out of the difficulty range the avg is ie. 3blocks(just a number i like) combined gives 6million, that avg out at 2million per block so not terrible unlucky, however a different pool have their last 3 blocks at combined of 10million, thats > double avg difficulty per block thus we work a formula into the duration hopper should stay at this pool for this new block which would be the 1st block after the last 3blocks used for sample.

My rough approach would assume the following:

Right now we seem to use a 40% of diff approach, now if we use that as our base value and apply the difference of the last 3 blocks in example above we will get the following.

10million shares across 3blocks = 3333333.33 shares per block
This means the last 3 blocks lasted on avg 213% longer

We will then calculate our 40% into current difficulty which would be 625211.2 and add 213% which gives 1331699.85 difficulty thus the new difficulty for the selected pool to stay on for the 4th block(block just after the previous 3)

Now the reverse would be implied when a pool got really lucky in last 3blocks, thus we would be avoiding them or leave them far earlier than 40% of difficulty.

I hope this makes somewhat sense ;) it does in my twisted mind.

please note: This is some hectic thumbsucking, would be nice to check it out in practice.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 11:24:26 AM
Mmm just started to get a ton of this.


Dude, you are having a crappy night! Hope you get it sorted. Maybe for the time being you should revert back to an earlier git clone that worked for you?

Those json errors only happen with eligius , bithopper or slice bithopper version. I wonder if they somehow banned my IP from connecting to their pool.

Anyhow no biggy, just removed them and its gone ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 11:36:52 AM
So heres a thought, anyone here consider putting together a theoretical luckbased approach ?

I know its been discussed here but I think it would still be interesting to actually do it.

Pull the last 2 or 3 blocks and see how far out of the difficulty range the avg is ie. 3blocks(just a number i like) combined gives 6million, that avg out at 2million per block so not terrible unlucky, however a different pool have their last 3 blocks at combined of 10million, thats > double avg difficulty per block thus we work a formula into the duration hopper should stay at this pool for this new block which would be the 1st block after the last 3blocks used for sample.

My rough approach would assume the following:

Right now we seem to use a 40% of diff approach, now if we use that as our base value and apply the difference of the last 3 blocks in example above we will get the following.

10million shares across 3blocks = 3333333.33 shares per block
This means the last 3 blocks lasted on avg 213% longer

We will then calculate our 40% into current difficulty which would be 625211.2 and add 213% which gives 1331699.85 difficulty thus the new difficulty for the selected pool to stay on for the 4th block(block just after the previous 3)

Now the reverse would be implied when a pool got really lucky in last 3blocks, thus we would be avoiding them or leave them far earlier than 40% of difficulty.

I hope this makes somewhat sense ;) it does in my twisted mind.

please note: This is some hectic thumbsucking, would be nice to check it out in practice.

Hate to be the wet blanket that rains on your parade, ;) but blocks are solved as a poisson process. Part of the definition of a poisson process is that it has no 'memory' of prior events. This means that each new block has a the same probability of being solved before <difficulty> as any other block. So a 'luck' based approach would only work randomly and increase variance. Sorry.

Now, who's going to open up another forum thread called 'Hoppers here!'. c00w must be getting sick of our meanderings, much as I enjoy them  ;D  


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 11:40:52 AM
haha oh yes I know it has no 'memory' and I didnt for one second assume you could cheat the 'luck'

It was more a case of curiosity than anything.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 11:57:00 AM
haha oh yes I know it has no 'memory' and I didnt for one second assume you could cheat the 'luck'

It was more a case of curiosity than anything.

Well, if you got it to work, you'd be making scientific history!  ;) Give it a go, it would be an interesting test.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 18, 2011, 12:25:35 PM
haha oh yes I know it has no 'memory' and I didnt for one second assume you could cheat the 'luck'

It was more a case of curiosity than anything.

Well, if you got it to work, you'd be making scientific history!  ;) Give it a go, it would be an interesting test.

No it wouldn't.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: nob on July 18, 2011, 12:33:08 PM
I got rfcpool.com working, it's a very small and new pool

Code:
'rfcpool':{'shares': default_shares, 'name': 'rfcpool.com',
           'mine_address': 'pool.rfcpool.com:8332', 'user': rfcpool_user,
           'pass': rfcpool_pass, 'lag': False, 'LP': None,
           'api_address':'https://www.rfcpool.com/api/pool/stats', 'role':'mine'},

Code:
def rfcpool_sharesResponse(response):
    global servers
    info = json.loads(response)
    round_shares = int(info['poolstats']['round_shares'])
    servers['rfcpool']['shares'] = round_shares
    bitHopper.log_msg('rfcpool:' + FormatShares(round_shares))

Code:
'rfcpool':rfcpool_sharesResponse,


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 18, 2011, 12:48:54 PM
latest release just scrolls through empty RPC request [[]] to ozco.in.

I've validated that password.py has the right info.

I don't get what this means either, but it doesn't appear to mean that there are no shares commited.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Rino on July 18, 2011, 12:53:49 PM
Miningmainframe is up at 50ghash/s now, seems its still on prop. If it was off because of 2ghash/s speed before you may want to turn it back on.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: nob on July 18, 2011, 01:01:00 PM
Miningmainframe uses Scoring and not prop:

Quote
We currently have an administration fee of 0.5% on top of the 1% (for a total of 1.5% total fees) and utilize a cheat proof scoring algorithm for calculating a fair payout of your shares.

http://mining.mainframe.nl/index


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 18, 2011, 02:32:45 PM
Anyone still using bclc note that the json feed now shows total shares to be 1/5 of the shares reported on the website. Tricky bugger. Change your bithopper accordingly.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 18, 2011, 03:08:53 PM
So heres a thought, anyone here consider putting together a theoretical luckbased approach ?

I know its been discussed here but I think it would still be interesting to actually do it.

Pull the last 2 or 3 blocks and see how far out of the difficulty range the avg is ie. 3blocks(just a number i like) combined gives 6million, that avg out at 2million per block so not terrible unlucky, however a different pool have their last 3 blocks at combined of 10million, thats > double avg difficulty per block thus we work a formula into the duration hopper should stay at this pool for this new block which would be the 1st block after the last 3blocks used for sample.

My rough approach would assume the following:

Right now we seem to use a 40% of diff approach, now if we use that as our base value and apply the difference of the last 3 blocks in example above we will get the following.

10million shares across 3blocks = 3333333.33 shares per block
This means the last 3 blocks lasted on avg 213% longer

We will then calculate our 40% into current difficulty which would be 625211.2 and add 213% which gives 1331699.85 difficulty thus the new difficulty for the selected pool to stay on for the 4th block(block just after the previous 3)

Now the reverse would be implied when a pool got really lucky in last 3blocks, thus we would be avoiding them or leave them far earlier than 40% of difficulty.

I hope this makes somewhat sense ;) it does in my twisted mind.

please note: This is some hectic thumbsucking, would be nice to check it out in practice.

Hate to be the wet blanket that rains on your parade, ;) but blocks are solved as a poisson process. Part of the definition of a poisson process is that it has no 'memory' of prior events. This means that each new block has a the same probability of being solved before <difficulty> as any other block. So a 'luck' based approach would only work randomly and increase variance. Sorry.

Now, who's going to open up another forum thread called 'Hoppers here!'. c00w must be getting sick of our meanderings, much as I enjoy them  ;D  

Indeed but the luck averages out over time:

Luck this difficulty (1563027)       1724037 shares   (-9.3%)
Luck at difficulty 1379223       1384144 shares   (-0.4%)
Luck at difficulty 876954       875473 shares   (+0.2%)

If a large pool has significantly worse luck than that you can usually suspect some foul play.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: gno on July 18, 2011, 03:10:59 PM
Just to be sure-  it sounds like bitp.it has countermeasures making them unsuitable for hopping?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: anty on July 18, 2011, 03:29:44 PM
Yes, bitp.it fakes stats.

BTW: anyone has an idea why I only mine at nofee until the next check and then fall back to the backuppool? They are significantly under the 40% and everytime i restart my bithopper it immediately begins mining there...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 03:44:35 PM
Yes, bitp.it fakes stats.

BTW: anyone has an idea why I only mine at nofee until the next check and then fall back to the backuppool? They are significantly under the 40% and everytime i restart my bithopper it immediately begins mining there...

I have the same issue since recent update today(I didnt notice it till after I pulled new update) , it seems to get stuck at backup server.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 18, 2011, 04:04:55 PM
Quote
The triplemining code worked except it spaz out api errors


being a total noob, i have gotten the api errors nearly every time i have messed with the code.

10% of the time, i miss copied the api key, 90% of the time I accidently pasted over a quote.


go back and look at the changes you did and look for a missing '


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: gno on July 18, 2011, 04:07:09 PM
Is there anything worth hopping at the moment?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 04:28:02 PM
Quote
The triplemining code worked except it spaz out api errors


being a total noob, i have gotten the api errors nearly every time i have messed with the code.

10% of the time, i miss copied the api key, 90% of the time I accidently pasted over a quote.


go back and look at the changes you did and look for a missing '

I fixed it by modifying alot of it, the following works with latest version of bithopper and you can clearly see why it didnt work before.

Code:

                'triplemining':{'shares': default_shares, 'name': 'triplemining.com',
                   'mine_address': 'eu.triplemining.com:8344', 'user': triplemining_user,
                   'pass': triplemining_pass, 'lag': False, 'LP': None,
                   'api_address':'https://www.triplemining.com/stats', 'role':'mine'},

Code:


    def triplemining_sharesResponse(response):
        statpage = response
        shares = re.search(r"<td>[0-9]*</td>", statpage).group(0)[4:-5]
        round_shares = int(shares)
        self.UpdateShares('triplemining', round_shares)

Code:

            'triplemining':self.triplemining_sharesResponse,


So all I can think if you dont have issue with previous code, you havnt updated bithopper today.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 04:35:15 PM
Im still getting the follow errors, afaik only when submitting to ozcoin.

Code:
8:33:46] RPC request [[]] submitted to ozco.in
Caught, jsonrpc_call insides
'NoneType' object is not callable
Caught, jsonrpc_call insides
'NoneType' object is not callable
Caught, jsonrpc_call insides
'NoneType' object is not callable

This would appear randomly during the connection to ozcoin, on and off.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 04:46:27 PM
mtred got a block you should be there

Yep Im at mtred now, however eventually it will hit ozcoin again and same errors appear, trying to figure out why thats occurring :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 05:02:59 PM
arg this is frustrating.

When I restart hopper it will mine at mtred as it should, however if I have one connection problem it then gets stuck at arsbitcoin backup server even tho at the rescan it shows mtred is the best option also doesnt anyone know what this json "nonetype" error is all about?

Code:
9:00:59] RPC request [[]] submitted to arsbitcoin
[19:00:59] RPC request [[]] submitted to arsbitcoin
[19:00:59] miningmainframe: 6,119,040
[19:01:00] RPC request [[]] submitted to arsbitcoin
[19:01:00] mineco: 1,313,300
[19:01:00] rfcpool: 1,253,394
[19:01:00] bclc: 307,077
[19:01:00] mtred: 132,696
[19:01:00] RPC request [[]] submitted to arsbitcoin
[19:01:00] RPC request [[]] submitted to arsbitcoin
[19:01:01] bitclockers: 1,563,953
[19:01:01] RPC request [[]] submitted to arsbitcoin
[19:01:01] ozco: 1,059,776
[19:01:02] eclipsemc: 582,859
[19:01:02] RPC request [[]] submitted to arsbitcoin
[19:01:02] RPC request [[]] submitted to arsbitcoin
[19:01:02] RPC request [[]] submitted to arsbitcoin
[19:01:02] RPC request [[]] submitted to arsbitcoin
[19:01:02] RPC request [[]] submitted to arsbitcoin
[19:01:04] RPC request [[]] submitted to arsbitcoin
[19:01:05] RPC request [[]] submitted to arsbitcoin
[19:01:05] RPC request [[]] submitted to arsbitcoin
[19:01:05] RPC request [[]] submitted to arsbitcoin
Caught, jsonrpc_call insides
'NoneType' object is not callable


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: gno on July 18, 2011, 05:10:09 PM
mtred got a block you should be there

Thanks-  I just looked and that's where I am.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 18, 2011, 05:28:50 PM
Code:
[19:26:47] RPC request [[]] submitted to mtred
Error in json decoding, Server probably down

[19:26:47] Server change to arsbitcoin, telling client with LP
[19:26:47] LP Call arsbitcoin.com:8344/LP
[19:26:47] RPC request [[]] submitted to arsbitcoin

I can't submit to mtred. Anybody else?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: gno on July 18, 2011, 05:51:41 PM
Code:
[19:26:47] RPC request [[]] submitted to mtred
Error in json decoding, Server probably down

[19:26:47] Server change to arsbitcoin, telling client with LP
[19:26:47] LP Call arsbitcoin.com:8344/LP
[19:26:47] RPC request [[]] submitted to arsbitcoin

I can't submit to mtred. Anybody else?

I'm getting the "error in json decoding" but it appears I'm submitting shares to mtred


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 18, 2011, 05:52:53 PM
I am sorry to you guys who disabled bitcoins.lc.  I got in on 4 blocks this morning already.

Edit:  Make that 5 blocks.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 05:57:50 PM
And yet some more errors

Code:
[19:56:22] RPC request [[]] submitted to mtred
[19:56:23] LP triggered from server mtred
[19:56:23] Reading LP Response failed

I dont see anyone else reporting in here similar errors yet I find it hard to believe that I am the only one getting these.

Did you all update to the latest git version ?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 18, 2011, 05:59:56 PM
I am sorry to you guys who disabled bitcoins.lc.  I got in on 4 blocks this morning already.

Edit:  Make that 5 blocks.
really or that are faked stats ?

Quote
296    136898    532 540    540 340    18 Jul 16:15:20    1 h 17m
295    136888    1 120 599    1 130 838    18 Jul 14:57:53    2h 40m
294    136877    2 646 739    2 682 072    18 Jul 12:17:49    6h 59m
293    136840    4 905 846    4 995 134    18 Jul 05:18:46    14h 5m
292    136739    75 365    77 056    17 Jul 15:13:33    13m 29s
291    136737    3 133 727    3 299 934    17 Jul 15:00:04    12h 42m

Actually looks like 4 blocks.  I think they just set the shares in their API to 126,183 so that is why I thought it was a new block.  Did get payment on 4 blocks though.  Damnit, have to re-disable bitcoins.lc until they stop playing games with the shares.

Absolutely need to implement something that stops mining at a pool when their shares remain static from one poll to another.  I have been really lucky and caught btcguild, bitp.it and not bitcoins.lc within minutes of them setting static share counts, but I won't always be able to catch it.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zybron on July 18, 2011, 06:02:39 PM
And yet some more errors

Code:
[19:56:22] RPC request [[]] submitted to mtred
[19:56:23] LP triggered from server mtred
[19:56:23] Reading LP Response failed

I dont see anyone else reporting in here similar errors yet I find it hard to believe that I am the only one getting these.

Did you all update to the latest git version ?

I'm running the latest GIT version but not seeing anything like that. Maybe you're having connection issues?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 18, 2011, 06:06:30 PM
SOOOOOOOOOOOOOOOOO multipoll hopper still can work on bitcoins.lc  ;D

Multipoll hopper?  How does it work when bitcoins.lc is apparently setting their shares to a static number of 126,183?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 18, 2011, 06:49:05 PM
Quote
So all I can think if you dont have issue with previous code, you havnt updated bithopper today.

Nope and considering that cow said

Quote
I did no work this weekend. So the same as friday.

that earlier I did not expect to update.

Thanks for the the fixes though as I plan to update.





Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 06:51:03 PM
Quote
So all I can think if you dont have issue with previous code, you havnt updated bithopper today.

Nope and considering that cow said

Quote
I did no work this weekend. So the same as friday.

that earlier I did not expect to update.

Thanks for the the fixes though as I plan to update.

He did make some changes about 12hrs ago to most of the core py files, since then ive had these issues.

Afaik the changes are mostly reoganizing code.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 18, 2011, 07:07:43 PM
Quote
Afaik the changes are mostly reoganizing code.

cool, I'll give it a bit more time before I update then.

I like some of the changes flower did and hope those two get merged. If not not a big deal.


any thought to hopping some namecoin pools during the  big difficulty change coming up?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 18, 2011, 07:12:25 PM
1) Issues with core code specifically Nonetype errors?
I'm looking at it. Its a bug. It doesn't appear for me but I'm checking my logs. It may be a screwy debug versus non debug issue which is always annoying.

2) more pools? Stats?
The core rewrite was so I could actually get the database working correctly. I'm going to hold off on that and add more pools so I can get bitp.it working again as well as triple mining and nofee. rfcpool as well if I have the time.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 18, 2011, 07:13:06 PM
Looks like bitcoins.lc statistics are back working again.  We will see if they hold up.

Quote
2) more pools? Stats?
The core rewrite was so I could actually get the database working correctly. I'm going to hold off on that and add more pools so I can get bitp.it working again as well as triple mining and nofee. rfcpool as well if I have the time.

Awesome.  The loss of bitp.it was a big hit as they gave out massive payments.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 07:14:16 PM
Quote
Afaik the changes are mostly reoganizing code.

cool, I'll give it a bit more time before I update then.

I like some of the changes flower did and hope those two get merged. If not not a big deal.


any thought to hopping some namecoin pools during the  big difficulty change coming up?


Just to give you an idea, flowers is using the version before reoganizing of code and Im have 0 issues as I reported having with latest git pull version.

Only common difference is the versions.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 18, 2011, 07:17:02 PM
As fascinating as hopping namecoin pools sounds, I'm looking forward to merged mining a bit more: http://forum.bitcoin.org/index.php?topic=29074


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 18, 2011, 07:37:11 PM
Merged mining does look cool,  but requires a change to the namecoin blockchain and server, I'll be interested to see if it goes off smoothly.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 18, 2011, 08:30:50 PM
1) nonetype issues? Switching issues? Pretty much every other issue with the latest version?
I broke the delagger again. latest version should have it fixed.

EDIT: And I added triplemining.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 18, 2011, 08:51:41 PM
bitp.it removed total from leaderboard.

edit: nevermind - i see code isn't looking at that...

edit: actually, this isn't working for bitp.it. bithopper is showing like 120k shares but if you add up all the shares from the leaderboard they are 1.16 Million.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 18, 2011, 08:52:11 PM
As fascinating as hopping namecoin pools sounds, I'm looking forward to merged mining a bit more: http://forum.bitcoin.org/index.php?topic=29074

Let's wait and see how it can be implemented first. Just read the whole merged mining thread and I'm not convinced. If I ever want to mine for nmc's could easy jump to a pool or mine solo, no problem with that, but implement it at pool level it's another thing. My total hashing power it's a constant I cannot change without spending some money on hardware, if some pool merge mines and asks me if I want that then I would be diminishing my bitcoin income with something not widely accepted and equally priced, new risk I would not easily take. Leaving aside block-chain compatibilities I think it could be done but only based on popular acceptance, not imposed. I know that domain names of namecoin have a price tag set by it's developers (like fees in bitcoin) and will not be changed to soon, correct me if I'm wrong. Will wait and see what happens until then let's mine some bitcoins ;)

Thanks c00w for your efforts, I just started studying python more in depth since bithopper.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 09:03:07 PM
lol disable bitpit again, the monkey is readin this thread and removed total from leaderboard.

rofl!!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 18, 2011, 09:05:23 PM
is Eclipse still nerfed?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 18, 2011, 09:05:49 PM
When you update do you just copy over the password.py file from the old version to the new version?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 09:08:26 PM
I keep backup of password.py and just overwrite on update


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: koopa on July 18, 2011, 09:09:00 PM
When you update do you just copy over the password.py file from the old version to the new version?

Yep, that's exactly how I do it. Just make sure you add any new pools.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 18, 2011, 09:13:19 PM
if some pool merge mines and asks me if I want that then I would be diminishing my bitcoin income with something not widely accepted and equally priced, new risk I would not easily take.

You obviously did not read the post I linked.

A while back in this forum someone discussed submitting the same hashes to multiple pools and how if they accepted hashes they hadn't sent a getwork for it'd be considered a security vulnerability. There's sort of a similar thing with alternate blockchains like namecoin. Namecoin, at least, is talking about modifying their client so that when miners submit hashes to bitcoind they can submit the exact same hashes to namecoind thus allowing existing mining clients to mine both networks simultaneously at full speed. Essentially they noticed they weren't getting a hell of a lot of namecoin miners except when difficulty changed and it briefly became more popular, so they're changing the way NMC works to allow us to mine namecoins at no cost aside from setting up a merged mining proxy.

tl;dr: namecoin is making it possible to submit the same hashes to both networks so you can mine NMC at no additional cost.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 18, 2011, 09:18:28 PM
speaking tl;dr this thread no longer has an ALL option for pages. Sad. I missed being able to scroll through one page to reference all the code snippets..


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 18, 2011, 09:22:02 PM
Is there a reason bitclockers is disabled?  I read earlier in the thread that they were a little shady with super long rounds, but are you guys mining with them anyway?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: msb8r on July 18, 2011, 09:24:54 PM
Is there a reason bitclockers is disabled?  I read earlier in the thread that they were a little shady with super long rounds, but are you guys mining with them anyway?

I've tried for a couple of rounds. But am met with massive connection issues, so disabled them again.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 18, 2011, 09:27:33 PM
if some pool merge mines and asks me if I want that then I would be diminishing my bitcoin income with something not widely accepted and equally priced, new risk I would not easily take.

You obviously did not read the post I linked.

A while back in this forum someone discussed submitting the same hashes to multiple pools and how if they accepted hashes they hadn't sent a getwork for it'd be considered a security vulnerability. There's sort of a similar thing with alternate blockchains like namecoin. Namecoin, at least, is talking about modifying their client so that when miners submit hashes to bitcoind they can submit the exact same hashes to namecoind thus allowing existing mining clients to mine both networks simultaneously at full speed. Essentially they noticed they weren't getting a hell of a lot of namecoin miners except when difficulty changed and it briefly became more popular, so they're changing the way NMC works to allow us to mine namecoins at no cost aside from setting up a merged mining proxy.

tl;dr: namecoin is making it possible to submit the same hashes to both networks so you can mine NMC at no additional cost.

Sorry for not getting the point in that thread, now I do thanks to your explication. I have to study it a little more. You said the magic word "no cost". Would wait and see if this project succeeds because between the cryptocurency and the unhackable DNS small people like us could build unthinkable projects. Cheers


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 18, 2011, 09:29:21 PM
if some pool merge mines and asks me if I want that then I would be diminishing my bitcoin income with something not widely accepted and equally priced, new risk I would not easily take.

You obviously did not read the post I linked.

A while back in this forum someone discussed submitting the same hashes to multiple pools and how if they accepted hashes they hadn't sent a getwork for it'd be considered a security vulnerability. There's sort of a similar thing with alternate blockchains like namecoin. Namecoin, at least, is talking about modifying their client so that when miners submit hashes to bitcoind they can submit the exact same hashes to namecoind thus allowing existing mining clients to mine both networks simultaneously at full speed. Essentially they noticed they weren't getting a hell of a lot of namecoin miners except when difficulty changed and it briefly became more popular, so they're changing the way NMC works to allow us to mine namecoins at no cost aside from setting up a merged mining proxy.

tl;dr: namecoin is making it possible to submit the same hashes to both networks so you can mine NMC at no additional cost.

Sorry for not getting the point in that thread, now I do thanks to your explication. I have to study it a little more. You said the magic word "no cost". Would wait and see if this project succeeds because between the cryptocurency and the unhackable DNS small people like us could build unthinkable projects. Cheers

Yeah I wouldn't want to be in on it at the beginning - though they DO have a fixed block # they intend to release at and I might mine up a few NMC before that block # hits - I expect the sudden influx of attention to do interesting things to the value of NMC and there might be a few spikes in the midst of all that volatility to take advantage of. There are also a couple exchanges in the works that are paying more attention to NMC so this might be the look of things to come.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zapeta on July 18, 2011, 09:43:51 PM
Is there a reason bitclockers is disabled?  I read earlier in the thread that they were a little shady with super long rounds, but are you guys mining with them anyway?

I've tried for a couple of rounds. But am met with massive connection issues, so disabled them again.

I was mining bitclockers, and now I get connection refused.  Not sure if they banned my IP or what.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 09:46:05 PM
Is there a reason bitclockers is disabled?  I read earlier in the thread that they were a little shady with super long rounds, but are you guys mining with them anyway?

I've tried for a couple of rounds. But am met with massive connection issues, so disabled them again.

I was mining bitclockers, and now I get connection refused.  Not sure if they banned my IP or what.

Yup, same here. I think they temp ban an IP, dunno for how long as soon as you hop a few times.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zapeta on July 18, 2011, 10:08:48 PM
Although triplemining isn't mining right now, I keep seeing an error when the hopper goes to get stats saying "Error in pool api for triple".  Anyone else seeing this?

Edit:  Also, for bitclockers, maybe they don't like how often we check them for updated stats and that leads to the ban.  Can the frequency of stat checking be reduced?



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 18, 2011, 10:16:20 PM
hi @all.

i got an interesting mail (my answer is included):

Hello,

Am 18.07.2011 19:15, schrieb ????:
> Hello,
>
> If I understand this correctly, I think your addition will lower the variance of returns slightly, but not have any affect on the expected returns.

I think it will have an affect.

example 1: two pools found a block next to each other with the same speed. original bithopper will stick with the one with the lower shares. that could be good or worse.

if it's good you earn much more; if its bad you loose the half.

example 2:
a pool with a very high hashrate finds a block righte before a small pool.

original bithopper will switch to the small one. it would be better to try to submit shares to the fast pool and - after that - continue with the small one.

^^ thats my impression. please correct me if i am wrong

I'm at work right now, but I would like to discuss it further either in here or on the forums (I still don't have proper non-newbie privledges necessary to post in the thread).
>
> IMO, it adds unnecessary complexity for a small decrease in variance. Can we please add it with a switch, such as --time-slicing=[yes|no] ?

^^ bithopper itself is not from me.
so if you don't want that slicing right now, just stick with the original version.

if it gets merged (i hope so), i prefer a switch too (i would even suggest pluggable modules through c00w's planned website - so if you're watching you can change the strategy on the fly)

>
> If two pools are both at X% and both are standard proportional pools, the expected return on shares is equal. Due to time-lag in pulling stats, one should choose the pool with a lower hashrate for highest return (although if hoppers are a large portion of the hashrate, this is unstable and will cause the hashrate, #workers, and optimal pool to oscillate unstably).
>

my recent version (see attachment; as i got ill i was not able to publish it right now. especially the "ghash pool bonus" is not well tested (i should write a program to simulate pool stats)) has a few improvements:

 - bonus for BIG pools (i now; you don't like that. but big pools goes to 40% diff very fast, so i think its a good idea to catch up)
 - tries to stay longer at one pool (means: if after a ten minute round the same pool got a new time slice it stays there)
 - tries to start the longest (means most profitable) slice as soon as a new block is found, a pool lags or another slice finished

thank you for you thoughts. i just think we need a long-time sim here - and i am still planning to work on a bitcoin patch to better detect btc guild / deepbit blocks

> Cheers
>


as i said: i got ill :(
i just managed to continue the work the pool-ghash adaption.

you can get it here:

(i promise i will make a git push; but with that headache..BBRRRRR)

link: www.k1024.de/dev.zip (this time its a zip; i just like changes :)

cheers


LOL just recognized it was a github comment...my headache ...

anyway: please tell me what you think about it


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 18, 2011, 10:34:16 PM
https://en.bitcoin.it/wiki/Comparison_of_mining_pools if you look at this wiki there are many prop pools that are available  :D

Looks like x8s and rfcpool and bitcoinpool and polmine would be perfect to add.

http://btc.x8s.de/faq
and
https://www.rfcpool.com/
and
http://bitcoinpool.com/
and
https://polmine.pl/?setlang=pl


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 18, 2011, 10:35:40 PM
I think the core bithopper program should not include many pools, maybe even only have backup pools in it. This way each person who runs bithopper will have to setup the pools they want to hop themselves. This would save the pools from being hammered by EVERYONE who runs bithopper, and will only be hopped by people who specifically set it up, making it somewhat random and spearing the servers from being overloaded.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 18, 2011, 10:37:08 PM
I think the core bithopper program should not include many pools, maybe even only have backup pools in it. This way each person who runs bithopper will have to setup the pools they want to hop themselves. This would save the pools from being hammered by EVERYONE who runs bithopper, and will only be hopped by people who specifically set it up, making it somewhat random and spearing the servers from being overloaded.

I think the core bithopper program should include ALL of the hoppable pools, but with most of them set to 'disable' or 'info' in pools.py.  That way people can just mine the pools they want by changing the value to 'mine'.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 18, 2011, 10:41:25 PM
I think the core bithopper program should not include many pools, maybe even only have backup pools in it. This way each person who runs bithopper will have to setup the pools they want to hop themselves. This would save the pools from being hammered by EVERYONE who runs bithopper, and will only be hopped by people who specifically set it up, making it somewhat random and spearing the servers from being overloaded.

I think the core bithopper program should include ALL of the hoppable pools, but with most of them set to 'disable' or 'info' in pools.py.  That way people can just mine the pools they want by changing the value to 'mine'.

Good call, but it would even be better if you can set info or disable in the passwords file so that you can update the hopper without losing which pools are active or disabled.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 18, 2011, 10:54:57 PM
I think the core bithopper program should not include many pools, maybe even only have backup pools in it. This way each person who runs bithopper will have to setup the pools they want to hop themselves. This would save the pools from being hammered by EVERYONE who runs bithopper, and will only be hopped by people who specifically set it up, making it somewhat random and spearing the servers from being overloaded.

I think the core bithopper program should include ALL of the hoppable pools, but with most of them set to 'disable' or 'info' in pools.py.  That way people can just mine the pools they want by changing the value to 'mine'.

Good call, but it would even be better if you can set info or disable in the passwords file so that you can update the hopper without losing which pools are active or disabled.

+1


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: relm9 on July 18, 2011, 10:59:36 PM
Runs fine but i get a bunch of api errors

Quote
[15:56:57] Error in pool api for mineco
[15:56:57] Error in pool api for mtred
[15:56:57] Error in pool api for bclc
[15:56:57] Error in pool api for triple
[15:56:57] Error in pool api for eclipsemc
[15:56:57] Error in pool api for ozco
[15:56:57] Error in pool api for bitclockers
[15:56:57] Error in pool api for bitp
[15:56:57] Error in user api for ('btcg', <__main__.BitHopper instance at 0x0000
0000030E69C8>)
[15:56:57] Error in user api for ('bitclockers', <__main__.BitHopper instance at
 0x00000000030E69C8>)
[15:56:57] Error in user api for ('bitp', <__main__.BitHopper instance at 0x0000
0000030E69C8>)

normal?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 11:08:59 PM
Im getting these errors, not sure what its related to but some clarification would be great :)

They seem to have started with more recent version, also getting alot of LP timeouts. I would have thought its related to my connection but I keep a constant traceroute and ping to test for any dropped packets and I get none to the serverlists.

Code:
caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 18, 2011, 11:21:52 PM
mine works fine (except mtred api). make sure you have the latest version (cc36995) and you put the script in a new folder every time you update.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: anty on July 18, 2011, 11:23:43 PM
Runs fine but i get a bunch of api errors

Quote
[15:56:57] Error in pool api for mineco
[15:56:57] Error in pool api for mtred
[15:56:57] Error in pool api for bclc
[15:56:57] Error in pool api for triple
[15:56:57] Error in pool api for eclipsemc
[15:56:57] Error in pool api for ozco
[15:56:57] Error in pool api for bitclockers
[15:56:57] Error in pool api for bitp
[15:56:57] Error in user api for ('btcg', <__main__.BitHopper instance at 0x0000
0000030E69C8>)
[15:56:57] Error in user api for ('bitclockers', <__main__.BitHopper instance at
 0x00000000030E69C8>)
[15:56:57] Error in user api for ('bitp', <__main__.BitHopper instance at 0x0000
0000030E69C8>)

normal?
This is not normal. I got those errors after I merged the recent version with my changes. It went away after I corrected a line in the func_map in pool.py. I had a wrong
Code:
self.poolname_sharesResponse
call due to the auto-merging.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 18, 2011, 11:34:41 PM
1) more pools?
I hear and obey. Slowly.

2) Errors with request.notify?
Your client drops connections to soon. Its an issue. Not a gamekiller.

3) All those API ERRORS?
THATS AN ISSUE. update to the latest revision. If its not fixed tell me. I obviously am not getting them or else I would have fixed it.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: relm9 on July 18, 2011, 11:37:55 PM
3) All those API ERRORS?
THATS AN ISSUE. update to the latest revision. If its not fixed tell me. I obviously am not getting them or else I would have fixed it.

Just updated and still getting them, haven't changed anything in the script either.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 11:40:44 PM
Another issue I seem to get, wow this is queuing ;/

Code:
1:39:12] RPC request [[]] submitted to nofee
[01:39:21] LP triggered from server nofee
[01:39:21] Reading LP Response failed
[01:39:21] RPC request [[]] submitted to nofee

How rediculously low is the request timeout set? I have between 300-400ms to servers, surely it cant enforce something like <100ms ?

This would explain my issue with bithopper and high stales and rejected, I dont think I ever get LP requests answered for some reason.

Now the question is, how to fix LP with bithopper.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 18, 2011, 11:44:58 PM
1) more pools?
I hear and obey. Slowly.

2) Errors with request.notify?
Your client drops connections to soon. Its an issue. Not a gamekiller.

3) All those API ERRORS?
THATS AN ISSUE. update to the latest revision. If its not fixed tell me. I obviously am not getting them or else I would have fixed it.

Latest version is working very well for me.  No API errors, but I AM getting:

"caught, jsonrpc_call insides
TCP connection timed out: 10060: A connection attempt failed because a connected party did not properly respond after a period of time, or established connection failed because connected host failed to respond.."

and

"caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this"

errors a few times now.  


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 18, 2011, 11:52:04 PM
1) more pools?
I hear and obey. Slowly.

2) Errors with request.notify?
Your client drops connections to soon. Its an issue. Not a gamekiller.

3) All those API ERRORS?
THATS AN ISSUE. update to the latest revision. If its not fixed tell me. I obviously am not getting them or else I would have fixed it.

Latest version is working very well for me.  No API errors, but I AM getting:

"caught, jsonrpc_call insides
TCP connection timed out: 10060: A connection attempt failed because a connected party did not properly respond after a period of time, or established connection failed because connected host failed to respond.."

and

"caught, Final response/writing
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this"

errors a few times now.  


Ive reported these in couple of pages ago, I get these exact errors aswell and I am glad someone else is. Started to think im going crazy.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 18, 2011, 11:55:15 PM
1) Issues with API?
Have you set your passwords and usernames? If you are running on windows xp did you install pyopenssl like the readme told you to? Can you open an issue on github for some more personal debugging? Or try with --debug as well to give me more info?

2) Issues with nofee LP?
I have no idea. I'd have to look at their packet headers and debug output. Default configuration LP works. I'll be adding nofee support soonish. So that may fix your issues. A log or github issue is probably a good idea.

3)TCP connection timing out?
Shouldn't be hurting you. I get it too.

4) Request notify errors?
I get them too. They are literally harmless.
Both of these errors should be fixed but its fixing them versus adding a pool or stats etc...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: relm9 on July 18, 2011, 11:55:45 PM
Ok, i had the x64 build of Python installed. Tried the regular build and not getting API errors anymore. So it's not your script.  :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 19, 2011, 12:02:21 AM
2) Issues with nofee LP?
I have no idea. I'd have to look at their packet headers and debug output. Default configuration LP works. I'll be adding nofee support soonish. So that may fix your issues. A log or github issue is probably a good idea.

I actually meant LP in general, just copy/pasted output from nofee LP request.

This seems to occur with LP in general for me, leaving my stales everytime around ~10% also causing lots of idle miners.

Im trying a few things to see if I can possibly resolve it my side.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 19, 2011, 12:03:14 AM
trying to learn some hacking of this script so I dont have to be so dependant.. but

Quote
http://btc.x8s.de/faq

dont see a pool api.. they say they will have one soon.. I know I cant make it work with my limited skills of copy and paste, without one.

Quote
http://bitcoinpool.com/

they seem to have issues, when I went to register I got an "overloaded" message.. think i finally registered but cant login..(when i mess up my pass it says something but when i dont I am just back at the login screen)
they also have this in their "unban my accoutn page"

Quote
Your efficiency was less than 30% after 100 requested getworks and the round had progressed for more than 30 minutes or,

sounds like we can skip bitcoinpool.com

Quote
https://polmine.pl/?setlang=pl

it's very polish, I have enough trouble with english and that is my first language.


rfcpool works fine.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 19, 2011, 12:20:09 AM
1) LP Issues in general?
I don't get them. Are you using the latest version and can you throw a debug (or normal) log in pastebin and give me the link? Please?
Just for comparison I get 1.7% rejects when my dns resolver works and 3% when it is being flaky.
EDIT: Do you have windows xp without pyopenssl installed? That broke another persons machine a week ago.

2) Bitcoinpool?
They say the will ban poolhoppers and I don't want to annoy them.

3) x8s.de?
They have a shares but you have to login and set cookies etc... It was too much of a mess.

4) The polish guys?
Google translate works. Barely. They have roundshares and one of their pages. Just manhandle what I did for bitp.it the second time until it works.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 19, 2011, 12:51:00 AM
trying to learn some hacking of this script so I dont have to be so dependant.. but

Quote
http://btc.x8s.de/faq

dont see a pool api.. they say they will have one soon.. I know I cant make it work with my limited skills of copy and paste, without one.

Quote
http://bitcoinpool.com/

they seem to have issues, when I went to register I got an "overloaded" message.. think i finally registered but cant login..(when i mess up my pass it says something but when i dont I am just back at the login screen)
they also have this in their "unban my accoutn page"

Quote
Your efficiency was less than 30% after 100 requested getworks and the round had progressed for more than 30 minutes or,

sounds like we can skip bitcoinpool.com

Quote
https://polmine.pl/?setlang=pl

it's very polish, I have enough trouble with english and that is my first language.


rfcpool works fine.

1/4 aint bad. 


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 19, 2011, 01:02:53 AM
1) LP Issues in general?
I don't get them. Are you using the latest version and can you throw a debug (or normal) log in pastebin and give me the link? Please?
Just for comparison I get 1.7% rejects when my dns resolver works and 3% when it is being flaky.
EDIT: Do you have windows xp without pyopenssl installed? That broke another persons machine a week ago.

All this is on ubuntu installation, for the record getting no LP issues with previous version (modified for slice by flowers).

I do get <1% stales directly to a pool, Im fine with slightly higher but yeh of course >10% is a piss in the pan :P

Will get you link up but bit busy with other things right now , as soon as I have time.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 19, 2011, 02:07:21 AM
I think the core bithopper program should not include many pools, maybe even only have backup pools in it. This way each person who runs bithopper will have to setup the pools they want to hop themselves. This would save the pools from being hammered by EVERYONE who runs bithopper, and will only be hopped by people who specifically set it up, making it somewhat random and spearing the servers from being overloaded.

I think the core bithopper program should include ALL of the hoppable pools, but with most of them set to 'disable' or 'info' in pools.py.  That way people can just mine the pools they want by changing the value to 'mine'.

Good call, but it would even be better if you can set info or disable in the passwords file so that you can update the hopper without losing which pools are active or disabled.

+1

I think that if there are no credentials in password.py, the pool should not be mined at. (Right now an error is thrown.) That way people don't have to sign up for all these pools.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 19, 2011, 02:23:58 AM
I think the core bithopper program should not include many pools, maybe even only have backup pools in it. This way each person who runs bithopper will have to setup the pools they want to hop themselves. This would save the pools from being hammered by EVERYONE who runs bithopper, and will only be hopped by people who specifically set it up, making it somewhat random and spearing the servers from being overloaded.

I think the core bithopper program should include ALL of the hoppable pools, but with most of them set to 'disable' or 'info' in pools.py.  That way people can just mine the pools they want by changing the value to 'mine'.

Good call, but it would even be better if you can set info or disable in the passwords file so that you can update the hopper without losing which pools are active or disabled.

+1

I think that if there are no credentials in password.py, the pool should not be mined at. (Right now an error is thrown.) That way people don't have to sign up for all these pools.

In the pools.py just set the pool as info and then put in dummy credentials and it should have the same effect...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 19, 2011, 03:22:43 AM
With the current version on git, I get this:
Code:
[20:18:54] RPC request [[]] submitted to mtred
[20:18:55] RPC request [[]] submitted to mtred
[20:18:55] mtred: 1,451,121
[20:18:55] Server change to arsbitcoin, telling client with LP
[20:18:56] LP triggered serving miner
[20:18:56] btcguild efficiency: 2168.92572407%
[20:18:56] LP Call arsbitcoin.com:8344/LP
[20:18:56] bitp.it efficiency: 152.04977045%
[20:18:56] bitclockers efficiency: 160.286756157%
[20:18:56] rfc: 1,441,572
[20:18:56] RPC request [[]] submitted to arsbitcoin
[20:18:57] ozco: 1,609,608
[20:18:57] triple: 27,162
[20:18:57] Server change to triple, telling client with LP
[20:18:57] RPC request [[]] submitted to triplemining.com
[20:18:57] RPC request [[]] submitted to triplemining.com
Error in json decoding, Server probably down

[20:18:58] Server change to arsbitcoin, telling client with LP
Error in json decoding, Server probably down

[20:18:58] LP triggered serving miner
[20:18:58] LP Call arsbitcoin.com:8344/LP
[20:18:58] RPC request [[]] submitted to arsbitcoin
[20:19:00] RPC request [[]] submitted to arsbitcoin
[20:19:01] RPC request [[]] submitted to arsbitcoin
[20:19:01] RPC request [[]] submitted to arsbitcoin
[20:19:02] RPC request [[]] submitted to arsbitcoin
[20:19:03] RPC request [[]] submitted to arsbitcoin
[20:19:04] RPC request [[]] submitted to arsbitcoin
[20:19:04] RPC request [[]] submitted to arsbitcoin
[20:19:05] RPC request [[]] submitted to arsbitcoin
[20:19:08] RPC request [[]] submitted to arsbitcoin
[20:19:11] RPC request [[]] submitted to arsbitcoin
[20:19:11] RPC request [[]] submitted to arsbitcoin
[20:19:12] RPC request [[]] submitted to arsbitcoin
[20:19:15] RPC request [[]] submitted to arsbitcoin
[20:19:15] RPC request [[]] submitted to arsbitcoin
[20:19:16] RPC request [[]] submitted to arsbitcoin
[20:19:17] RPC request [[]] submitted to arsbitcoin

And just endless "RPC request [[]] submitted to arsbitcoin" thereafter - miners report a MH/s speed as though they are mining but no shares ever appear in the proxy and the accepted count on the miners does not increment. Help?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 19, 2011, 03:58:27 AM
With the current version on git, I get this:


And just endless "RPC request [[]] submitted to arsbitcoin" thereafter - miners report a MH/s speed as though they are mining but no shares ever appear in the proxy and the accepted count on the miners does not increment. Help?

You sure the shares aren't being counted?  I have the same thing and ars is absolutely counting them.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 19, 2011, 04:00:17 AM
With the current version on git, I get this:


And just endless "RPC request [[]] submitted to arsbitcoin" thereafter - miners report a MH/s speed as though they are mining but no shares ever appear in the proxy and the accepted count on the miners does not increment. Help?

You sure the shares aren't being counted?  I have the same thing and ars is absolutely counting them.

Let me check at the pool being mined real quick. I'm not seeing the share count increment at the miner but perhaps that's a communications issue in one link but not the other? Was the showing of the hashes deliberately removed? If so, very poor choice sir, how do I re-enable?

Edit: Nope, no shares incrementing at the pool either, just a wall of empty RPC requests and no actual hashes being passed either way.

Edit 2: I tested it completely vanilla, without even changing the passwords in password.py and it does the exact same thing, yet the builds from 7/14 and 7/16 still work perfectly.



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 19, 2011, 04:47:01 AM
Its refusing to switch to triplemining for me.  It says:

"error in json decoding. Server probably down."


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 19, 2011, 04:52:46 AM
Oh, and the name of the pool showing the empty RPC requests changes depending on the same logic as the working copies, so at least it's choosing the pool correctly, even if there's no actual miner/pool communications being forwarded or registered.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 19, 2011, 05:01:57 AM
Oh, and the name of the pool showing the empty RPC requests changes depending on the same logic as the working copies, so at least it's choosing the pool correctly, even if there's no actual miner/pool communications being forwarded or registered.

Well I am having the same issue as you except my shares are actually counting, which makes it not an issue at all for me.  Are you sure you have set the right details for the pool in password.py?

The only issue I am having is that its stuck on arsbitcoin right now when it should be switching to triplemining.  Everytime it polls the pools I get a:

"Error in json decoding.  Server probably down"

message with regards to triplemining.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 19, 2011, 05:05:02 AM
And just endless "RPC request [[]] submitted to arsbitcoin" thereafter - miners report a MH/s speed as though they are mining but no shares ever appear in the proxy and the accepted count on the miners does not increment. Help?

The endless "RPC request [[]] submitted to arsbitcoin" should mean "working as designed". Its the result of the change 22 hours ago commented as "Simpler rpc data representation for non debug mode."

That simpler rpc data representation means you don't see all the content inside [[]].


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 19, 2011, 05:13:42 AM
Quote
They have roundshares and one of their pages. Just manhandle what I did for bitp.it the second time until it works.

yeah my fu isnt very good. cant find a pool api.

they have that stats page with something that sorta sounds like round shares.. "number of correct all" looks like total round shares but i dont know how to grab that without the api thing and the user pi doesnt give total shares.   I thik i have been temporarily defeated but it was fun trying.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 19, 2011, 05:16:50 AM
Is anyone mining on triplemining right now?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 19, 2011, 05:18:48 AM
1) Is anyone mining triplemining?
I am.

2) Issues with api and not correctly setting pools?
I broke the delagger. Does the latest version work?

3) Enmaku?
Logs please? Either here or on github. I can't help without seeing more info since its not instantly apparent if its not the above issue. Debug logs are better but normal ones will do.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 19, 2011, 05:23:32 AM
And just endless "RPC request [[]] submitted to arsbitcoin" thereafter - miners report a MH/s speed as though they are mining but no shares ever appear in the proxy and the accepted count on the miners does not increment. Help?

The endless "RPC request [[]] submitted to arsbitcoin" should mean "working as designed". Its the result of the change 22 hours ago commented as "Simpler rpc data representation for non debug mode."

That simpler rpc data representation means you don't see all the content inside [[]].

OK so I'm seeing the hashes with --debug, but for some reason my miner's counts aren't incrementing. I'll have to play with it more, if I figure out what's wrong I'll get back to you on that. I'll probably poke around in the scripts a bit though to see if I can bring my hashes back without --debug. I'd really rather not deal with the excess nonsense on my screen to see the hashes I love so much :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 19, 2011, 05:31:17 AM
1) Is anyone mining triplemining?
I am.

2) Issues with api and not correctly setting pools?
I broke the delagger. Does the latest version work?


Just downloaded and no, same issue with not switching to triplemining.  Error in json decoding.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 19, 2011, 05:44:51 AM
Not sure what was wrong before with the miners not incrementing but I did a fresh pull and rewrote all the passwords.py entries by hand (instead of copy/paste) and it seems to be working.

Also, if (like me) you like seeing the hashes, just edit bitHopper.py and comment out lines 177, 179 and 180 like so:
Code:
#    if bithopper_global.options.debug:
    bithopper_global.log_msg('RPC request ' + str(data) + " submitted to " + str(pool_server['name']))
#    else:
#        bithopper_global.log_msg('RPC request [' + str(data[155:163]) + "] submitted to " + str(pool_server['name']))

There's something comforting to me about seeing those hashes, lets me know things are still working  ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 19, 2011, 05:56:05 AM
1)Triplemining error?

Are you behind a network filter? Or otherwise blocked by triplemining? We are scraping raw html. Also Log link and OS, miner? Does https://www.tripleming.com/stats load for you? Are you on windows XP and do you have pyopenssl installed if so?

2) Hash display code?
Hmm yeah I think it has a bug. Fixing it now.
EDIT: It works.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 19, 2011, 06:01:07 AM
1) Is anyone mining triplemining?
I am.

2) Issues with api and not correctly setting pools?
I broke the delagger. Does the latest version work?


Just downloaded and no, same issue with not switching to triplemining.  Error in json decoding.

Same issue. the stats page does in fact load for me, Windows 7 64-bit (32-bit python 2.7) and pyopenssl is installed.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 19, 2011, 06:03:12 AM
Quote
1) Is anyone mining triplemining?
I am.

2) Issues with api and not correctly setting pools?
I broke the delagger. Does the latest version work?

mining triplemining here just fine.. everything is working fine here. well I'm not sure what the delagger did, but everything appears to be working fine here

win732 bit py37 all that jazz


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 19, 2011, 06:03:58 AM
https://muyoso.triplemining.com/stats loads for me fine.  I watch the hashes change flawlessly on that page and in the source code.

Running windows 7 32bit with phoenix miner.  I am not behind any sort of network filter.  


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 19, 2011, 06:06:29 AM
1) enmaku and muyoso

Okay well I'm serious and desperate here. I really need a log output. run with debug copy your log, throw it on pastebin or github or whatever. GIVE ME A LOG. I'M BEGGING YOU!

Hands and knees seriously. I can't help you without it.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 19, 2011, 06:08:54 AM
Never mind, it was my own stupidity - I'd entered my ACCOUNT login info for triple, not my WORKER login info lol. It's late, brainfarts happen :P


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 19, 2011, 06:16:51 AM
Never mind, it was my own stupidity - I'd entered my ACCOUNT login info for triple, not my WORKER login info lol. It's late, brainfarts happen :P

Holy shit.  Same exact problem.  So sorry for wasting your time c00w.  I am an absolute idiot for not checking that. 


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 19, 2011, 06:24:52 AM
Well I'm happy the problem is solved.

--nitpick--
That should be in the um... debug logs. I feel horrible saying that but... yeah. Logs always help me find stuff.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 19, 2011, 06:33:29 AM
I'm on Triple now as well.

Is there a way to get a separate window of just the current pool stats. It zooms past so fast and if I scroll back up to see what the pools are displaying it disconnects my miners until I let the scroll go.

Win7 x32 GuiMiner with Phoenix/PhatK


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 19, 2011, 06:34:44 AM
Well I'm happy the problem is solved.

--nitpick--
That should be in the um... debug logs. I feel horrible saying that but... yeah. Logs always help me find stuff.

I was about to post them when I thought, "well I know it can't be this password thing that enmaku posted about, but let me check that before I post the debug".  Again, sorry for wasting your time when it was my own dumb mistake that caused the problem.  


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 19, 2011, 06:37:13 AM
I know you are busy c00w and probably going to get to it anyways, but I'd like to request you include the web stats page that flower put in his mod of your hopper, it's nice to be able to watch from elsewhere what s going on


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 19, 2011, 06:39:16 AM
I made a personal bitHopper fork with following features

- Database logging for share / accept / reject per pool (you can plot chart with it)
- choose better backup pool (by accept rate)
- can use bitcoins.lc
- can use bitp.it
- can use nofeemining
- can use polmine
- more stability

sample output :
Quote
[15:30:53] RPC request [0701ab32] submitted to triplemining.com
[15:30:56] Share > mtred : 2,243,450
[15:30:57] Share > bitp : 1,598,426
[15:30:57] Share > rfc : 1,497,127
[15:30:58] RPC request [C2ACD81D] submitted to triplemining.com
[15:30:58] Share > triple : 406,166 | 1860/1918 = 96.98%
[15:31:02] bitp est : 0.194754 / 0.97x chance
[15:31:02] mtr est : 0.023602 / 0.69x chance
[15:31:07] RPC request [8e755cdd] submitted to triplemining.com
[15:31:08] RPC request [3dc60e5b] submitted to triplemining.com
[15:31:17] RPC request [216c2f17] submitted to triplemining.com
[15:31:19] RPC request [4c31a023] submitted to triplemining.com
[15:31:28] RPC request [b6dec09c] submitted to triplemining.com
[15:31:37] RPC request [babe1f8b] submitted to triplemining.com
[15:31:40] RPC request [5d8ff1ce] submitted to triplemining.com
[15:31:44] RPC request [8b227624] submitted to triplemining.com
[15:31:46] RPC request [3ea80c42] submitted to triplemining.com
[15:31:49] RPC request [8735bf91] submitted to triplemining.com
[15:31:51] RPC request [23d281bc] submitted to triplemining.com
[15:31:53] Share > bitp : 1,599,105
[15:31:53] Share > bclc : 1,995,181 | 124/130 = 95.38%
[15:31:54] RPC request [4a0f6eae] submitted to triplemining.com
[15:31:55] Share > triple : 408,124 | 1873/1931 = 97.00%
[15:32:02] RPC request [48309b81] submitted to triplemining.com
[15:32:06] RPC request [9fe53cb2] submitted to triplemining.com
[15:32:07] RPC request [b56ec3e3] submitted to triplemining.com
[15:32:10] RPC request [a3eda037] submitted to triplemining.com
[15:32:26] RPC request [6ad31475] submitted to triplemining.com
[15:32:29] RPC request [ee675c93] submitted to triplemining.com
[15:32:31] RPC request [3987a0d6] submitted to triplemining.com

Try at your own risk  ;)

https://github.com/ryouiki/bitHopper
(you must edit password.py as usual)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Keninishna on July 19, 2011, 07:53:38 AM
I made a personal bitHopper fork with following features

- Database logging for share / accept / reject per pool (you can plot chart with it)
- choose better backup pool (by accept rate)
- can use bitcoins.lc
- can use bitp.it
- can use polmine
- more stability

sample output :
Quote
[15:30:53] RPC request [0701ab32] submitted to triplemining.com
[15:30:56] Share > mtred : 2,243,450
[15:30:57] Share > bitp : 1,598,426
[15:30:57] Share > rfc : 1,497,127
[15:30:58] RPC request [C2ACD81D] submitted to triplemining.com
[15:30:58] Share > triple : 406,166 | 1860/1918 = 96.98%
[15:31:02] bitp est : 0.194754 / 0.97x chance
[15:31:02] mtr est : 0.023602 / 0.69x chance
[15:31:07] RPC request [8e755cdd] submitted to triplemining.com
[15:31:08] RPC request [3dc60e5b] submitted to triplemining.com
[15:31:17] RPC request [216c2f17] submitted to triplemining.com
[15:31:19] RPC request [4c31a023] submitted to triplemining.com
[15:31:28] RPC request [b6dec09c] submitted to triplemining.com
[15:31:37] RPC request [babe1f8b] submitted to triplemining.com
[15:31:40] RPC request [5d8ff1ce] submitted to triplemining.com
[15:31:44] RPC request [8b227624] submitted to triplemining.com
[15:31:46] RPC request [3ea80c42] submitted to triplemining.com
[15:31:49] RPC request [8735bf91] submitted to triplemining.com
[15:31:51] RPC request [23d281bc] submitted to triplemining.com
[15:31:53] Share > bitp : 1,599,105
[15:31:53] Share > bclc : 1,995,181 | 124/130 = 95.38%
[15:31:54] RPC request [4a0f6eae] submitted to triplemining.com
[15:31:55] Share > triple : 408,124 | 1873/1931 = 97.00%
[15:32:02] RPC request [48309b81] submitted to triplemining.com
[15:32:06] RPC request [9fe53cb2] submitted to triplemining.com
[15:32:07] RPC request [b56ec3e3] submitted to triplemining.com
[15:32:10] RPC request [a3eda037] submitted to triplemining.com
[15:32:26] RPC request [6ad31475] submitted to triplemining.com
[15:32:29] RPC request [ee675c93] submitted to triplemining.com
[15:32:31] RPC request [3987a0d6] submitted to triplemining.com

Try at your own risk  ;)

https://github.com/ryouiki/bitHopper
(you must edit password.py as usual)

nice, working well for me except ive been getting an error on mtred about the api key.


[03:52:01] Error in pool api for mtred[Failure instance: Traceback: <type 'exceptions.KeyError'>: 'server'
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1076:gotResult
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1063:_inlineCallbacks
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:361:callback
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:455:_startRunCallbacks
--- <exception caught here> ---
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:542:_runCallbacks
/home/jm/bithop/pool.py:203:selectsharesResponse
/home/jm/bithop/pool.py:170:mtred_sharesResponse
]


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 19, 2011, 08:01:23 AM
1) Flower's website?
Well my own version is almost up. Its not his and is completely flat for now because I need to learn javascript. But it has a database backend.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: nob on July 19, 2011, 08:06:09 AM
I made a personal bitHopper fork with following features

- Database logging for share / accept / reject per pool (you can plot chart with it)
- choose better backup pool (by accept rate)
- can use bitcoins.lc
- can use bitp.it
- can use polmine
- more stability

....
Try at your own risk  ;)

https://github.com/ryouiki/bitHopper
(you must edit password.py as usual)

thx works great.

But i can't get nofeemining working, neither with "original" bitHopper nor your modded Version.

I always mess up the sharesRespons function, with the weekends Version of BitHopper everything was fine, but with the yesterdays Version its broken.

Old (working) Version:

Code:
'nofee':{'shares': default_shares, 'name': 'nofee',
           'mine_address': 'nofeemining.com:8332', 'user': nofee_user,
           'pass': nofee_pass, 'lag': False, 'LP': None,
           'api_address':'http://www.nofeemining.com/api.php?key=' + nofee_user_apikey, 'role':'mine'}

Code:
def nofee_sharesResponse(response):
    global servers
    info = json.loads(response)
    round_shares = int(info['poolRoundShares'])
    servers['nofee']['shares'] = round_shares
    bitHopper.log_msg('nofee:' + FormatShares(round_shares))

Code:
'nofee':nofee_sharesResponse,

New (broken) Version:

Code:
'nofee':{'shares': default_shares, 'name': 'nofee',
'mine_address': 'nofeemining.com:8332', 'user': nofee_user,
'pass': nofee_pass, 'lag': False, 'LP': None,
'api_address':'http://www.nofeemining.com/api.php?key=' + nofee_user_apikey,
'role':'mine'},

Code:
def nofee_sharesResponse(self, response):
info = json.loads(response)
round_shares = int(info['poolRoundShares'])
self.UpdateShares('nofee:',round_shares)

Code:
'nofee':self.nofee_sharesResponse,

Error is:
Code:
[10:03:01] Error in pool api for bitp[Failure instance: Traceback: <type 'excep
ions.AttributeError'>: Pool instance has no attribute 'nofee_sharesResponse'
C:\Python27\lib\site-packages\twisted\internet\defer.py:1076:gotResult
C:\Python27\lib\site-packages\twisted\internet\defer.py:1063:_inlineCallbacks
C:\Python27\lib\site-packages\twisted\internet\defer.py:361:callback
C:\Python27\lib\site-packages\twisted\internet\defer.py:455:_startRunCallbacks
--- <exception caught here> ---
C:\Python27\lib\site-packages\twisted\internet\defer.py:542:_runCallbacks
C:\Bit\ryouiki-bitHopper-43e6b75\pool.py:212:selectsharesResponse
]
[10:03:01] bitp est : 0.033427 / 0.94x chance
[10:03:01] Error in pool api for triple[Failure instance: Traceback (failure wi
h no frames): <class '_newclient.ResponseFailed'>: [<twisted.python.failure.Fai
ure <class 'twisted.internet.error.ConnectionLost'>>]
]
[10:03:01] Error in pool api for polmine[Failure instance: Traceback: <type 'ex
eptions.AttributeError'>: Pool instance has no attribute 'nofee_sharesResponse'
C:\Python27\lib\site-packages\twisted\internet\defer.py:1076:gotResult
C:\Python27\lib\site-packages\twisted\internet\defer.py:1063:_inlineCallbacks
C:\Python27\lib\site-packages\twisted\internet\defer.py:361:callback
C:\Python27\lib\site-packages\twisted\internet\defer.py:455:_startRunCallbacks
--- <exception caught here> ---
C:\Python27\lib\site-packages\twisted\internet\defer.py:542:_runCallbacks
C:\Bit\ryouiki-bitHopper-43e6b75\pool.py:212:selectsharesResponse
]
[Failure instance: Traceback (failure with no frames): <class '_newclient.Respo
seFailed'>: [<twisted.python.failure.Failure <class 'twisted.internet.error.Con
ectionLost'>>]
]


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 19, 2011, 08:07:44 AM

nice, working well for me except ive been getting an error on mtred about the api key.


[03:52:01] Error in pool api for mtred[Failure instance: Traceback: <type 'exceptions.KeyError'>: 'server'
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1076:gotResult
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1063:_inlineCallbacks
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:361:callback
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:455:_startRunCallbacks
--- <exception caught here> ---
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:542:_runCallbacks
/home/jm/bithop/pool.py:203:selectsharesResponse
/home/jm/bithop/pool.py:170:mtred_sharesResponse
]


i guess you omitted mtred_user_apikey on password.py
for example) mtred_user_apikey = '995d432ec46141ae3f25db3aae688452'


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 19, 2011, 08:19:41 AM
I made a personal bitHopper fork with following features

- Database logging for share / accept / reject per pool (you can plot chart with it)
- choose better backup pool (by accept rate)
- can use bitcoins.lc
- can use bitp.it
- can use polmine
- more stability

....
Try at your own risk  ;)

https://github.com/ryouiki/bitHopper
(you must edit password.py as usual)

thx works great.

But i can't get nofeemining working, neither with "original" bitHopper nor your modded Version.

I always mess up the sharesRespons function, with the weekends Version of BitHopper everything was fine, but with the yesterdays Version its broken.


You have no trailing comma in the old version:


Code:
           'api_address':'http://www.nofeemining.com/api.php?key=' + nofee_user_apikey, 'role':'mine'}
but you do have one in the new version:

            
Code:
'api_address':'http://www.nofeemining.com/api.php?key=' + nofee_user_apikey,
'role':'mine'},

Are there any other pools after nofee in the new one?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 19, 2011, 08:28:23 AM

thx works great.

But i can't get nofeemining working, neither with "original" bitHopper nor your modded Version.

I always mess up the sharesRespons function, with the weekends Version of BitHopper everything was fine, but with the yesterdays Version its broken.


updated to support nofeemining

https://github.com/ryouiki/bitHopper


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Keninishna on July 19, 2011, 08:30:19 AM

nice, working well for me except ive been getting an error on mtred about the api key.


[03:52:01] Error in pool api for mtred[Failure instance: Traceback: <type 'exceptions.KeyError'>: 'server'
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1076:gotResult
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:1063:_inlineCallbacks
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:361:callback
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:455:_startRunCallbacks
--- <exception caught here> ---
/usr/lib/python2.7/dist-packages/twisted/internet/defer.py:542:_runCallbacks
/home/jm/bithop/pool.py:203:selectsharesResponse
/home/jm/bithop/pool.py:170:mtred_sharesResponse
]


i guess you omitted mtred_user_apikey on password.py
for example) mtred_user_apikey = '995d432ec46141ae3f25db3aae688452'

I fixed it, apparently you have to hit save after generating the api key on the mtred site.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 19, 2011, 08:40:41 AM
I see alot of mention here of using bitcoins.lc, I dont see why anyone does that.

I was mining with their latest block, within 10minutes of hopping away all my shares were reduced to 0 thus they have some really rediculous scoring system in place.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: msb8r on July 19, 2011, 08:42:55 AM
I see alot of mention here of using bitcoins.lc, I dont see why anyone does that.

I was mining with their latest block, within 10minutes of hopping away all my shares were reduced to 0 thus they have some really rediculous scoring system in place.

If you're looking at the worker page, they only show shares submitted within the past 30 minutes, not shares submitted per round


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 19, 2011, 09:03:11 AM
Ok, any idea why they are being that retarded? Its stupid even for non-pool hoppers.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 19, 2011, 10:38:29 AM
c00w do you have any idea how to prevent these errors ?

Code:
Final response/writing on
Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.

They seem to cause ton of rejects, so it does actually matter when they appear (I recall you mentioning earlier in this thread that you get these errors and it doesnt matter or something to that effect)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 19, 2011, 11:34:34 AM
I think the core bithopper program should not include many pools, maybe even only have backup pools in it. This way each person who runs bithopper will have to setup the pools they want to hop themselves. This would save the pools from being hammered by EVERYONE who runs bithopper, and will only be hopped by people who specifically set it up, making it somewhat random and spearing the servers from being overloaded.

I think the core bithopper program should include ALL of the hoppable pools, but with most of them set to 'disable' or 'info' in pools.py.  That way people can just mine the pools they want by changing the value to 'mine'.

Good call, but it would even be better if you can set info or disable in the passwords file so that you can update the hopper without losing which pools are active or disabled.

+1

I think that if there are no credentials in password.py, the pool should not be mined at. (Right now an error is thrown.) That way people don't have to sign up for all these pools.

In the pools.py just set the pool as info and then put in dummy credentials and it should have the same effect...

Sure. It's just a usability issue.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 19, 2011, 01:52:40 PM
I made a personal bitHopper fork with following features

- Database logging for share / accept / reject per pool (you can plot chart with it)
- choose better backup pool (by accept rate)
- can use bitcoins.lc
- can use bitp.it
- can use nofeemining
- can use polmine
- more stability

sample output :
Quote
[15:30:53] RPC request [0701ab32] submitted to triplemining.com
[15:30:56] Share > mtred : 2,243,450
[15:30:57] Share > bitp : 1,598,426
[15:30:57] Share > rfc : 1,497,127
[15:30:58] RPC request [C2ACD81D] submitted to triplemining.com
[15:30:58] Share > triple : 406,166 | 1860/1918 = 96.98%
[15:31:02] bitp est : 0.194754 / 0.97x chance
[15:31:02] mtr est : 0.023602 / 0.69x chance
[15:31:07] RPC request [8e755cdd] submitted to triplemining.com
[15:31:08] RPC request [3dc60e5b] submitted to triplemining.com
[15:31:17] RPC request [216c2f17] submitted to triplemining.com
[15:31:19] RPC request [4c31a023] submitted to triplemining.com
[15:31:28] RPC request [b6dec09c] submitted to triplemining.com
[15:31:37] RPC request [babe1f8b] submitted to triplemining.com
[15:31:40] RPC request [5d8ff1ce] submitted to triplemining.com
[15:31:44] RPC request [8b227624] submitted to triplemining.com
[15:31:46] RPC request [3ea80c42] submitted to triplemining.com
[15:31:49] RPC request [8735bf91] submitted to triplemining.com
[15:31:51] RPC request [23d281bc] submitted to triplemining.com
[15:31:53] Share > bitp : 1,599,105
[15:31:53] Share > bclc : 1,995,181 | 124/130 = 95.38%
[15:31:54] RPC request [4a0f6eae] submitted to triplemining.com
[15:31:55] Share > triple : 408,124 | 1873/1931 = 97.00%
[15:32:02] RPC request [48309b81] submitted to triplemining.com
[15:32:06] RPC request [9fe53cb2] submitted to triplemining.com
[15:32:07] RPC request [b56ec3e3] submitted to triplemining.com
[15:32:10] RPC request [a3eda037] submitted to triplemining.com
[15:32:26] RPC request [6ad31475] submitted to triplemining.com
[15:32:29] RPC request [ee675c93] submitted to triplemining.com
[15:32:31] RPC request [3987a0d6] submitted to triplemining.com

Try at your own risk  ;)

https://github.com/ryouiki/bitHopper
(you must edit password.py as usual)

How do you mine at bitp.it with them giving wrong stats?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 19, 2011, 02:01:48 PM
How do you mine at bitp.it with them giving wrong stats?

He does some math and it gives fairly accurate estimate of where their shares are.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 19, 2011, 03:02:41 PM
Quote
1) Flower's website?
Well my own version is almost up. Its not his and is completely flat for now because I need to learn javascript. But it has a database backend

it looks like it is just a tiny bit of code added to the end of bithopper and the pool.py


it looks like this and shows where you are mining.
http://i.imgur.com/KtFCl.jpg

it's also dynamic.

But I look forward to yours as well.

If you already read this before the edit, I blame lackk of coffeee.

Quote
Try at your own risk 

https://github.com/ryouiki/bitHopper
(you must edit password.py as usual)


I'll give it a wirl


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 19, 2011, 03:48:13 PM

I get this error ryoki..


Code:
[11:44:41] Error in pool api for triple[Failure instance: Traceback: <type 'exce
ptions.AttributeError'>: 'NoneType' object has no attribute 'group'
D:\Python27\lib\site-packages\twisted\internet\defer.py:1076:gotResult
D:\Python27\lib\site-packages\twisted\internet\defer.py:1063:_inlineCallbacks
D:\Python27\lib\site-packages\twisted\internet\defer.py:361:callback
D:\Python27\lib\site-packages\twisted\internet\defer.py:455:_startRunCallbacks
--- <exception caught here> ---
D:\Python27\lib\site-packages\twisted\internet\defer.py:542:_runCallbacks
D:\Users\joulesbeef\Desktop\ryouiki-bitHopper-9174c02\pool.py:218:selectsharesRe
sponse
D:\Users\joulesbeef\Desktop\ryouiki-bitHopper-9174c02\pool.py:177:triple_sharesR
esponse


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 19, 2011, 03:50:06 PM
triplemining is down atm, cant access its json either thats why.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 19, 2011, 04:21:49 PM
Does anyone else here mine at polmine?

I think they just recently hit a block, the current round shares stats reset however under user stats page its still counting shares for the previous round.

confused o_0


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 19, 2011, 04:25:58 PM

I get this error ryoki..


Code:
[11:44:41] Error in pool api for triple[Failure instance: Traceback: <type 'exce
ptions.AttributeError'>: 'NoneType' object has no attribute 'group'
D:\Python27\lib\site-packages\twisted\internet\defer.py:1076:gotResult
D:\Python27\lib\site-packages\twisted\internet\defer.py:1063:_inlineCallbacks
D:\Python27\lib\site-packages\twisted\internet\defer.py:361:callback
D:\Python27\lib\site-packages\twisted\internet\defer.py:455:_startRunCallbacks
--- <exception caught here> ---
D:\Python27\lib\site-packages\twisted\internet\defer.py:542:_runCallbacks
D:\Users\joulesbeef\Desktop\ryouiki-bitHopper-9174c02\pool.py:218:selectsharesRe
sponse
D:\Users\joulesbeef\Desktop\ryouiki-bitHopper-9174c02\pool.py:177:triple_sharesR
esponse

error occurs when HTML parsing fails.
compromised in the latest build


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 19, 2011, 04:37:33 PM
I made a personal bitHopper fork with following features

- Database logging for share / accept / reject per pool (you can plot chart with it)
- choose better backup pool (by accept rate)
- can use bitcoins.lc
- can use bitp.it
- can use nofeemining
- can use polmine
- more stability

sample output :
Quote
[15:30:53] RPC request [0701ab32] submitted to triplemining.com
[15:30:56] Share > mtred : 2,243,450
[15:30:57] Share > bitp : 1,598,426
[15:30:57] Share > rfc : 1,497,127
[15:30:58] RPC request [C2ACD81D] submitted to triplemining.com
[15:30:58] Share > triple : 406,166 | 1860/1918 = 96.98%
[15:31:02] bitp est : 0.194754 / 0.97x chance
[15:31:02] mtr est : 0.023602 / 0.69x chance
[15:31:07] RPC request [8e755cdd] submitted to triplemining.com
[15:31:08] RPC request [3dc60e5b] submitted to triplemining.com
[15:31:17] RPC request [216c2f17] submitted to triplemining.com
[15:31:19] RPC request [4c31a023] submitted to triplemining.com
[15:31:28] RPC request [b6dec09c] submitted to triplemining.com
[15:31:37] RPC request [babe1f8b] submitted to triplemining.com
[15:31:40] RPC request [5d8ff1ce] submitted to triplemining.com
[15:31:44] RPC request [8b227624] submitted to triplemining.com
[15:31:46] RPC request [3ea80c42] submitted to triplemining.com
[15:31:49] RPC request [8735bf91] submitted to triplemining.com
[15:31:51] RPC request [23d281bc] submitted to triplemining.com
[15:31:53] Share > bitp : 1,599,105
[15:31:53] Share > bclc : 1,995,181 | 124/130 = 95.38%
[15:31:54] RPC request [4a0f6eae] submitted to triplemining.com
[15:31:55] Share > triple : 408,124 | 1873/1931 = 97.00%
[15:32:02] RPC request [48309b81] submitted to triplemining.com
[15:32:06] RPC request [9fe53cb2] submitted to triplemining.com
[15:32:07] RPC request [b56ec3e3] submitted to triplemining.com
[15:32:10] RPC request [a3eda037] submitted to triplemining.com
[15:32:26] RPC request [6ad31475] submitted to triplemining.com
[15:32:29] RPC request [ee675c93] submitted to triplemining.com
[15:32:31] RPC request [3987a0d6] submitted to triplemining.com

Try at your own risk  ;)

https://github.com/ryouiki/bitHopper
(you must edit password.py as usual)

Great, like the ability to see stales. But it wont change over to polmine, even when it has lowest shares. Any ideas?



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 19, 2011, 04:44:20 PM
I've been nearly always at bitcoin.lc with yours  ryouiki, where they messing with the stats or delaying them to make us mine there?

or did we just diable them cause they were banned multiclone?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 19, 2011, 04:53:38 PM

Great, like the ability to see stales. But it wont change over to polmine, even when it has lowest shares. Any ideas?


check if it's 'role':'info' mode


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 19, 2011, 06:18:39 PM

Great, like the ability to see stales. But it wont change over to polmine, even when it has lowest shares. Any ideas?


check if it's 'role':'info' mode

If you pulled it off the git just now you gotta change the role like ryouiki said.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: koopa on July 19, 2011, 06:34:51 PM
Hi Ryouki,

Thanks for the latest bithopper update (ryouiki-bitHopper-c6d4adb), great to see more pools are now hopable.

However, your latest update doesn't run for me at all; gives the following error:

Code:
Traceback (most recent call last):
  File "C:\path\to\bithopper\ryouiki-bitHopper-c6d4adb\bitHopper.py", line 9, in <module>
    import stats
  File "C:\path\to\bithopper\ryouiki-bitHopper-c6d4adb\stats.py", line 6, in <module>
    import pool
  File "C:\path\to\bithopper\ryouiki-bitHopper-c6d4adb\pool.py", line 30
    'api_address':'https://www.triplemining.com/stats', 'role':'mine' },
                ^
SyntaxError: invalid syntax

I had downloaded your previous version (ryouiki-bitHopper-869eff2) which runs just fine.

Thanks.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 19, 2011, 06:37:00 PM
check pool.py, after the penalty entries there is a few "," missing.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 19, 2011, 06:45:02 PM
Hi Ryouki,

Thanks for the latest bithopper update (ryouiki-bitHopper-c6d4adb), great to see more pools are now hopable.

However, your latest update doesn't run for me at all; gives the following error:

Code:
Traceback (most recent call last):
  File "C:\path\to\bithopper\ryouiki-bitHopper-c6d4adb\bitHopper.py", line 9, in <module>
    import stats
  File "C:\path\to\bithopper\ryouiki-bitHopper-c6d4adb\stats.py", line 6, in <module>
    import pool
  File "C:\path\to\bithopper\ryouiki-bitHopper-c6d4adb\pool.py", line 30
    'api_address':'https://www.triplemining.com/stats', 'role':'mine' },
                ^
SyntaxError: invalid syntax

I had downloaded your previous version (ryouiki-bitHopper-869eff2) which runs just fine.

Thanks.

current version (be477e0) would be fine.
this version also provides web stat page similar to flower's mod
( see stats in http://localhost:8337/current/index.html )

http://f.cl.ly/items/2T443u3g0I2x0k0H3l25/Image%202011-07-20%20at%203.56.32%20AM.png


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: koopa on July 19, 2011, 06:46:08 PM
check pool.py, after the penalty entries there is a few "," missing.

Thanks Clipse, found there were four missing instances of "," after penalty in pool.py. Corrected and now it's working fine.

Ryouki, if you can do the honors and update pool.py in github - cheers.

*Edit - I see you have changed it just as I was posting, now with the addition of stats, perfect, thanks again!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 19, 2011, 06:47:56 PM
check pool.py, after the penalty entries there is a few "," missing.

Thanks Clipse, found there were four missing instances of "," after penalty in pool.py. Corrected and now it's working fine.

Ryouki, if you can do the honors and update pool.py in github - cheers.

He already did and added a web stat page!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 19, 2011, 07:24:36 PM

this version also provides web stat page similar to flower's mod
( see stats in http://localhost:8337/current/index.html )

http://f.cl.ly/items/2T443u3g0I2x0k0H3l25/Image%202011-07-20%20at%203.56.32%20AM.png

+1000


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 19, 2011, 07:44:04 PM
why is triple lagging ?

It was doing it for me to.  I had the server set to eu2.triplemining.com.  Change it to eu1.triplemining.com and it has been perfect for me.  Whatever one you have set, try the other one to see if its better.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ed64 on July 19, 2011, 07:54:44 PM
Nice fork, I've added bitcoinpool.com as well

https://github.com/echiu64/bitHopper

Ed

Hi Ryouki,

Thanks for the latest bithopper update (ryouiki-bitHopper-c6d4adb), great to see more pools are now hopable.

However, your latest update doesn't run for me at all; gives the following error:

Code:
Traceback (most recent call last):
  File "C:\path\to\bithopper\ryouiki-bitHopper-c6d4adb\bitHopper.py", line 9, in <module>
    import stats
  File "C:\path\to\bithopper\ryouiki-bitHopper-c6d4adb\stats.py", line 6, in <module>
    import pool
  File "C:\path\to\bithopper\ryouiki-bitHopper-c6d4adb\pool.py", line 30
    'api_address':'https://www.triplemining.com/stats', 'role':'mine' },
                ^
SyntaxError: invalid syntax

I had downloaded your previous version (ryouiki-bitHopper-869eff2) which runs just fine.

Thanks.

current version (be477e0) would be fine.
this version also provides web stat page similar to flower's mod
( see stats in http://localhost:8337/current/index.html )

http://f.cl.ly/items/2T443u3g0I2x0k0H3l25/Image%202011-07-20%20at%203.56.32%20AM.png


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 19, 2011, 08:03:18 PM
latest version provides interactive penalty manipulation.
have fun  ;D

http://cl.ly/2j1S1Z3I3S3Z1y1s2k1l/Image_2011-07-20_at_4.52.12_AM.png


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: msb8r on July 19, 2011, 08:15:32 PM
latest version provides interactive penalty manipulation.
have fun  ;D


What effect does the penalty have?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 19, 2011, 08:20:08 PM

What effect does the penalty have?

Round Shares are counted as [Round Shares * penalty]

Increasing penalty -> faster hopping out from the pool


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 19, 2011, 08:24:21 PM
ry fork: free
Dyndns with natted IP: free
iPhone data plan: $30
Monitoring your bithopper from traffic court: Priceless!

Funny note: iPhone predictive wanted to turn bithopper into virginity. ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: msb8r on July 19, 2011, 08:32:19 PM

What effect does the penalty have?

Round Shares are counted as [Round Shares * penalty]

Increasing penalty -> faster hopping out from the pool

Very nice. Think I might have to give your version a try :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 19, 2011, 08:34:27 PM
my donations go to c00w and ryouik, this is a team work ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 19, 2011, 08:40:56 PM

Round Shares are counted as [Round Shares * penalty]

Increasing penalty -> faster hopping out from the pool

I hope this isn't a stupid question, but why would you want to jump out of a pool faster? 


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 19, 2011, 08:42:17 PM

What effect does the penalty have?

Round Shares are counted as [Round Shares * penalty]

Increasing penalty -> faster hopping out from the pool

Could you add a pool hashrate counter aswell, would be nice in to increase penalty if I see pool hashrate dropped.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 19, 2011, 08:44:52 PM
i think there is something wrong with stat data from bcpool.

it says: 18h round with 185330 shares @160gh?
i dont believe that. i think he could be dividing his shares by ten.

only found round shares in json - not on the site.

any ideas?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 19, 2011, 08:49:50 PM
i think there is something wrong with stat data from bcpool.

it says: 18h round with 185330 shares @160gh?
i dont believe that. i think he could be dividing his shares by ten.

only found round shares in json - not on the site.

any ideas?

Yeh their site and json give different results.

Ive had 3 resets (I assumed quick blocks) around <400k shares via the json stats, their website just keeps ticking tho.

This leaves me not knowing whats cooking since i got rewarded nothing from the json stats resets, so that leaves the actual website stats as the stats they are using?

If thats the case, they are robbing people blind.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 19, 2011, 08:55:39 PM
my donations go to c00w and ryouik, this is a team work ;)

thanks for your donation!

I hope this isn't a stupid question, but why would you want to jump out of a pool faster? 

high rejection rate, sudden slowdown, frequent laggging, or feelings of bad luck  :P


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: msb8r on July 19, 2011, 09:08:35 PM
Next dumb question from me.

What is the purpose of "blank" submittal?

Code:
[23:10:14] RPC request [] submitted to arsbitcoin


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 19, 2011, 09:09:57 PM
its a getwork request from your miner to get something to do
its forwarded to the selected pool (eg arsbitoin


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 19, 2011, 09:25:36 PM
1) Website!
Yeah I'm going to keep adding features. I didn't realize rejected packets are just a response of False...

2) API repolling?
Basically if someone else does what bitp.it did, well, it won't work.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 19, 2011, 09:54:12 PM
its a getwork request from your miner to get something to do
its forwarded to the selected pool (eg arsbitoin

A bit off-topic but what's a reasonable getwork interval anyways? Shouldn't the client complete the work before asking for more?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 19, 2011, 09:56:41 PM
A bit off-topic but what's a reasonable getwork interval anyways? Shouldn't the client complete the work before asking for more?

if he would, he had to wait for the result of the getwork - time for your gpu to cool down :)
as (probably) you don't want that its better to prefetch some.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 19, 2011, 10:07:56 PM
what if the hopper is build on top for poclbm ? wont that be more "natural" ? i mean if u have a bow whit 5 GPU you will have 5 workers and 5 work requests

you are right. hopper on top of a miner is better.
but if you have more than one miner the actual pool selection (and stats grabbing) should be one a single place.

and: a proxy is very much more flexible.
 - you can use any miner you want
 - you can tweak ports (i have to mine through port 80)
 - single place for share/reject/speed counter and idle warnings (which are not easy to integrate in a miner; because the whole pc could have gone to hell)

so (for me) a hopping proxy is better than a miner integration - as (with integration) i would use a proxy anyway


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 19, 2011, 10:16:37 PM
Updates on why stuff may break.

I just added in reject watching and had to do a database upgrade to add a slot. And well... it didn't work and I'm not quite sure why but it looks like the database may be getting wiped everytime you restart.

API autopolling is working well. And seems to have lowered reject rates also. A nice side affect.

Also I added in backup pool selection based on reject rates.

And I literally just spotted a bug with api polling. 1 second.

1) Reasonable getwork interval?
Um. As quickly as it needs to feed your GPU. Getworks can return any size of work and a lot of pools cut them up pretty small. So it can vary a lot. And the faster/more GPU's you have the more getworks you need.

More than 20/s per miner is probably too much


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 19, 2011, 10:39:36 PM
Hi Ryouki,

Thanks for the latest bithopper update (ryouiki-bitHopper-c6d4adb), great to see more pools are now hopable.

However, your latest update doesn't run for me at all; gives the following error:

Code:
Traceback (most recent call last):
  File "C:\path\to\bithopper\ryouiki-bitHopper-c6d4adb\bitHopper.py", line 9, in <module>
    import stats
  File "C:\path\to\bithopper\ryouiki-bitHopper-c6d4adb\stats.py", line 6, in <module>
    import pool
  File "C:\path\to\bithopper\ryouiki-bitHopper-c6d4adb\pool.py", line 30
    'api_address':'https://www.triplemining.com/stats', 'role':'mine' },
                ^
SyntaxError: invalid syntax

I had downloaded your previous version (ryouiki-bitHopper-869eff2) which runs just fine.

Thanks.

current version (be477e0) would be fine.
this version also provides web stat page similar to flower's mod
( see stats in http://localhost:8337/current/index.html )

http://f.cl.ly/items/2T443u3g0I2x0k0H3l25/Image%202011-07-20%20at%203.56.32%20AM.png

Having a little problem when I try to access the stats. I get the message

Code:
web.Server Traceback (most recent call last):

<type 'exceptions.IOError'>: [Errno 2] No such file or directory: 'index.html'

Using latest version of ryouiki's fork


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 19, 2011, 10:45:01 PM
is x8s faking stats. shares haven't updated for hours.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 19, 2011, 10:47:36 PM
is x8s faking stats. shares haven't updated for hours.

jeje don't bother, x8s it's not fully implemented


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 19, 2011, 10:52:45 PM
x8s wasnt implemented at all yet, so you wont get stats.

Their running shares seem to keep counting , not sure how we would grab those values to report as current shares.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 19, 2011, 10:54:49 PM
note to everyone who is using ryouiki fork. there are already penalties he put in place while testing or what not so be sure to set them to your own values.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 19, 2011, 11:05:31 PM
note to everyone who is using ryouiki fork. there are already penalties he put in place while testing or what not so be sure to set them to your own values.

Yeh, there is a few individual penalties preassigned, any unassigned is set to penalty:1

You can on the fly adjust these from the webpage tho for current session.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 19, 2011, 11:09:39 PM
note to everyone who is using ryouiki fork. there are already penalties he put in place while testing or what not so be sure to set them to your own values.

Yeh, there is a few individual penalties preassigned, any unassigned is set to penalty:1

You can on the fly adjust these from the webpage tho for current session.

yeah I'm having trouble getting that page to load. whats the isnt it just http://localhost:8337/current/index.html

I get an error. I posted it a couple posts above


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 19, 2011, 11:14:34 PM
Quick update to anyone who is mining at bitcoins.lc.  Looks like they are giving out random share data right now causing the hopper to mine there.  Shared went from 10k to 90k to 60k to 80k to 70k to 26k.  Make sure to disable them.  IDK if any of the forks handle bitcoins.lc differently, ie not through the api.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 20, 2011, 12:13:48 AM

Great, like the ability to see stales. But it wont change over to polmine, even when it has lowest shares. Any ideas?


check if it's 'role':'info' mode

Nope, 'role':'mine'


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 20, 2011, 12:18:25 AM
Polmine?

I may have missed the code but if you throw it in an issue on github I'll add it in/ try and figure out why it is broken. Did you add it to the func_map in selectsharesResponse?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 20, 2011, 12:23:31 AM
Polmine?

I may have missed the code but if you throw it in an issue on github I'll add it in/ try and figure out why it is broken.

This was just ryouki's fork - haven't tried on yours yet. He done some regex, added it in and it works for him - just not for me. So I've done something stupid.

Quote
Did you add it to the func_map in selectsharesResponse?

thanks - will check when I'm home.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: 1bitc0inplz on July 20, 2011, 01:47:43 AM
Basically if someone else does what bitp.it did, well, it won't work.

We're blushing  ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 20, 2011, 01:49:35 AM
Why didn't you guys just change your algorithm? We could have added you as a backup pool.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: 1bitc0inplz on July 20, 2011, 01:54:34 AM
Why didn't you guys just change your algorithm? We could have added you as a backup pool.

We are changing our algorithm, we're moving to ESMPPS. http://forum.bitcoin.org/index.php?topic=12181.msg378328#msg378328


We'd love you guys to call us home once we make the switch.  :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 20, 2011, 02:18:58 AM
we liked you guys too before things changed.. look forward to to going back soon.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 20, 2011, 02:38:17 AM
Having a little problem when I try to access the stats. I get the message

Code:
web.Server Traceback (most recent call last):

<type 'exceptions.IOError'>: [Errno 2] No such file or directory: 'index.html'

Using latest version of ryouiki's fork

possible cause

1. index.html is not there (same directory as bitHopper.py)
2. working (current) directory is not the correct
3. do not have permission to read file

in case of 2.
modify this line to point the absolute path
Code:
file = open('index.html', 'r')
as
Code:
file = open('/root/dev/blahblah/index.html', 'r')


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 20, 2011, 02:38:35 AM
Like every single pool I am mining is unlucky as hell right now.  Only one that solved a block in like the last 12 hours is bitcoins.lc and their share count is bouncing around like a maniac.  


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 20, 2011, 02:55:58 AM
Holy crap Ryouiki this mod is AMAZING. So glad I decided to try it out and I really hope c00w works your changes into root  :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 20, 2011, 03:35:05 AM
in the latest version you can enable/disable pool interactively

http://cl.ly/2V0s0p1805220P2L0z47/Image_2011-07-20_at_12.31.13_PM.png

however, enabling not implemented pools like x8s will cause error
try at your own risk  ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 20, 2011, 03:43:15 AM
Having a little problem when I try to access the stats. I get the message

Code:
web.Server Traceback (most recent call last):

<type 'exceptions.IOError'>: [Errno 2] No such file or directory: 'index.html'

Using latest version of ryouiki's fork

possible cause

1. index.html is not there (same directory as bitHopper.py)
2. working (current) directory is not the correct
3. do not have permission to read file

in case of 2.
modify this line to point the absolute path
Code:
file = open('index.html', 'r')
as
Code:
file = open('/root/dev/blahblah/index.html', 'r')


Had to change the working directory manually set to the full path of the folder. Thanks! Weird that I had to do that though.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 20, 2011, 03:54:03 AM
1) Working changes into master branch?
Yeah. I just got permission from flower who was sick to merge his changes over.
Once I get that merged over I'll talk to ryou about his stuff and I'll add in the manual payout entry and try and script some.

2) So what have you been doing over the last two days?
Database changes, Stability changes, code reorg, a flat info page, dynamic api polling changes, oh and the difficulty module now will deal with changing difficulty correctly.
So the main code is really solid now.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 20, 2011, 04:54:32 AM
hats off to c00w, flower and ryouiki. You guys have made some awesome progress working together separately. Really demonstrates some of the power of open source development.

What is really amazing to me is seeing the implementation of features that shortly after I "think" of them, before I can even suggest them. The webgui control is awesome. The enable, disable feature in the webgui - super. Can't wait to see what else lies ahead.

c00w major kudos for a solid and getting firmer foundation.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 20, 2011, 05:03:01 AM
latest version will display pool speeds
because, it is estimated speed based on round share trend, it may be different from the speed value provided by pool

http://cl.ly/3m1B1O2J2x1T1m1j2b3r/Image_2011-07-20_at_1.59.24_PM.png


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 20, 2011, 05:45:18 AM
thanks, hawks5999

i've been doing this for my own purpose (studying python, git) and fun.
btw, i must go back to my daytime job for a while  :'(
fortunately, current version looks stable for casual use

I really appreciate to c00w and flower for foundation codes


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 09:16:29 AM
Quick update to anyone who is mining at bitcoins.lc.  Looks like they are giving out random share data right now causing the hopper to mine there.  Shared went from 10k to 90k to 60k to 80k to 70k to 26k.  Make sure to disable them.  IDK if any of the forks handle bitcoins.lc differently, ie not through the api.

Some regex code would be nice to read from the actual stats page(these seem to add up correctly), I have no idea where there current share stats come from since I cant find the bithopper reported shares on the website.

That said, is there any reason yet not to hop bitcoins.lc ?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 20, 2011, 09:57:57 AM

Some regex code would be nice to read from the actual stats page(these seem to add up correctly), I have no idea where there current share stats come from since I cant find the bithopper reported shares on the website.

That said, is there any reason yet not to hop bitcoins.lc ?

bclc checks user-agent string and give real data for Web browser, fake data for hopper proxy

sure, we can fake user-agent string to get real data but they will fake again..
this is endless.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 10:03:39 AM
dunno bout checking user-agent, ive assigned a specific browser proper user-agent and still get wrong stats from bitcoins.lc/stats page

Cant we use the stats.json page to read the shares ?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 20, 2011, 10:11:55 AM
dunno bout checking user-agent, ive assigned a specific browser proper user-agent and still get wrong stats from bitcoins.lc/stats page

Cant we use the stats.json page to read the shares ?

yes. their stats.json works fine (for web browser and my test build of bitHopper Mod)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 10:20:06 AM
dunno bout checking user-agent, ive assigned a specific browser proper user-agent and still get wrong stats from bitcoins.lc/stats page

Cant we use the stats.json page to read the shares ?

yes. their stats.json works fine (for web browser and my test build of bitHopper Mod)

Wanna add the code to your git code :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 20, 2011, 11:24:06 AM

Wanna add the code to your git code :)

test branch has it


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 11:36:25 AM
thanks, works.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ed64 on July 20, 2011, 01:21:59 PM
For pools that don't show round shares, but show duration and hashrate, we can estimate the # of shares:

Total_Hash/s = (((Current_Shares - Shares_Before_Delta) * 2^32) / Delta)

Assume we compare from the start of the round, so
Total_Hash/s = ((Current_Shares) * 2^32)) / Round_Duration
Current_Shares = Total_Hash/s * Round_Duration / 2^32

And then apply some factor to during depending on stats delay...

Thoughts?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 01:58:44 PM
For pools that don't show round shares, but show duration and hashrate, we can estimate the # of shares:

Total_Hash/s = (((Current_Shares - Shares_Before_Delta) * 2^32) / Delta)

Assume we compare from the start of the round, so
Total_Hash/s = ((Current_Shares) * 2^32)) / Round_Duration
Current_Shares = Total_Hash/s * Round_Duration / 2^32

And then apply some factor to during depending on stats delay...

Thoughts?


Doable except pools who dont show round shares also dont tell you exactly when round started(sometimes current round is delayed by an hour)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 20, 2011, 03:09:52 PM
For pools that don't show round shares, but show duration and hashrate, we can estimate the # of shares:

Total_Hash/s = (((Current_Shares - Shares_Before_Delta) * 2^32) / Delta)

Assume we compare from the start of the round, so
Total_Hash/s = ((Current_Shares) * 2^32)) / Round_Duration
Current_Shares = Total_Hash/s * Round_Duration / 2^32

And then apply some factor to during depending on stats delay...

Thoughts?


the estimator is already implemented in my bitHopper mod (for btcg), but it don't work good because the estimation is always based on ~1 hour delay.

you can try (just enable btcg) but you will be dissapointed with real earning :(


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 20, 2011, 03:15:39 PM
did bitclockers get completely disabled in the latest test build, ryouiki?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 03:23:06 PM
For pools that don't show round shares, but show duration and hashrate, we can estimate the # of shares:

Total_Hash/s = (((Current_Shares - Shares_Before_Delta) * 2^32) / Delta)

Assume we compare from the start of the round, so
Total_Hash/s = ((Current_Shares) * 2^32)) / Round_Duration
Current_Shares = Total_Hash/s * Round_Duration / 2^32

And then apply some factor to during depending on stats delay...

Thoughts?


the estimator is already implemented in my bitHopper mod (for btcg), but it don't work good because the estimation is always based on ~1 hour delay.

you can try (just enable btcg) but you will be dissapointed with real earning :(

One thing that confuse me with btcguild atm is the fact that my shares value drop to 0 , I dont think they use normal prop anymore since there is no way shares could become worth 0 within prop, no matter how long a round may last.

Only thing I can think of why the my account display 0 is cause it shows the actual round in progress earnings and is unrelated to any other fake(delayed) stats on the website.



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 20, 2011, 03:23:13 PM
did bitclockers get completely disabled in the latest test build, ryouiki?

i'd removed bitclockers on 2e5188.. build (4 hours ago) by mistake
bitclockers is back after f7a2a2.. build (2 hours ago)

edit : oops, test branch is not fixed yet.. i'll fix it asap fixed. thanks


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 03:26:40 PM
did bitclockers get completely disabled in the latest test build, ryouiki?

i'd removed bitclockers on 2e5188.. build (4 hours ago) by mistake
bitclockers is back after f7a2a2.. build (2 hours ago)


Bit unrelated to recent discussions but have you figured out what bitcoinpool is doing to their shares yet, or atleast which shares to work from. json shares looks more realistic but it seems they payout based on the website shares/elapsedtime and those stats are totally out of wack.

Also this is prob more directed to c00w/flower/ryo, any idea yet how to capture the counting current round_shares for x8s ?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zybron on July 20, 2011, 03:48:44 PM
2) So what have you been doing over the last two days?
Database changes, Stability changes, code reorg, a flat info page, dynamic api polling changes, oh and the difficulty module now will deal with changing difficulty correctly.
So the main code is really solid now.

About the dynamic api polling - if shares remain the same from previous poll to current poll, refresh rate is incremented by 10% of current rate, correct? (If I read the code correctly.) Once refresh rate exceeds 1800 seconds, the pool is disabled. With polling starting at 60 seconds, if a pool's shares became static, it would take 5 1/2 hours before that pool is disabled. I got that from summing the incremental increases from 60 to 1854 over 37 10% steps.

Am I missing something? Is my math wrong? I wouldn't think we would want to wait 5 1/2 hours before changing from a low-ball static round share api poll.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 20, 2011, 04:00:37 PM
i hope u are mining on bitcoins.lc guys ....


@ryouiki i cant disable manually ars ffs

in the latest version (master branch), you can manually remove ars ( 'role':'removefromlist' ) by modifying pool.py


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zybron on July 20, 2011, 04:17:43 PM
Something is obviously off about the math I used before or how I understand the polling refresh rate increments, cause I just had ozco get disabled because of timeouts, it seems. It was significantly less time than 5 1/2 hours after I last started bitHopper.

However, once ozco was disabled, bitHopper didn't immediately switch to another pool, either. It did eventually switch over to a backup pool, but I would think it should immediately switch, right?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 20, 2011, 04:23:10 PM

Bit unrelated to recent discussions but have you figured out what bitcoinpool is doing to their shares yet, or atleast which shares to work from. json shares looks more realistic but it seems they payout based on the website shares/elapsedtime and those stats are totally out of wack.

Also this is prob more directed to c00w/flower/ryo, any idea yet how to capture the counting current round_shares for x8s ?

http://www.bitcoinpool.com/forum/viewtopic.php?f=1&t=103

they say, they would reduce our earning based on mining time window.
in fact, we can beat this kind of algorithm with forced (scheduled) hopping

as for x8s, they added json yesterday.
recent main branch of my fork may work on x8s, but not tested yet..

Code:
               'x8s':{ 'name': 'btc.x8s.de',
                    'mine_address': 'pit.x8s.de:8337', 'user': x8s_user, 'pass': x8s_pass,
                    'api_address':'http://btc.x8s.de/api/global.json', 'role':'disable'},

Code:
   def x8s_sharesResponse(self, response):
        round_shares = int(json.loads(response)['round_shares'])
        self.UpdateShares('x8s',round_shares)

Code:
           'x8s':self.x8s_sharesResponse,


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 20, 2011, 05:22:10 PM
1) API polling and ozco getting disabled?
There was a bug in an older version which caused things to get disabled too soon.

2) Once the api is disabled the pool isn't?
Um yeah. I need to call a server_update. Forgot about that. My bad.

3)x8s?
I'll finish it.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 20, 2011, 05:51:04 PM
Quote
i hope u are mining on bitcoins.lc guys ....


WHY?!?!


they have been annoying the crap out of me since i discovered them.

are you actually working on new blocks or are they doing that crazy crap with their stats still.. to make us mine there?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 20, 2011, 05:56:44 PM
looks like crazy crap.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: msb8r on July 20, 2011, 05:57:36 PM

as for x8s, they added json yesterday.
recent main branch of my fork may work on x8s, but not tested yet..

Works very well. Added to pool.py literally 5 minutes before they found the block :D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 20, 2011, 05:59:18 PM
yeah screw bitcoin.lc with a chainsaw.. i want nothing to do with them.

They ban hoppers, steal their coins, and screw with the mining stats to make sure we always hop to them.

and when you withdrawn your coin, all you can get out is in increments of 0.01 coins.. the change just annoyingly sits there.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 20, 2011, 06:20:06 PM
Couple of feature requests:

1) Add unhoppable pools such as deepbit or slush as backups - I'd rather failback to deepbit than eligius I think. Seems deepbit has a better payout due to super short (<30 Minute) rounds on average.
2) Add web based control (in ryouiki's fork) to set backup pool - something like a B button to go along with X/O of enable/disable.

Thanks!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 06:20:31 PM
If you followed this thread, you would find the bitcoins.lc stats fix.

Or you can goto ryo github under test branch.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 06:21:09 PM
Couple of feature requests:

1) Add unhoppable pools such as deepbit or slush as backups - I'd rather failback to deepbit than eligius I think. Seems deepbit has a better payout due to super short (<30 Minute) rounds on average.
2) Add web based control (in ryouiki's fork) to set backup pool - something like a B button to go along with X/O of enable/disable.

Thanks!

1. Just use arsbitcoin as backup, dont really need more than one backup.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 20, 2011, 06:35:18 PM
If you followed this thread, you would find the bitcoins.lc stats fix.

Or you can goto ryo github under test branch.

I'm not seeing what the change is.

My browser says

"round_shares":"1645384"

from the stats.json.

Bithopper says they are 16k then 70k then 66k shares.  It doesn't seem to be working.  I want it to work because they seem to be the only pool solving blocks right now.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 20, 2011, 06:56:43 PM
I concur with muyoso - there are discrepancies between bithopper reported shares and the web reported shares.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 06:58:40 PM
If you followed this thread, you would find the bitcoins.lc stats fix.

Or you can goto ryo github under test branch.

I'm not seeing what the change is.

My browser says

"round_shares":"1645384"

from the stats.json.

Bithopper says they are 16k then 70k then 66k shares.  It doesn't seem to be working.  I want it to work because they seem to be the only pool solving blocks right now.

Cause you didnt apply the test branch patch i told you to do.

Go here: https://github.com/ryouiki/bitHopper/commit/e8fa81053efa238c062d03603c44eeecf4a87523


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 20, 2011, 06:59:20 PM
Couple of feature requests:

1) Add unhoppable pools such as deepbit or slush as backups - I'd rather failback to deepbit than eligius I think. Seems deepbit has a better payout due to super short (<30 Minute) rounds on average.
2) Add web based control (in ryouiki's fork) to set backup pool - something like a B button to go along with X/O of enable/disable.

Thanks!

1. Just use arsbitcoin as backup, dont really need more than one backup.

I currently have ars and eligius as backups (as is default i believe). But the point is that deepbit seems to be more efficient than the pps from ars or eligius.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 07:05:55 PM
Couple of feature requests:

1) Add unhoppable pools such as deepbit or slush as backups - I'd rather failback to deepbit than eligius I think. Seems deepbit has a better payout due to super short (<30 Minute) rounds on average.
2) Add web based control (in ryouiki's fork) to set backup pool - something like a B button to go along with X/O of enable/disable.

Thanks!

1. Just use arsbitcoin as backup, dont really need more than one backup.

I currently have ars and eligius as backups (as is default i believe). But the point is that deepbit seems to be more efficient than the pps from ars or eligius.

the SMPPS by arsbitcoin at 0% fee pays at a minimum 10% more than PPS from deepbit.

Not sure how you could work on 'feel' when in practice there is no chance deepbits PPS @ 10% fee will pay you more.

Regarding bitcoins.lc, I have a feeling they changed their Prop to score based Prop or something, I just got screwed over by them just finishing a 3hr 30mins block, I mind pretty much solidly for 2hrs 30ms of the block however my original estimate earnings for that period would have been 2.8BTC, and I received 0.18BTC for missing 1hr of the period ? sounds like they should be avoided.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 20, 2011, 07:08:26 PM

Cause you didnt apply the test branch patch i told you to do.

Go here: https://github.com/ryouiki/bitHopper/commit/e8fa81053efa238c062d03603c44eeecf4a87523

You are correct, I didn't apply that.  Looks like it may be working by the first poll done.  Thanks.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 20, 2011, 07:12:12 PM
Hey guys, I'm in a dilemma... if you don't mind merging some code on github we're hopping a little inefficient. I like all of your forks and every one has it's unique features but can't decide over which one to use. Thanks


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: frisco on July 20, 2011, 07:20:10 PM
Probably this is a known error or I am missing some lib but I get this error everytime I start the hopper then there everything works as it should or at least I think it does.
Quote
2011-07-20 14:16:49-0500 [-] Unhandled Error
        Traceback (most recent call last):
          File "bitHopper.py", line 367, in <module>
            main()
          File "bitHopper.py", line 363, in main
            reactor.run()
          File "/opt/python2.7/lib/python2.7/site-packages/twisted/internet/base.py", line 1162, in run
            self.mainLoop()
          File "/opt/python2.7/lib/python2.7/site-packages/twisted/internet/base.py", line 1171, in mainLoop
            self.runUntilCurrent()
        --- <exception caught here> ---
          File "/opt/python2.7/lib/python2.7/site-packages/twisted/internet/base.py", line 793, in runUntilCurrent
            call.func(*call.args, **call.kw)
          File "/root/bitHopper/pool.py", line 249, in update_api_servers
            d = work.get(self.bitHopper.json_agent,info['api_address'])
        exceptions.KeyError: 'api_address'

I am using the main branch of coow's github fully updated.

http://pastebin.com/YK3Kj3QJ


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 20, 2011, 07:31:52 PM
the SMPPS by arsbitcoin at 0% fee pays at a minimum 10% more than PPS from deepbit.

Not sure how you could work on 'feel' when in practice there is no chance deepbits PPS @ 10% fee will pay you more.

Regarding bitcoins.lc, I have a feeling they changed their Prop to score based Prop or something, I just got screwed over by them just finishing a 3hr 30mins block, I mind pretty much solidly for 2hrs 30ms of the block however my original estimate earnings for that period would have been 2.8BTC, and I received 0.18BTC for missing 1hr of the period ? sounds like they should be avoided.

Yeah, I'm not talking about PPS on deepbit, just using the straight prop. Not so much a 'feel' as a comparison to what I was pulling when I was mining just on Deepbit (prop) vs. the coins that are stagnating at eligius and ars. Ars won't pay until .50, eligius won't pay until .33 but Deepbit will pay out above .01

As long as those coins sit in an account at eligius or ars they are at risk (ban and keep) vs. pulling into my wallet where they are actually "mine". Before they are confirmed in my wallet, I can't count them as earned.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 07:33:59 PM
the SMPPS by arsbitcoin at 0% fee pays at a minimum 10% more than PPS from deepbit.

Not sure how you could work on 'feel' when in practice there is no chance deepbits PPS @ 10% fee will pay you more.

Regarding bitcoins.lc, I have a feeling they changed their Prop to score based Prop or something, I just got screwed over by them just finishing a 3hr 30mins block, I mind pretty much solidly for 2hrs 30ms of the block however my original estimate earnings for that period would have been 2.8BTC, and I received 0.18BTC for missing 1hr of the period ? sounds like they should be avoided.

Yeah, I'm not talking about PPS on deepbit, just using the straight prop. Not so much a 'feel' as a comparison to what I was pulling when I was mining just on Deepbit (prop) vs. the coins that are stagnating at eligius and ars. Ars won't pay until .50, eligius won't pay until .33 but Deepbit will pay out above .01

As long as those coins sit in an account at eligius or ars they are at risk (ban and keep) vs. pulling into my wallet where they are actually "mine". Before they are confirmed in my wallet, I can't count them as earned.

What makes you think deepbit wouldnt ban you faster for hopping than ars or eligius? Also, prop at deebit is 3% fee, SMPPS is non-variance 0% fee at arsbitcoin.

Not sure at what hashrate you are mining but if 1BTC min withdrawal at arsbitcoin is to much, then I assume you arnt hashing fast.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 20, 2011, 07:37:25 PM
if we could add coinotron.. some of us could mine namecoins now and then while the difficulty is so low making it more profitable than bitcoins.

not sure what to do with the lack of a pool api.. maybe add them as a backup?


why dont i just mine namecoins? well I know they are more profitable from mining bitcoins without hopping but not so sure about mining bitcoins with hopping.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 20, 2011, 07:43:42 PM
the SMPPS by arsbitcoin at 0% fee pays at a minimum 10% more than PPS from deepbit.

Not sure how you could work on 'feel' when in practice there is no chance deepbits PPS @ 10% fee will pay you more.

Regarding bitcoins.lc, I have a feeling they changed their Prop to score based Prop or something, I just got screwed over by them just finishing a 3hr 30mins block, I mind pretty much solidly for 2hrs 30ms of the block however my original estimate earnings for that period would have been 2.8BTC, and I received 0.18BTC for missing 1hr of the period ? sounds like they should be avoided.

Yeah, I'm not talking about PPS on deepbit, just using the straight prop. Not so much a 'feel' as a comparison to what I was pulling when I was mining just on Deepbit (prop) vs. the coins that are stagnating at eligius and ars. Ars won't pay until .50, eligius won't pay until .33 but Deepbit will pay out above .01

As long as those coins sit in an account at eligius or ars they are at risk (ban and keep) vs. pulling into my wallet where they are actually "mine". Before they are confirmed in my wallet, I can't count them as earned.

What makes you think deepbit wouldnt ban you faster for hopping than ars or eligius? Also, prop at deebit is 3% fee, SMPPS is non-variance 0% fee at arsbitcoin.

Not sure at what hashrate you are mining but if 1BTC min withdrawal at arsbitcoin is to much, then I assume you arnt hashing fast.


Min at Ars is 0.01 BTC.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 20, 2011, 07:48:29 PM
ah, you are right. I was looking at automatic payout minimum.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ed64 on July 20, 2011, 07:53:48 PM
Anyone still mine using multipool/multiclone or have you switched entirely to bitHopper?

I see multiclone uses slush/btcguild, not sure how or if they are backup pools. Otherwise, they primarily appear to mine at mtred/bitcoinpool.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 20, 2011, 07:55:50 PM
What makes you think deepbit wouldnt ban you faster for hopping than ars or eligius?

based on my understanding of how your pool delays stats i am not quite figuring out how they can do this.
are they assuming if a block is solved and they cannot figure out who did it via screen scraping or an api.. it
must be deepbit?

or do you possibly know something i do not?
There are some possible options, but usually they don't give 100% true resuts.
The fact that they don't show it for everyone is a bit suspicious, by the way.

All pool hashrate jumps and dips are visible to me, so if poolhopping will cause a considerable loss for my users, I'll take appropriate actions.

If it is just a backup, and it's just a user-set option it will not cause a considerable loss for his users. Tycho hasn't yet banned for hopping.

Also, prop at deebit is 3% fee, SMPPS is non-variance 0% fee at arsbitcoin.

Not sure at what hashrate you are mining but if 1BTC min withdrawal at arsbitcoin is to much, then I assume you arnt hashing fast.

I'm hashing 2.3-2.6Gh/s so it's not super fast, but it's not nothing.

EDIT:
I guess I want to compare a couple days with ARS as backup to DB as backup to see if the rapid payout rounds from DB make a difference.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 20, 2011, 08:03:48 PM
Quote
Anyone still mine using multipool/multiclon

I mess with it still.

flowers fork using multiclone as a backup site.

I dont like the randomness of payments.. i dont like the long pending. I dont like all my coins being controlled by some guy I dont really know.I dont like how when multipool went down people lost coin. I dont like not knowing how it works.. I do like everything being in once place, all payments come at once and the easy to check website.

I'll probably add it back as a backup when this hoppers development slows down... not sure if it is a great idea, cause if we are going to our backup... as multiclone.. multiclone should be mining on it;s backup.. or at least some site we havent added yet.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: msb8r on July 20, 2011, 08:14:50 PM
Successfully added a NMC pool as backup
I chose bitparking as no signup is needed. Just start mining. Pay-outs can only happen to the address used as username.

pool.py
Code:
'bitparking':{'shares':difficulty*.41, 'name':'BitParking',
    'mine_address':'bitparking.com:9098', 'user':nmc_user,
    'pass':nmc_pass, 'lag':False, 'LP':None,
    'role':'backup'},

password.py
Code:
#BitParking - NMC
nmc_user='N65kZkGc4PcHVxfDBSJD43GDytHcWfn8L6'
nmc_pass='x'

Tested on c00w's branch - commit: 438b270 (old, I know, but it's working for me)

Adding share info isn't particularly useful, imo, considering difficulty is in the 23K area.
For pulling html user/pool stats http://bitparking.com/user/<nmc_user> can be used.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 20, 2011, 08:24:00 PM
1) bitcoins.lc?
They are competely broken and messing with us. Thats why it is disabled. You can do some fancy integral estimation, or use ryou's fork but its still not that geat.

The json api is set to lie through its teeth. So don't use it.

2) Crashes with api_address?
Hmmm. Obviously I don't get it or It would be fixed. Do you have any nonstandard pools enabled?
And I'll add in something which autofills them and might fix your problem.
Hmm.
I really like the log though.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 08:28:32 PM
1) bitcoins.lc?
They are competely broken and messing with us. Thats why it is disabled. You can do some fancy integral estimation, or use ryou's fork but its still not that geat.

The json api is set to lie through its teeth. So don't use it.

I had no problem with stats.json (atleast for the last rounds I mined at bitcoins.lc) however, I stopped briefly as mentioned earlier and they totally raped me for a bunch of my shares.

Wont touch them again soon.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 20, 2011, 08:50:10 PM
if we could add coinotron.. some of us could mine namecoins now and then while the difficulty is so low making it more profitable than bitcoins.

not sure what to do with the lack of a pool api.. maybe add them as a backup?


why dont i just mine namecoins? well I know they are more profitable from mining bitcoins without hopping but not so sure about mining bitcoins with hopping.

I also am for adding namecoins to bithopper. It seems they are more profitable right now than BTC.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 20, 2011, 09:23:47 PM
latest mod :
added deepbit with fixed round share value (difficulty * 0.431) and penalty 3
added BitParking ('role':'removefromlist' as default)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 20, 2011, 09:48:26 PM
https://poolmunity.com/api.php


these guys let you do namecoin or bitcoin too

the second line is namecoin.. so I think we can hop these guys with namecoins and use bitparking as backup..we only have 5-8 days  of NMC profitability.



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 09:59:37 PM
https://poolmunity.com/api.php


these guys let you do namecoin or bitcoin too

the second line is namecoin.. so I think we can hop these guys with namecoins and use bitparking as backup..we only have 5-8 days  of NMC profitability.



more like 1-2days, the nmc/btc price is dropping fast.

If any nmc/btc combined pool is added I would have to suggest coinotron.com aswell, very sleek account management.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 20, 2011, 10:23:42 PM
Quote
more like 1-2days, the nmc/btc price is dropping fast

I plan to hold onto them for a little while.. right now all the temp namecoiners are mining and converting as fast as they can, when the diff goes back up, they will all go back to mining BTC and not selling NMC and the price should creep up a bit again


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 10:27:00 PM
Quote
more like 1-2days, the nmc/btc price is dropping fast

I plan to hold onto them for a little while.. right now all the temp namecoiners are mining and converting as fast as they can, when the diff goes back up, they will all go back to mining BTC and not selling NMC and the price should creep up a bit again

Small problem tho, namecoin price drop followed suit with bitcoin price drop.

You would need to hold on for atleast a month or two in hopes of recovering at higher price, just look at where we are with bitcoin price.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 20, 2011, 11:19:44 PM
I think bitcoins.lc is delaying stats by an hour now.  They solved their last block at 6PM EST exactly and ryouiki fork with fixed user agent switched exactly at 7PM EST and started to mine.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 11:27:43 PM
I think bitcoins.lc is delaying stats by an hour now.  They solved their last block at 6PM EST exactly and ryouiki fork with fixed user agent switched exactly at 7PM EST and started to mine.

Havnt mined there since i figured out they kill share value of people not staying the whole duration of block. Dont think they even publish this, but I can confirm it happening on the most recent 2 blocks.

EDIT: I removed my own stupid statement refering to the wrong pool comment in this thread. However, my results in recent blocks still shows something being adjusted for early leavers within a block.

This comes down to, dont go there if you poolhop.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 20, 2011, 11:30:34 PM
Eclipse:
That was bitp.it... Not bitcoins.lc.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 20, 2011, 11:40:43 PM
What do you think about this ...

http://img148.imageshack.us/img148/1235/pantallazoyf.jpg (http://imageshack.us/photo/my-images/148/pantallazoyf.jpg/)


If they detect strange activity on my account they can do this ?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 20, 2011, 11:46:27 PM
I think its the worst designed bitcoin pool site in existence and probably just an error.  Post in their thread and I am sure they will fix it.

BTW, I think I may have a way to add deepbit as a pool.  Gotta wait an hour and see if what I am noticing is accurate.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 20, 2011, 11:47:21 PM
I think its the worst designed bitcoin pool site in existence and probably just an error.  Post in their thread and I am sure they will fix it.

BTW, I think I may have a way to add deepbit as a pool.  Gotta wait an hour and see if what I am noticing is accurate.

Ryo's fork allready have deepbit support unless you figured out something more accurate involving prop and not PPS.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 20, 2011, 11:51:30 PM
He's talking about deepbit hopping support. Not deepbit backup support.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 20, 2011, 11:57:13 PM
He's talking about deepbit hopping support. Not deepbit backup support.

Yep, I'll be able to tell within an hour, but its looking real good so far.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 21, 2011, 12:06:05 AM
Well if you figure something out and are willing to tell the public we are grateful and I think there is a reward for you at hoppersden.info


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 21, 2011, 12:08:20 AM
Well if you figure something out and are willing to tell the public we are grateful and I think there is a reward for you at hoppersden.info

Just PMed you what I was noticing.  Don't know if it will turn out to be something useful at all.  Also just noticed that I made a mistake in the PM that I sent you, but I don't think it would matter in the scheme of things if it pans out.

May not have anything to do with deepbit though now that I think about it.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 21, 2011, 12:11:17 AM
Yeah I just replied a second time saying that I thought it wasn't what you thought it was.

Aren't we cryptic.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 21, 2011, 12:12:56 AM
Yeah I just replied a second time saying that I thought it wasn't what you thought it was.

Aren't we cryptic.

Haha.  Yea.  I figured it out about 3 seconds after I sent you the PM that what I was noticing was absolutely useless.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Keninishna on July 21, 2011, 12:13:52 AM
But did you know he knew what he thought you knew?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 21, 2011, 12:25:37 AM
Well the PM's were pretty clear.

On a different note flowers stuff with regards to the website is finally merged over.

View it at localhost:8337/stats


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 21, 2011, 01:24:46 AM
sweet


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 21, 2011, 01:58:50 AM
So anyone else make like nothing today?  I'll be lucky to hit 50% of what my normal daily value is.  All of the pools are being ridiculously unlucky.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 21, 2011, 02:02:09 AM
So anyone else make like nothing today?  I'll be lucky to hit 50% of what my normal daily value is.  All of the pools are being ridiculously unlucky.

Yep, getting close to nothing today. Wouldnt have been much better even directly mining at a pool. Weirdness.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 21, 2011, 02:17:22 AM
Why didn't you guys just change your algorithm? We could have added you as a backup pool.

We are changing our algorithm, we're moving to ESMPPS. http://forum.bitcoin.org/index.php?topic=12181.msg378328#msg378328


We'd love you guys to call us home once we make the switch.  :)

So, I'll just go ahead and say: no thanks...?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 21, 2011, 02:26:12 AM
Why not? ESMPPS seems as good a backup as eligius or arsbitcoin. And while they've been doing their changeover, all they did was make shares and hashrate zero.

It caught us out, but they didn't do it to screw us - unlike bclc who constantly change their around with their total shares in order to mess around with bitHopper.

They've committed to a fair-share scoring method, and that's what this is all about. When there are no more prop pools and 'hopping is no more, they'll definitely be one of the pools I mine at.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 21, 2011, 02:29:40 AM
Yes, bitp.it fakes stats.

BTW: anyone has an idea why I only mine at nofee until the next check and then fall back to the backuppool? They are significantly under the 40% and everytime i restart my bithopper it immediately begins mining there...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 21, 2011, 02:39:11 AM
Yes, bitp.it fakes stats.

BTW: anyone has an idea why I only mine at nofee until the next check and then fall back to the backuppool? They are significantly under the 40% and everytime i restart my bithopper it immediately begins mining there...

Yes, as I mentioned above bitpit are faking their stats to zero hashrate and zero total shares. So you just don't go there until the scoring is changed. All bitpit did was stop hoppers to buy time until they could get a new scoring system in place. It wasn't an active attack, all they've tried to do is defend until their new scoring is up.

bclc on the other hand are taking their stats off, then back on to get hoppers there, and then more recently has started cycling seemingly random rates between 7000 and  90000 total shares on their json feed - but not if you view the json feed by browser. So they're actually targeting any proxy that is using bclc,  and are trying to trap 'hoppers there for full rounds. There are work-arounds, but it's still an active attack, so no, I won't be going to bclc when 'hopping is done.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 21, 2011, 03:25:53 AM
Yes, bitp.it fakes stats.

BTW: anyone has an idea why I only mine at nofee until the next check and then fall back to the backuppool? They are significantly under the 40% and everytime i restart my bithopper it immediately begins mining there...

Yes, as I mentioned above bitpit are faking their stats to zero hashrate and zero total shares. So you just don't go there until the scoring is changed. All bitpit did was stop hoppers to buy time until they could get a new scoring system in place. It wasn't an active attack, all they've tried to do is defend until their new scoring is up.

bclc on the other hand are taking their stats off, then back on to get hoppers there, and then more recently has started cycling seemingly random rates between 7000 and  90000 total shares on their json feed - but not if you view the json feed by browser. So they're actually targeting any proxy that is using bclc,  and are trying to trap 'hoppers there for full rounds. There are work-arounds, but it's still an active attack, so no, I won't be going to bclc when 'hopping is done.

Yes, I read the thread. Still, imo the sensible thing to do would have been keeping the stats as they were until the new system was in place. They broke functionality for everybody and effectively trapped hoppers as well.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 21, 2011, 03:40:26 AM
Yes, bitp.it fakes stats.

BTW: anyone has an idea why I only mine at nofee until the next check and then fall back to the backuppool? They are significantly under the 40% and everytime i restart my bithopper it immediately begins mining there...

Yes, as I mentioned above bitpit are faking their stats to zero hashrate and zero total shares. So you just don't go there until the scoring is changed. All bitpit did was stop hoppers to buy time until they could get a new scoring system in place. It wasn't an active attack, all they've tried to do is defend until their new scoring is up.

bclc on the other hand are taking their stats off, then back on to get hoppers there, and then more recently has started cycling seemingly random rates between 7000 and  90000 total shares on their json feed - but not if you view the json feed by browser. So they're actually targeting any proxy that is using bclc,  and are trying to trap 'hoppers there for full rounds. There are work-arounds, but it's still an active attack, so no, I won't be going to bclc when 'hopping is done.

Yes, I read the thread. Still, imo the sensible thing to do would have been keeping the stats as they were until the new system was in place. They broke functionality for everybody and effectively trapped hoppers as well.

So did btcg and they have no plans to go prop as far as I know (could be wrong). All I'm saying is that when hopping is no longer profitable, I'll be moving to pools that are proactive to protect their full time miners without trying to damage hoppers intentionally. I will not be moving to a pool that spends an awful lot of time and energy playing a game of fakery and making no plans to do anything that will be of actual benefit to their miners.

Pools I'd consider moving to afterward, based on how they acted during the 'Hopping era", how they treat their miners or how much they rely on security by obscurity alone:

I'd move to -
Bitp.it
Eclipse MC
Mineco.in

I would not move to -
BitcoinPool
BTCGuild
Bitcoins-lc
Deepbit


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 21, 2011, 03:56:03 AM
since we are talking payout methods.. [here is a visualization f the various methods (http://eligius.st/~luke-jr/samples/800MH/)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: frisco on July 21, 2011, 10:25:26 AM
My last error was becouse I tried to change ars role to info, but it seems that even I read somewhere it was supported, it only worked with disabled (they have closed new registrations so I can not create an account) your change fixed the exception but the error was shown, just changed to 'disabled' and disappeared.

Now I am having 'no route to host' errors, I know eligius is not the best pool in connectivity terms, but also x8s.de is having the same problems, and just seconds after sending/receiving data from them, and there is almost no time for a connection timeout.

Quote
2011-07-21 05:12:58-0500 [HTTPChannel,147,87.217.120.122] RPC request [] submitted to btc.x8s.de
2011-07-21 05:12:58-0500 [-] Caught, jsonrpc_call insides
2011-07-21 05:12:58-0500 [-] An error occurred while connecting: 113: No route to host.
2011-07-21 05:12:58-0500 [-] Server change to mtred, telling client with LP

Debug logs: http://pastebin.com/TXJiHL0j (not full, but there is nothing else around that seems to be related)

After some time the pools are recovered, but it happens too frequently.

Code is latest from CooW github.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 21, 2011, 10:33:17 AM
Well if you figure something out and are willing to tell the public we are grateful and I think there is a reward for you at hoppersden.info
I tried to sign up there to give a few better ideas about some stuff I've already been writing about.... but it seems I need an invitation code. ???


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: GoMaD on July 21, 2011, 10:41:25 AM
I tried to sign up there to give a few better ideas about some stuff I've already been writing about.... but it seems I need an invitation code. ???

+

It would be great if someone could send me an invite too.

Thanks



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 21, 2011, 02:02:50 PM
I just switched from eligius to s8x at 1.4 mio. shares...?

Code:
[15:57:42] RPC request [] submitted to eligius
[15:57:44] RPC request [0acbb000] submitted to eligius
[15:57:44] RPC request [530ba000] submitted to eligius
[15:57:45] RPC request [] submitted to eligius
[15:57:46] RPC request [ae224000] submitted to eligius
[15:57:48] x8s: 1,383,532
[15:57:49] triple: 2,174,417
Caught, jsonrpc_call insides
User timeout caused connection failure.
[15:57:52] RPC request [8cfa0000] submitted to eligius
[15:57:54] RPC request [] submitted to eligius
[15:57:57] RPC request [e8d05000] submitted to eligius
[15:57:57] RPC request [] submitted to eligius
Caught, jsonrpc_call insides
[<twisted.python.failure.Failure <class 'twisted.internet.error.ConnectionLost'>>]
Caught, jsonrpc_call insides
[<twisted.python.failure.Failure <class 'twisted.internet.error.ConnectionLost'>>]
[15:57:58] Server change to x8s, telling client with LP
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.
[15:57:58] LP Call pit.x8s.de:8337/LP
[15:57:58] LP triggered serving miner
[15:57:58] LP triggered serving miner
[15:57:58] LP triggered serving miner
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.
[Failure instance: Traceback (failure with no frames): <class '_newclient.ResponseFailed'>: [<twisted.python.failure.Failure <class 'twisted.interne
t.error.ConnectionDone'>>]
]
[15:57:58] LP triggered from server x8s
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.
Caught, jsonrpc_call insides
Connection was refused by other side: 111: Connection refused.
[15:58:00] LP triggered from server x8s
[15:58:00] Reading LP Response failed
[15:58:03] RPC request [eb15d000] submitted to btc.x8s.de
[15:58:06] RPC request [] submitted to btc.x8s.de
[15:58:06] RPC request [] submitted to btc.x8s.de
[15:58:09] rfc: 2,501,435
[15:58:09] RPC request [] submitted to btc.x8s.de
[15:58:09] RPC request [cef1c000] submitted to btc.x8s.de
[15:58:09] RPC request [] submitted to btc.x8s.de
[15:58:11] nofeemining: 1,863,470
[15:58:18] RPC request [] submitted to btc.x8s.de
[15:58:18] RPC request [4fcd9000] submitted to btc.x8s.de
[15:58:21] RPC request [] submitted to btc.x8s.de
[15:58:22] RPC request [d2ae5000] submitted to btc.x8s.de
[15:58:23] RPC request [6d233000] submitted to btc.x8s.de
[15:58:27] x8s: 1,384,414
[15:58:29] triple: 2,174,945
[15:58:30] RPC request [] submitted to btc.x8s.de
[15:58:31] RPC request [782a9000] submitted to btc.x8s.de
[15:58:33] RPC request [8c1de000] submitted to btc.x8s.de
[15:58:33] RPC request [] submitted to btc.x8s.de
[15:58:34] RPC request [b90f9000] submitted to btc.x8s.de
[15:58:42] RPC request [] submitted to btc.x8s.de
[15:58:44] RPC request [9f1e5000] submitted to btc.x8s.de
[15:58:45] RPC request [] submitted to btc.x8s.de

This is the newest version, fresh from git.

Edit: only stayed for ~2 minutes.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 21, 2011, 02:32:16 PM
Hoppersden is rather new.. well as all this stuff is.

Myself (http://forum.bitcoin.org/index.php?action=profile;u=15619) seems to have started the site.

There are a couple of small bugs that are getting worked out. You can PM me with an email and I'll send an invite, but you might actually have better luck getting on with Myself. Either way I dont mind sending invites.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 21, 2011, 02:58:24 PM
I am getting
Quote
<type 'exceptions.IOError'>: [Errno 2] No such file or directory: 'index.html'
as well, because I am not starting bithopper inside it's directory.

To fix this, inside bitHopper.py, replace this:

Code:
                file = open('index.html', 'r')

with this:

Code:
                dirname = os.path.dirname(os.path.abspath(__file__))
                filename = os.path.join(dirname, 'index.html')
                file = open(filename, 'r')

and add

Code:
import os.path

on the top.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 21, 2011, 03:59:05 PM
Hoppersden is rather new.. well as all this stuff is.

Myself (http://forum.bitcoin.org/index.php?action=profile;u=15619) seems to have started the site.

There are a couple of small bugs that are getting worked out. You can PM me with an email and I'll send an invite, but you might actually have better luck getting on with Myself. Either way I dont mind sending invites.

You can PM me for invites as well.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 21, 2011, 04:02:07 PM
Quote
You can PM me for invites as well.


lol yes please do.. didnt expect the volume


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 21, 2011, 04:32:17 PM
1)Issues with ars role change...?
Um ars is a backup pool. So you can disable it but if you try and poolhop it well, it won't work, neither will info.

2) switching from eligius to x8s?
Well both your backup pools lagged out. So it switched to the pool with the lowest number of shares which wasn't lagged out. Once the backup pools came back up then it switched back. That is how it is supposed to work.

3) issues serving index.html and running from the wrong directory?
Yeah. Thats an issue. I'll fix it.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 21, 2011, 05:19:06 PM
Hi c00w

The webgui seems to have the full mhash rate obfiscated and only shows the first 3 numbers ie. hashrate would show 5010MHash but it shows 501MHash

Nothing serious, just nice to have everything pretty ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 21, 2011, 05:23:16 PM
1)clipse?
Are you using the latest build? It was off by a factor of ten because I made a math mistake. If you are then I need to look at the javascript again...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 21, 2011, 05:34:00 PM
1)clipse?
Are you using the latest build? It was off by a factor of ten because I made a math mistake. If you are then I need to look at the javascript again...

Yep, version just before you updated index.html for location.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 21, 2011, 06:46:31 PM
I ran out of invites for hoppersden.. sorry will try to get more


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 21, 2011, 06:51:28 PM
1) clipse?
I added the rate display to the flat version. can you confirm that the flat version shows rate as 5010 while the dynamic shows rate at 501?
Flat: localhost:8337/flat


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dikidera on July 21, 2011, 07:48:15 PM
1) clipse?
I added the rate display to the flat version. can you confirm that the flat version shows rate as 5010 while the dynamic shows rate at 501?
Flat: localhost:8337/flat
This hopping proxy needs A LOT OF WORK. It currently forces you to use EVERY pool specified in the password.py file. AND I DONT WANT THAT.

It doesnt support neither slush nor deepbit...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 21, 2011, 07:54:45 PM
1) clipse?
I added the rate display to the flat version. can you confirm that the flat version shows rate as 5010 while the dynamic shows rate at 501?
Flat: localhost:8337/flat
This hopping proxy needs A LOT OF WORK. It currently forces you to use EVERY pool specified in the password.py file. AND I DONT WANT THAT.

It doesnt support neither slush nor deepbit...

you might want to read the thread or the files on github a little before spouting off that it needs A LOT OF WORK. you are a) wrong and b) uninformed

if you DONT WANT THAT, then build your own.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dikidera on July 21, 2011, 07:58:52 PM
1) clipse?
I added the rate display to the flat version. can you confirm that the flat version shows rate as 5010 while the dynamic shows rate at 501?
Flat: localhost:8337/flat
This hopping proxy needs A LOT OF WORK. It currently forces you to use EVERY pool specified in the password.py file. AND I DONT WANT THAT.

It doesnt support neither slush nor deepbit...

you might want to read the thread or the files on github a little before spouting off that it needs A LOT OF WORK. you are a) wrong and b) uninformed

if you DONT WANT THAT, then build your own.
The only file on github is a README which says

Quote
Copy password.py.default to a new file called password.py then modify the new
file to include your bitcoin addresses, and pool passwords, instead of mine.

I never said i wanted to use every damn pool there is in that file. If i remove all the lines, the script dies..


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 21, 2011, 08:00:14 PM
1) It forces you to use all of the pools in password.py?
No. It forces you to use the pools which are turned on by default. If you turn pools on with localhost:8337/stats by changing role to info or mine then those passwords and api keys are also used.

If you don't set a password or set an incorrect one it won't mine at that pool. Or you can turn it off by setting its role to disable at localhost:8337/stats

2) Oh and web control is in although I'm not certain if the API stuff is working correctly if you switch a pool from disable to mine.

EDIT:3) Slush and Deepbit?
well we have no way to hop them currently. And they don't have a good algorithm to be used as a backup pool. Actually I should look into slush more. I just skipped him b/c well more important things.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 21, 2011, 08:01:19 PM
1) clipse?
I added the rate display to the flat version. can you confirm that the flat version shows rate as 5010 while the dynamic shows rate at 501?
Flat: localhost:8337/flat
This hopping proxy needs A LOT OF WORK. It currently forces you to use EVERY pool specified in the password.py file. AND I DONT WANT THAT.

It doesnt support neither slush nor deepbit...

you might want to read the thread or the files on github a little before spouting off that it needs A LOT OF WORK. you are a) wrong and b) uninformed

if you DONT WANT THAT, then build your own.
The only file on github is a README which says

Quote
Copy password.py.default to a new file called password.py then modify the new
file to include your bitcoin addresses, and pool passwords, instead of mine.

I never said i wanted to use every damn pool there is in that file. If i remove all the lines, the script dies..

Ah I get it, you didnt bother following this thread nor bothered getting to understand how to modify the pool.py / password.py files (which is dead easy) but found it alot more suitable to spout of at a opensource piece of software that is working great.

You should definitely just stick to not-pool-hopping with the amount of work you feel like putting in.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 21, 2011, 08:06:43 PM
Quote
This hopping proxy needs A LOT OF WORK. It currently forces you to use EVERY pool specified in the password.py file. AND I DONT WANT THAT.

you are smack dab in middle of an alpha development that is given freely to you.

I'm not sure how to make that more clear.

the Hopper does need work, it is being worked on as we speak.  You dont walk up to someone with a half finished sand castle and scream "IT NEEDS WORK"

and really not sure what you are doing mining bitcoins at all.. unless you came in the past month or so, it all took work just to get it to work.

and you do realise that more sites = more luck = better pay?

it is easy as hell to disable the sites, the people here are normally friendly as hell and put up with some noob asss shit all the time to help people. But fuck if anyone should put up with you. That is 1000% the wrong attitude and the wrong way to ask for help.

You do realize how much effort is going into making the hopper? and you couldnt even make the effort to read the read me. I have to assume you are a troll cause there really arent that many people that stupid left on the net.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dikidera on July 21, 2011, 08:12:41 PM
Quote
This hopping proxy needs A LOT OF WORK. It currently forces you to use EVERY pool specified in the password.py file. AND I DONT WANT THAT.

you are smack dab in middle of an alpha development that is given freely to you.

I'm not sure how to make that more clear.

the Hopper does need work, it is being worked on as we speak.  You dont walk up to someone with a half finished sand castle and scream "IT NEEDS WORK"

and really not sure what you are doing mining bitcoins at all.. unless you came in the past month or so, it all took work just to get it to work.

and you do realise that more sites = more luck = better pay?

it is easy as hell to disable the sites, the people here are normally friendly as hell and put up with some noob asss shit all the time to help people. But fuck if anyone should put up with you. That is 1000% the wrong attitude and the wrong way to ask for help.

You do realize how much effort is going into making the hopper? and you couldnt even make the effort to read the read me. I have to assume you are a troll cause there really arent that many people that stupid left on the net.

One rule: Never, ever, ever make me angry, which you are doing right now.

As for the readme, i read it...not much of an explanation there.

Also, it seems it's NOT using btcguild.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 21, 2011, 08:14:03 PM
I have to assume you are a troll cause there really arent that many people that stupid left on the net.


Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

-Rick Cook, The Wizardry Compiled


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 21, 2011, 08:15:05 PM
1) RAWR?
Can we all calm down? Like seriously.

2) btcguild?
Yeah, I fixed that in the latest version of password.py.default. My bad.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dikidera on July 21, 2011, 08:22:50 PM
1) RAWR?
Can we all calm down? Like seriously.

2) btcguild?
Yeah, I fixed that in the latest version of password.py.default. My bad.
Btcguild get's skipped and only eligius works.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 21, 2011, 08:27:33 PM
Yeah. Thats by design. btcguild lies through its api.

Eligius and arsbitcoin have fair algorithms so we use them as a backup when there is nothing to hop.

By default it hops:
mtred
rfcpool
x8s
triplemining
ozco
nofeemining

The others currently have bizarre payment algorithms or no reliable way to get share counts from.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dikidera on July 21, 2011, 08:30:17 PM
Yeah. Thats by design. btcguild lies through its api.

Eligius and arsbitcoin have fair algorithms so we use them as a backup when there is nothing to hop.

By default it hops:
mtred
rfcpool
x8s
triplemining
ozco
nofeemining

The others currently have bizarre payment algorithms or no reliable way to get share counts from.
So basically, btcguild doesnt work?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: callmeivan on July 21, 2011, 08:34:18 PM
Yeah. Thats by design. btcguild lies through its api.

Eligius and arsbitcoin have fair algorithms so we use them as a backup when there is nothing to hop.

By default it hops:
mtred
rfcpool
x8s
triplemining
ozco
nofeemining

The others currently have bizarre payment algorithms or no reliable way to get share counts from.
So basically, btcguild doesnt work?

What happens when we make you angry?  :D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 21, 2011, 08:35:58 PM
dunno if it's me but it seems the outback pool just disabled some stuff one their side... hmmm


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 21, 2011, 08:39:12 PM
1) btcguild doesn't work?
Well. Hmmm. Thats a tough question. You can turn it on and mine it. But you won't make money hopping it. So sort of?

If you switch it to backup it works quite well. Except you may be getting poolhopped due to the algorithm they use for scoring. So.... Don't turn it on?

2) ozco?
Yeah my code just api_disabled it. I think they lost a link which updated their stats. It doesn't look malicious since they stopped at 2.3 mill.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 21, 2011, 08:50:50 PM
pools also change systems constantly.. many pool operators  are following this thread, reacting to our changes to the hopper. Some that worked last week, dont work today. You really really really have to stay on top of this thread daily to make hopping work well for you. AND I MEAN READ EVERY DAMN COMMENT. because one day a pool operator will start to send our false stats and you will be stuck mining there and want to know why. If you want something brain dead easy, go mine multiclone,, it is a hopper that is perfect for you.



 sorry to make you angry but you just came into our house and pissed in our cheerios and then you dare get upset when we tell you to chill the fuck out.

If you want to argue about it more, lets take it to PM, as you can see this thread is already big enough with out this crap in it.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 21, 2011, 09:07:01 PM
One rule: Never, ever, ever make me angry, which you are doing right now.

OMG what a loser.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 21, 2011, 09:07:45 PM
One rule: Never, ever, ever make me angry, which you are doing right now.

As for the readme, i read it...not much of an explanation there.

Also, it seems it's NOT using btcguild.

LMAO can you be any more immature even if you tried ?

This thread went nicely without fat trolls like yourself (I used the fat word, are you going to eat me now?)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 21, 2011, 09:43:48 PM
hey dikidera you just got reported to admin, watch your mouth when you go out in public. That goes to you too clipse


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dikidera on July 21, 2011, 09:47:08 PM
hey dikidera you just got reported to admin, watch your mouth when you go out in public. That goes to you too clipse
So? And two, it's not me that should watch it, but you.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 21, 2011, 09:51:42 PM
hey dikidera you just got reported to admin, watch your mouth when you go out in public. That goes to you too clipse
So? And two, it's not me that should watch it, but you.

chill down would you, don't be aggressive without reason. You came here asking for help in a rude way and making ppl feel uncomfortable. If you continue like this an admin would take actions

edit: I assure you i'd prefer helping ppl not reporting them


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 21, 2011, 09:55:34 PM
hey dikidera you just got reported to admin, watch your mouth when you go out in public. That goes to you too clipse

I called him on what he is, a kid and a fat troll which are all within technical internet references.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 21, 2011, 09:57:56 PM
hey dikidera you just got reported to admin, watch your mouth when you go out in public. That goes to you too clipse

I called him on what he is, a kid and a fat troll which are all within technical internet references.

yeah but you don't solve nothing if you provoke, ignore him and in the end he will take some of his precious time to read the thread if he wants


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 21, 2011, 10:04:42 PM
Got a PM:

Calling me a loser means insta-death. And i think my post was pretty straightforward.

Lol.  Wonder if his parents know he is mining on their computer instead of doing his homework?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 21, 2011, 10:06:31 PM
... It currently forces you to use EVERY pool specified in the password.py file. AND I DONT WANT THAT.

it work like this, if you have skills with python you're welcome to give a hand to the project

It doesnt support neither slush nor deepbit...


No need to support it, slush has it's score system and deepbit delays stats and has PPS if you want to mine with them


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dikidera on July 21, 2011, 10:08:05 PM
Got a PM:

Calling me a loser means insta-death. And i think my post was pretty straightforward.

Lol.  Wonder if his parents know he is mining on their computer instead of doing his homework?
It's not like i was hiding the PM. I just want you to learn, you don't ever fuck with diki. It's the other way around ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 21, 2011, 10:10:19 PM
Got a PM:

Calling me a loser means insta-death. And i think my post was pretty straightforward.

Lol.  Wonder if his parents know he is mining on their computer instead of doing his homework?
It's not like i was hiding the PM. I just want you to learn, you don't ever fuck with diki. It's the other way around ;)

we share info like all the other ppl on this forum, share some of your experience if you like


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 21, 2011, 10:12:25 PM
40 pages to get a troll... well, let's kill the suspense:

you are all just like Hitler... a bunch of nazis!

Godwin's law satisfied, now back to hopping.

One last observation, @1bitc0inplz, I don't know if it was faking stats to hoppers or what, but your luck seems like it's taken a hit.

Shame too. I like the minimalist feel of your site.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 21, 2011, 10:14:37 PM
One last observation, @1bitc0inplz, I don't know if it was faking stats to hoppers or what, but your luck seems like it's taken a hit.

Shame too. I like the minimalist feel of your site.

Yea, I brought up that point in their thread starting here:

http://forum.bitcoin.org/index.php?topic=12181.msg381404#msg381404



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 21, 2011, 10:25:15 PM
One last observation, @1bitc0inplz, I don't know if it was faking stats to hoppers or what, but your luck seems like it's taken a hit.

Shame too. I like the minimalist feel of your site.

Yea, I brought up that point in their thread starting here:

http://forum.bitcoin.org/index.php?topic=12181.msg381404#msg381404



from what I understand is they're getting less per share because of hoppers and find more blocks too which in the long run = better payouts


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 21, 2011, 10:39:02 PM
One last observation, @1bitc0inplz, I don't know if it was faking stats to hoppers or what, but your luck seems like it's taken a hit.

Shame too. I like the minimalist feel of your site.

Yea, I brought up that point in their thread starting here:

http://forum.bitcoin.org/index.php?topic=12181.msg381404#msg381404



from what I understand is they're getting less per share because of hoppers and find more blocks too which in the long run = better payouts

meanwhile, hop friendly mtred is ON FIRE with a 49 minute round followed by a 4 hour round!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 21, 2011, 10:42:23 PM
from what I understand is they're getting less per share because of hoppers and find more blocks too which in the long run = better payouts

From what little I observed of hopping, that seems to be the case.  It may just be one massive coincidence that ever since bitp.it took measures against hopping that they had a 90 hour round, but I don't believe in coincidences like that.  The guy who runs bitp.it said that with hopping happening, his regular users were getting payments of 75% of normal.

75% payout on 9 blocks in 143 hours seems to be better than 100% payout on 1 block in 90 hours and counting to me.  IDK.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 21, 2011, 10:48:11 PM
from what I understand is they're getting less per share because of hoppers and find more blocks too which in the long run = better payouts

From what little I observed of hopping, that seems to be the case.  It may just be one massive coincidence that ever since bitp.it took measures against hopping that they had a 90 hour round, but I don't believe in coincidences like that.  The guy who runs bitp.it said that with hopping happening, his regular users were getting payments of 75% of normal.

75% payout on 9 blocks in 143 hours seems to be better than 100% payout on 1 block in 90 hours and counting to me.  IDK.


haha you're right, dunno if they will accept making a test for 5 days with hopper boost after they find this block, it's a long shot I know just to see if it is only pure luck (edit: in the name of pc science :) )


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 21, 2011, 10:49:24 PM
@Dikidera, everyone on a forum gets pounded on every now and the -  if you're as 4-channy as you seem you know that. We've all posted things on the spur of the moment we're not proud of, and we've all has people annoy us and there is always the temptation to keep the flame burning. But there is never an excuse for using all caps. So let's just pretend page 39 edit 39 and 40 didn't happen and start again.

I'm sure you could spend time 4-channing us, but this is a really good proxy once you understand how it works and why.

1. Pool hopping currently works well only on proportional pools and only when you have access to non-delayed total shares. Neither btcguild or deepbit provide usable total share stats.
2. bitHopper provides a user stats page you can access on your browser on 127.0.0.1 which shows efficiency. You'll be able to see it work and see how far ahead you are by using it.
3. Since I've been using bitHopper I've had 140% to 200% efficiency on pools we use, for a total of 160%. Multipool's efficiency is around 120%.
4. Challenges coming up: loss of usable pools stats.

If you do have real coding skills (which is what I assume you're referring to when you recommend we don't anger you, and not that you've had an accident with a radioactive substance and go green and ragey when you get cranky) then help the project! We could do with someone helping with html scraping.



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 21, 2011, 11:08:55 PM
yep, just like I said before, ozco.in took measures against the kangaroos... 

@c00w pls add polmine.pl and bitparking when you can, I just lack the python knowledge to do it from the ryouiki's fork . thanks


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: rampone on July 21, 2011, 11:15:17 PM
*cough*cough*hoppersden invite thru PM*someone PLZ with cheez*cough cough*mtred rox*bitcoins.lc WTF they didnt kick me, but shares up and down*btcguild told me 3 weeks ago: no, i will not do something against hoppers (arrrr, we got you in the end)*eclipsemc: got some free shares as i thought thought still pp*hahaha*multipool is nice, but a mess*bithopper rox but needs more "simultaneous" connections (possible?) to slow for my farm sometimes*me probably the only one in the Interwebs running multipool after bithopper ;)

Hello everyone, I like dem pirates and publicly announce my piracy ;) My goods been stolen too long. i had to drink a lotta rum to become... ahopper :)

tl:dr??!!! gimme invite to hoppersden?!, ARRRRR!

No kangaroos in .au anymore?

 ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 21, 2011, 11:31:18 PM
from what I understand is they're getting less per share because of hoppers and find more blocks too which in the long run = better payouts

From what little I observed of hopping, that seems to be the case.  It may just be one massive coincidence that ever since bitp.it took measures against hopping that they had a 90 hour round, but I don't believe in coincidences like that.  The guy who runs bitp.it said that with hopping happening, his regular users were getting payments of 75% of normal.

75% payout on 9 blocks in 143 hours seems to be better than 100% payout on 1 block in 90 hours and counting to me.  IDK.


haha you're right, dunno if they will accept making a test for 5 days with hopper boost after they find this block, it's a long shot I know just to see if it is only pure luck (edit: in the name of pc science :) )

@muyoso: Look, I understand why it looks like pools do better with hoppers, but if this current block on bitpit is looooong because they've lost a hashboost because of no hoppers then each share is with more and the full time miners still come out ahead. The limiting case is solo mining, and in a proportional pool you get a proportion of the 50 coins.

As long as the block is solved near <difficulty> total shares, the full time miners come out ahead.

If the block is taking forever because total shares are way past <difficulty>, then full time miners are losing out - but this is simple Poisson variance and in no way can be affected by when miners start or leave. You're right - in this game there are no coincidences. But there are regularly very long blocks and with only 6 pools to choose from long blocks will happen to at least one of them. It has a high enough probability that it is not a coincidence.

Can we call this closed now? Hoppers can only benefit pools, not full time miners.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 21, 2011, 11:33:50 PM
Anyone else notice the total shares last night on Mt Red changing to 10000000 for a hour or so? Looks like they're getting ready to fake stats without trapping hoppers.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 21, 2011, 11:50:30 PM
1) 10^10 shares means there api was down....
Not faking shares. I should probably have a flag for that but well.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 21, 2011, 11:54:20 PM
I am wondering if its possible to code so that if you are mining at a pool that is say 500Ghash/s total speed and they are at 300k shares or something that you don't immediately jump to a pool that has a speed of 50Ghash/s that just found a block.  Wouldn't it be more profitable to finish the 43% with the fast pool and then jump?  Or is the risk of not catching that super fast block on the small pool too great?



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 22, 2011, 12:02:49 AM
I am wondering if its possible to code so that if you are mining at a pool that is say 500Ghash/s total speed and they are at 300k shares or something that you don't immediately jump to a pool that has a speed of 50Ghash/s that just found a block.  Wouldn't it be more profitable to finish the 43% with the fast pool and then jump?  Or is the risk of not catching that super fast block on the small pool too great?

I'm sorry, but also reading your comments on the bitp.it thread, I am not sure you understand the mathematics behind hopping. Forget your concept of "luck". This is just basic probability theory.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 22, 2011, 12:03:36 AM
Oh jeez, what happened to Ozco.in?  They are down to 7.2Ghash/s right now.

Edit: looks like they are slowly coming back up.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 22, 2011, 01:04:32 AM
2) switching from eligius to x8s?
Well both your backup pools lagged out. So it switched to the pool with the lowest number of shares which wasn't lagged out. Once the backup pools came back up then it switched back. That is how it is supposed to work.

3) issues serving index.html and running from the wrong directory?
Yeah. Thats an issue. I'll fix it.

ad 2: Ok, I didn't get that. Thanks for clearing that up.

ad 3: I saw it's already in. Thanks! :-)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 22, 2011, 01:09:23 AM
I am wondering if its possible to code so that if you are mining at a pool that is say 500Ghash/s total speed and they are at 300k shares or something that you don't immediately jump to a pool that has a speed of 50Ghash/s that just found a block.  Wouldn't it be more profitable to finish the 43% with the fast pool and then jump?  Or is the risk of not catching that super fast block on the small pool too great?

I'm sorry, but also reading your comments on the bitp.it thread, I am not sure you understand the mathematics behind hopping. Forget your concept of "luck". This is just basic probability theory.

Maybe I am entirely misunderstanding the math.  I haven't the knowledge to do a detailed analysis of how getting a massive (in the case of bitp.it 3x) boost in hash rate effects the number and rate of finding blocks.  Perhaps there is no correlation.  If I had to guess, I would think that people who mine in a single pool that is being hopped ARE negatively effected, but not to the extent that most believe due to more blocks being found with a massive increase in hash rate.  

Maybe I am totally off base. . .

Care to comment on the comment you were responding to initially though about different pool speeds and jumping? 


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 22, 2011, 02:10:29 AM
BTC-Poolwatch is now perfect for hopping:

http://forum.bitcoin.org/index.php?topic=10543.msg387825#msg387825
 (http://forum.bitcoin.org/index.php?topic=10543.msg387825#msg387825)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 22, 2011, 02:16:18 AM
I am wondering if its possible to code so that if you are mining at a pool that is say 500Ghash/s total speed and they are at 300k shares or something that you don't immediately jump to a pool that has a speed of 50Ghash/s that just found a block.  Wouldn't it be more profitable to finish the 43% with the fast pool and then jump?  Or is the risk of not catching that super fast block on the small pool too great?

I'm sorry, but also reading your comments on the bitp.it thread, I am not sure you understand the mathematics behind hopping. Forget your concept of "luck". This is just basic probability theory.

Maybe I am entirely misunderstanding the math.  I haven't the knowledge to do a detailed analysis of how getting a massive (in the case of bitp.it 3x) boost in hash rate effects the number and rate of finding blocks.  Perhaps there is no correlation.  If I had to guess, I would think that people who mine in a single pool that is being hopped ARE negatively effected, but not to the extent that most believe due to more blocks being found with a massive increase in hash rate.  

Maybe I am totally off base. . .

Care to comment on the comment you were responding to initially though about different pool speeds and jumping? 

I really didn't have the math for this when I started, so I wiki'd up on the Poisson process and read the following papers:

http://mining.bitcoin.cz/media/download/poolcheating.pdf
 (http://mining.bitcoin.cz/media/download/poolcheating.pdf)
http://www.bitcoinservice.co.uk/files/111
 (http://www.bitcoinservice.co.uk/files/111)

After about a month of reading, learning and experimenting I think I have a fair idea of what's going on, although I still make conceptual mistakes. The papers I've linked to will probably do a better job of teaching you about hopping than I can, so read them if you have the time and inclination - you won't waste time travelling down roads already travelled.

Cheers!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 22, 2011, 02:18:39 AM
I am wondering if its possible to code so that if you are mining at a pool that is say 500Ghash/s total speed and they are at 300k shares or something that you don't immediately jump to a pool that has a speed of 50Ghash/s that just found a block.  Wouldn't it be more profitable to finish the 43% with the fast pool and then jump?  Or is the risk of not catching that super fast block on the small pool too great?

I'm sorry, but also reading your comments on the bitp.it thread, I am not sure you understand the mathematics behind hopping. Forget your concept of "luck". This is just basic probability theory.

Maybe I am entirely misunderstanding the math.  I haven't the knowledge to do a detailed analysis of how getting a massive (in the case of bitp.it 3x) boost in hash rate effects the number and rate of finding blocks.  Perhaps there is no correlation.  If I had to guess, I would think that people who mine in a single pool that is being hopped ARE negatively effected, but not to the extent that most believe due to more blocks being found with a massive increase in hash rate.  

Maybe I am totally off base. . .

The boost in hash rate is proportional to the number of people jumping to the pool. What this also means though is that there are more shares calculated by hoppers. So when a block is found, more bitcoins go to hoppers.

The essence of pool hopping is that statistically the first shares of a round are worth more than the last ones. Now the more pool hoppers come in to take a larger portion of early shares, the worse it is for single pool miners.

If this doesn't make enough sense, I can explain some more tomorrow. :-)

Care to comment on the comment you were responding to initially though about different pool speeds and jumping? 

?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dikidera on July 22, 2011, 02:31:45 AM
@Dikidera, everyone on a forum gets pounded on every now and the -  if you're as 4-channy as you seem you know that. We've all posted things on the spur of the moment we're not proud of, and we've all has people annoy us and there is always the temptation to keep the flame burning. But there is never an excuse for using all caps. So let's just pretend page 39 edit 39 and 40 didn't happen and start again.

I'm sure you could spend time 4-channing us, but this is a really good proxy once you understand how it works and why.

1. Pool hopping currently works well only on proportional pools and only when you have access to non-delayed total shares. Neither btcguild or deepbit provide usable total share stats.
2. bitHopper provides a user stats page you can access on your browser on 127.0.0.1 which shows efficiency. You'll be able to see it work and see how far ahead you are by using it.
3. Since I've been using bitHopper I've had 140% to 200% efficiency on pools we use, for a total of 160%. Multipool's efficiency is around 120%.
4. Challenges coming up: loss of usable pools stats.

If you do have real coding skills (which is what I assume you're referring to when you recommend we don't anger you, and not that you've had an accident with a radioactive substance and go green and ragey when you get cranky) then help the project! We could do with someone helping with html scraping.


Why is there a problem with delayed stats? Pool hopping is just that. You request work, send a share, switch, send a share, switch and so on....this is not how i imagine pool hopping to be.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 22, 2011, 02:46:26 AM
Why is there a problem with delayed stats? Pool hopping is just that. You request work, send a share, switch, send a share, switch and so on....this is not how i imagine pool hopping to be.

What would be the use of doing that?  Do you know how inefficient that would be?  Request work from pool 1, send a share,  disconnect from pool 1, connect to pool 2, request work, send a share, etc, etc, etc. . .

If that was what pool hopping was, why wouldn't you just open up multiple workers, one per pool and let them mine away sharing your GPU?

Just to make it clear, your concept of pool hopping is not remotely correct.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 22, 2011, 03:25:50 AM
@Dikidera, everyone on a forum gets pounded on every now and the -  if you're as 4-channy as you seem you know that. We've all posted things on the spur of the moment we're not proud of, and we've all has people annoy us and there is always the temptation to keep the flame burning. But there is never an excuse for using all caps. So let's just pretend page 39 edit 39 and 40 didn't happen and start again.

I'm sure you could spend time 4-channing us, but this is a really good proxy once you understand how it works and why.

1. Pool hopping currently works well only on proportional pools and only when you have access to non-delayed total shares. Neither btcguild or deepbit provide usable total share stats.
2. bitHopper provides a user stats page you can access on your browser on 127.0.0.1 which shows efficiency. You'll be able to see it work and see how far ahead you are by using it.
3. Since I've been using bitHopper I've had 140% to 200% efficiency on pools we use, for a total of 160%. Multipool's efficiency is around 120%.
4. Challenges coming up: loss of usable pools stats.

If you do have real coding skills (which is what I assume you're referring to when you recommend we don't anger you, and not that you've had an accident with a radioactive substance and go green and ragey when you get cranky) then help the project! We could do with someone helping with html scraping.


Why is there a problem with delayed stats? Pool hopping is just that. You request work, send a share, switch, send a share, switch and so on....this is not how i imagine pool hopping to be.

Sup Pinky, where is the Brain ?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dikidera on July 22, 2011, 03:57:07 AM
@Dikidera, everyone on a forum gets pounded on every now and the -  if you're as 4-channy as you seem you know that. We've all posted things on the spur of the moment we're not proud of, and we've all has people annoy us and there is always the temptation to keep the flame burning. But there is never an excuse for using all caps. So let's just pretend page 39 edit 39 and 40 didn't happen and start again.

I'm sure you could spend time 4-channing us, but this is a really good proxy once you understand how it works and why.

1. Pool hopping currently works well only on proportional pools and only when you have access to non-delayed total shares. Neither btcguild or deepbit provide usable total share stats.
2. bitHopper provides a user stats page you can access on your browser on 127.0.0.1 which shows efficiency. You'll be able to see it work and see how far ahead you are by using it.
3. Since I've been using bitHopper I've had 140% to 200% efficiency on pools we use, for a total of 160%. Multipool's efficiency is around 120%.
4. Challenges coming up: loss of usable pools stats.

If you do have real coding skills (which is what I assume you're referring to when you recommend we don't anger you, and not that you've had an accident with a radioactive substance and go green and ragey when you get cranky) then help the project! We could do with someone helping with html scraping.


Why is there a problem with delayed stats? Pool hopping is just that. You request work, send a share, switch, send a share, switch and so on....this is not how i imagine pool hopping to be.

Sup Pinky, where is the Brain ?
Did i give you permission to speak slave?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 22, 2011, 04:04:47 AM
Pretty sure bitcoins.lc is delaying stats by 30 minutes.  By the time I switch over they usually already have 180k shares.  Is it still profitable to mine there when you miss the first 200k shares?  I see no real reason why it wouldn't be . . .

Edit:  Looks like it really effects payouts for smaller rounds.  I should be getting per round payouts in the .077 range for rounds under 700k shares if I was to jump in immediately, but I am seeing payouts in the .03 range instead.  Also missed a block entirely because it was less than 30 mins.  

Still more profitable than mining at Arsbitcoin with those same number of shares, but payouts are drastically reduced.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: nob on July 22, 2011, 05:31:02 AM
Anyone got some namecoin pools working?

Bitparking for backup purposes is no problem, but other namecoin pools seems to have no API too.

Theres Poolmunity with an API, but i didn't got it working.

The Problem with namecoins is, that the'll be unprofitable in 2 Days, so it's maybe not worth putting some serious work in it.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 22, 2011, 07:08:50 AM
@Dikidera, everyone on a forum gets pounded on every now and the -  if you're as 4-channy as you seem you know that. We've all posted things on the spur of the moment we're not proud of, and we've all has people annoy us and there is always the temptation to keep the flame burning. But there is never an excuse for using all caps. So let's just pretend page 39 edit 39 and 40 didn't happen and start again.

I'm sure you could spend time 4-channing us, but this is a really good proxy once you understand how it works and why.

1. Pool hopping currently works well only on proportional pools and only when you have access to non-delayed total shares. Neither btcguild or deepbit provide usable total share stats.
2. bitHopper provides a user stats page you can access on your browser on 127.0.0.1 which shows efficiency. You'll be able to see it work and see how far ahead you are by using it.
3. Since I've been using bitHopper I've had 140% to 200% efficiency on pools we use, for a total of 160%. Multipool's efficiency is around 120%.
4. Challenges coming up: loss of usable pools stats.

If you do have real coding skills (which is what I assume you're referring to when you recommend we don't anger you, and not that you've had an accident with a radioactive substance and go green and ragey when you get cranky) then help the project! We could do with someone helping with html scraping.


Why is there a problem with delayed stats? Pool hopping is just that. You request work, send a share, switch, send a share, switch and so on....this is not how i imagine pool hopping to be.

Good question, Dikidera. A lot of people confuse pool-hopping with randomly jumping from pool to pool to spread our your shares and minimise variance. But that is what it definitely is not. A few very clever people showed early this year (late last year? whatever) that in a proportional pool, you can increase your average coinage per share by never staying in the pool after the total shares have reached 0.43*<difficulty> Then you hop to another proportional pool with total shares under 0.43*<difficulty> or to a PPS pool.

Another point is that it turns out that earlier in a round a share has more worth than later in a round. This means it's also better to hop from a proportional pool at, for example, 0.3*<difficulty> to a proportional pool at 0.1*difficulty.

This is unintuitive, but if you have the time to go over the math, it's fascinating. I've posted these links before, but they're worth posting again:

http://mining.bitcoin.cz/media/download/poolcheating.pdf
 (http://mining.bitcoin.cz/media/download/poolcheating.pdf)
http://www.bitcoinservice.co.uk/files/111 (http://www.bitcoinservice.co.uk/files/111)


If you aren't interested in the math just try it your self for a week or so and look at the results.

Quote
Did i give you permission to speak slave?
Come on! Srsly? You can't tell when people are trying to get a rise out of you? My mum always told me, "ignore them and they'll stop bothering you". It didn't work, but whatever.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ryouiki on July 22, 2011, 08:53:48 AM
latest Mod fully supports NameCoin pools
added BitParking and NameBit

http://cl.ly/0t1q0B1E2d040f0F1L3n/screen2011_07_22_18_10_31_1.jpg

if you feel lucky, now you can donate NMC to me ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: nob on July 22, 2011, 09:33:35 AM
great, i'm testing it atm


Currently bithopper is only mining on tripple and not on the Namecoin pools.
The Problem for hopping Namecoins and Bitcoins is, that the Namecoin Profitabilty depends on the Exchange Price NMC/BTC. ATM Namecoin Mining is about 50% more Effective than mining Bitcoins, i tryed using 0.25 Penalty for the NMC Pools but it doesn`t work.

Maybe the easiest sollution is enabling the NMC pools and disabling the BTC pools, but bithopper is still submitting to the BTC Backuppools instead of the (mor profitale) NMC Pools.
So i had to disable the Backup Pools and use bitparking for backup and namebit for hopping.

//Edit:

ok was confused its working.

Early shares on BTC pools are more provitable, then shares on NMC Pools.
Namebit had a new block and BitHopper switched from MTRed to NameBit


I modified NMC Pool Penalty to adjust the NMC/BTC Value for me

Thanks

//Edit2:
Final thoughts.

On 50% [~15L Shares) BitHopper swtched from BitParking to Arsbitcoin.
But Namecoins are more effective, than Bitcoins. For Switching Pools you need the NMC/Bitcoin Profitably, so you only switch to a BTC Pool from a NMC pool when the NMC Pools has a "total efficentcy" of nmc_difficulty*.431 * NMC/Bitcoin Ratio (atm 1.39) > http://dot-bit.org/tools/nextDifficulty.php (or just use a price from namecoinexchange hey have an API http://dot-bit.org/forum/viewtopic.php?p=964#p964 )
But that's just to much work, for just 2 Days of Namecoinmining.

I'll disable the namecoin pools again.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 22, 2011, 10:26:45 AM
@c00w: if I update to a new version, how do I keep my stats to that point?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 22, 2011, 10:28:08 AM
@Dikidera, everyone on a forum gets pounded on every now and the -  if you're as 4-channy as you seem you know that. We've all posted things on the spur of the moment we're not proud of, and we've all has people annoy us and there is always the temptation to keep the flame burning. But there is never an excuse for using all caps. So let's just pretend page 39 edit 39 and 40 didn't happen and start again.

I'm sure you could spend time 4-channing us, but this is a really good proxy once you understand how it works and why.

1. Pool hopping currently works well only on proportional pools and only when you have access to non-delayed total shares. Neither btcguild or deepbit provide usable total share stats.
2. bitHopper provides a user stats page you can access on your browser on 127.0.0.1 which shows efficiency. You'll be able to see it work and see how far ahead you are by using it.
3. Since I've been using bitHopper I've had 140% to 200% efficiency on pools we use, for a total of 160%. Multipool's efficiency is around 120%.
4. Challenges coming up: loss of usable pools stats.

If you do have real coding skills (which is what I assume you're referring to when you recommend we don't anger you, and not that you've had an accident with a radioactive substance and go green and ragey when you get cranky) then help the project! We could do with someone helping with html scraping.


Why is there a problem with delayed stats? Pool hopping is just that. You request work, send a share, switch, send a share, switch and so on....this is not how i imagine pool hopping to be.

Sup Pinky, where is the Brain ?
Did i give you permission to speak slave?

dont't start another round of that shit, this time I will personally see that the guilty gets banned. I came here to read good stuff not the ppl's personal vendetta's

btw: if a pool delays stats you cannot hopp in blindfolded, not knowing this tells us you are 1. a script kiddie jerkin' around 2. you are a pool op looking for trouble after seeing his pool hopped. In either case i recommend you reading at least some pages of this thread or go to another part of bitcoins.org forum, it' huge and you could fit perfectly in other thread ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 22, 2011, 10:43:44 AM
latest Mod fully supports NameCoin pools
added BitParking and NameBit

http://cl.ly/0t1q0B1E2d040f0F1L3n/screen2011_07_22_18_10_31_1.jpg

if you feel lucky, now you can donate NMC to me ;D


yup with pleasure (btc adress not in sight :) )

ryouiki would be hard to implement a basic password to stat page ? If you do it , great, if not please explain how to coz having it wide open on public ip just makes me feel uncomfortable. thanks


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 22, 2011, 10:46:02 AM
use a firewall and tunnel this port through ssh.
works fine for me (i am using my hopper on a vserver)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 22, 2011, 10:51:54 AM
use a firewall and tunnel this port through ssh.
works fine for me (i am using my hopper on a vserver)

I was doing that until a few friends decided to give a hand mining and they lack the patience to do advanced pc stuff :P
want to give some info on public ip to a select few persons (I know they could mess with enabling an setting penalty but they have been warned about that >:)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dikidera on July 22, 2011, 10:53:57 AM
@Dikidera, everyone on a forum gets pounded on every now and the -  if you're as 4-channy as you seem you know that. We've all posted things on the spur of the moment we're not proud of, and we've all has people annoy us and there is always the temptation to keep the flame burning. But there is never an excuse for using all caps. So let's just pretend page 39 edit 39 and 40 didn't happen and start again.

I'm sure you could spend time 4-channing us, but this is a really good proxy once you understand how it works and why.

1. Pool hopping currently works well only on proportional pools and only when you have access to non-delayed total shares. Neither btcguild or deepbit provide usable total share stats.
2. bitHopper provides a user stats page you can access on your browser on 127.0.0.1 which shows efficiency. You'll be able to see it work and see how far ahead you are by using it.
3. Since I've been using bitHopper I've had 140% to 200% efficiency on pools we use, for a total of 160%. Multipool's efficiency is around 120%.
4. Challenges coming up: loss of usable pools stats.

If you do have real coding skills (which is what I assume you're referring to when you recommend we don't anger you, and not that you've had an accident with a radioactive substance and go green and ragey when you get cranky) then help the project! We could do with someone helping with html scraping.


Why is there a problem with delayed stats? Pool hopping is just that. You request work, send a share, switch, send a share, switch and so on....this is not how i imagine pool hopping to be.

Sup Pinky, where is the Brain ?
Did i give you permission to speak slave?

dont't start another round of that shit, this time I will personally see that the guilty gets banned. I came here to read good stuff not the ppl's personal vendetta's

btw: if a pool delays stats you cannot hopp in blindfolded, not knowing this tells us you are 1. a script kiddie jerkin' around 2. you are a pool op looking for trouble after seeing his pool hopped. In either case i recommend you reading at least some pages of this thread or go to another part of bitcoins.org forum, it' huge and you could fit perfectly in other thread ;)
Do you...understand the meaning of what script kiddie means? I don't think you do.  And no, i am not a pool operator though i did start writing my front end once only to find it a bother to maintain a pool.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zybron on July 22, 2011, 10:53:57 AM
Heh, triplemining added an odd bit of code to their stats page:

Code:
<tr style="background-color: #ECF7FA;">
<td>-</td>
<td>MINING</td>
<td>-</td>

<td>-</td>
<td>3 hours </td>
<td><!-- 1000 -->321001</td>
<td>-</td>
</tr>

I don't think it had the effect they wanted, though. Instead of bitHopper seeing the 1000 and assuming they are on a new block, it doesn't catch this line at all in the scrape and is grabbing the stats for the previous block. Or perhaps that was the intended effect?

It's funny that they have "No pool hopping protection!" on their home page, but want to start mucking with code to prevent/deter hopping?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 22, 2011, 11:18:00 AM
Yea, should be mining at triple right now but for some reason their stats are reporting way too high.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 22, 2011, 11:21:07 AM
Heh, triplemining added an odd bit of code to their stats page:

Code:
<tr style="background-color: #ECF7FA;">
<td>-</td>
<td>MINING</td>
<td>-</td>

<td>-</td>
<td>3 hours </td>
<td><!-- 1000 -->321001</td>
<td>-</td>
</tr>

I don't think it had the effect they wanted, though. Instead of bitHopper seeing the 1000 and assuming they are on a new block, it doesn't catch this line at all in the scrape and is grabbing the stats for the previous block. Or perhaps that was the intended effect?

It's funny that they have "No pool hopping protection!" on their home page, but want to start mucking with code to prevent/deter hopping?

Except that Triplemining is now stuck on 143849 shares for me, and bitHopper won't mine them because it's been on that for so long.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 22, 2011, 11:27:03 AM
Except that Triplemining is now stuck on 143849 shares for me, and bitHopper won't mine them because it's been on that for so long.

change in pool.py:

re.search(r"<td><!-- 1000 -->[0-9]*</td>", statpage).group(0)[17:-5]


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: frisco on July 22, 2011, 11:29:51 AM
@c00w: if I update to a new version, how do I keep my stats to that point?

If you just update everything works as it should, and data is persisted.

Triplemining stats are the last block stats ( 2859868 ) and probably due to them messing the results I got the pool at a "stats api disabled" state (I can recall the actual state name).

Enabling/disabling pools on the stats page should be changed to links or selects, typing is not easy with the updater js running every few secs and reverting your writing and not everyone knows every possible state.

Also as a request, a new --log param to write directly to file (if possible a rolling file) would be great I think I have been able to configure everything as it should using logrotate but it is not easy and still the daily log files are quite big using debug.

I am running latest version from GH


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: gno on July 22, 2011, 12:08:28 PM
One rule: Never, ever, ever make me angry, which you are doing right now.

As for the readme, i read it...not much of an explanation there.

Also, it seems it's NOT using btcguild.


Looks like we've got an e-thug here, folks...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 22, 2011, 12:13:55 PM
One rule: Never, ever, ever make me angry, which you are doing right now.

As for the readme, i read it...not much of an explanation there.

Also, it seems it's NOT using btcguild.


Looks like we've got an e-thug here, folks...


"we've got" you said it, let's not make it bigger than it is


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 22, 2011, 12:14:32 PM
@c00w: if I update to a new version, how do I keep my stats to that point?

If you just update everything works as it should, and data is persisted.

Triplemining stats are the last block stats ( 2859868 ) and probably due to them messing the results I got the pool at a "stats api disabled" state (I can recall the actual state name).

Enabling/disabling pools on the stats page should be changed to links or selects, typing is not easy with the updater js running every few secs and reverting your writing and not everyone knows every possible state.

Also as a request, a new --log param to write directly to file (if possible a rolling file) would be great I think I have been able to configure everything as it should using logrotate but it is not easy and still the daily log files are quite big using debug.

I am running latest version from GH

git fetch?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: frisco on July 22, 2011, 12:37:17 PM
@c00w: if I update to a new version, how do I keep my stats to that point?

If you just update everything works as it should, and data is persisted.

Triplemining stats are the last block stats ( 2859868 ) and probably due to them messing the results I got the pool at a "stats api disabled" state (I can recall the actual state name).

Enabling/disabling pools on the stats page should be changed to links or selects, typing is not easy with the updater js running every few secs and reverting your writing and not everyone knows every possible state.

Also as a request, a new --log param to write directly to file (if possible a rolling file) would be great I think I have been able to configure everything as it should using logrotate but it is not easy and still the daily log files are quite big using debug.

I am running latest version from GH

git fetch?

Thats ok, I have persisted the data the last two days doing
Code:
git pull origin
from time to time.


Title: Efficiency display?
Post by: ed64 on July 22, 2011, 12:48:58 PM
Ryouiki, think you can merge in c00w's payout stats in order to show show efficiency stats? Would like to see how some of my pools that I'm hopping are performing...

I added in slush and I'm pretty sure it's performing decently, would like to have something tracked vs some adhoc calculations on my part.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 22, 2011, 12:56:19 PM
Except that Triplemining is now stuck on 143849 shares for me, and bitHopper won't mine them because it's been on that for so long.

change in pool.py:

re.search(r"<td><!-- 1000 -->[0-9]*</td>", statpage).group(0)[17:-5]
Or, even better (if they change the "1000" in the code:
"-->[0-9]*</td>", as they even nicely mark the relevant line with that! ;D Just make sure to check the slicing of the string afterwards (and if they start inserting more comments, you'll maybe need a different regex alltogether or just a real HTML parser).

Slush should be hopped out already at ~14% afaik though, their scoring algorithm is faulty - search around a bit, I think Multipool did it like this too.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zybron on July 22, 2011, 01:13:03 PM
Has anyone else seen this pop up before?

Code:
[09:05:57] LP triggered from server triplemining
[09:05:57] Reading LP Response failed

And does that mean that a long poll came in from the pool but wasn't passed on to the miner? Or did the miner not pass back a valid response?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 22, 2011, 02:26:42 PM
Has anyone else seen this pop up before?

Code:
[09:05:57] LP triggered from server triplemining
[09:05:57] Reading LP Response failed

And does that mean that a long poll came in from the pool but wasn't passed on to the miner? Or did the miner not pass back a valid response?

I get this error also from time to time, all I can figure out around the meaning of it is that your miner requested LP from triplemining but the request wasnt answered fast enough thus timed out/failed.

Ive noticed this afaik only on triplemining from time to time.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ed64 on July 22, 2011, 03:47:38 PM
For triple, I'd suggest something more like:

Code:
def triple_sharesResponse(self, response):
        output = re.search(r"<td><!-- [0-9]* -->([0-9]+)</td>", response)
        if output != None:
            match = output.group(1)
            round_shares = int(match)
            self.UpdateShares('triple',round_shares)

And get rid of specific character positions as much as possible this way...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: jkminkov on July 22, 2011, 04:25:55 PM
it would be wise to move mine_address in passwords.py, some pools offer more than one server


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Xer on July 22, 2011, 04:56:36 PM
X8s.de now swapped to PPLNS

"Found block for Round 30 18 minutes ago · reply · retweet · favorite"

"After finding the next block we'll switch to PPLNS 5 hours ago · reply · retweet · favorite"

As for ryouiki's latest hopper

"Checking Database
Traceback (most recent call last):
  File "*\ryouiki-bitHopper-743b318\bitHopper.py", line 37
0, in <module>
    main()
  File "*\ryouiki-bitHopper-743b318\bitHopper.py", line 35
0, in main
    database.check_database(servers)
  File "*\ryouiki-bitHopper-743b318\database.py", line 22,
 in check_database
    curs.execute(sql)
sqlite3.OperationalError: no such column: accept
"
Edit. was a corrupted database.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ed64 on July 22, 2011, 05:32:47 PM
With time slicing and penalty around 3.5, hopping PPLNS can still be effective...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 22, 2011, 05:39:17 PM
Speaking of timeslicing, flowers when will you merge your code into new updates from c00w github ?

Think most of your version is still heavily outdated since recent updates made to structure by c00w.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dewon on July 22, 2011, 06:23:21 PM
Edit: Nothing anymore  :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 22, 2011, 06:25:53 PM
Speaking of timeslicing, flowers when will you merge your code into new updates from c00w github ?

Think most of your version is still heavily outdated since recent updates made to structure by c00w.

flowerpower is now on Github:
https://github.com/flower1024/flowerPower

I'll leave it to someone who actually knows something about coding to merge into c00w's main source.

Right now it looks like everything echiu64 did has been merged into ryouki's master. and everything c00w has done has been merged into elitak's master. If elitak's work could pickup the latest ryouiki and merge into c00w that would be great!
http://i.imgur.com/RKF47.png

It seems some of the main differences (and I may be missing a lot) lies in reporting. Could we just create a master index.html that has links for the various reporting views? I'm sure I'm missing that there are now different stat databases as well (lets' merge those).

Get all this back into the main source and then add some flowerpower to c00w for slicing and we should have a great release candidate!

Do we need to setup a bounty for this work?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ed64 on July 22, 2011, 06:38:22 PM
flowers diff isn't that big, shouldn't be too hard to merge.

Question is to merge with c00w or ryouiki to start? hmmm  :-\

In the meantime, playing around with using fasthoop to adjust reported shares vs time last block found.

I've found that fasthoop doesn't seem to be reporting back solved blocks any faster than mtred/slush/bitclocker APIs, based on about 24hrs worth of data. Not sure how "realtime" it's block detection really is... looks like they rely on the same APIs that bithopper would poll.

Any other service that will show in _true_ realtime when blocks are solved by a pool?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 22, 2011, 07:24:57 PM
Anyone still have invites to hoppersden?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 22, 2011, 07:32:44 PM
Anyone still have invites to hoppersden?

dunno, ask around :P (just joking I feel fine today)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dewon on July 22, 2011, 08:09:28 PM
X8s.de now swapped to PPLNS

"Found block for Round 30 18 minutes ago · reply · retweet · favorite"

"After finding the next block we'll switch to PPLNS 5 hours ago · reply · retweet · favorite"

I removed them. Personally I hate PPLNS, once you stop mining those pools your shares starts instantly falling no matter how much you mined. When they then hit a block during your downtime you'll get only pennies.. Would be interesting to know efficiency of eg. x8s for 24/7 mining because there will always be people who start mining earlier in round and then drop off. Their contribution helps finding block faster and that benefits 24/7 miners.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: msb8r on July 22, 2011, 08:26:28 PM
Is it just me, or is updates on pool shares on triple mining a little excessive?

Code:
[22:27:35] triple: 921,102
[22:27:44] triple: 921,232
[22:27:54] triple: 921,377
[22:28:14] triple: 921,680
[22:28:24] triple: 921,837

I would think once every 60 seconds would be plenty fine.

Using c00w's hopper, latest version


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 22, 2011, 10:07:38 PM
With time slicing and penalty around 3.5, hopping PPLNS can still be effective...

proof? either a screen shot or a mathematical proof will be fine.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 22, 2011, 10:11:20 PM
as i think he speaks about my mod:
no pplns is not hoppable. the window ist just to big.
atm i am trying to hop slush @300% difficulty and stays until block is found; but i know already that this won't work (due to bitcoin poison process)
^^ i just want to learn it mysql the hard way


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 22, 2011, 10:26:27 PM
Anyone still have invites to hoppersden?

dunno, ask around :P (just joking I feel fine today)

Thanks for the invite, I'll try to poke around and absorb/contribute whatever I can this weekend.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: streblo on July 23, 2011, 03:01:41 AM
I've calculated some statistics for everyone to help clear up some confusion. Poisson processes can be very non-intuitive. These numbers are the result of considering every possibility (and the probability of that possibility). Any situation which you can think of has been accounted for and (hopefully) accounted for. This analysis assumes one has an accurate share count for pools. That is to say, none of these numbers include things like delayed or falsified JSON stats

Proportional pools
Firstly, in a proportional pool the expectation value of a submitted share is dependent on one and only one variable: the number of shares submitted previously. Hashrate, timeslicing (as I understand it), number of shares you vs other other people submitted, etc. ALL DON'T MATTER. In fact, one can calculate the speedup. Define the normalized shares submitted, x, as the number of shares submitted divided by the current difficulty. Then the expectation value (average value) of a share (normalized to solo mining) is exp(x)*E1(x). E1 is a nonanalytic integral, but wolfram alpha will compute it for you. (http://www.wolframalpha.com/input/?i=plot+exp%28x%29*ExpIntegral%281%2Cx%29+from+x%3D0+to+x%3D2) Alternatively, to a decent approximation, one can use speedup = (.428/x)^(0.65). This approximate formula can be handy for quickly calculating expectation value without resorting to numerical methods. The accurate speedup is shown in Figure 1. Notice the speedup is greater than one before x~0.428 and less than one after 0.428. This is where the magical 42.8% comes from: shares submitted to the pool when x<0.428 have an expectation value greater than one. This is the essence of pool-hopping.

http://i.imgur.com/WxvD2s.png (http://imgur.com/WxvD2)
Figure 1. Speedup vs normalized shares submitted (see above text)

Multiple proportional pools
As shown above when considering proportional pools, shares should always be submitted to the pool with the least number of shares or should be solo-mined if all pools are above x~.43. How much is to be gained from multiple pools? A lot If you go to the aforementioned Wolfram Alpha link, calculate the speedup for x=1/difficulty=1/1690000. It equals 13.7x (http://www.wolframalpha.com/input/?i=exp%28x%29*ExpIntegral%281%2Cx%29+where+x+%3D+1%2F1690000)! This means if every share you submitted was the first to a proportional pool, you would have over a 13x speedup! Hypotheticals aside, what about in practice? FIgure 2 shows the results of Monte Carlo calculations for the speedup vs number of proportional pools hopped which roughly follows the trend: speedup = ln(2.5+pools). Here we can see it is always QUITE advantageous to add more pools. The marginal return, although diminishing, decrease only slowly! Hence, a hopper should have as many pools as possible.

http://i.imgur.com/9vRbOs.png (http://imgur.com/9vRbO)
Figure 2. Speedup vs number of proportional pools. Note the famous ~28% increase for hopping one pool. Due to the steep slope of speedup(x) for small x, it is quite advantageous to add more pools.

Other scoring methods [Edit: I understood PPLNS incorrectly; the math is completely incorrect]
Many scoring systems are not statistically analyzed and hence still offer opportunity for hopping. For example, Pay-Per-Last-N-Shares is still quite hoppable (with typical N), as follows. Let's renormalize N by dividing by the difficulty, to give us the normalized last N shares, M. Using the same analysis as above, the speedup can be computed as shown below in Figure 3. PPLNS strongly deviates from proportional only during rounds which pay (per share) below the statistical average. Because the hopper "suffers" from PPLNS only during sub-par rounds, the absolute difference between proportional and PPLNS is small. One can calculated the expectation values of PPLNS shares (as a function of x and M), with the following formula (Wolfram link (http://www.wolframalpha.com/input/?i=plot+exp%28x%29*+%28Gamma%280%2Cx%29+-+Gamma%280%2C+M+%2B+x%29%29+where+M%3D0.5+from+x%3D0+to+0.5)): exp(x) ( Gamma(0,x) - Gamma(0,M+x)) which is valid for x < M. A maximum speedup (at current difficulty) is still 13x with M=0.5. A quick'n'dirty way to implement PPNLS pools in hopping software is to penalize the PPNLS pool by multiplying round_shares by .43/.21. Slush's pool is also hoppable under the same mechanism, although the curves depend on hashing rate as well. Almost any proportional-based pool will be hoppable at x<.10

http://i.imgur.com/HcMFes.png (http://imgur.com/HcMFe)
Figure 3. Comparison of expectation value from share submission from proportional and PPNLS (M=0.5, see text) payout schemes. Notice the intersection with y=1, where share expectation value is equal to solo mining. These intersections are respectively equal to ~0.21 and ~0.428 for PPNLS and proportional.

Conclusion
I hope this clears up some confusion about expectation values of shares and pool hopping. If anything is unclear feel free to reply or send me a PM.

Cheers

Donations greatly appreciated!
1FQoC3zsos22QxZC35fMfP8JteMK9nEQPU





Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 23, 2011, 05:08:09 AM
Very nice work, Streblo! Great explanation, and the first clear explanation of multiple pool hopping that I've seen.

As a big favour, could you show me how you derived the PPLNS function?

<\ttfn>


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 06:02:58 AM
1) Flowers code?
I understand the idea of slicing between pools and will implement it. However I haven't had the time to look at his code and figure it out.

2)New pool config file?
I decided nobody should have to touch python source code. And its easier. For example fixing triple mining required only two lines of code to change.
And I am going to add a mine_ppln mode so we can hop ppln pools.

3) Where were you?
Canada.

4) Adding new pools?
I counted three at last count. Assuming they have json its pretty quick to add them. I'll try and do it tommorow...

edit: Streblo!
I love the explanation. And I'm adding ppln.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 23, 2011, 06:10:57 AM
Amazing streblo. Really great stuff.
The thing I'm still unclear on though (and maybe I'm just dense) is:
Based on your analysis, given the situation of hopping two pools having different speeds, should I stay with the faster pool even though it is further from share 1 and then hop to slower later. Or do I hop to pool 2 immediately after it solves a block. It seems to me the downside is getting stuck in a slow pool and missing the spread of shares to other available pools ( even backup)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 23, 2011, 06:16:44 AM
Amazing streblo. Really great stuff.
The thing I'm still unclear on though (and maybe I'm just dense) is:
Based on your analysis, given the situation of hopping two pools having different speeds, should I stay with the faster pool even though it is further from share 1 and then hop to slower later. Or do I hop to pool 2 immediately after it solves a block. It seems to me the downside is getting stuck in a slow pool and missing the spread of shares to other available pools ( even backup)


No.

Quote
. Hashrate, timeslicing (as I understand it), number of shares you vs other other people submitted, etc. ALL DON'T MATTER.

Different hashrate pools only affect variance, not speedup (=efficiency).


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 06:23:33 AM
Explanation of the new pool system / how to add pools.

Pool.cfg is a config file.

Pools have the format
[internal name]
name: value
mine_address: address:port
role:disable/backup/mine/mineppln(Once I add it)
user: username
pass: Password

If you have a mining pool you have to specify
api_address:address
and
api_method: json/re

For json add
api_key: json_accesor1, json_accesor2, etc...

So if a pool has its roundshares at
{round_shares:1234}
then
api_key:round_share

if it is
{pool:{round_shares:1234}}
then api_key:pool,round_shares

For re (Regular expressions),
api_key is the expression to match.
api_index is how the resulting match should be sliced to get the value.
See triplemining for an example.

If you get a pool working then well put the code in an issue so it can be added.
Or the forums but I keep forgetting...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 23, 2011, 08:24:58 AM
@c00w: How does the efficiency/payout work? Is it something you have to do manually, or is it supposed to be automatic?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 08:55:47 AM
It currently has to have the payout entered manually. with a bitcoind interface it could be automatic but I haven't written it yet.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 23, 2011, 10:51:14 AM
Seems bitHopper loses more and more flexibility. With this config file even more is gone, that is the possibility to write more complicated functionality to get the share counts, which I relied on for some pools I added myself. I will stick to older versions.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 23, 2011, 10:55:48 AM
Wouldnt it be possible to allow the config for "less knowledable" users and leaving the pure python code for those who want to tinker more in depth?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: burp on July 23, 2011, 11:38:11 AM
My changes:

I don't think regex api_index is necessary if you write proper regular expressions to match, as in my example.
I also added api_method cmd which runs a command in the shell where you can use arbitrary pipe, curl,grep,sed,awk magic.

api_method:cmd
api_cmd:curl -s -k https://pool.bitp.it/leaderboard | … more shell magic that returns a number

api_method:cmd
api_cmd:echo 1234

Code:

diff -rN -u old-bitHopper_darcs/pool.cfg.default new-bitHopper_darcs/pool.cfg.default
--- old-bitHopper_darcs/pool.cfg.default    2011-07-23 13:34:45.675261168 +0200
+++ new-bitHopper_darcs/pool.cfg.default    2011-07-23 13:34:45.679261217 +0200
@@ -51,7 +51,7 @@
 mine_address: eu1.triplemining.com:8344
 api_address:https://www.triplemining.com/stats
 api_method:re
-api_key:-->\d+</td>
+api_key:<td>.*?(\d+)</td>
 api_index:3,-5
 role:mine
 #CHANGE THIS
diff -rN -u old-bitHopper_darcs/pool.py new-bitHopper_darcs/pool.py
--- old-bitHopper_darcs/pool.py 2011-07-23 13:34:45.675261168 +0200
+++ new-bitHopper_darcs/pool.py 2011-07-23 13:34:45.679261217 +0200
@@ -107,15 +107,15 @@

         elif server['api_method'] == 're':
             output = re.search(server['api_key'],response)
-            s,e = server['api_index'].split(',')
-            output = output.group(0)
-            s = int(s)
-            if e == '0' or e =='':
-                output = output[s:]
-            else:
-                output = output[s:int(e)]
-            round_shares = int(output)
+            round_shares = int(output.group(1))
             self.UpdateShares(args,round_shares)
+
+        elif server['api_method'] == 'cmd':
+            import subprocess
+            round_shares = int(subprocess.Popen(server['api_cmd'], shell=True,
+                stdout=subprocess.PIPE).communicate()[0])
+            self.UpdateShares(args,round_shares)
+
         else:
             self.bitHopper.log_msg('Unrecognized api method: ' + str(server))



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 23, 2011, 11:43:54 AM
very nice idea!
what about just placing a command line in pools.conf which gets executed every time round-shares are updated?

that way we could completly decouple bithopper from pools - and even change them without an restart.

shell command could return sth like "poolhashrate,roundshares,false|true" (false|true: is the api lagging)
which could easily be parsed by python


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 23, 2011, 12:27:09 PM
Anyone else have triplemining broken in the new bitHopper? Getting 'error in api'.

Also I love polmine, great service and good efficiency so far. But the new config broke the regex that ryouiki did. Anyone fix it? The old version (with what I assume is a commented out practice go) is:
Code:
            'polmine':{'shares':default_shares, 'name':'polmine',
    'mine_address':'polmine.pl:8347', 'user':polmine_user, 'pass':polmine_pass,
    'lag':False, 'LP':None,'api_address':'http://polmine.pl/?action=statistics',
    'role':'mine' },

    def polmine_sharesResponse(self, response):
        #info = re.search(r"stkich:</th><td> [0-9]*</td>", response).group(0)[4:-5]
        round_shares = int(re.search(r"stkich:</th><td>[ 0-9]*</td>", response).group(0)[16:-5].replace(' ',''))
        self.UpdateShares('polmine',round_shares)

worked fine, had some error at the start of bitHopper which I paid no attention to but worked.

So can anyone fix Triplemining and Polmine for me?

Cheers!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: frisco on July 23, 2011, 01:38:14 PM
They changed the format again, new code for triple:

Code:
    def triple_sharesResponse(self, response):
        output = re.search(r"-->([0-9\s]+)</", response)
        if output != None:
            match = output.group(1)
            match = match.replace(' ','')
            round_shares = int(match)
            self.UpdateShares('triple',round_shares)

I don't think this can be done with the new config, so I am still at yesterday's version.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 23, 2011, 01:47:27 PM
Other scoring methods
Many scoring systems are not statistically analyzed and hence still offer opportunity for hopping. For example, Pay-Per-Last-N-Shares is still quite hoppable (with typical N), as follows. Let's renormalize N by dividing by the difficulty, to give us the normalized last N shares, M. Using the same analysis as above, the speedup can be computed as shown below in Figure 3. PPLNS strongly deviates from proportional only during rounds which pay (per share) below the statistical average. Because the hopper "suffers" from PPLNS only during sub-par rounds, the absolute difference between proportional and PPLNS is small. One can calculated the expectation values of PPLNS shares (as a function of x and M), with the following formula (Wolfram link (http://www.wolframalpha.com/input/?i=plot+exp%28x%29*+%28Gamma%280%2Cx%29+-+Gamma%280%2C+M+%2B+x%29%29+where+M%3D0.5+from+x%3D0+to+0.5)): exp(x) ( Gamma(0,x) - Gamma(0,M+x)) which is valid for x < M. A maximum speedup (at current difficulty) is still 13x with M=0.5. A quick'n'dirty way to implement PPNLS pools in hopping software is to penalize the PPNLS pool by multiplying round_shares by .43/.21. Slush's pool is also hoppable under the same mechanism, although the curves depend on hashing rate as well. Almost any proportional-based pool will be hoppable at x<.10

http://i.imgur.com/HcMFes.png (http://imgur.com/HcMFe)
Figure 3. Comparison of expectation value from share submission from proportional and PPNLS (M=0.5, see text) payout schemes. Notice the intersection with y=1, where share expectation value is equal to solo mining. These intersections are respectively equal to ~0.21 and ~0.428 for PPNLS and proportional.

Conclusion
I hope this clears up some confusion about expectation values of shares and pool hopping. If anything is unclear feel free to reply or send me a PM.

Although this should REALLY go in a seperate topic... What's your understanding of PPLNS?
I got it like this, that you _always_ consider the last N shares and don't reset at block boundaries. Yes, this means you can get paid twice or more often for a single share but also that you can be not paid at all for some others. I suspect you do in your model reset your shares when a block was found. Is this true?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 23, 2011, 02:11:53 PM
nice work streblo, just managed to put my concepts straight thanks. I added you on my future donations list if you don't mind

@c00w kudos to you to man, I was waiting for this to happen coz my python skills really suck and many times I was just breaking the script after editing, it's a more portable now... thanks really , btw I already have you on donation list


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 23, 2011, 02:29:35 PM
I don't see how his model could include anything from previous rounds - I think it resets at boundaries. That just means the model gives a low bound for speedup/efficiency.

I'd really like some details (that i probably won't follow!) though. Or at least more details about
Quote
PPLNS strongly deviates from proportional only during rounds which pay (per share) below the statistical average. Because the hopper "suffers" from PPLNS only during sub-par rounds, the absolute difference between proportional and PPLNS is small.
because it's tantalising me. I'd like to know why the gamma functions allow us to model the PPLNS behaviour.



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 23, 2011, 03:00:23 PM
With the newest version I am getting this error:

Code:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/twisted/web/http.py", line 1371, in dataReceived
    finishCallback(data[contentLength:])
  File "/usr/lib/python2.7/dist-packages/twisted/web/http.py", line 1585, in _finishRequestBody
    self.allContentReceived()
  File "/usr/lib/python2.7/dist-packages/twisted/web/http.py", line 1641, in allContentReceived
    req.requestReceived(command, path, version)
  File "/usr/lib/python2.7/dist-packages/twisted/web/http.py", line 807, in requestReceived
    self.process()
--- <exception caught here> ---
  File "/usr/lib/python2.7/dist-packages/twisted/web/server.py", line 125, in process
    self.render(resrc)
  File "/usr/lib/python2.7/dist-packages/twisted/web/server.py", line 132, in render
    body = resrc.render(self)
  File "/usr/lib/python2.7/dist-packages/twisted/web/resource.py", line 210, in render
    return m(request)
  File "/opt/bitHopper-4/bitHopper.py", line 370, in render_POST
    return bitHopper_Post(request)
  File "/opt/bitHopper-4/bitHopper.py", line 227, in bitHopper_Post
    bithopper_global.log_msg('RPC request [' + rep + "] submitted to " + str(pool_server['name']))
exceptions.TypeError: 'NoneType' object is not subscriptable

When this happened, current in line 212 in bitHopper.py was 'mtred', however, pool_server in line 213 turned out to be None.

The mtred entry in the config file looks ok.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: streblo on July 23, 2011, 04:40:07 PM
Very nice work, Streblo!
Thanks, this pool math is really interesting to me because the results are sometimes bizzare!


edit: Streblo!
I love the explanation. And I'm adding ppln.
Sounds good. Remember, the quick'n'dirty method with the factor of ~2 for shares adjustment only works with M=0.5. Though, I (or anybody with the mathematica link) can easily calculate numbers for arbitrary M.


Amazing streblo. Really great stuff.
The thing I'm still unclear on though (and maybe I'm just dense) is:
Based on your analysis, given the situation of hopping two pools having different speeds, should I stay with the faster pool even though it is further from share 1 and then hop to slower later. Or do I hop to pool 2 immediately after it solves a block. It seems to me the downside is getting stuck in a slow pool and missing the spread of shares to other available pools ( even backup)
Assuming you switch pools with no increase stales and you have accurate round_shares information, ALWAYS send shares to the pool with least number of shares (unless, of course, all pools are above x=.428, in which case you should solo mine [read: use a "backup" pool]).


nice work streblo, just managed to put my concepts straight thanks. I added you on my future donations list if you don't mind
Thanks man!



Although this should REALLY go in a seperate topic... What's your understanding of PPLNS?
I got it like this, that you _always_ consider the last N shares and don't reset at block boundaries. Yes, this means you can get paid twice or more often for a single share but also that you can be not paid at all for some others. I suspect you do in your model reset your shares when a block was found. Is this true?
Hmm, should I start another topic? I started a similar thread in Mining->Pools, but that is more for a new payout system which I call normalized Proportional Payout (nPP), which is almost identical to proportional, except it cannot be exploited by hoppers.

I don't see how his model could include anything from previous rounds - I think it resets at boundaries. That just means the model gives a low bound for speedup/efficiency.

I'd really like some details (that i probably won't follow!) though. Or at least more details about
Quote
PPLNS strongly deviates from proportional only during rounds which pay (per share) below the statistical average. Because the hopper "suffers" from PPLNS only during sub-par rounds, the absolute difference between proportional and PPLNS is small.
because it's tantalising me. I'd like to know why the gamma functions allow us to model the PPLNS behaviour.
You are correct, this analysis resets at the pools found block boundaries. I could run Monte Carlo simulations of the PPLNS system, because handling multiple payouts per share (technically, upto N times!) would be quite difficult, I suspect.
Yes, this analysis does include reseting shares after the pool finds a block (not when the system finds a block). Whoops. I don't included: multiple blocks found per share or the decreased payout from including the last N shares (including previous round(s)). These effects work in opposite directions, although I don't know which one is stronger.

PP expectation value was calculated by taking the payout (1/(n+x)) multiplied by the distribution of number of shares (x) required to find a block, and integrating over all possibilities.
n shares are already submitted
the payout after x more shares are submitted (1/(x+n))
probability of a pool solving a block after x shares = exp(-x)
PP = Integrate exp(-x)/(x+n) from x=0 to Infinity = exp(x) E1(x) = exp(x) Gamma(0,y) (this is the incomplete gamma function)

PPLNS (when incorrectly resetting shares after every block)
n shares are already submitted
the payout after x more shares are submitted: 1/(x+n) (x < M)
PPLNS = Integrate exp(-x)/(x+n) from x=0 to M = exp(x) ( Gamma(0,x) - Gamma(0,M+x)) (x < M)


Cheers

1FQoC3zsos22QxZC35fMfP8JteMK9nEQPU


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 23, 2011, 05:10:30 PM
I'm trying to add polmine.pl to "pool.cfg" in last version (0dd8833) without success, I think the problem comes from the spaces in page source, just guessing

[polmine]
name: polmine.pl
mine_address: polmine.pl:8347
api_address:https://polmine.pl/?action=statistics
api_method:re
api_key:stkich:</th><td>\d+</td>
api_index:16,-5
role:mine
#CHANGE THIS
#https://polmine.pl/?action=signup
user: x
pass: x

any help would be appreciated



edit: minor changes


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 23, 2011, 05:35:26 PM
Getting regex failures on triple with Ryouiki's latest. Did they change their stats page or something?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Aexoden on July 23, 2011, 05:38:51 PM
The expected value of a share in a (properly implemented) PPLNS pool is exactly 1.0 (relative to solo or PPS).

Once a share is submitted, the fundamental question of its value is: how many blocks will be found before N more shares have been submitted. This can be modeled as a Poisson process with the expected number of blocks equal to N / difficulty. (If N is the difficulty, you'd expect to find one block. If N is twice the difficulty, you'd expect to find two blocks, and so on.) If (for example), N is one-half the difficulty, you'd expect a share to be paid approximately as follows:

  • No payout: ~60.65%
  • 1 payout: ~30.33%
  • 2 payouts: ~7.58%
  • 3 payouts: ~1.26%
  • 4 or more payouts: ~0.18%

Regardless of the value of N or the difficulty, the expected value will sum out to 1, however.

To make it relevant for this thread, PPLNS pools should be used only as backups, and definitely not as hopping targets.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: frisco on July 23, 2011, 05:39:59 PM
enmaku read my last post


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 23, 2011, 05:44:40 PM
enmaku read my last post

Yeah, I see that now. I already fixed it myself, but in a different way - I added one more replace() to pools.py line 241:
Code:
parsed = response.replace('\n', '').replace('\r','').replace('\t','').replace(' ','')

Took care of the extra spaces they added in the middle of the number as well as the space between the </td> and <td>

Glancing over yours I can kind of see how it's working, regex isn't my strong suit so if I can fix it ANYWHERE but the regex I'll gladly do so  ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 06:43:06 PM
1)Pool.cfg is less flexible?
Well you can still add methods if you need some custom python code.
see json_ec. So no. Its actually more flexible.

2)bb nothing is happening?
You need to mv pools.cfg.default to pools.cfg
I should probably have a error output telling people that.

3)Cmd api_method?
Awesome. Can I get a copyright release burp?

4)Different triple mining code?
I'm going to test that but that works? Really? What I have now for re works also.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: EskimoBob on July 23, 2011, 06:45:01 PM
Can you add http://mining.bitcoin.cz/ to the list?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: streblo on July 23, 2011, 06:46:46 PM
The expected value of a share in a (properly implemented) PPLNS pool is exactly 1.0 (relative to solo or PPS).

Once a share is submitted, the fundamental question of its value is: how many blocks will be found before N more shares have been submitted. This can be modeled as a Poisson process with the expected number of blocks equal to N / difficulty. (If N is the difficulty, you'd expect to find one block. If N is twice the difficulty, you'd expect to find two blocks, and so on.) If (for example), N is one-half the difficulty, you'd expect a share to be paid approximately as follows:

  • No payout: ~60.65%
  • 1 payout: ~30.33%
  • 2 payouts: ~7.58%
  • 3 payouts: ~1.26%
  • 4 or more payouts: ~0.18%

Regardless of the value of N or the difficulty, the expected value will sum out to 1, however.

To make it relevant for this thread, PPLNS pools should be used only as backups, and definitely not as hopping targets.
You're completely right, PPLNS isn't hoppable. (Although PPLNS is subject to a share-withholding attack)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 23, 2011, 07:01:10 PM
I like the idea of having something like this in the pool.cfg file, but only because I dont know what a json_ec is.
Code:
[polmine]
name: polmine.pl
mine_address: polmine.pl:8347
api_address:https://polmine.pl/?action=statistics
role:mine 
api_method:re
api_shares: int(re.search(r"stkich:</th><td>[ 0-9]*</td>", response).group(0)[16:-5].replace(' ',''))
#CHANGE THIS
#https://polmine.pl
user: xxx
pass: xxx

How do I add methods?

edit: also above method would require the api_index


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 23, 2011, 07:11:10 PM
2)bb nothing is happening?
You need to mv pools.cfg.default to pools.cfg
I should probably have a error output telling people that.

Unfortunately it's not that trivial. :-)

Code:
$ ls /opt/bitHopper-4 | grep pool
pool.cfg
pool.cfg.default
pool.py
pool.pyc


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 07:12:30 PM
Do you have mtred in pool.cfg? I'm going to change it but the current start server is mtred.

EDIT: Actually its the last pool parsed in the latest version. Update?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 07:18:02 PM
ahitman:

Code:
[polmine]
name: polmine.pl
mine_address: polmine.pl:8347
api_address:https://polmine.pl/?action=statistics
role:mine  
api_method:re
api_key: stkich:</th><td>[ 0-9]*</td>
api_index:16,-5
api_strip:' '
#CHANGE THIS
#https://polmine.pl
user: xxx
pass: xxx

Oh and I added it to pool.cfg.default


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 23, 2011, 07:21:12 PM
Your awsome c00w, I'm sending some coins your way.

Also nofeemining is going to a score based system (where every share is equal to 50BTC/difficulty) not sure what thats called, but its happening soon.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 07:24:25 PM
When it happens, tell us and we'll switch it to a backup server.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 23, 2011, 07:48:26 PM
anyone know why this would happen? Im guessing this is propably phoenix related, not bithopper? This is after running more than 30hrs without problems:
Code:
[23/07/2011 19:39:06] Result: 8ba20c64 accepted             
[23/07/2011 19:39:20] Result: 7ddd8caa accepted             
[23/07/2011 19:39:23] Result: 18558e4d accepted             
[393.75 Mhash/sec] [9000 Accepted] [860 Rejected] [RPC (+LP)]./miner2.sh: line 3: 15173 Killed                  ./phoenix.py -u http://x:x@localhost:8336/ DEVICE=1 -k phatk VECTORS BFI_INT AGGRESSION=11 FASTLOOP=false WORKSIZE=256 -a 50
root@linuxcoin:/home/user#
running Phoenix 1.50. Thanks


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 07:56:08 PM
Are you using autominer? Otherwise. Hmmm. It doesn't appear for me. i'll look through logs though.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 23, 2011, 08:07:23 PM
c00w, how long is the database setup step supposed to take? I think the script hangs on that portion...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 08:09:02 PM
Database setup should be quick. I will regenerate mine and see how long it takes.

EDIT: Mine took about 3-4 seconds. I could probably make it faster though.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 23, 2011, 08:12:06 PM
Database setup should be quick. I will regenerate mine and see how long it takes.

EDIT: Mine took about 3-4 seconds. I could probably make it faster though.

Mines been stuck for 5 minutes. Restarting script has no effect. I think I should hardcode the path in. That was tlmy problem last time. Any idea which script what line I should add it in?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 23, 2011, 08:15:27 PM
Do you have mtred in pool.cfg? I'm going to change it but the current start server is mtred.

EDIT: Actually its the last pool parsed in the latest version. Update?

I'm pretty sure this is the same problem as there was with the index.html:

Code:
$ /opt/bitHopper-4/bitHopper.py
[22:13:20] Updating Difficulty
[22:13:21] 1690906.2047244
[22:13:21] pool.cfg not found. You may need to move it from pool.cfg.default

$ ls /opt/bitHopper-4/pool.cfg
/opt/bitHopper-4/pool.cfg

:-)

Edit: Is everybody else running bitHopper from inside it's directory??


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: enmaku on July 23, 2011, 08:15:51 PM
Hah, I just fired up namecoind for the first time in weeks since ryouiki added bitparking & namebit support and realized that shortly after I'd given up on solo mining namecoins the last go-round I'd generated a block and not realized it. 50 NMC ~= 1.44 BTC that I didn't know I had. I love finding money  ;D

Thanks ryouiki!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 08:23:31 PM
1) bb? yeah. thats the issue. I'll fix it.
EDIT: Fixed.

2) Database hardcoding?
its in database.py:37.

I would try deleting stats.db and stats.db-journal before hardcoding. Your database may have become corrupt.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 23, 2011, 08:42:18 PM
ahitman:

Code:
[polmine]
name: polmine.pl
mine_address: polmine.pl:8347
api_address:https://polmine.pl/?action=statistics
role:mine 
api_method:re
api_key: stkich:</th><td>[ 0-9]*</td>
api_index:16,-5
api_strip:' '
#CHANGE THIS
#https://polmine.pl
user: xxx
pass: xxx

Oh and I added it to pool.cfg.default

one word, thanks


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: EskimoBob on July 23, 2011, 08:55:22 PM
I get: 
Code:
Error in pool api for nofeemining
Any ideas why?



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: btcminer on July 23, 2011, 08:56:39 PM
I'm getting a lot of disconnects:
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, 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.

And it hops servers back and forth, anyone else getting this?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 09:00:39 PM
EskimoBob: Um. Hmmm. run with --debug to show the errors. And then paste that on github.com/c00w/bitHopper/issues. Or here

btcminer:
Those actually aren't disconnects. Its screwy behavior on the client side. It effects nothing but outputs wierd error messages. I should probably make all of that hidden.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 23, 2011, 09:03:29 PM
just managed to make this thanks to c00w

Code:

[nmc]
name: bitparking.com
mine_address: bitparking.com:9098
api_address: http://bitparking.com/pool
api_method:re
api_key:block</td><td>[ 0-9]+</td>
api_index:14,-5
api_strip:' '
role:mine
#CHANGE THIS
#http://bitparking.com/
user: Nxxx
pass: x

after only 5 minutes I realized namecoins have a different difficulty...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 23, 2011, 09:13:38 PM
looks like triple is still not working with latest revision from c00w. i get

Code:
Error in pool api for triple


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 09:21:07 PM
Triple error?
I get no error. However I did just change how re matching works. check that your triple pool matches the pool in pool.cfg.default.

Namecoins?
Yeah I'm going to add a namecoin difficulty. I'm not sure how we want to deal with the exchange rate issues however...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 23, 2011, 09:29:29 PM
c00w, whats the point of having both password.py and pool.cfg?

Should I only set up pool.cfg?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: anty on July 23, 2011, 09:31:10 PM
Another pool:
Code:
[btcmonkey]
name: bitcoinmonkey.com
mine_address: bitcoinmonkey.com:8332
api_address: http://bitcoinmonkey.com
api_method:re
api_key:Shares\s+this\s+round:\s+<strong>\s+(\d+)
#CHANGE THIS
#http://bitcoinmonkey.com/
role: mine
user: x.y
pass: x
Thanks for implementing the regex-change so fast, c00w!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 09:31:50 PM
password.py is not needed. If I left it in I'll delete it.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 23, 2011, 09:33:41 PM
interesting talk on mtred ... http://www.reddit.com/r/mtred/comments/iu8d3/status_update_on_pool_hopping_protection/c26p2mz

edit: veeery long chat, you've been warned


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: muyoso on July 23, 2011, 09:34:23 PM
Wow, today and yesterday have been AWESOME.  Literally made 5 days worth in 2 days, and there is still 6 hours left to go in day 2.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 23, 2011, 09:45:28 PM
c00w bithopper wont run with the latest version where you removed config files.

Code:
ImportError: No module named password


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 23, 2011, 09:50:30 PM
c00w bithopper wont run with the latest version where you removed config files.

Code:
ImportError: No module named password

remove this line
Code:
from password import *
at the beginning of "pool.py" file, and make sure you renamed "pool.cfg.default" to "pool.cfg"


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 09:54:00 PM
Fixed.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: paraipan on July 23, 2011, 09:57:34 PM
Fixed.

microsoft users would only be dreaming getting bug fixes at that speed :P


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Tmoney on July 23, 2011, 10:19:52 PM
Poolhop with 5GH of raw power.

Code:
[poolmunity]
name: poolmunity.com
mine_address: poolmunity.com:8332
api_address:https://poolmunity.com/api.php?server
role:mine
api_method:json
api_key:totalShares
#CHANGE THIS
#http://poolmunity.com/index.php?PHPSESSID=3iglliv6bvs1r8fvve993l5sd2&action=register
user: little.chinese
pass: nuts


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 23, 2011, 10:34:41 PM
Fixed.

THANKS! You are too fast haha. Last question I promise :p Any way to make arsbitcoin the main backup pool? Eliguis gives me a ton of stales.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 23, 2011, 10:39:05 PM
Poolmunity is added.

kbsbtc:
Either delete eligius or wait. It should select the backup pool with the lowest percentage of rejections.

Look at localhost:8337/stats to see what it believes the rejection rate is.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 23, 2011, 11:08:09 PM
interesting talk on mtred ... http://www.reddit.com/r/mtred/comments/iu8d3/status_update_on_pool_hopping_protection/c26p2mz

edit: veeery long chat, you've been warned

Pool hoppers aren't the problem, you can choose to hop or not (or move somewhere where they will not be affected), its everyone else who's hashing, every time they get a new GPU I loose BTC!??!?! Why cant they all just stop hashing an let me have more income.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 23, 2011, 11:36:09 PM
The expected value of a share in a (properly implemented) PPLNS pool is exactly 1.0 (relative to solo or PPS).

Once a share is submitted, the fundamental question of its value is: how many blocks will be found before N more shares have been submitted. This can be modeled as a Poisson process with the expected number of blocks equal to N / difficulty. (If N is the difficulty, you'd expect to find one block. If N is twice the difficulty, you'd expect to find two blocks, and so on.) If (for example), N is one-half the difficulty, you'd expect a share to be paid approximately as follows:

  • No payout: ~60.65%
  • 1 payout: ~30.33%
  • 2 payouts: ~7.58%
  • 3 payouts: ~1.26%
  • 4 or more payouts: ~0.18%

Regardless of the value of N or the difficulty, the expected value will sum out to 1, however.

To make it relevant for this thread, PPLNS pools should be used only as backups, and definitely not as hopping targets.
You're completely right, PPLNS isn't hoppable. (Although PPLNS is subject to a share-withholding attack)

@Aexoden -  PPLNS definitely won't have a 1.0 expected value, since if the round goes long, you shares are dead

@streblo - first you post a great intro to the topic, then you post more details on PPLNS - thanks btw - now you say you *can't* hop PPLNS? My mind is reeeling, damn you! Why have you changed your mind?



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 23, 2011, 11:39:50 PM
@Aexoden -  PPLNS definitely won't have a 1.0 expected value, since if the round goes long, you shares are dead

it has an expected value of one in a (very) long term view (if you really hop in/out randomly).

@streblo - first you post a great intro to the topic, then you post more details on PPLNS - thanks btw - now you say you *can't* hop PPLNS? My mind is reeeling, damn you! Why have you changed your mind?

he just misunderstand the system and thought N/2 shares means round_shares.
but n/2 shares means difficulty/2 shares - and with that pplns is just not hoppable. the window is to big

(please correct me if i am wrong)



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Aexoden on July 24, 2011, 12:35:19 AM
@Aexoden -  PPLNS definitely won't have a 1.0 expected value, since if the round goes long, you shares are dead

Sometimes (60% of the time, with N = difficulty / 2 like mineco.in) you get nothing, but sometimes you get paid 5 times for a single share. It averages out to 1 over time.

As far as PPLNS's ability to be hopped, it doesn't really matter how large or small N is. You can pay the last 1000 shares only, and it still won't be hoppable. (And your expected value will still be 1.0, with a high variance, though not as high as that of solo mining.) PPLNS with N=1 is effectively solo mining (minus pool fees).


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 24, 2011, 01:39:59 AM
The other extreme btw. would be PPAS (Pay per all shares) - a pool then would always pay out for each and every share that was ever submitted. I call it "ponzi mining"! ;)

After some time however it might get less and less interesting as a new miner to join in such a pool - already with PPLNS some people are complaining that it takes some time until the true hash rate is valued (= until N shares have been mined while you were hashing at full power - everything before underestimates your hash rate and thusly your contribution).

In the end: Every system that starts at round borders is hoppable to some extent (as far as I read about slush's algorithm, he is hoppable too, but only until ~14% into the round afair.)

Should we btw. add configs for as many pools as possible (even non-hoppable ones or ones that fake/delay stats)? After all some people might still choose to mine there for whatever reason + bitHopper seems to develop into a nice statistical tool + providing automatic failover etc. as well with usefulness beyond pool hopping.


On a different note: Does someone know of some machine learning library for Python? I would need in the end to have it look at some data (collection of IP adresses + timestamps) and (based on previous data) determine into which category it falls...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 24, 2011, 01:57:05 AM
in the new cfg.. arsbitoin is the only one with ' ' s around the username and pass.. I assume this is a mistake?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 24, 2011, 02:09:46 AM
The other extreme btw. would be PPAS (Pay per all shares) - a pool then would always pay out for each and every share that was ever submitted. I call it "ponzi mining"! ;)


Plus after the first round it wouldn't be hoppable!  ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: neptop on July 24, 2011, 08:30:49 AM
arsbitcoin has '=' instead of ':' and the spaces around the colons in general are a bit inconsistent.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 24, 2011, 08:38:27 AM
Quote
and the spaces around the colons in general are a bit inconsistent.

Yep, i get that too. It's called irritable bowel syndrome  ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: neptop on July 24, 2011, 08:51:03 AM
lol, I even expected a reply like yours.  ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 24, 2011, 09:12:43 AM
Uh-huh. And it only took 8 minutes too. I am clearly a comic genius.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ewibit on July 24, 2011, 09:25:49 AM
[btcworld]
name: btcworld.de
mine_address: btcworld.de:8332
api_address:                                       <-
role:mine
api_method:json                                  <-
api_key:poolstats,round_shares              <-
#CHANGE THIS
#http://btcworld.de/signup
user: x_y
pass: x

<- means that I don't know what to put in here...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 24, 2011, 09:32:50 AM
is there an api? if so post an example.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ewibit on July 24, 2011, 09:45:18 AM
is there an api? if so post an example.
is this the api?
---------------------------------------
Your userbar BBcode:

http://btcworld.de/userbar/.....................................png (http://btcworld.de)
--------------------------------------


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 24, 2011, 10:02:46 AM
No. It will be something like this:

Code:
{"poolspeed":53.375,"poolRoundShares":536936,"poolWorkers":139,"roundStart":1311459302}


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: msb8r on July 24, 2011, 10:05:59 AM
is there an api? if so post an example.


http://btcworld.de/statistics

Code:
<th
align="right">Valid shares for current round:</th><td>1,095,628</td></tr><tr><th
align="right">

Haven't yet succeeded in getting the regexp right..


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 24, 2011, 10:06:23 AM
Bitp.it now on ESMPPS. Set phasers to 'backup'!


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 24, 2011, 10:07:53 AM
is there an api? if so post an example.


http://btcworld.de/statistics

Code:
<th
align="right">Valid shares for current round:</th><td>1,095,628</td></tr><tr><th
align="right">

Haven't yet succeeded in getting the regexp right..

I don't think ewbit wants to play with regex. I was hoping there'd be an api. There is none?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 24, 2011, 10:13:10 AM



Code:
<th
align="right">Valid shares for current round:</th><td>1,095,628</td></tr><tr><th
align="right">

Haven't yet succeeded in getting the regexp right..


try

Code:
api_key:Valid\s+shares\s+for\s+current\s+round:</th><td>(\d+)
api_strip:','


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: msb8r on July 24, 2011, 10:58:11 AM
Code:
[btcworld]
name: BTC World
mine_address: btcworld.de:8332
api_address:http://btcworld.de/statistics
role:info
api_method:re
api_key:Valid\s+shares\s+for\s+current\s+round:</th><td>([0-9]+(,[0-9]+)*)
api_strip:','
#CHANGE THIS
#http://btcworld.de/signup
user: user
pass: x

This works just fine when I run it through the steps (selectSharesResponse) in python cmd line, but not when I run it "live".


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: msb8r on July 24, 2011, 11:06:11 AM
Code:
[btcworld]
name: BTC World
mine_address: btcworld.de:8332
api_address:http://btcworld.de/statistics
role:info
api_method:re
api_key:Verifizierte\s+Anteile\s+der\s+aktuellen\s+Runde:</th><td>([0-9]+(,[0-9]+)*)
api_strip:','
#CHANGE THIS
#http://btcworld.de/signup
user: user
pass: x

Working.
I'm a stupid stupid man, as I manually set language to English in my browser, but the webpage defaults to German...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: EskimoBob on July 24, 2011, 11:32:10 AM
I think you can eliminate a unnecessary hopping and improve the effectivness.
Here is a really good example of way too hysterical jump:

Code:
[14:23:18] RPC request [d871f000] submitted to nofeemining.com
[14:23:19] RPC request [] submitted to nofeemining.com
Caught, jsonrpc_call insides
DNS lookup failed: address 'nofeemining.com' not found: [Errno -2] Name or service not known.  <--- SO WHAT, can I send work? If yes, do not hopp
[14:23:23] Error in pool api for nofeemining
[14:23:29] triple: 1,860,983
[14:23:29] Server change to mtred, telling client with LP <-- you need one more test for connection to nofeemining.com and if this fails, jump
[14:23:39] RPC request [] submitted to mtred
[14:23:40] LP Call mtred.com:8337/LP
[14:23:40] triple: 1,861,181
[14:23:41] RPC request [] submitted to mtred
[14:23:50] triple: 1,861,371
[14:23:59] triple: 1,861,563
[14:24:03] RPC request [] submitted to mtred
[14:24:05] RPC request [] submitted to mtred
[14:24:09] triple: 1,861,745
[14:24:10] RPC request [5975b000] submitted to mtred
[14:24:11] RPC request [17961000] submitted to mtred
[14:24:19] nofeemining: 602,626
[14:24:19] Server change to nofeemining, telling client with LP <--- previous jump was total waste of resources :) 
[14:24:19] triple: 1,861,959
[14:24:25] RPC request [] submitted to nofeemining.com


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ewibit on July 24, 2011, 11:50:54 AM
btc.x8s.de is over since today:
http://forum.bitcoin.org/index.php?topic=16278.msg393906#msg393906 (http://forum.bitcoin.org/index.php?topic=16278.msg393906#msg393906)

 :(


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 24, 2011, 11:57:47 AM
Code:
[btcworld]
name: BTC World
mine_address: btcworld.de:8332
api_address:http://btcworld.de/statistics
role:info
api_method:re
api_key:Verifizierte\s+Anteile\s+der\s+aktuellen\s+Runde:</th><td>([0-9]+(,[0-9]+)*)
api_strip:','
#CHANGE THIS
#http://btcworld.de/signup
user: user
pass: x

Working.
I'm a stupid stupid man, as I manually set language to English in my browser, but the webpage defaults to German...


I would laugh at you, except I did the exact same thing - maybe that's why I can't get bclc working...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dewon on July 24, 2011, 12:35:41 PM
btc.x8s.de is over since today:
http://forum.bitcoin.org/index.php?topic=16278.msg393906#msg393906 (http://forum.bitcoin.org/index.php?topic=16278.msg393906#msg393906)

 :(

Well, they were already useless for us.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ewibit on July 24, 2011, 12:39:43 PM
Hi
does anybody know why this is going strange:
----------------------------
Error in pool api for btcworld
Error in pool api for triple
----------------------------
(now fresh from github ryouiki)
TIA


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dewon on July 24, 2011, 12:45:03 PM
Hi
does anybody know why this is going strange:
----------------------------
Error in pool api for btcworld
Error in pool api for triple
----------------------------
(now fresh from github ryouiki)
TIA

Check a few pages back, there's a working bit of code for triple by fresco. Dunno about btcworld though, I havent added it yet.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 24, 2011, 12:53:16 PM
btc-poolwatch.com now supports:

ArsBitcoin       
BitClockers
      
BitcoinPool
BitPit (fine for backup now)
BTC Guild
BTC Mine    
Deepbit    
Eclipse MC    
Eligius    
Mainframe MC    
Mineco.in
Mt. Red    
NoFeeMining    
Ozco.in    
PolMine    
rfcpool       
Slush Pool

It also supports turning apis off without having to delete apis. I can't do without this for spot checks at work, or at home if I don't want to log into my miner. Best of all it's free and the dev rearwheels is very responsive - ask for a site to be added and he'll do it.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ewibit on July 24, 2011, 12:58:45 PM
Check a few pages back, there's a working bit of code for triple by fresco. Dunno about btcworld though, I havent added it yet.
is this this one?
http://forum.bitcoin.org/index.php?topic=26866.msg377361;topicseen#msg377361
TIA


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 24, 2011, 01:08:29 PM
poolmunity just started a new block. LO! and behold - hashrate just rose from 3Ghps to over 30Ghps. I wonder what will happen when they hit over 700000 total shares? Careful....


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: dewon on July 24, 2011, 01:44:43 PM
Check a few pages back, there's a working bit of code for triple by fresco. Dunno about btcworld though, I havent added it yet.
is this this one?
http://forum.bitcoin.org/index.php?topic=26866.msg377361;topicseen#msg377361
TIA

This one http://forum.bitcoin.org/index.php?topic=26866.msg391911#msg391911  :) Works for me at least.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: EskimoBob on July 24, 2011, 02:28:40 PM
Code:
[17:27:25] RPC request [] submitted to nofeemining.com
[17:27:26] LP Call nofeemining.com:8332/LP
Caught, jsonrpc_call insides
'user'

What is that I do I need to worry?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: EskimoBob on July 24, 2011, 02:54:15 PM
And it usually ends with this:

Code:
[17:43:41] triple: 2,085,280
[17:43:42] LP triggered from server nofeemining
[17:43:42] Reading LP Response failed
[17:43:48] RPC request [] submitted to nofeemining.com
[17:43:51] triple: 2,085,441
Caught, jsonrpc_call insides
User timeout caused connection failure.
Caught, jsonrpc_call insides
DNS lookup failed: address 'nofeemining.com' not found: [Errno -2] Name or service not known.
[17:43:56] Server change to mtred, telling client with LP
[17:43:56] LP Call mtred.com:8337/LP
[17:44:00] RPC request [] submitted to mtred
[17:44:15] RPC request [] submitted to mtred
[17:44:23] RPC request [] submitted to mtred
[17:44:24] RPC request [36209000] submitted to mtred
[17:44:24] nofeemining: 735,637
[17:44:26] RPC request [895d1000] submitted to mtred
Caught, jsonrpc_call insides
User timeout caused connection failure.
[17:44:30] Server change to None, telling client with LP
Caught, jsonrpc_call insides
'NoneType' object is not subscriptable
Unhandled error in Deferred:
Unhandled Error
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 361, in callback
    self._startRunCallbacks(result)
  File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 455, in _startRunCallbacks
    self._runCallbacks()
  File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 542, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 1076, in gotResult
    _inlineCallbacks(r, g, deferred)
--- <exception caught here> ---
  File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 1020, in _inlineCallbacks
    result = g.send(result)
  File "/blah/MINER/bitHopper/work.py", line 124, in jsonrpc_getwork
    server = new_server(server)
  File "bitHopper.py", line 163, in get_new_server
    self.pool.get_entry(self.pool.get_current())['lag'] = True
exceptions.TypeError: 'NoneType' object does not support item assignment
[17:44:30] Error in pool api for triple
Unhandled Error
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1349, in dataReceived
    finishCallback(data[contentLength:])
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1563, in _finishRequestBody
    self.allContentReceived()
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1619, in allContentReceived
    req.requestReceived(command, path, version)
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 773, in requestReceived
    self.process()
--- <exception caught here> ---
  File "/usr/lib/python2.7/site-packages/twisted/web/server.py", line 127, in process
    self.render(resrc)
  File "/usr/lib/python2.7/site-packages/twisted/web/server.py", line 147, in render
    body = resrc.render(self)
  File "/usr/lib/python2.7/site-packages/twisted/web/resource.py", line 216, in render
    return m(request)
  File "bitHopper.py", line 369, in render_POST
    return bitHopper_Post(request)
  File "bitHopper.py", line 226, in bitHopper_Post
    bithopper_global.log_msg('RPC request [' + rep + "] submitted to " + str(pool_server['name']))
exceptions.TypeError: 'NoneType' object is not subscriptable
Unhandled Error
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1349, in dataReceived
    finishCallback(data[contentLength:])
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1563, in _finishRequestBody
    self.allContentReceived()
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1619, in allContentReceived
    req.requestReceived(command, path, version)
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 773, in requestReceived
    self.process()
--- <exception caught here> ---
  File "/usr/lib/python2.7/site-packages/twisted/web/server.py", line 127, in process
    self.render(resrc)
  File "/usr/lib/python2.7/site-packages/twisted/web/server.py", line 147, in render
    body = resrc.render(self)
  File "/usr/lib/python2.7/site-packages/twisted/web/resource.py", line 216, in render
    return m(request)
  File "bitHopper.py", line 369, in render_POST
    return bitHopper_Post(request)
  File "bitHopper.py", line 226, in bitHopper_Post
    bithopper_global.log_msg('RPC request [' + rep + "] submitted to " + str(pool_server['name']))
exceptions.TypeError: 'NoneType' object is not subscriptable
[17:44:40] triple: 2,086,391
[17:44:40] Error in pool api for triple
Unhandled Error
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1349, in dataReceived
    finishCallback(data[contentLength:])
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1563, in _finishRequestBody
    self.allContentReceived()
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1619, in allContentReceived
    req.requestReceived(command, path, version)
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 773, in requestReceived
    self.process()
--- <exception caught here> ---
  File "/usr/lib/python2.7/site-packages/twisted/web/server.py", line 127, in process
    self.render(resrc)
  File "/usr/lib/python2.7/site-packages/twisted/web/server.py", line 147, in render
    body = resrc.render(self)
  File "/usr/lib/python2.7/site-packages/twisted/web/resource.py", line 216, in render
    return m(request)
  File "bitHopper.py", line 369, in render_POST
    return bitHopper_Post(request)
  File "bitHopper.py", line 226, in bitHopper_Post
    bithopper_global.log_msg('RPC request [' + rep + "] submitted to " + str(pool_server['name']))
exceptions.TypeError: 'NoneType' object is not subscriptable
Unhandled Error
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1349, in dataReceived
    finishCallback(data[contentLength:])
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1563, in _finishRequestBody
    self.allContentReceived()
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1619, in allContentReceived
    req.requestReceived(command, path, version)
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 773, in requestReceived
    self.process()
--- <exception caught here> ---
  File "/usr/lib/python2.7/site-packages/twisted/web/server.py", line 127, in process
    self.render(resrc)
  File "/usr/lib/python2.7/site-packages/twisted/web/server.py", line 147, in render
    body = resrc.render(self)
  File "/usr/lib/python2.7/site-packages/twisted/web/resource.py", line 216, in render
    return m(request)
  File "bitHopper.py", line 369, in render_POST
    return bitHopper_Post(request)
  File "bitHopper.py", line 226, in bitHopper_Post
    bithopper_global.log_msg('RPC request [' + rep + "] submitted to " + str(pool_server['name']))
exceptions.TypeError: 'NoneType' object is not subscriptable
[17:44:50] triple: 2,086,564
[17:44:50] Error in pool api for triple
[17:44:51] triple: 2,086,564
[17:44:51] Error in pool api for triple
Unhandled Error
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1349, in dataReceived
    finishCallback(data[contentLength:])
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1563, in _finishRequestBody
    self.allContentReceived()
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 1619, in allContentReceived
    req.requestReceived(command, path, version)
  File "/usr/lib/python2.7/site-packages/twisted/web/http.py", line 773, in requestReceived
    self.process()
--- <exception caught here> ---
  File "/usr/lib/python2.7/site-packages/twisted/web/server.py", line 127, in process
    self.render(resrc)
  File "/usr/lib/python2.7/site-packages/twisted/web/server.py", line 147, in render
    body = resrc.render(self)
  File "/usr/lib/python2.7/site-packages/twisted/web/resource.py", line 216, in render
    return m(request)
  File "bitHopper.py", line 369, in render_POST
    return bitHopper_Post(request)
  File "bitHopper.py", line 226, in bitHopper_Post
    bithopper_global.log_msg('RPC request [' + rep + "] submitted to " + str(pool_server['name']))
exceptions.TypeError: 'NoneType' object is not subscriptable
^C[Failure instance: Traceback (failure with no frames): <class '_newclient.ResponseFailed'>: [<twisted.python.failure.Failure <class 'twisted.internet.error.ConnectionLost'>>]
]
Unhandled error in Deferred:
Unhandled Error
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 1076, in gotResult
    _inlineCallbacks(r, g, deferred)
  File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 1020, in _inlineCallbacks
    result = g.send(result)
  File "/blah/MINER/bitHopper/work.py", line 65, in jsonrpc_lpcall
    d = update(body)
  File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 1141, in unwindGenerator
    return _inlineCallbacks(None, f(*args, **kwargs), Deferred())
--- <exception caught here> ---
  File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 1020, in _inlineCallbacks
    result = g.send(result)
  File "/blah/MINER/bitHopper/lp.py", line 19, in update_lp
    self.bitHopper.log_msg("LP triggered from server " + self.bitHopper.get_server())
exceptions.TypeError: cannot concatenate 'str' and 'NoneType' objects


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 24, 2011, 02:58:18 PM
most recent pull from git?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: EskimoBob on July 24, 2011, 03:26:15 PM
most recent pull from git?

yes

$ git pull
Already up-to-date.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ewibit on July 24, 2011, 03:34:57 PM
$ git pull
Already up-to-date.
which git do you always take?
from ryouiki or c00w or another?
what is the best?
TIA


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: drummerk12 on July 24, 2011, 03:41:26 PM
Hey guys im kinda new to this.
Ive managed to run the software. And im getting the "Dificulty" score for most servers, except from Triple and BTCmonkey.
all i did is changing the "user" and "pass" values to mi workers ones.
Quote
name: triplemining.com
mine_address: eu1.triplemining.com:8344
api_address:https://www.triplemining.com/stats
api_method:re
api_key:-->([ 0-9]+)</td>
api_strip:' '
role:mine
#CHANGE THIS
#https://www.triplemining.com/register
user: me
pass: mypass

Ive also tried adding triple_user_apikey:XXXXXXXXXXXXXXX(my api) under pass, like other pools shows. Not working for me.
Im getting:
Error in pool api for Triple
Error in pool api for BTCmonkey


Another thing... i started yesterday and its been mining in poolmunity since then. is that normal? Ive set it to hoop between ozco,polmine,mtred,nofee,triple,rfc,poolmunity,btcmonkey.
You guys add more pools? What about the ones listed in .CFG as "not hoper for a reason" Should i enable then aswell?
Thanks in advance.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: drummerk12 on July 24, 2011, 03:47:41 PM
I just realize thoses webpages arent loading in my browser, are those pools down? shoauld it cause that error?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 24, 2011, 03:55:09 PM
http://www.downforeveryoneorjustme.com/triplemining.com

says they can acees tripleming, so it's just you. check localhost:8332 should show you trip's diff.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: drummerk12 on July 24, 2011, 04:04:37 PM
In fact, triple is working fine now, btcmonkey is not.

I quote myself
Quote
Another thing... i started yesterday and its been mining in poolmunity since then. is that normal? Ive set it to hoop between ozco,polmine,mtred,nofee,triple,rfc,poolmunity,btcmonkey.
You guys add more pools? What about the ones listed in .CFG as "not hoper for a reason" Should i enable then aswell?
Ive been in poolmunity like 9 hours now, is that normal?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: MaGNeT on July 24, 2011, 04:20:01 PM
Soon, poolhoppers wil get an IP ban by pools.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: EskimoBob on July 24, 2011, 04:28:17 PM
$ git pull
Already up-to-date.
which git do you always take?
from ryouiki or c00w or another?
what is the best?
TIA

git://github.com/c00w/bitHopper.git

or do I need to use another? If so, please post the git address.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 24, 2011, 04:29:50 PM
Quote
DNS lookup failed: address 'nofeemining.com' not found:

sounds like you are having connection issues, not sure if that is related to your problem though.

are you using your ISPs dns or some other like google dns?

Quote
Ive been in poolmunity like 9 hours now, is that normal?

sometimes

Quote
Soon, poolhoppers wil get an IP ban by pools.

probably, as long as they arent mega douches like bitcoin.lc who cares.

And really I dont mind the outrage over hoppers, but if you are going to be upset at the very least PUT SOMEWHERE ON YOUR SITE THAT HOPPING IS BANNED.

People have been attacking hoppers for breaking the rules when they have no fucking rules posted.

and really any pool owner can come to this thread and find ways to protect themselves. No shit, they can learn from us. It would have been pretty easy to make this more secret and NOT OFFER them that opportunity.

So really I have zero sympathy for the people pissed at us.

None of them said we couldnt do this and then they cry when we do and they can make simple and proven fixes that block us.. so FUCK EM.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: kbsbtc on July 24, 2011, 04:32:29 PM
poolmunity is going to be worthless in hopping because on their forums it says "As you have mentioned that the pool's payout structure will be changed to the
"Meni Rosenfeld method", could you please explain what we can expect?"

"The geometric method only punishes pool hoppers.
For the normal, non-hopping miner it makes no difference."


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 24, 2011, 04:33:02 PM
1) bb? yeah. thats the issue. I'll fix it.
EDIT: Fixed.

Thanks for the fix. But here comes number 3:

https://github.com/c00w/bitHopper/pull/44


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: MaGNeT on July 24, 2011, 05:19:43 PM
poolmunity is going to be worthless in hopping because on their forums it says "As you have mentioned that the pool's payout structure will be changed to the
"Meni Rosenfeld method", could you please explain what we can expect?"

"The geometric method only punishes pool hoppers.
For the normal, non-hopping miner it makes no difference."

More reason for me to "hop" over to Poolmunity...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Tmoney on July 24, 2011, 05:59:17 PM
poolmunity just started a new block. LO! and behold - hashrate just rose from 3Ghps to over 30Ghps. I wonder what will happen when they hit over 700000 total shares? Careful....

Yep and the only reason they had 3GH to begin with is because I added poolmunity to my bithopper config last Monday afternoon--only to test the settings.  Prior to this they had a whopping 300MHs on it's second week of mining.  My wife then went into labor and my 3.5GH got stuck on poolmunity.  Five days later when I came home with my baby girl, I posted the settings on the forum and then C00w added them to source.  Once that happened and bithopper chose poolmunity and they found a block.  The only way this pool was able to find a block was becuase of bithopper.  So it's going to be funny to watch them commit suicide and it's even funnier looking at the complaints on this forum when the sole reason they ever found a block was because of poolhopper.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 24, 2011, 06:10:53 PM
I agree with joules. Pool op's and 24/7 miners get so self righteous about hopping. Yet as we've seen, when pools are hopper friendly they solve blocks faster than comparable size pools who try to block hoppers. Exhibit A: bitp.it. When they were hop friendly they were scoring several blocks. Then they started faking and blocking and got stuck on a 6 day round.
Exhibit B: mtred. They have yet to implement anti pool hopping techniques and are consistently pulling in blocks. Their 24/7 miners whine about hoppers but don't realize the benefit they receive from hoppers. So if they start to mess with stats or otherwise go anti-hopper then we should all just turn them off and let them flail.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 24, 2011, 06:15:07 PM
[ ] You understand this.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: MaGNeT on July 24, 2011, 06:20:54 PM
I agree with joules. Pool op's and 24/7 miners get so self righteous about hopping. Yet as we've seen, when pools are hopper friendly they solve blocks faster than comparable size pools who try to block hoppers. Exhibit A: bitp.it. When they were hop friendly they were scoring several blocks. Then they started faking and blocking and got stuck on a 6 day round.
Exhibit B: mtred. They have yet to implement anti pool hopping techniques and are consistently pulling in blocks. Their 24/7 miners whine about hoppers but don't realize the benefit they receive from hoppers. So if they start to mess with stats or otherwise go anti-hopper then we should all just turn them off and let them flail.


There is no benefit from hoppers.
Only the hoppers benefit.

Finding blocks faster doesn't help anyone mining in a pool, it only makes the share of hoppers bigger and the ones of the non-hoppers smaller.
If you can't calculate that, don't blame me...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: relm9 on July 24, 2011, 06:30:32 PM
Something up with btcmonkey?

Getting error in pool api for it in the latest release, all other pools work fine


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: zybron on July 24, 2011, 06:34:35 PM
Got this for poolmunity from the latest from c00w:

Code:
[14:26:10] LP Call poolmunity.com:8332/LP
[Failure instance: Traceback (failure with no frames): <class 'twisted.internet.
error.ConnectError'>: An error occurred while connecting: 10013: An attempt was
made to access a socket in a way forbidden by its access permissions..
]

Any ideas?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: anty on July 24, 2011, 06:41:39 PM
Code:
[btcworld]
name: BTC World
mine_address: btcworld.de:8332
api_address:http://btcworld.de/statistics
role:info
api_method:re
api_key:Valid\s+shares\s+for\s+current\s+round:</th><td>([0-9]+(,[0-9]+)*)
api_strip:','
#CHANGE THIS
#http://btcworld.de/signup
user: user
pass: x

This works just fine when I run it through the steps (selectSharesResponse) in python cmd line, but not when I run it "live".
Try this regex:
Code:
api_key:Valid\s+shares\s+for\s+current\s+round:</th><td>([0-9]+(?:,[0-9]+)*)
This is untested, but the (?:[your RegEx here]) syntax is used if you want to group something but not generate a group in the output.
BitHopper now takes output.group(1) to get the difficulty from regex. That means the first string that you surround with parentheses. I don't know how nested groups are named, but when you use the (?:[your RegEx here]) syntax it shouldn't matter.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 24, 2011, 06:43:20 PM
I agree with joules. Pool op's and 24/7 miners get so self righteous about hopping. Yet as we've seen, when pools are hopper friendly they solve blocks faster than comparable size pools who try to block hoppers. Exhibit A: bitp.it. When they were hop friendly they were scoring several blocks. Then they started faking and blocking and got stuck on a 6 day round.
Exhibit B: mtred. They have yet to implement anti pool hopping techniques and are consistently pulling in blocks. Their 24/7 miners whine about hoppers but don't realize the benefit they receive from hoppers. So if they start to mess with stats or otherwise go anti-hopper then we should all just turn them off and let them flail.


There is no benefit from hoppers.
Only the hoppers benefit.

Finding blocks faster doesn't help anyone mining in a pool, it only makes the share of hoppers bigger and the ones of the non-hoppers smaller.
If you can't calculate that, don't blame me...

What's more beneficial to 24/7 miners? Getting 1% of 4 blocks per day or getting 4% of 1 block every 4 days? If you can't calculate that, don't blame me.
Ask bitp.it miners if they preferred the time from July 13th to 18th or the time from the 18th to the 23rd. They may have gotten a smaller share but they got nothing for 6 days and when they finally got it, it didn't make up the lost coins.
And pool operators benefit from being able to advertise higher Gh/s rates in the forum. Nothing draws a crowd like a crowd. If you don't already have >1Th/s you are benefitted by hoppers.
In the end, non-hoppers will be viewed as solo miners and CPU miners. Nonhoppers are buggy whip manufacturers and we are in the automobile era.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Tmoney on July 24, 2011, 07:21:10 PM
I agree with joules. Pool op's and 24/7 miners get so self righteous about hopping. Yet as we've seen, when pools are hopper friendly they solve blocks faster than comparable size pools who try to block hoppers. Exhibit A: bitp.it. When they were hop friendly they were scoring several blocks. Then they started faking and blocking and got stuck on a 6 day round.
Exhibit B: mtred. They have yet to implement anti pool hopping techniques and are consistently pulling in blocks. Their 24/7 miners whine about hoppers but don't realize the benefit they receive from hoppers. So if they start to mess with stats or otherwise go anti-hopper then we should all just turn them off and let them flail.


There is no benefit from hoppers.
Only the hoppers benefit.

Finding blocks faster doesn't help anyone mining in a pool, it only makes the share of hoppers bigger and the ones of the non-hoppers smaller.
If you can't calculate that, don't blame me...

What's more beneficial to 24/7 miners? Getting 1% of 4 blocks per day or getting 4% of 1 block every 4 days? If you can't calculate that, don't blame me.
Ask bitp.it miners if they preferred the time from July 13th to 18th or the time from the 18th to the 23rd. They may have gotten a smaller share but they got nothing for 6 days and when they finally got it, it didn't make up the lost coins.
And pool operators benefit from being able to advertise higher Gh/s rates in the forum. Nothing draws a crowd like a crowd. If you don't already have >1Th/s you are benefitted by hoppers.
In the end, non-hoppers will be viewed as solo miners and CPU miners. Nonhoppers are buggy whip manufacturers and we are in the automobile era.

Except it was more like this:  100% 50 coins of one block that may be found in 6 - 7 years.  The 300mhs that the pool was running at prior to the pool being hopped.

To a smaller amount of actual coins that were produced when the block was found because the hoppers.

Yes they are advertising 50Ghs now.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: shotgun on July 24, 2011, 07:25:19 PM
How does this proxy differ from the Flexible Mining Proxy: https://forum.bitcoin.org/index.php?topic=5506.0

I'm currently using that one and it works well. Not sure if they are for the exact same purpose though. Could I run both to get pool H/A and pool hopping? Hmmm... sort of not sure what the differences are between the two apps.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 24, 2011, 08:14:35 PM
1) Pool API Errors?
Well I think we crashed poolmonkey or triggered DDOS protections. I'm going to raise the lower limit from once every 10 seconds to once every 30.

2)Btcworld is added for hopping. bitp.it is added as a backup.

I can't get a translation of the x8s thread to work.

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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Rino on July 24, 2011, 08:27:17 PM
triplemining just went nuts for me
api_key:-->([ 0-9]+)</td>
api_strip:' '
doesnt work for it anymore.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: EskimoBob on July 24, 2011, 08:29:23 PM
did Triplemining managed to kick poolhoppers in the nuts?
Code:
[23:10:52] triple: 2,444,511
[23:11:14] triple: 600
[23:11:19] nofeemining: 6,849
[23:11:26] triple: 682
Caught, jsonrpc_call insides
'user'
[23:11:37] triple: 508
[23:11:46] triple: 1,387
[23:11:56] triple: 1,360
[23:12:06] triple: 811
[23:12:16] triple: 1,747
[23:12:17] nofeemining: 7,685
[23:12:26] triple: 988
[23:12:35] Error in pool api for triple
[23:12:46] triple: 1,393
[23:12:56] triple: 1,729
[23:13:06] triple: 537
[23:13:15] nofeemining: 8,591
[23:13:16] triple: 271
[23:13:26] triple: 881
 

I restarted the bitHopper and:

Code:
[23:23:49] Updating Difficulty
[23:23:49] 1690906.2047244
[23:23:49] Checking Database
[23:23:49] DB Verson: 0.1
[23:23:49] Database Setup
[23:23:50] triple: 1,474
[23:23:50] Server change to triple, telling client with LP
[23:23:50] mtred: 4,480,869
[23:23:50] nofeemining: 18,380
[23:23:50] RPC request [e83d3000] submitted to triplemining.com
Caught, jsonrpc_call insides
'user'
Caught, jsonrpc_call insides
'user'
...
and so on



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 24, 2011, 08:36:29 PM
1) Triple?
Yeah its down. They're doing some fancy lieing I can't figure out.
Its disabled in pool.cfg.default.

2) Being to sensitive with jumps?
If you are just doing a getwork we fail servers quickly because its easy to change servers. And otherwise miners will starve. Especially miners which give up quickly like poclbm.

If you are trying to submit work we won't change that requests server on you.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Clipse on July 24, 2011, 09:04:14 PM
dont bother, they are changing to PPLNS soon.

Rather get away from them now, let them see how hoppers revolting isnt a good thing ;)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: MrSam on July 24, 2011, 09:10:53 PM
dont bother, they are changing to PPLNS soon.

Rather get away from them now, let them see how hoppers revolting isnt a good thing ;)

While i have no real problem with poolhoppers, but what disturbs me is that i (triplemining) get now like 10 /stats url requests every second and that starts to put a way to heavy load on my servers.

I would recommend a central database that is beeing polled by all users ..

Either way, Clipse is right and we will switch to PPLNS soon.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 24, 2011, 09:15:28 PM
dont bother, they are changing to PPLNS soon.

Rather get away from them now, let them see how hoppers revolting isnt a good thing ;)

While i have no real problem with poolhoppers, but what disturbs me is that i (triplemining) get now like 10 /stats url requests every second and that starts to put a way to heavy load on my servers.

I would recommend a central database that is beeing polled by all users ..

Either way, Clipse is right and we will switch to PPLNS soon.


you could have placed a json file on your server which updates thrrough a cron-job.

buty anyway: good look with pplns :)

would be glad if you tell us before you'll switch.

to get triple working again:
open work.py
function: get
    header = {'User-Agent': ['Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0'],'Content-Type': ['application/x-www-form-urlencoded'] }
    d = agent.request('GET', url, Headers(header), None)

(this is from an old version, but should not be very hard to adapt)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 24, 2011, 09:16:57 PM
I agree, there must be a big load on servers due to all the hoppers polling, is it possible to use something like: http://btc-poolwatch.com/ to do a central stats poll and let the clients use that instead of pools directly?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: MrSam on July 24, 2011, 09:19:56 PM
dont bother, they are changing to PPLNS soon.

Rather get away from them now, let them see how hoppers revolting isnt a good thing ;)

While i have no real problem with poolhoppers, but what disturbs me is that i (triplemining) get now like 10 /stats url requests every second and that starts to put a way to heavy load on my servers.

I would recommend a central database that is beeing polled by all users ..

Either way, Clipse is right and we will switch to PPLNS soon.


you could have placed a json file on your server which updates thrrough a cron-job.

buty anyway: good look with pplns :)

would be glad if you tell us before you'll switch.

Okay, i re-enabled the default so triplemining should work for everyone again now.
I will post a message here before we make the switch to pplns... In the meantime: Happy Mining


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 24, 2011, 09:20:25 PM
I agree, there must be a big load on servers due to all the hoppers polling, is it possible to use something like: http://btc-poolwatch.com/ to do a central stats poll and let the clients use that instead of pools directly?

i was already thinking about that.

the problem is this site is big target. it could easily be put offline.
atm i have my poolhopper running at a vserver and its publishing its stats per json.

but i am afraid of publishing this address.

also it would be easier for pools to fake stats explicity for that service.

i would do it for btc. but this could get into a fulltime job very fast.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: EskimoBob on July 24, 2011, 09:24:29 PM
after last pull:

Code:
--- <exception caught here> ---
  File "/usr/lib/python2.7/site-packages/twisted/internet/base.py", line 793, in runUntilCurrent
    call.func(*call.args, **call.kw)
  File "/blah/MINER/bitHopper/pool.py", line 144, in update_api_server
    d = work.get(self.bitHopper.json_agent,info['api_address'],Headers({'User-Agent':'Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/11.04 Chromium/14.0.825.0 Chrome/14.0.825.0 Safari/535.1'}),None)
  File "/usr/lib/python2.7/site-packages/twisted/web/http_headers.py", line 141, in __init__
    self.setRawHeaders(name, values)
  File "/usr/lib/python2.7/site-packages/twisted/web/http_headers.py", line 201, in setRawHeaders
    "instance of %r instead" % (name, type(values)))
exceptions.TypeError: Header entry 'User-Agent' should be list but found instance of <type 'str'> instead


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 24, 2011, 09:26:12 PM
also it would be easier for pools to fake stats explicity for that service.

But it would reduce the work to adapt to any changes to modifying the code at one point, instead of modifying code in every client.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 24, 2011, 09:29:08 PM
would you accept a service which has (sometimes) wrong stats?
we would need a group of trusty people

after all wrong stats means less money


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: ahitman on July 24, 2011, 09:40:26 PM
It is true, it would be a big target and a possible point of failure...

Maybe at least if someone could code up a local proxy one can use to accomplish the same thing, then you would at least only have one request no matter how many bitHoppers you were running.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 24, 2011, 09:41:21 PM
would you accept a service which has (sometimes) wrong stats?

I already am. Since I am usually asleep for ~ 6 hours a day my miners can (and have) get hung up on a pool faking stats.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 24, 2011, 09:43:13 PM
1)eskimo?
Fixed that.

2) Overhammering servers?
Well I raised the minimum to 30 seconds between hits. But you really should be caching your pages and not re-rendering every time you get hit. Or provide a json interface which is a flat file updated regularly...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: MrSam on July 24, 2011, 09:48:01 PM
2) Overhammering servers?
Well I raised the minimum to 30 seconds between hits. But you really should be caching your pages and not re-rendering every time you get hit. Or provide a json interface which is a flat file updated regularly...

Stats allready cached, but please use http://api.triplemining.com/json/stats , this way you are not using SSL and not triggering other unusefull stats.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: MrSam on July 24, 2011, 09:54:30 PM
Please push/spread this api method


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: msb8r on July 24, 2011, 10:18:14 PM
Code:
[triple]
name: Triple Mining
mine_address: eu1.triplemining.com:8344
api_method:re
api_address:http://api.triplemining.com/json/stats
api_key:(\d+)
role:mine

new code for triple.

json isn't applicable as [] are used instead of {}


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 24, 2011, 10: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)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: MrSam on July 24, 2011, 10: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"}


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: msb8r on July 24, 2011, 10: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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 24, 2011, 10: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



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: c00w on July 24, 2011, 10:34:42 PM
1) errors?
Fixed. Again. I messed that up a little.

2) Triple?
Changed to work. I still have it disabled.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 24, 2011, 11: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 :)

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 :)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: MrSam on July 24, 2011, 11: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



Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 25, 2011, 12:16:13 AM
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! ;D


Edit:
I also support a way to get the stats externally/centralized - I have a few ideas already and this could come in handy...


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 25, 2011, 12:19:05 AM
i'll add namecoin pools (and other smaller pools) to this http://www.k1024.de/servers.json tomorrow


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 25, 2011, 01:35:28 AM
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: shotgun on July 25, 2011, 01:54:22 AM
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


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 25, 2011, 02:14:41 AM
http://www.k1024.de/servers.json

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 (http://en.wikipedia.org/wiki/Unix_philosophy) here.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 25, 2011, 02:59:55 AM
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 25, 2011, 03:15:12 AM
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 (http://www.downforeveryoneorjustme.com/bitcoinmonkey.com)

is still showing it as up.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: Sukrim on July 25, 2011, 04:16:21 AM
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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: bb on July 25, 2011, 04:22:44 AM
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?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 25, 2011, 04:32:03 AM
he is saying bitcoinmonkey hasnt developed trust yet.. i believe.


and yes you do have to trust a pool operator.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 25, 2011, 05: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 (https://organofcorti.triplemining.com/register)

I hereby promise that I will never ban hoppers from this minipool  ;D


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 25, 2011, 05: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.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 25, 2011, 06: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


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: joulesbeef on July 25, 2011, 07:25:11 AM
yep when i click your link it says "you already have an account.. If you want to have people join your minipool, give them your personal url!"


kinda lame as I was going to join you. Just dont want to have to abandon my account to do that.


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: organofcorti on July 25, 2011, 07:29:47 AM
You know what else? It would be really hard to split the bits of coins like I was going to because it doesn't depend on the team you join but the referral link you use. So what we could do is:

You (Joules) join via my link (yes, and get a new account, change worker names and passwords etc - sucks I know, sorry) Then you publish your link for the next hopper, then they publish theirs. I get something for you joining, You get something for the next person joining and I get nothing, etc.

Want to give it a try anyway?


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: OCedHrt on July 25, 2011, 07:54:38 AM
I go out for a day a triplemining is faking stats to BitHopper. I'm sure someone noticed, but thought I'd give a warning before catching up on the reading.

Finally had to apply the commit mentioned earlier to fake the user agent: https://github.com/ryouiki/bitHopper/commit/e8fa81053efa238c062d03603c44eeecf4a87523


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: flower1024 on July 25, 2011, 07:56:20 AM
are you sure you switched to the api method suggested by mrsam?
for me its working.

and he already announced HERE that he will fake stats when accessed through the https site (which i am fine with and which i can understand)


Title: Re: bitHopper: Python Pool Hopper Proxy
Post by: hawks5999 on July 25, 2011, 07:57:37 AM
I go out for a day a triplemining is faking stats to BitHopper. I'm sure someone noticed, but thought I'd give a