Bitcoin Forum
December 07, 2016, 12:49:59 PM *
News: To be able to use the next phase of the beta forum software, please ensure that your email address is correct/functional.
 
   Home   Help Search Donate Login Register  
Pages: [1]
  Print  
Author Topic: Reject question and nonce question.  (Read 1952 times)
El Cabron
Gnomo
VIP
Legendary
*
Offline Offline

Activity: 840



View Profile
January 13, 2012, 03:42:33 AM
 #1

Hi, this will expose my ignorance on how some of this works but..  What will cause a share to be rejected?

Also does each pool send out a different nonce or are they the same? Also if they are not the same, does each pool send out different nonce to a different worker?

Thanks.

Sorry El Cabron, you are banned from posting or sending personal messages on this forum.
Trolling
https://bitcointalk.org/index.php?topic=622250.msg7030081#msg7030081
1481114999
Hero Member
*
Offline Offline

Posts: 1481114999

View Profile Personal Message (Offline)

Ignore
1481114999
Reply with quote  #2

1481114999
Report to moderator
1481114999
Hero Member
*
Offline Offline

Posts: 1481114999

View Profile Personal Message (Offline)

Ignore
1481114999
Reply with quote  #2

1481114999
Report to moderator
1481114999
Hero Member
*
Offline Offline

Posts: 1481114999

View Profile Personal Message (Offline)

Ignore
1481114999
Reply with quote  #2

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

Activity: 1218


Gerald Davis


View Profile
January 13, 2012, 03:48:37 AM
 #2

share can be rejected for one of three reasons
a) it is junk.  hardware failure resulted in "wrong answer".  the hash provided isn't produced from the data
b) it is for the wrong pool.  can happen w/ errors in backup pools.  You send backup pool hash to main pool
c) it is stale.  block has changed so that data is worthless

pools don't send out nonces.  If they did they would need to send couple hundred million every single second for every single worker.

Pools compute the block header EXCEPT the nonce and provide that to the miner.  The miner then starts at nonce 0 and hashes it, then tries 1, then tries 2, then tries 3 .... up to 2^32 -1.  It returns any shares and asks for more work (new header).  It then tries annother 4 billion nonces on that header.
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218


Gerald Davis


View Profile
January 13, 2012, 05:49:35 AM
 #3

I almost just PMed you my question expecting you would know the answer but made the tread lol:)

Then I guess what I should have asked is, does the pool only send out one header to one miner? 

Yes.  Otherwise it would have two miners doing the same work (cutting effective hashrate of the pool in half).  If a pool is consistently "unlucky" over a long period of time it may be caused by a bug which is sending duplicate work to multiple miners.

Quote
Also could two different pools send out the same header to two different miners? Odds would be low I'm sure but could it happen?

Effectively no.  One element of the block header is the merkle tree root and the merkle tree cointains the coinbase which contains the pool's reward address.  Thus two different pools will always have a different merkle tree root and different headers.

I say effectively because technically two different sets of data could generate the same hash (a hash collision) but the odds are 1 in 2^256 and can be effectively considered 0.

The entire block header consists of:
Version
Previous hash
Merkle root
Timestamp
"Bits" (current target)
Nonce 32-bit number

So the pool sends all that data except nonce to the miner who increments and hashes each nonce looking for shares.  N-time-rolling allows the miner to increment the timestamp locally.  This allows multiple nonce ranges (0 to 2^32) to be attempted on each get work.  Technically the pool only needs to update the miner when one of the other elements change.

target, and version will never change intra block.
Previous hash only changes when a block is found.
The merkle root only changes when a transaction is added.
DeepBit
Donator
Hero Member
*
Offline Offline

Activity: 532


We have cookies


View Profile WWW
January 14, 2012, 01:16:26 AM
 #4

share can be rejected for one of three reasons
a) it is junk.  hardware failure resulted in "wrong answer".  the hash provided isn't produced from the data
b) it is for the wrong pool.  can happen w/ errors in backup pools.  You send backup pool hash to main pool
c) it is stale.  block has changed so that data is worthless
d) this share was already sent by you or another miner of same pool

Welcome to my bitcoin mining pool: https://deepbit.net ~ 3600 GH/s, Both payment schemes, instant payout, no invalid blocks !
Coming soon: ICBIT Trading platform
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218


Gerald Davis


View Profile
January 14, 2012, 01:31:32 AM
 #5

d) this share was already sent by you or another miner of same pool

Good one.  Got to keep those miners honest. Smiley
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218


Gerald Davis


View Profile
January 14, 2012, 03:14:16 AM
 #6

share can be rejected for one of three reasons
a) it is junk.  hardware failure resulted in "wrong answer".  the hash provided isn't produced from the data
b) it is for the wrong pool.  can happen w/ errors in backup pools.  You send backup pool hash to main pool
c) it is stale.  block has changed so that data is worthless
d) this share was already sent by you or another miner of same pool

I guess the only way this could happen is if the miners cheat?


Or a bug in pool software which resulted in same header being sent to two workers.  Possibly a bug in a miner code which caused it to resend same work more than once.
Pages: [1]
  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!