Bitcoin Forum
December 05, 2016, 06:36:53 PM *
News: Latest stable version of Bitcoin Core: 0.13.1  [Torrent].
 
   Home   Help Search Donate Login Register  
Pages: [1] 2 3 »  All
  Print  
Author Topic: Pool Hopping: The SIMPLE Solution!  (Read 7182 times)
NickW
Newbie
*
Offline Offline

Activity: 27


View Profile
July 11, 2011, 01:06:36 PM
 #1

Edit: Ok, so it seems that something similar to this already exists: PPLNS. My bad.

While I'm not fundamentally against pool hopping as I believe people should use whatever legitimate advantages that they can to their favour, I think it will become a problem in the future for anybody not hopping. I envisage the future of mining containing a small number of individuals or small groups with large hashing power. For instance, 10% of the miners with 90% of the total hashing power. It would be in their best interests to pool hop to maximise their earnings, and would make it more difficult for smaller players who don't hop.

My simple solution? Calculate payouts based on the fraction of submitted shares submitted during a time window just before finding a block.

For instance, let's say there's a fairly large pool which has the hashing power to average one block per hour. Pool hoppers would be jumping out of the pool after the round has latest longer than 43.5% of the expected shares (reference here: https://forum.bitcoin.org/index.php?topic=3165.0) which is about 25 minutes for our "60 minute average block time" pool. My proposal to this pool to prevent hopping would be to calculate payout based on the 20 minutes (or less) before the block was found. Let's say the pool finds a block at 08:43. Payout would be calculated on the shares submitted between 08:23 and the share that found the block.

Because every share has an equal chance of finding a block as any other share, the miner does not know where this "20 minute" period will be. This "20 minute period" should be a representative sample of each miner's effort to find each block.

The size of the window in which payout is calculated should be decided on a pool-by-pool bases depending on the hashing power of the pool. It should be less than the time it takes for 43.5% of the average number of shares per round to be submitted. For instance, Deepbit might use a 10 minute window. Obviously, payouts for rounds which are shorter than this time period would be calculated from the full round length.


The only disadvantage I see is slightly more variance for non 24-7 miners and low power miners (such as CPU miners), especially on the smaller pools with longer rounds.

Update: The above (the strikethrough text) has been decided to be slightly incorrect (see future posts). Block finding boundaries must be crossed to prevent hopping and the 43.5% rule does not matter. For instance, if the "window" is 60 minutes and the pool finds blocks in less than that time, some shares must be paid out for more than once, with each payment in proportion to the amount number of shares in total in the "window". The length of the window therefore does not matter, provided round boundaries are crossed meaning 24 hour windows are possible in theory to reduce variance on smaller pools.

1DRCGzEkMhhzieEkDg3e8kUKt1mVM5uqNs
1480963013
Hero Member
*
Offline Offline

Posts: 1480963013

View Profile Personal Message (Offline)

Ignore
1480963013
Reply with quote  #2

1480963013
Report to moderator
1480963013
Hero Member
*
Offline Offline

Posts: 1480963013

View Profile Personal Message (Offline)

Ignore
1480963013
Reply with quote  #2

1480963013
Report to moderator
1480963013
Hero Member
*
Offline Offline

Posts: 1480963013

View Profile Personal Message (Offline)

Ignore
1480963013
Reply with quote  #2

1480963013
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1480963013
Hero Member
*
Offline Offline

Posts: 1480963013

View Profile Personal Message (Offline)

Ignore
1480963013
Reply with quote  #2

1480963013
Report to moderator
1480963013
Hero Member
*
Offline Offline

Posts: 1480963013

View Profile Personal Message (Offline)

Ignore
1480963013
Reply with quote  #2

1480963013
Report to moderator
Artefact2
Full Member
***
Offline Offline

Activity: 124


View Profile WWW
July 11, 2011, 01:23:49 PM
 #2

Congratulations, you just pretty much reinvented PPLNS (Pay-Per-Last-N-Shares).

A pool-biased blockchain representation, by me: pident (WTFPL)
NickW
Newbie
*
Offline Offline

Activity: 27


View Profile
July 11, 2011, 01:31:15 PM
 #3

Ah, so I have. Sorry about that Sad.

I was going off the methods I saw here https://en.bitcoin.it/wiki/Comparison_of_mining_pools and a fairly brief forum search.

1DRCGzEkMhhzieEkDg3e8kUKt1mVM5uqNs
Artefact2
Full Member
***
Offline Offline

Activity: 124


View Profile WWW
July 11, 2011, 01:54:32 PM
 #4

Don't be ! It's arguable an obscure method indeed, since it's not used in any pool at the moment.

You can see PPLNS in action (from a hopper's POV or a regular miner's POV) on this page : http://eligius.st/~luke-jr/samples/800MH/

A pool-biased blockchain representation, by me: pident (WTFPL)
Sukrim
Legendary
*
Offline Offline

Activity: 1848


View Profile
July 12, 2011, 12:44:27 AM
 #5

What do you do on very short (30 second) rounds then, then the number "N" has not yet been reached?

https://bitfinex.com <-- leveraged trading of BTCUSD, LTCUSD and LTCBTC (long and short) - 10% discount on fees for the first 30 days with this refcode: x5K9YtL3Zb
Mail me at Bitmessage: BM-BbiHiVv5qh858ULsyRDtpRrG9WjXN3xf
muyoso
Member
**
Offline Offline

Activity: 84



View Profile
July 12, 2011, 02:26:08 AM
 #6

What do you do on very short (30 second) rounds then, then the number "N" has not yet been reached?

Obviously all the shares would be counted.  It only takes affect when the time is greater than "N".  The pool would drop the shares submitted prior to "N" from consideration after "N" is reached.

I drink it up!
jjiimm_64
Legendary
*
Offline Offline

Activity: 1680


View Profile
July 12, 2011, 05:35:44 AM
 #7

...
what about the miners that work for x hours on a long block....  take the miners offline to do. well whatever we do when we take a miner offline..  then all the work that was done would be lost....  I am not going to use a pool that would do that.

1jimbitm6hAKTjKX4qurCNQubbnk2YsFw
NickW
Newbie
*
Offline Offline

Activity: 27


View Profile
July 12, 2011, 12:03:19 PM
 #8

...
what about the miners that work for x hours on a long block....  take the miners offline to do. well whatever we do when we take a miner offline..  then all the work that was done would be lost....  I am not going to use a pool that would do that.

A pool that is averaging many hours per block will also have a time window for shares which is several hours long.

Conversely to what you said, what about when a pool has been working for x hours on a long block and you join the pool right before they find it. You're then getting paid out a larger proportion to what you submitted the whole round. These possible situations average out exactly over a long period of time.

Like I said in the OP, non 24-7 miners would see a much larger variance in their payouts; both up and down. It will tend to even out over a long period of time by the law of large numbers.

1DRCGzEkMhhzieEkDg3e8kUKt1mVM5uqNs
Sukrim
Legendary
*
Offline Offline

Activity: 1848


View Profile
July 12, 2011, 12:04:22 PM
 #9

What do you do on very short (30 second) rounds then, then the number "N" has not yet been reached?

Obviously all the shares would be counted.  It only takes affect when the time is greater than "N".  The pool would drop the shares submitted prior to "N" from consideration after "N" is reached.

Exactly, so Pool hopping could be still worth it, as there are SOME shares that are then worth far more than others.

If you consider shares across "rounds" this might help though.

(1000 shares submitted for the first block, 100 for the second block --> look at the last 500 shares of the first block for payout there and the last 400 of the first block and 100 of the second block for the payout of the second one).
I'm not sure if this stays fair if difficulty changes though.

Also as jjiimm_64 said: if you can't mine 24/7 reliably such a pool is not good to use at all compared to a PPS one.

https://bitfinex.com <-- leveraged trading of BTCUSD, LTCUSD and LTCBTC (long and short) - 10% discount on fees for the first 30 days with this refcode: x5K9YtL3Zb
Mail me at Bitmessage: BM-BbiHiVv5qh858ULsyRDtpRrG9WjXN3xf
NickW
Newbie
*
Offline Offline

Activity: 27


View Profile
July 12, 2011, 01:20:37 PM
 #10


Exactly, so Pool hopping could be still worth it, as there are SOME shares that are then worth far more than others.


This is not true. While in a very short round the shares are worth more than others, it does not make it possible to pool hop.

Let's say a hopper jumps into a pool just after it's found a block in the hope it will find the next one quicker than the time period that payout shares are to be collected over. Let's say this share counting window is 20 minutes, and the hopper only stays in the pool for the first 10 minutes. He then jumps to the next pool in the hope that the previous pool now finds the share in less than 20 minutes so that each share he submitted is worth more. If this happens then the hopper has profited. If this doesn't happen and the round lasts any longer than 30 minutes then the hopper earns absolutely nothing from that pool that he spent 10 minutes in as the payout share collecting window is sliding with the length of time of the round.

Earning more per share in the shorter rounds vs maybe earning absolutely nothing in the longer rounds (for a hopper) should tend to even out over a long period of time by the law of large numbers meaning that hoppers earn exactly the same as non hoppers, only with greater variance.

1DRCGzEkMhhzieEkDg3e8kUKt1mVM5uqNs
Sukrim
Legendary
*
Offline Offline

Activity: 1848


View Profile
July 12, 2011, 08:57:31 PM
 #11

As it is STILL a proportional system, as soon as some shares are predictably worth more than others (in a 20 minutes sliding window that is restarted at each found block, every share in the first 20 minutes is worth more than any other share later in that round - the only difference is that later on you get 0 instead of a smaller payout) you can very likely (ab-)use this to your advantage.

Anyways:
This method is still unfair (in the sense of: creating massive variance) to users that mine irregularly compared to a PPS system. As difficulty is changing, even by the "law of large numbers" you might run into situations where a high variance kills a LOT of your reward(s) and you'll never be able to make up for it.

https://bitfinex.com <-- leveraged trading of BTCUSD, LTCUSD and LTCBTC (long and short) - 10% discount on fees for the first 30 days with this refcode: x5K9YtL3Zb
Mail me at Bitmessage: BM-BbiHiVv5qh858ULsyRDtpRrG9WjXN3xf
NickW
Newbie
*
Offline Offline

Activity: 27


View Profile
July 12, 2011, 10:15:07 PM
 #12

As it is STILL a proportional system, as soon as some shares are predictably worth more than others (in a 20 minutes sliding window that is restarted at each found block, every share in the first 20 minutes is worth more than any other share later in that round - the only difference is that later on you get 0 instead of a smaller payout) you can very likely (ab-)use this to your advantage.

Anyways:
This method is still unfair (in the sense of: creating massive variance) to users that mine irregularly compared to a PPS system. As difficulty is changing, even by the "law of large numbers" you might run into situations where a high variance kills a LOT of your reward(s) and you'll never be able to make up for it.


It is not possible to abuse this system as far as I know. If you think you know of a way then please explain it Smiley. The point is that you do not know when that "20 minute" sliding window will be as every share is equally likely to solve a block at a given difficulty as any other. If you don't know when it will be you can't hop around pools aiming for just this window.

About the variance: I don't thin it would be that much more than it is now unless you're a very scarce miner only doing a few random hours mining per week on a small pool with average rounds longer than a few hours

1DRCGzEkMhhzieEkDg3e8kUKt1mVM5uqNs
JoelKatz
Legendary
*
Offline Offline

Activity: 1386


Democracy is vulnerable to a 51% attack.


View Profile WWW
July 12, 2011, 10:38:14 PM
 #13

Maybe I'm missing something, but I don't see why this prevents or even discourages pool hopping. The reason you would want to leave a proportional pool is because once there are a large number of shares trying to earn the current block, each share you add is expected to be worth less. With this scheme, you still have the same incentive to leave a pool if it has gone a long time without finding a block.

First, by leaving, you have no effect on the value of the shares you have already submitted. They'll either be part of the last N shares or they won't. So you'll still get paid the same for the work already done.

And your new shares are still worth less. This will be a block where >N shares will be submitted in total, while in some blocks <N shares will be submitted in total. So you know that any shares you submit now will be worth less than the expected per-share value if you wait until the pool finds a block to start submitting shares.

So this does nothing to discourage pool hopping. With this scheme, it is still to the miner's advantage to leave a proportional pool and submit to a pay-per-share pool if the proportional pool has gone a long time without solving a block.

Worse, if N is large, it actually encourages pool hopping because there's a good chance that joining the pool right after it finds a block will bring a 'jackput' 50/[<N] payout rather than the usual 50/N payout. And if N is small, it penalizes slower miners who may not get any shares in at all during the payout window.

I am an employee of Ripple.
1Joe1Katzci1rFcsr9HH7SLuHVnDy2aihZ BM-NBM3FRExVJSJJamV9ccgyWvQfratUHgN
NickW
Newbie
*
Offline Offline

Activity: 27


View Profile
July 13, 2011, 10:43:19 AM
 #14

Maybe I'm missing something, but I don't see why this prevents or even discourages pool hopping. The reason you would want to leave a proportional pool is because once there are a large number of shares trying to earn the current block, each share you add is expected to be worth less. With this scheme, you still have the same incentive to leave a pool if it has gone a long time without finding a block.
There is no incentive to leave after a long time not finding a block. All results prior to the time window are thrown away, and there is no way of telling if your shares will be in the window or not while mining.

First, by leaving, you have no effect on the value of the shares you have already submitted. They'll either be part of the last N shares or they won't. So you'll still get paid the same for the work already done.

And your new shares are still worth less. This will be a block where >N shares will be submitted in total, while in some blocks <N shares will be submitted in total. So you know that any shares you submit now will be worth less than the expected per-share value if you wait until the pool finds a block to start submitting shares.
I think you’re missing the point that the each share submitted during the window is worth more than the expected value of a single share in a normal proportional system, even if the window is the full length. Each share in the window is worth more than double (essentially triple) the expected value of a single share otherwise.

So this does nothing to discourage pool hopping. With this scheme, it is still to the miner's advantage to leave a proportional pool and submit to a pay-per-share pool if the proportional pool has gone a long time without solving a block.
No it’s not. The risk you are taking by continuing to submit to the "windowed" pool is that the shares you are submitting are worth much more than shares at a normal proportional or PPS pool, provided that they are inside the window.

Worse, if N is large, it actually encourages pool hopping because there's a good chance that joining the pool right after it finds a block will bring a 'jackput' 50/[<N] payout rather than the usual 50/N payout. And if N is small, it penalizes slower miners who may not get any shares in at all during the payout window.
This still needs some proper mathematical calculations, but I’m pretty sure the "jackpot" payout for very short rounds is cancelled out by the fact that any hopper trying to do this will then have all of their shares from the start of the round dropped as soon as a particular round is longer than the window.

1DRCGzEkMhhzieEkDg3e8kUKt1mVM5uqNs
being
Jr. Member
*
Offline Offline

Activity: 38


View Profile
July 13, 2011, 11:18:38 AM
 #15

Maybe not the most simple solution for some, but IMHO the most awesome for sure - use SMPPS, the most kickass payout system invented.
With this system you get paid for exactly the amount you deserve, pool-hoping or not. The only drawback is that the payout could be delayed a bit, if the pool is unlucky. But from my own experience at ars, I would say this is not really a problem at all.
Currently this is implemented at arsbitcoin.com and eligius.st
Sukrim
Legendary
*
Offline Offline

Activity: 1848


View Profile
July 13, 2011, 11:53:37 AM
 #16

The only drawback is that the payout could be delayed a bit, if the pool is unlucky.
The real proble is that over time the pool can be arbitrarily much in minus/plus to it's miners.

Imagine the pool having a minus of 1000 BTC at the time the reward halves!

https://bitfinex.com <-- leveraged trading of BTCUSD, LTCUSD and LTCBTC (long and short) - 10% discount on fees for the first 30 days with this refcode: x5K9YtL3Zb
Mail me at Bitmessage: BM-BbiHiVv5qh858ULsyRDtpRrG9WjXN3xf
Meni Rosenfeld
Donator
Legendary
*
Offline Offline

Activity: 1890



View Profile WWW
July 13, 2011, 12:20:17 PM
 #17

You all have missed the defining characteristic of true PPLNS, which is that it crosses round boundaries. If there are less than N shares in the current round, shares from the last round(s) are paid. For every block found, the last N shares (variant: which were not yet paid) are paid, regardless of which round they belong to.

Implemented in this correct way, PPLNS is indeed hopping-proof.

If you want hopping-proof without crossing round boundaries, use the geometric method.

Maybe not the most simple solution for some, but IMHO the most awesome for sure - use SMPPS, the most kickass payout system invented.
With this system you get paid for exactly the amount you deserve, pool-hoping or not. The only drawback is that the payout could be delayed a bit, if the pool is unlucky. But from my own experience at ars, I would say this is not really a problem at all.
Currently this is implemented at arsbitcoin.com and eligius.st
IMO SMPPS is a bad method.

1EofoZNBhWQ3kxfKnvWkhtMns4AivZArhr   |   Who am I?   |   bitcoin-otc WoT
Bitcoil - Exchange bitcoins for ILS (thread)   |   Israel Bitcoin community homepage (thread)
Analysis of Bitcoin Pooled Mining Reward Systems (thread, summary)  |   PureMining - Infinite-term, deterministic mining bond
JoelKatz
Legendary
*
Offline Offline

Activity: 1386


Democracy is vulnerable to a 51% attack.


View Profile WWW
July 13, 2011, 12:43:21 PM
 #18

Maybe I'm missing something, but I don't see why this prevents or even discourages pool hopping. The reason you would want to leave a proportional pool is because once there are a large number of shares trying to earn the current block, each share you add is expected to be worth less. With this scheme, you still have the same incentive to leave a pool if it has gone a long time without finding a block.
There is no incentive to leave after a long time not finding a block. All results prior to the time window are thrown away, and there is no way of telling if your shares will be in the window or not while mining.
There is an incentive to leave after a long time not finding a block. You know that your future shares will payoff at most 50/N. Once the pool finds a block, there's a chance that future blocks will pay off more than that. So the incentive to leave is that you know the payoff for any shares submitted will be below the pool's average payoff.

And there is no penalty. If the pool soon finds a block, all of your existing shares will payoff (or not payoff) just the same if you leave the pool as if you keep mining for it.

Quote
First, by leaving, you have no effect on the value of the shares you have already submitted. They'll either be part of the last N shares or they won't. So you'll still get paid the same for the work already done.

And your new shares are still worth less. This will be a block where >N shares will be submitted in total, while in some blocks <N shares will be submitted in total. So you know that any shares you submit now will be worth less than the expected per-share value if you wait until the pool finds a block to start submitting shares.
I think you’re missing the point that the each share submitted during the window is worth more than the expected value of a single share in a normal proportional system, even if the window is the full length. Each share in the window is worth more than double (essentially triple) the expected value of a single share otherwise.
Right. And all your past shares have the same probability to be in the window or not in the window if you leave the pool or if you stay. So that's not a reason not to pool hop. And your future shares have no higher probability to be in the window just because the pool hasn't found a block. So that's not a reason not to pool hop.

In other words, this scheme provides no reason not to pool hop.

But it does provide a reason to pool hop. A share found soon after the pool finds a block has a chance at being in a 50/[<N] payout. So those shares will be worth more than average. It follows that shares that are in a 50/N payout must pay out less than average. So there is a reason to pool hop as soon as you suspect that a block has acquired more than N shares.

Quote
So this does nothing to discourage pool hopping. With this scheme, it is still to the miner's advantage to leave a proportional pool and submit to a pay-per-share pool if the proportional pool has gone a long time without solving a block.
No it’s not. The risk you are taking by continuing to submit to the "windowed" pool is that the shares you are submitting are worth much more than shares at a normal proportional or PPS pool, provided that they are inside the window.
But those shares have the same chance to be in the window as always. And they have no chance to be in a 50/[<N] block. So they are worth less than average.

Quote
Worse, if N is large, it actually encourages pool hopping because there's a good chance that joining the pool right after it finds a block will bring a 'jackput' 50/[<N] payout rather than the usual 50/N payout. And if N is small, it penalizes slower miners who may not get any shares in at all during the payout window.
This still needs some proper mathematical calculations, but I’m pretty sure the "jackpot" payout for very short rounds is cancelled out by the fact that any hopper trying to do this will then have all of their shares from the start of the round dropped as soon as a particular round is longer than the window.
No, not at all. The jackpot rounds are pure win for people who submit shares during them. Pool hoppers will only want to participate when there's a chance for a jackpot since those rounds will pay above average. As soon as there is no chance for a jackpot, there's an incentive to pool hop, since those shares have no chance at being in a jackpot round and will have an expected payout below average.

As has been said, the N shares must cross a round boundary. There must be no jackpots.

I am an employee of Ripple.
1Joe1Katzci1rFcsr9HH7SLuHVnDy2aihZ BM-NBM3FRExVJSJJamV9ccgyWvQfratUHgN
iopq
Hero Member
*****
Offline Offline

Activity: 644


View Profile
July 13, 2011, 01:07:36 PM
 #19

IMO SMPPS is a bad method.
why is that? the only problem I see is that an unlucky pool will get a bad reputation for delaying payments for shares a long time

NickW
Newbie
*
Offline Offline

Activity: 27


View Profile
July 13, 2011, 01:09:56 PM
 #20

Maybe I'm missing something, but I don't see why this prevents or even discourages pool hopping. The reason you would want to leave a proportional pool is because once there are a large number of shares trying to earn the current block, each share you add is expected to be worth less. With this scheme, you still have the same incentive to leave a pool if it has gone a long time without finding a block.
There is no incentive to leave after a long time not finding a block. All results prior to the time window are thrown away, and there is no way of telling if your shares will be in the window or not while mining.
There is an incentive to leave after a long time not finding a block. You know that your future shares will payoff at most 50/N. Once the pool finds a block, there's a chance that future blocks will pay off more than that. So the incentive to leave is that you know the payoff for any shares submitted will be below the pool's average payoff.

And there is no penalty. If the pool soon finds a block, all of your existing shares will payoff (or not payoff) just the same if you leave the pool as if you keep mining for it.

Quote
First, by leaving, you have no effect on the value of the shares you have already submitted. They'll either be part of the last N shares or they won't. So you'll still get paid the same for the work already done.

And your new shares are still worth less. This will be a block where >N shares will be submitted in total, while in some blocks <N shares will be submitted in total. So you know that any shares you submit now will be worth less than the expected per-share value if you wait until the pool finds a block to start submitting shares.
I think you’re missing the point that the each share submitted during the window is worth more than the expected value of a single share in a normal proportional system, even if the window is the full length. Each share in the window is worth more than double (essentially triple) the expected value of a single share otherwise.
Right. And all your past shares have the same probability to be in the window or not in the window if you leave the pool or if you stay. So that's not a reason not to pool hop. And your future shares have no higher probability to be in the window just because the pool hasn't found a block. So that's not a reason not to pool hop.

In other words, this scheme provides no reason not to pool hop.

But it does provide a reason to pool hop. A share found soon after the pool finds a block has a chance at being in a 50/[<N] payout. So those shares will be worth more than average. It follows that shares that are in a 50/N payout must pay out less than average. So there is a reason to pool hop as soon as you suspect that a block has acquired more than N shares.

Quote
So this does nothing to discourage pool hopping. With this scheme, it is still to the miner's advantage to leave a proportional pool and submit to a pay-per-share pool if the proportional pool has gone a long time without solving a block.
No it’s not. The risk you are taking by continuing to submit to the "windowed" pool is that the shares you are submitting are worth much more than shares at a normal proportional or PPS pool, provided that they are inside the window.
But those shares have the same chance to be in the window as always. And they have no chance to be in a 50/[<N] block. So they are worth less than average.

Quote
Worse, if N is large, it actually encourages pool hopping because there's a good chance that joining the pool right after it finds a block will bring a 'jackput' 50/[<N] payout rather than the usual 50/N payout. And if N is small, it penalizes slower miners who may not get any shares in at all during the payout window.
This still needs some proper mathematical calculations, but I’m pretty sure the "jackpot" payout for very short rounds is cancelled out by the fact that any hopper trying to do this will then have all of their shares from the start of the round dropped as soon as a particular round is longer than the window.
No, not at all. The jackpot rounds are pure win for people who submit shares during them. Pool hoppers will only want to participate when there's a chance for a jackpot since those rounds will pay above average. As soon as there is no chance for a jackpot, there's an incentive to pool hop, since those shares have no chance at being in a jackpot round and will have an expected payout below average.

As has been said, the N shares must cross a round boundary. There must be no jackpots.

Ok, I see what I was missing now and agree that not passing the round boundary does allow for a slight benefit to hoppers. If this system was modified to pass round boundaries making all windows the same length it should be a watertight system again. This essentially becomes PPLNS.

Correct me if I'm wrong, but I believe crossing pool boundaries would mean the "window" could be as long as you wanted. Even 24 hours.

1DRCGzEkMhhzieEkDg3e8kUKt1mVM5uqNs
Pages: [1] 2 3 »  All
  Print  
 
Jump to:  

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