k9quaint
Legendary
Offline
Activity: 1190
Merit: 1000
|
|
August 27, 2011, 07:48:45 PM |
|
Two things I noticed about Raulo's paper on pool hopping:
First there is no component of time in any of the reward calculations. This is curious because humans usually consider a reward as a rate of return over time.
Second, the paper claims that (assuming a contributed mode pool):
the cheater payment share is λ S(λ, x) = (5) λ+x and is non-zero for all x and λ > 0 which shows that in this continuous model in contributed mode cheating always pays.
Well, the first and most obvious counter example to this is that if all participants of pool A hop out and nobody hops in. Since pool A now has an effective hash rate of 0 Mh/s the cheater payment share will never be realized because the next block will never be found by that pool. That implies a total rate of return for all the hoppers of zero.
Let us now modify this scenario slightly, all participants of pool A hop out at 50% of the shares needed to find the next block. The cheater payment for the next block will be 25BTC (to be divided amongst the hoppers according to their individual shares) when the block is found. 1 intrepid soul hops in and grinds away for however long it takes to find the next block. Nobody else hops in. When the next block is found, that intrepid soul contributed half of the shares and receives 25BTC reward for his efforts. Now I realize that one cannot know for certain when this 50% of shares required to find the block has been reached. That point does however fall within the continuum of the cheater payment share equation and appears to be a zero gain under these circumstances. Let us presume that these hoppers have network of magic 8 balls that will notify them of the exact half-way point in the block search.
One could further presume that the intrepid soul has immense hashing power at his/her command and this power is in fact equal to the combined rate of all those who hopped out of the pool. If this person hops in after everyone has hopped out, it appears there is no cheater payment to be had. Since the hash rates of the hoppers and the soul are equal, the rate of return over time is unchanged.
A further counter example is if the intrepid soul (let us call him Ralph) has been there from the start of the current block search. Ralph will acquire 25% of the shares at the point which the hoppers consult their magic 8 balls and leave (@ 50% of the shares required to find the next block). Ralph will then continue the search by his lonesome and the total search will consume 150% of the time it would have taken had none of the hoppers left. Ralph will acquire 75% of the shares for the block and earn 37.5 BTC. The cheaters payment needs be part of the 25% of the shares acquired by the hoppers before they left. This rate of return of hopping has been degraded by the additional time it has taken for Ralph to search for it on his own.
Maybe I need more coffee, but I am having trouble reconciling these scenarios with what was predicted on page 3 of the paper.
|
Bitcoin is backed by the full faith and credit of YouTube comments.
|
|
|
FreeMoney
Legendary
Offline
Activity: 1246
Merit: 1016
Strength in numbers
|
|
August 27, 2011, 07:52:26 PM |
|
wth @ this thread.
Is stopping mining immoral? Is starting to mine somewhere else immoral?
This is only an issue because amateurs get all in a tizzy about not getting paid during a disconnect.
|
Play Bitcoin Poker at sealswithclubs.eu. We're active and open to everyone.
|
|
|
Meni Rosenfeld
Donator
Legendary
Offline
Activity: 2058
Merit: 1054
|
|
August 27, 2011, 09:12:22 PM |
|
First there is no component of time in any of the reward calculations. This is curious because humans usually consider a reward as a rate of return over time.
This is because the calculation is relative to the fair reward, which itself is tied to time with the miner's hashrate. Well, the first and most obvious counter example to this is that if all participants of pool A hop out and nobody hops in. Since pool A now has an effective hash rate of 0 Mh/s the cheater payment share will never be realized because the next block will never be found by that pool. That implies a total rate of return for all the hoppers of zero.
It is assumed that are enough continuous miners so that a block is eventually found. Let us presume that these hoppers have network of magic 8 balls that will notify them of the exact half-way point in the block search.
That's a pretty strong presumption. Everything about pool-hopping relies on the random nature of block finding, ignoring this results in nonsense. You may want to have a look at the paper I'm working on which I believe, if I may say so myself, does a better job discussing pool-hopping than Raulo's paper. This is of course all off-topic for this thread, which is about ethics.
|
|
|
|
k9quaint
Legendary
Offline
Activity: 1190
Merit: 1000
|
|
August 28, 2011, 04:21:06 AM |
|
First there is no component of time in any of the reward calculations. This is curious because humans usually consider a reward as a rate of return over time.
This is because the calculation is relative to the fair reward, which itself is tied to time with the miner's hashrate. The calculations ignore that the hoppers change the rate the reward is realized by their movement from one pool to the next. They also accelerate the rate at which the reward for the pool they hopped too is realized, including the part that was calculated before they arrived. Well, the first and most obvious counter example to this is that if all participants of pool A hop out and nobody hops in. Since pool A now has an effective hash rate of 0 Mh/s the cheater payment share will never be realized because the next block will never be found by that pool. That implies a total rate of return for all the hoppers of zero.
It is assumed that are enough continuous miners so that a block is eventually found. Eventually, but leaving the pool degrades the reward to be obtained from that pool. The paper ignores the time component and treats the reward as constant. Let us presume that these hoppers have network of magic 8 balls that will notify them of the exact half-way point in the block search.
That's a pretty strong presumption. Everything about pool-hopping relies on the random nature of block finding, ignoring this results in nonsense. It doesn't matter whether they actually hit 50% or not, it works for any percentage whether they are correct or not. The half way point just makes the math easy, and it is contained within the continuum which is supposed to be non-zero. It doesn't matter where the miners think they are, the point is that a single counter example exists for which the continuum is zero. A miner could leave randomly, land on 37.82734% and it just makes the addition annoying. All I was doing was providing a counter example in a continuum which was claimed to be non-zero for all values of x. You may want to have a look at the paper I'm working on which I believe, if I may say so myself, does a better job discussing pool-hopping than Raulo's paper. This is of course all off-topic for this thread, which is about ethics. I shall look at that paper. Until we quantify under what circumstances hoppers can obtain benefits, we cannot understand the ethics of the behavior. (time elapses) I have looked at the paper. It is indeed a better explanation, however you still have the assumption that hopper hash rate will be magically replaced after it has left the pool. Why would anyone hop into a pool that has over 43.5% shares already submitted when they have a choice of a better pool? Nobody has yet discussed the decay rate of hopper's rewards over time in the pool they leave as compared to the expected rewards in a new block in a new pool for which there is suddenly more competition. One of my contentions is that after some percentage of the pool hops, it becomes counter productive. Moreover, the supply of pools is quite small and I could see scenarios of hopper congestion given a large enough population of hoppers.
|
Bitcoin is backed by the full faith and credit of YouTube comments.
|
|
|
Meni Rosenfeld
Donator
Legendary
Offline
Activity: 2058
Merit: 1054
|
|
August 28, 2011, 11:12:12 AM |
|
First there is no component of time in any of the reward calculations. This is curious because humans usually consider a reward as a rate of return over time.
This is because the calculation is relative to the fair reward, which itself is tied to time with the miner's hashrate. The calculations ignore that the hoppers change the rate the reward is realized by their movement from one pool to the next. They also accelerate the rate at which the reward for the pool they hopped too is realized, including the part that was calculated before they arrived. Well, the first and most obvious counter example to this is that if all participants of pool A hop out and nobody hops in. Since pool A now has an effective hash rate of 0 Mh/s the cheater payment share will never be realized because the next block will never be found by that pool. That implies a total rate of return for all the hoppers of zero.
It is assumed that are enough continuous miners so that a block is eventually found. Eventually, but leaving the pool degrades the reward to be obtained from that pool. The paper ignores the time component and treats the reward as constant. The existence of hoppers changes the % of time the pool spends in young rounds - hoppers make the pool grow old faster. This does decrease the total benefit that can be achieved. However, if a hopper does find a pool with a young round, this does not change the amplification factor for shares he submits. The payout per share will be B/N, where N is the total number of shares which will be found in this round, which is distributed geometrically conditioned on I shares having already been found. Time plays no role with this part. In the limit where everyone hops, all proportional pools will be stuck at 43.5%, and thus no more hopping can be done. Let us presume that these hoppers have network of magic 8 balls that will notify them of the exact half-way point in the block search.
That's a pretty strong presumption. Everything about pool-hopping relies on the random nature of block finding, ignoring this results in nonsense. It doesn't matter whether they actually hit 50% or not, it works for any percentage whether they are correct or not. The half way point just makes the math easy, and it is contained within the continuum which is supposed to be non-zero. It doesn't matter where the miners think they are, the point is that a single counter example exists for which the continuum is zero. A miner could leave randomly, land on 37.82734% and it just makes the addition annoying. All I was doing was providing a counter example in a continuum which was claimed to be non-zero for all values of x. It doesn't work this way. If you condition on the total number of shares in the round of course you'll find there's no benefit. You need to condition on the number of shares already found. If you say they hop at 50% of the total shares in the round (and it doesn't matter if it's 50% or some other number, if they know it or not, or whatever), you're leaving open the possibility that they will mine until 1.5D shares were found in a round whose total is 3D, which is something they will not do, since they leave at 0.435D. The longer the round is, the less % of the total shares the hopper will have in this round. It is in this way that the hopper biases his share distribution towards shorter rounds, thus getting more reward per share. You may want to have a look at the paper I'm working on which I believe, if I may say so myself, does a better job discussing pool-hopping than Raulo's paper. This is of course all off-topic for this thread, which is about ethics. I shall look at that paper. Until we quantify under what circumstances hoppers can obtain benefits, we cannot understand the ethics of the behavior. (time elapses) I have looked at the paper. It is indeed a better explanation, however you still have the assumption that hopper hash rate will be magically replaced after it has left the pool. Why would anyone hop into a pool that has over 43.5% shares already submitted when they have a choice of a better pool? Nobody has yet discussed the decay rate of hopper's rewards over time in the pool they leave as compared to the expected rewards in a new block in a new pool for which there is suddenly more competition. One of my contentions is that after some percentage of the pool hops, it becomes counter productive. Moreover, the supply of pools is quite small and I could see scenarios of hopper congestion given a large enough population of hoppers. If everyone hops, the result is known - all proportional pool will end as no one will mine past 43.5%. The situation I analyze is the situation in practice, that hoppers are a minority. The hopper's rewards don't decay over time as the pool's reward system has no consideration of time. The amplification factor as a function of round age doesn't change. What does change is how young the rounds are expected to be. If the hopper does find a pool with a young round he should choose it over fallback mining (in all cases it is assumed that the hopper has a solo / fair pool option available for which he mines if there are no milkable proportional pools).
|
|
|
|
k9quaint
Legendary
Offline
Activity: 1190
Merit: 1000
|
|
August 28, 2011, 06:08:20 PM |
|
The existence of hoppers changes the % of time the pool spends in young rounds - hoppers make the pool grow old faster. This does decrease the total benefit that can be achieved. However, if a hopper does find a pool with a young round, this does not change the amplification factor for shares he submits. The payout per share will be B/N, where N is the total number of shares which will be found in this round, which is distributed geometrically conditioned on I shares having already been found. Time plays no role with this part.
In the limit where everyone hops, all proportional pools will be stuck at 43.5%, and thus no more hopping can be done. The payout in absolute terms does not decay. The rate of return decays. In my opinion, time should always be a component when evaluating human behavior in an economic context. It doesn't work this way. If you condition on the total number of shares in the round of course you'll find there's no benefit. You need to condition on the number of shares already found. It was just a counter-example to discount a claim that a function was always continuous and positive. It was not meant to disprove the existence of rewards for pool hopping. They do exist, but I believe they have been quantified in a way that is misleading. Vladimir brings up an excellent point with mtred where it's hashrate changed from 100Gh/s to 400Gh/s to 100Gh/s. There are only a few pools available and the longer that mtred spends in the unfavorable share of a block, the longer it cannot be hopped into. This is a corner case where the number of pools is small and the length of rounds is potentially very large because of increased difficulty and dramatically lower hash rate. If you say they hop at 50% of the total shares in the round (and it doesn't matter if it's 50% or some other number, if they know it or not, or whatever), you're leaving open the possibility that they will mine until 1.5D shares were found in a round whose total is 3D, which is something they will not do, since they leave at 0.435D. Yes. But it was supposed to be a single counter-example in the form of "what if this occurred once when the stars are aligned, the result will be zero". It was not meant as a template for behavior in mining. If everyone hops, the result is known - all proportional pool will end as no one will mine past 43.5%. The situation I analyze is the situation in practice, that hoppers are a minority. The hopper's rewards don't decay over time as the pool's reward system has no consideration of time. The amplification factor as a function of round age doesn't change. What does change is how young the rounds are expected to be. If the hopper does find a pool with a young round he should choose it over fallback mining (in all cases it is assumed that the hopper has a solo / fair pool option available for which he mines if there are no milkable proportional pools).
Hoppers are a minority in the overall population, at least I think they are (/checks under bed and in closet). However, in a small pool they can easily form a temporary majority. The reason why I bring up this "corner case" is that I believe we are actually living it right now. As for solutions, I think smoothing the rewards over a varying number of blocks found would make it impossible to know the dimensions and boundaries of a "round". That would make it very hard to hop effectively unless the hoppers knew the algorithm and inputs to the smoothing function. The issue is that the reward for the block is arbitrary with respect to the work completed.
|
Bitcoin is backed by the full faith and credit of YouTube comments.
|
|
|
Sukrim
Legendary
Offline
Activity: 2618
Merit: 1007
|
|
August 28, 2011, 06:19:34 PM |
|
Averaging over a varying (random) number of rounds just makes your payouts completely random as well - no need to hop there, because such a strange scheme won't get any miners in the first place I hope...
Also you're trusting a PRNG and/or security by obscurity this way - if someone manages to find out your algorithm or breaks into your server and gets the RNG seed, he'll be rich. Also there's no way to really verify if this person is cheating then or just lucky - as the payout function is random.
If you feel the need to be paid something for each share, either mine on an PPS pool, on a geometrically scored one (though the payout there might be VERY low on early shares on long rounds) or take a lesson or 2 in statistics and go PPLNS or double geometric.
|
|
|
|
k9quaint
Legendary
Offline
Activity: 1190
Merit: 1000
|
|
August 28, 2011, 06:47:00 PM |
|
Averaging over a varying (random) number of rounds just makes your payouts completely random as well - no need to hop there, because such a strange scheme won't get any miners in the first place I hope...
It does not make the payments random. If I combine the shares for two consecutive blocks and combine the rewards for the blocks and then only distribute the reward (and the information about the second round starting) after both blocks have been found, hoppers should not be able to take advantage of the start of the round for the second block. The total rewards to each miner will be identical, the information is hidden until it cannot be acted upon. Also you're trusting a PRNG and/or security by obscurity this way - if someone manages to find out your algorithm or breaks into your server and gets the RNG seed, he'll be rich. Also there's no way to really verify if this person is cheating then or just lucky - as the payout function is random.
So, someone breaks into my server and instead of just transferring the thousands of bitcoins sitting in the wallet, they take my random number seed? Also, obscuring data until it is no longer actionable is not "faux security", The data will eventually be available to all, this is the nature of bitcoin. Delaying the dissemination until it is useless to hoppers removes the piece of data they require in order to function, namely the point in time a new round starts. Again, the payout function is not random, the reporting and aggregation period for payouts is. If you feel the need to be paid something for each share, either mine on an PPS pool, on a geometrically scored one (though the payout there might be VERY low on early shares on long rounds) or take a lesson or 2 in statistics and go PPLNS or double geometric.
PPLNS where N varies is almost exactly what I proposed. Except N varies according to the number of shares in some number of solved blocks.
|
Bitcoin is backed by the full faith and credit of YouTube comments.
|
|
|
jkminkov
|
|
August 29, 2011, 10:05:04 AM |
|
3. Pool does specifically states that pool hopping is against the rules 3. All animals are equal, but some animals are more equal than others!
|
.:31211457:. 100 dollars in one place talking - Dudes, hooray, Bitcoin against us just one, but we are growing in numbers!
|
|
|
Sukrim
Legendary
Offline
Activity: 2618
Merit: 1007
|
|
August 29, 2011, 11:12:44 AM |
|
Averaging over a varying (random) number of rounds just makes your payouts completely random as well - no need to hop there, because such a strange scheme won't get any miners in the first place I hope...
It does not make the payments random. If I combine the shares for two consecutive blocks and combine the rewards for the blocks and then only distribute the reward (and the information about the second round starting) after both blocks have been found, hoppers should not be able to take advantage of the start of the round for the second block. The total rewards to each miner will be identical, the information is hidden until it cannot be acted upon. If the number of blocks that get combined is constant, you're hoppable and if it is random, payouts will be random too. Combining 2 blocks in 1 round is the same as having 1 round that pays 100 BTC. Also you want to improve security for miners by taking information away from them - not a very good approach in my opinion. Also you're trusting a PRNG and/or security by obscurity this way - if someone manages to find out your algorithm or breaks into your server and gets the RNG seed, he'll be rich. Also there's no way to really verify if this person is cheating then or just lucky - as the payout function is random.
So, someone breaks into my server and instead of just transferring the thousands of bitcoins sitting in the wallet, they take my random number seed? Also, obscuring data until it is no longer actionable is not "faux security", The data will eventually be available to all, this is the nature of bitcoin. Delaying the dissemination until it is useless to hoppers removes the piece of data they require in order to function, namely the point in time a new round starts. Again, the payout function is not random, the reporting and aggregation period for payouts is. I personally would NEVER let thousands of Bitcoin sit in a wallet on an online server, especially not on one that is also acting a s a pool server. I hope pool operators don't do this too. If the aggregation period is random, you have "mega rounds" of let's say randomint[1,10] rounds paying 50-500 BTC at once. This will lead to more or less random payout intervals (and until the next round has finished, you can't even tell your miners how much they have earned!). In the end you require far more trust and provide far less information than any pool operator could that just uses a hopping proof payout algorithm. If you feel the need to be paid something for each share, either mine on an PPS pool, on a geometrically scored one (though the payout there might be VERY low on early shares on long rounds) or take a lesson or 2 in statistics and go PPLNS or double geometric.
PPLNS where N varies is almost exactly what I proposed. Except N varies according to the number of shares in some number of solved blocks. If you let N vary in PPLNS, you make it hoppable unless you also score shares according to difficulty. (Prop for example is a special case of PPLNS where N = amount of shares that were submitted since the last block was found)
|
|
|
|
jgraham
Full Member
Offline
Activity: 140
Merit: 100
<Pretentious and poorly thought out latin phrase>
|
|
August 29, 2011, 02:06:26 PM |
|
wth @ this thread.
Is stopping mining immoral? Is starting to mine somewhere else immoral?
Yes if it means you make more than the people who just stay and mine in one spot, that is the assertion my guess is that people wrap a bunch of moralizing into whatever definitions they are using - perhaps unbeknownst to themselves. That said JoelKatz who appears to be the prolific poster (in this thread) of said position and he's kind of...well...bad...at defining his terms we can never really know for sure.
|
I'm rather good with Linux. If you're having problems with your mining rig I'll help you out remotely for 0.05. You can also propose a flat-rate for some particular task. PM me for details.
|
|
|
JoelKatz
Legendary
Offline
Activity: 1596
Merit: 1012
Democracy is vulnerable to a 51% attack.
|
|
August 29, 2011, 02:13:07 PM |
|
That said JoelKatz who appears to be the prolific poster (in this thread) of said position and he's kind of...well...bad...at defining his terms we can never really know for sure. Coming from someone who doesn't understand the purpose of definitions, that's almost a compliment.
|
I am an employee of Ripple. Follow me on Twitter @JoelKatz 1Joe1Katzci1rFcsr9HH7SLuHVnDy2aihZ BM-NBM3FRExVJSJJamV9ccgyWvQfratUHgN
|
|
|
jgraham
Full Member
Offline
Activity: 140
Merit: 100
<Pretentious and poorly thought out latin phrase>
|
|
August 29, 2011, 02:28:15 PM Last edit: August 29, 2011, 02:59:29 PM by jgraham |
|
That said JoelKatz who appears to be the prolific poster (in this thread) of said position and he's kind of...well...bad...at defining his terms we can never really know for sure. Coming from someone who doesn't understand the purpose of definitions, that's almost a compliment. So do tell...what is the purpose of all definitions? While I wouldn't be quite as arrogant as to pre-suppose the universal case. I'd say that when I talk to people, especially when I argue with them. My point is that they clearly understand my terms. This is often evidenced by some kind of "back and forth" - sort of like a handshakes used in telecommunication protocols. I should be able to use a term, they should be able to use it back in a context that make sense for them and I should be able to agree (or sometimes expand on it). So am I to take your statement to mean that what I said above is not the purpose of definitions in some moderately more general sense of cited context? That you have some great counter argument? If not, I can easily show where I do this...and where you don't.
|
I'm rather good with Linux. If you're having problems with your mining rig I'll help you out remotely for 0.05. You can also propose a flat-rate for some particular task. PM me for details.
|
|
|
JoelKatz
Legendary
Offline
Activity: 1596
Merit: 1012
Democracy is vulnerable to a 51% attack.
|
|
August 29, 2011, 03:37:19 PM |
|
So do tell...what is the purpose of all definitions? To point a person towards the concept that a word names.
|
I am an employee of Ripple. Follow me on Twitter @JoelKatz 1Joe1Katzci1rFcsr9HH7SLuHVnDy2aihZ BM-NBM3FRExVJSJJamV9ccgyWvQfratUHgN
|
|
|
MrWizard
|
|
August 29, 2011, 04:46:48 PM |
|
Pool hopping is the right of free speech and the right to peaceably assemble. You may not like what pool hoppers do but they have a right to do it.
|
"I walked into the room dripping in Bitcoins. Yea dripping in Bitcoins." (BTC) 168DCCeGmDy3xTWRimLVhvKtK3yEWbpsSg (LTC) LbYS8VFqFSU7B9bfaHD11seQMtrtYEKpLe (BBQ) bNVZErvwLzpEG7H3kt1fycWspzRQB1MJzL
|
|
|
jgraham
Full Member
Offline
Activity: 140
Merit: 100
<Pretentious and poorly thought out latin phrase>
|
|
August 29, 2011, 05:20:50 PM Last edit: August 29, 2011, 06:56:36 PM by jgraham |
|
So do tell...what is the purpose of all definitions? To point a person towards the concept that a word names. Fair enough. So it seems like you've kind of proved my point. If a definition serves merely as the barest of guideposts and especially when addressing a specific audience it's goal is not to result in a mutually understood term . Then you are providing what I (and perhaps others) would call a poor definition. So yeah. You're bad at it.* QED baby. *Unless of course you meant that a mutually understood term is the goal and just said it badly...which also demonstrates my point.
|
I'm rather good with Linux. If you're having problems with your mining rig I'll help you out remotely for 0.05. You can also propose a flat-rate for some particular task. PM me for details.
|
|
|
k9quaint
Legendary
Offline
Activity: 1190
Merit: 1000
|
|
August 29, 2011, 07:11:21 PM |
|
So do tell...what is the purpose of all definitions? To point a person towards the concept that a word names. Fair enough. So it seems like you've kind of proved my point. If a definition serves merely as the barest of guideposts and especially when addressing a specific audience it's goal is not to result in a mutually understood term . Then you are providing what I (and perhaps others) would call a poor definition. So yeah. You're bad at it.* QED baby. *Unless of course you meant that a mutually understood term is the goal and just said it badly...which also demonstrates my point. What is the definition of pedantic?
|
Bitcoin is backed by the full faith and credit of YouTube comments.
|
|
|
jgraham
Full Member
Offline
Activity: 140
Merit: 100
<Pretentious and poorly thought out latin phrase>
|
|
August 29, 2011, 09:24:04 PM |
|
So do tell...what is the purpose of all definitions? To point a person towards the concept that a word names. Fair enough. So it seems like you've kind of proved my point. If a definition serves merely as the barest of guideposts and especially when addressing a specific audience it's goal is not to result in a mutually understood term . Then you are providing what I (and perhaps others) would call a poor definition. So yeah. You're bad at it.* QED baby. *Unless of course you meant that a mutually understood term is the goal and just said it badly...which also demonstrates my point. What is the definition of pedantic? Kinda depends, that word without looking it up probably has at least three pretty distinct senses. None appear to apply here. What made you think it did?
|
I'm rather good with Linux. If you're having problems with your mining rig I'll help you out remotely for 0.05. You can also propose a flat-rate for some particular task. PM me for details.
|
|
|
shakaru
Sr. Member
Offline
Activity: 406
Merit: 250
QUIFAS EXCHANGE
|
|
September 01, 2011, 08:57:46 PM |
|
So here is the question. I had a potential customer to my mining contracts ask about a pool hopper in which I said no. But, if I am renting a VPS, and he wants to run a pool hopper, should I allow it?
|
|
|
|
CanaryInTheMine
Donator
Legendary
Offline
Activity: 2352
Merit: 1060
between a rock and a block!
|
|
September 01, 2011, 09:09:29 PM |
|
So here is the question. I had a potential customer to my mining contracts ask about a pool hopper in which I said no. But, if I am renting a VPS, and he wants to run a pool hopper, should I allow it?
i don't see why not.
|
|
|
|
|