7

I have not been able to find any method that pools use to verify you've done the work you say you did. So if someone does a solution withholding attack but without actually knowing what the solution is in a PPS pool then can't this attack just get free coins?

1

Miners submit shares to the pool to prove that work has been done. Shares are easier hashes than blocks (by default, one in 2^32 hashes will be a share), and there is no way to find shares without doing the work needed to find blocks. See also What is a share? Can I find it while mining solo, or only when pool mining?

However, a miner can do the work but still refuse to send valid blocks if he finds them. This is called block withholding and can be used in several attacks.

| improve this answer | |
  • When you say "submit shares" what data is sent to the pool and how is it validated to be genuine "work done" – David Jun 13 '13 at 2:30
  • 1
    @David: It's precisely the same data as would be sent if you actually found a block and it's validated precisely the same way. Shares are just made easier to find than blocks by having a lower difficulty. – David Schwartz Jun 13 '13 at 2:33
  • @DavidSchwartz I don't mean when a solution is found I mean on the shares that didn't have the solution. – David Jun 13 '13 at 2:38
  • 1
    @David: There are some variants. Typically, the miner will submit a block header. The Merkle root and other data should match the work that the pool gave the miner. Also, the nonce should be such that the hash of the block header is lower than 2^224. – Meni Rosenfeld Jun 13 '13 at 12:29
  • 1
    @David: Only one in 2^32 hashes will lead to such a nonce, so Without actually doing work, you have no chance to find a share. – Meni Rosenfeld Jun 13 '13 at 12:36
1

Well, first of all when you submit a share, it gets validated through the BTC/LTC client/daemon. If it is the correct solution to a block, then poof, an incoming transaction of 25BTC / 50LTC appears in the pools transaction history. This is called an "immature" transaction.

Most of the pools run PPS / PPLNS as a reward system. Meaning the more shares you submit, the more payout you get in proportion to the total number of shares during a round. Most pool software use some kind of database to insert the valid shares into to keep track of the work done for each worker/miner.

As far as I know, you get no "special" reward for finding a block... If you do, that's some pool-sided setting. Some pools use PC games as rewards for finding blocks, etc etc. But you don't get some kind of increased LTC/BTC.

If you mean that you withhold the valid share, and then submit it locally so only you get the full rewards? That won't work either, since you need your local bitcoin/litecoin daemon to run, and fetch work from. If you submit a share you haven't got work for, to another litecoin/bitcoin daemon, it won't get accepted, since the server knows that they haven't issued this work to you.

Hope this answers some questions.

| improve this answer | |
  • 1
    What I meant was is it possible to lie to the pool and say I'm doing lots of work while doing nothing and hoping that my shares don't contain the solution but if it did oh well (in a PPS) – David Jun 13 '13 at 2:24
  • @David It was actually possible just a week or two ago. There was a bug in the stratum software that allowed mining clients to alter the difficulty of the shares. Meaning they submitted a ton of useless low diff shares (if you had a modified mining client), and got PPS for it. This security hole was detected and patched as soon as everyone heard about it. You can read about it here: forum.litecoin.net/index.php/topic,4002.0.html – Robin Jonsson Jun 13 '13 at 12:11
0

A solution withholding attack is when you don't send anything to the pool. You won't get any coins at all. Pools verify you've done work by having you submit the results of your work to them -- these are called "shares".

| improve this answer | |
  • 1
    I thought a solution withholding attack is when you do send your results to the pool except when you find a solution. The solution is "solo mined" and the pool just thinks you're not lucky but still doing work. – Tomas Jun 12 '13 at 11:58
  • 1
    @David: No, pools verify you've done work by having you submit the results of your work to them. If you don't do the work, you won't have the results to send to them. – David Schwartz Jun 13 '13 at 2:32
  • 1
    I have a limited knowledge of bitcoins let alone pooled mining. I kind of understand what a share is but not what the share result is. Would that be all the hashes of the shares range. That seems like it would take a LOT of bandwidth to send every share and also what mechanism verifies that what I send in is authentic. – David Jun 13 '13 at 2:36
  • 1
    @David: No. The share is the minimum necessary to prove the work was done. It's tunable based on how fast the miner is. If we imagine a hypothetical ridiculously slow miner, we could send every hash. But for practical miners, it makes sense to send only, say, the best four billionth of the resulting hashes. By seeing how many hashes are sent and how low they are, the pool can infer how many hash operations were performed. Pools can tune this so the rate of shares submitted is approximately constant regardless of the miner's hash rate. – David Schwartz Jun 13 '13 at 2:58
  • 1
    Are there any standards documents on pooled mining. When I read things about bitcoins often I have to infer a few things based on my computer science experience. So much of what you've said satisfies my question but has also created several more. – David Jun 13 '13 at 3:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.