Bitcoin Forum
April 26, 2024, 09:36:22 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19 »  All
  Print  
Author Topic: Multipool - the pool mining pool (with source code)  (Read 48209 times)
tschaboo
Newbie
*
Offline Offline

Activity: 42
Merit: 0


View Profile
June 29, 2011, 12:15:34 AM
 #201

Welcome back, Multipool!  Smiley

What would be the fair way to fill in the blanks - would miners assent if I distribute the last day's earnings to the miners in proportion equal to their previous day's work? Tough luck though for the guy with the thousand pending shares and one confirmed Roll Eyes.

I think that would be okay, but then please merge the accounts 1NMF8V2raa6B7hE84hYm2D5Djkm2JnvM8D and 1NvfAA7TA647CNZxRpvqkKrSGEHa4oGEwA and 1QEm95rPr8EKMTqYDyQNkUHpChY8Jj8Wct into one, since I changed the payout address to get more compact statistics. It's possible, that only two of those are in your backup though.

They did send notice. On Friday evening. And the server went down sometime Saturday/Sunday. Since I don't have proof of malicious intent, I am not going to libel them. Just something to be on the lookout for when VPS shopping.

Well, okay, they shut down your VPS, which is understandable if they think you didn't pay. But they REALLY shouldn't delete the data before - say - two weeks! Come on, that's a few GB. It's not too much to keep them until everything is worked out. That is malicious and unprofessional.

WTF! Please tell us which host this is. Everyone should stop using it. Shutting down and deleting your instance without notice, that's just unacceptable.

Agreed.

@Multipool: I hope you set up your pool again soon. Then it's going to be my primary pool again (currently I'm using continuum - very nice pool, but shares only have a utility of 1  Wink )
1714167382
Hero Member
*
Offline Offline

Posts: 1714167382

View Profile Personal Message (Offline)

Ignore
1714167382
Reply with quote  #2

1714167382
Report to moderator
Make sure you back up your wallet regularly! Unlike a bank account, nobody can help you if you lose access to your BTC.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
nick5429
Member
**
Offline Offline

Activity: 79
Merit: 14


View Profile
June 29, 2011, 02:45:24 AM
Last edit: June 29, 2011, 03:01:43 AM by nick5429
 #202

Hey Multipool!  Thanks for releasing your source, this is pretty exciting. I've been trying to get it up and running on my system this evening.

I've edited the URLs / IPs in Multipool.py for my local LAN.

I'm currently getting the following error in my log when trying to start things up for the first time:
Code:
starting pool from scratch (no data file provided)
starting pool status monitor
monitoring pools
starting getwork daemon
connection error to solo (p=0.50): 500 Internal Server Error
starting pool rewards and transactions monitor
connection error to solo (p=1.00): 500 Internal Server Error
connection error to solo (p=1.50): 500 Internal Server Error
connection error to solo (p=2.00): 500 Internal Server Error
starting rpc server daemon
connection error to solo (p=2.50): 500 Internal Server Error
main thread online Tue Jun 28 22:31:32 2011
thread 4: rpc daemon online
thread 1: status monitor online
thread 3: reward monitor online
thread 2: getwork daemon online
thread 5: website daemon online
0 users (0 active): hashrate=0 Mhash/s getworks=/min (queue size=30) shares=/min stale=/min
starting website
connection error to solo (p=3.00): 500 Internal Server Error
connection error to solo (p=3.50): 500 Internal Server Error
connection error to solo (p=4.00): 500 Internal Server Error
...lots more connection errors to solo...

I've tried restarting bitcoind, which didn't seem to help.  If bitcoind isn't running, it dies sooner with 'cannot communicate with bitcoind' (or something to that effect).

I tried changing some of the ports (I prefixed all of $port, $website_port, and $longpoll_port with an additional '1'), and the Multipool server started up cleanly once and seemed to be able to connect to all the other servers I have configured just fine.  I was able to connect my miner and submit shares.

While the server was running, I tried to browse to the local Multipool website (with the updated website_port) to check stats, and got:
Code:
404 Not Found
edit: I think this 404 was because I missed one edit, where you have something about tor exit.

After that, I ctrl+C'd to shut things down and it seemed to shut down cleanly.  Trying to start up again with the exact same commandline params, and I'm back to the 'connection error to solo' issues.

Any ideas on the solo issue?  FWIW, I'd be fine with (prefer, actually....) no solo mining and I can just configure something else [a PPS pool?] as a static fallback...

Multipool (OP)
Newbie
*
Offline Offline

Activity: 24
Merit: 0


View Profile
June 29, 2011, 05:44:05 AM
 #203

Code:
404 Not Found
edit: I think this 404 was because I missed one edit, where you have something about tor exit.
Oh right, you need an index.html file for the homepage. Uploaded a simple one to github. Comment out the stuff about tor. All the /user/ pages are dynamically generated though.

I'm currently getting the following error in my log when trying to start things up for the first time:
Code:
connection error to solo (p=0.50): 500 Internal Server Error
You need a line for the "solo" pool in your accounts.conf file, listing your bitcoind username and password (same as in bitcoind.conf, but a second time). You could probably use another pool's login info, as long as you change the "solo" address in pools.conf. The solo pool is used to serve getworks when all other pools are slow/unavailable. These requests are blocking though, so make sure your default pool doesn't go down and has good responsiveness.

If you do decide to remove the solo pool entirely, comment out these lines:
Code:
569: # $do_send{"solo"}=$pools{solo} if $solo_queue->pending<$WORK_QUEUE_SIZE/4;
438: # $longpoll_send++ if $pool->{name} eq "solo";
uncomment 439: $longpoll_send++ if (!$switched_pools and $ranked_pools[0] and $pool->{name} eq $ranked_pools[0]->{name});
replace 1531-2:
    if ($lawful){
    $pair = $work_queue->dequeue_nb;
with:
    if ($lawful or 1){
    $pair = $work_queue->dequeue;
replace 1663-4:
    if ($lawful){                                                                                                         
    $pair = $work_queue->dequeue_nb;
with:
    if ($lawful or 1){                                                                                                         
    $pair = $work_queue->dequeue;

Edit:  And you received notice at least 24 hours prior to the pool shutting down on Friday the 24th of June during the evening in whatever time zone you are in.  You posted twice on the 25th and once on the 26th, neglecting both days to inform people of the potential issue?
I don't check every single email account every single day, particularly not on weekends or days that I'm not specifically working on Multipool. Also, Multipool is as much hosted in Taiwan as bitcoins.lc is hosted in the Caribbean.
M4v3R
Hero Member
*****
Offline Offline

Activity: 607
Merit: 500


View Profile
June 29, 2011, 07:09:54 AM
Last edit: June 29, 2011, 07:41:47 AM by M4v3R
 #204

I managed to get it up and running, but the getwork thread fails to execute:

Quote
Thread 2 terminated abnormally: Invalid value for shared scalar at /usr/share/perl/5.10/Thread/Queue.pm line 90, <GEN4> line 11.

Any help with that?

Edit: I updated Thread::Queue CPAN module and now it works! I have other problem though: when requesting /user/BITCOIN_ADDRESS from the server, I always get "404 not found" message.

Edit 2: Resolved that one as well. It required a change in the code, on line 1303 you have to replace multipool.hpc.tw with an hostname you use. It works great so far, thanks!
M4v3R
Hero Member
*****
Offline Offline

Activity: 607
Merit: 500


View Profile
June 29, 2011, 10:19:26 AM
 #205

One question:

Quote from: README
To pay users, create a "main" account, move funds to it, and run:
./Multipool.pl save/`ls -t save|head -n1` getpayouts | tee pay
bitcoind sendmany main `cat pay` payout

From what I understand - I have to manually move the funds from all accounts associated to the pools to "main" account, and then execute these commands? Is there any automatic way to do this? And do you use a cron script for running this periodically?

Also, please post your Bitcoin address in the first post so we can donate to you! Smiley
Sukrim
Legendary
*
Offline Offline

Activity: 2618
Merit: 1006


View Profile
June 29, 2011, 10:39:50 AM
 #206

We could extend the script to send the necessary requests for payouts (usually a button to click --> POST request to the pool website) to each pool.

https://www.coinlend.org <-- automated lending at various exchanges.
https://www.bitfinex.com <-- Trade BTC for other currencies and vice versa.
nick5429
Member
**
Offline Offline

Activity: 79
Merit: 14


View Profile
June 29, 2011, 12:46:05 PM
 #207

I'm currently getting the following error in my log when trying to start things up for the first time:
Code:
connection error to solo (p=0.50): 500 Internal Server Error
You need a line for the "solo" pool in your accounts.conf file, listing your bitcoind username and password (same as in bitcoind.conf, but a second time). You could probably use another pool's login info, as long as you change the "solo" address in pools.conf. The solo pool is used to serve getworks when all other pools are slow/unavailable. These requests are blocking though, so make sure your default pool doesn't go down and has good responsiveness.

If you do decide to remove the solo pool entirely, comment out these lines
...

I did have the solo line in my accounts.conf -- I think that error was a result of my having recently installed bitcoind on this server, and it still needing to catch up on downloading the previous blocks before it would process the requests that Multipool sent its way.

Last night, bitcoind was using 50-75% CPU (and not working with Multipool).  This morning, it's almost completely idle (and works consistently with Multipool).

Thanks also for the tips about the possibility of removing the solo pool.
M4v3R
Hero Member
*****
Offline Offline

Activity: 607
Merit: 500


View Profile
June 29, 2011, 12:49:59 PM
 #208

Unless you have a few GH/s to throw at it, I'd disable the solo pool, as it will not give you profits for weeks and just "waste" GPU cycles Smiley.
Sukrim
Legendary
*
Offline Offline

Activity: 2618
Merit: 1006


View Profile
June 29, 2011, 01:36:02 PM
 #209

I think we'll need to move the pool specific functions ([poolname]_rewards) to the pools.conf file, to be a bit more portable/extendable... Maybe something like a "plugin" system.

Unfortunately I didn't yet code a lot in Perl and porting all this stuff to Python is a task for later (at least for me). Would be great to at least have a proper git repo etc. running!
Instead of solo something like Eligius with PPS + nearly 0 fees would be interesting (if people don't exploit it by withholding winning shares that is...) or maybe even namecoin.

https://www.coinlend.org <-- automated lending at various exchanges.
https://www.bitfinex.com <-- Trade BTC for other currencies and vice versa.
MiningBuddy
Hero Member
*****
Offline Offline

Activity: 927
Merit: 1000


฿itcoin ฿itcoin ฿itcoin


View Profile
June 29, 2011, 03:52:05 PM
 #210

hmm, what happened to the git repo? Seems to have been deleted.

Sukrim
Legendary
*
Offline Offline

Activity: 2618
Merit: 1006


View Profile
June 29, 2011, 04:15:56 PM
 #211

There is no git repo as it seems... only downloads

https://www.coinlend.org <-- automated lending at various exchanges.
https://www.bitfinex.com <-- Trade BTC for other currencies and vice versa.
MiningBuddy
Hero Member
*****
Offline Offline

Activity: 927
Merit: 1000


฿itcoin ฿itcoin ฿itcoin


View Profile
June 29, 2011, 04:29:50 PM
 #212

There is no git repo as it seems... only downloads
Ah, sorry.. I had a brain fart.  Roll Eyes

https://github.com/multipool/Multipool/downloads for anyone else that might be looking for the files.

nick5429
Member
**
Offline Offline

Activity: 79
Merit: 14


View Profile
June 29, 2011, 05:21:55 PM
 #213

I've managed to get the Multipool software running on my server to my satisfaction.  After a few spot checks, the accepted share rate from my miner connecting to my Multipool clone is about where I expect it to be.

While Multipool (the user) has graciously made Multipool (the software) open-source, it seems like something a lot of people aren't going to have the patience (or an available server) to set up.  With pool hopping now available fairly easily available to everyone, (IMO) you'd be crazy to mine on a proportional pool without pool hopping.

Since I'm going to be running a Multipool clone anyway for my own personal use, I figured I would offer access to the community for anyone who is interested in using a Multipool clone, but doesn't want to deal with setting it up.  

I'll do what I can to provide good uptime (after all, I'm using this for my personal mining as well), but the only promise I can make is that I'm not going to intentionally screw you over Smiley  I'll make payments as often as is practical.

Server: multiclone.us.to
Mining Port: 18337
Website Port: 18080  (which makes the stats webpage available at http://multiclone.us.to:18080/)

Just like with the original Multipool, there's no need for registration or anything -- you just connect to the pool with a Bitcoin address as the username, and anything for the password.

Example mining command:
Code:
./phoenix.py -u http://17x6iXEGfE94VnDwUMS1E5fii3FEqXLrEf:x@multiclone.us.to:18337 DEVICE=0 VECTORS BFI_INT -k phatk

If anyone wants to help test this by throwing some hashes at the server, I would be much obliged.
Zoomer
Hero Member
*****
Offline Offline

Activity: 658
Merit: 500



View Profile
June 29, 2011, 05:38:15 PM
 #214

I started on the multipool the day before it went down, so this is awesome. Probably have about a thousand pending shares. Wonder what 14CFNKinKKZ9fjaEbrGJ4PqBSZ28trx9FN has?
freedominnumbers
Newbie
*
Offline Offline

Activity: 33
Merit: 0



View Profile
June 29, 2011, 06:27:27 PM
 #215

200Mh online.
M4v3R
Hero Member
*****
Offline Offline

Activity: 607
Merit: 500


View Profile
June 29, 2011, 09:12:00 PM
 #216

I experience one problem. After running the Multipool server for few hours, it slows down. The output in the console slows down and then workers are experiencing idle times. Restarting the server helps. Is this a memory leak, or maybe the log file slows whole thing down? Anyone noticed it?
nick5429
Member
**
Offline Offline

Activity: 79
Merit: 14


View Profile
June 29, 2011, 09:17:30 PM
 #217

200Mh online.

Thanks!  From what I can see, it looks like things are working well for you+me+2-3 other users so far.
Multipool (OP)
Newbie
*
Offline Offline

Activity: 24
Merit: 0


View Profile
June 29, 2011, 09:37:17 PM
 #218

I managed to get it up and running, ...
Edit 2: Resolved that one as well. It required a change in the code, on line 1303 you have to replace multipool.hpc.tw with an hostname you use. It works great so far, thanks!
Great to hear the pool works for other people as well!

I experience one problem. After running the Multipool server for few hours, it slows down. The output in the console slows down and then workers are experiencing idle times. Restarting the server helps. Is this a memory leak, or maybe the log file slows whole thing down? Anyone noticed it?
The pool worked fine for several days at a time with ~30 users connected. What is the cpu/memory usage for Multipool.pl and bitcoind?

There is one correction I should make. On line 520 replace:
Code:
my $pool_name=$ranked_pools[$i]->{name};
with
Code:
my $pool_name=$pool->{name};
. It is some threading race issue I was working on which crashes the pool once a day or so.

I think we'll need to move the pool specific functions ([poolname]_rewards) to the pools.conf file, to be a bit more portable/extendable... Maybe something like a "plugin" system.

Unfortunately I didn't yet code a lot in Perl and porting all this stuff to Python is a task for later (at least for me). Would be great to at least have a proper git repo etc. running!
Instead of solo something like Eligius with PPS + nearly 0 fees would be interesting (if people don't exploit it by withholding winning shares that is...) or maybe even namecoin.
I'll configure the repo properly at some point. The computer I used didn't have git, and I was surprised to find out that github doesn't have any web upload interface that I could see, besides the "downloads" button. The poolname_rewards functions can indeed probably be moved into separate files for easier sharing, along with whatever is in pools.conf presently. Just remember that poolname_rewards is not critical for single miners, since everything necessary for pool hopping is already contained in pools.conf.

Quote from: README
To pay users, create a "main" account, move funds to it, and run:
./Multipool.pl save/`ls -t save|head -n1` getpayouts | tee pay
bitcoind sendmany main `cat pay` payout
From what I understand - I have to manually move the funds from all accounts associated to the pools to "main" account, and then execute these commands? Is there any automatic way to do this? And do you use a cron script for running this periodically?

Also, please post your Bitcoin address in the first post so we can donate to you! Smiley
I was too hesitant to set the payouts on automatic, since that is the one single step that is irreversible in case of any miscalculations. As it is, there are only two commands to run, with a pause in between to allow you to glance over the numbers to see that they are sensible. And moving btc gold from account to account... builds strength. You can definitely automate all these steps in a cron script if you are more fearless Wink. Also, I don't beg, and neither did I do this for btc.

Unless you have a few GH/s to throw at it, I'd disable the solo pool, as it will not give you profits for weeks and just "waste" GPU cycles Smiley.
You misunderstand: the solo pool isn't there to "waste" your GPU cycles on solo mining, it is there to ensure that you do not waste your GPU cycles. It is probably unlikely that you will run into this problem as a single miner, but there have been times for Multipool when enough pools went down/had insufficient responsiveness that Multipool was unable to pull enough getworks to satisfy all the connected miners. If not for solo shares, those miners would have been idling. Solo shares also mitigate the harm that uncooperative miners can do (see "user_lawful" function). In normal operations, the only time you, as a single miner, will ever receive solo shares is at the very beginning, before multipool has had time to connect to the other pools.
nick5429
Member
**
Offline Offline

Activity: 79
Merit: 14


View Profile
June 29, 2011, 10:45:05 PM
Last edit: June 29, 2011, 10:57:22 PM by nick5429
 #219

There is one correction I should make. On line 520 replace:
Code:
my $pool_name=$ranked_pools[$i]->{name};
with
Code:
my $pool_name=$pool->{name};
. It is some threading race issue I was working on which crashes the pool once a day or so.

When making this tweak, I noticed some nearby code specific to Slush that seems to handle multiple workers.  Did you find it necessary/beneficial to have multiple workers configured for each pool?  Just for Slush?  Is there any special syntax needed for specifying additional workers in the accounts.conf file, or do I just have multiple line-entries for Slush?

Multiclone is up to about 3-4 GHash/sec now, and seems to be handling things beautifully.  Total CPU load average on the server is under 7%.  Looks like there's room in the pool for everyone; jump on in! Smiley

Did a quick reboot of the pool to enable to tweak, expecting to see a disconnected/reconnecting message, but the process was so quick my miner didn't even seem to notice.  Looked like everyone who had been connected successfully reconnected after the restart.  Cool.
nick5429
Member
**
Offline Offline

Activity: 79
Merit: 14


View Profile
June 29, 2011, 10:56:12 PM
 #220

@Multipool:

One potential issue I noticed when I was testing locally before opening this up to everyone else...

I had thrown the 'production' switch, which caused the work queue entries to start out at 30, but was only testing with about 300MHash/sec.  Occasionally (presumably after a new round began on the current pool or something), I would get dozens of invalid shares in a row from that pool.  Decreasing the work queue size seemed to mitigate the issue somewhat.

I occasionally saw work queue 'purge' messages going by in the log, but never noticed a non-zero number of entries being purged during these rejection streaks.

I noticed it in particular from Mt. Red, to the extent that I ended up disabling them as a target pool (and I don't specifically remember if it occurred on other pools or not), so it may have been a pool-specific thing, but I thought I'd mention it.

If you feel like explaining it, how is the work queue purging determined?  I know that Multipool-the-server implements Long Polling.  What about Multipool-the-client? 


aside:
For anyone running Multipool locally/with a fairly small hash rate, I might suggest decreasing the 'production' work queue size which defaults to 30 queue entries (around line 43) to avoid similar issues.  OTOH, maybe this is a non-issue and I was just having problems with Mt. Red.
Pages: « 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!