Title: What a miner does? Post by: blap on June 03, 2011, 04:07:57 PM Just to understand the process, what a miner does? Hash the block header (https://en.bitcoin.it/wiki/Block_hashing_algorithm (https://en.bitcoin.it/wiki/Block_hashing_algorithm))? Someone has a pseudo-code for that? I have looked inside m0mchil-poclbm and jsMiner.js... It was confusing for me...
:'( Title: Re: What a miner does? Post by: Pieter Wuille on June 03, 2011, 04:43:05 PM loop: var blockheader = DoGetWorkRPCCall() var target = ExtractTarget(blockheader) for nonce in 0..4294967295: var attempt = ModifyNonce(blockheader, nonce) var hash = SHA256(SHA256(attempt)) if (hash < target) ReportSolution(attempt) Title: Re: What a miner does? Post by: compro01 on June 03, 2011, 05:17:15 PM loop: var blockheader = DoGetWorkRPCCall() var target = ExtractTarget(blockheader) for nonce in 0..4294967295: var attempt = ModifyNonce(blockheader, nonce) var hash = SHA256(SHA256(attempt)) if (hash < target) ReportSolution(attempt) i believe should be (hash <= target) otherwise, looks right to me. Title: Re: What a miner does? Post by: blap on June 03, 2011, 06:24:11 PM What is "ModifyNonce(blockheader, nonce)"?
Title: Re: What a miner does? Post by: compro01 on June 03, 2011, 06:36:32 PM What is "ModifyNonce(blockheader, nonce)"? sticks the incremented nonce into the block header, replacing the previously tried one. Title: Re: What a miner does? Post by: dserrano5 on June 03, 2011, 08:25:13 PM What is "ModifyNonce(blockheader, nonce)"? sticks the incremented nonce into the block header, replacing the previously tried one. I'm a total noob at this but, if I didn't misunderstand this (https://en.bitcoin.it/wiki/Block_hashing_algorithm), the current timestamp is also took into account. Else, a given block could be unsolvable if it happens that none of the 2**32 nonces result in a hash less than the target. Title: Re: What a miner does? Post by: compro01 on June 03, 2011, 10:54:58 PM What is "ModifyNonce(blockheader, nonce)"? sticks the incremented nonce into the block header, replacing the previously tried one. I'm a total noob at this but, if I didn't misunderstand this (https://en.bitcoin.it/wiki/Block_hashing_algorithm), the current timestamp is also took into account. Else, a given block could be unsolvable if it happens that none of the 2**32 nonces result in a hash less than the target. Yes, there would need to be a ModifyTimestamp(blockheaders, timestamp) step, but whenever the nonce overflows, the ExtraNonce part of the generation transaction gets incremented. Title: Re: What a miner does? Post by: Pieter Wuille on June 04, 2011, 12:39:03 AM Miners typically do not modify the timestamp - they just use the timestamp in the block, as received by the getwork call.
|