Bitcoin Forum
December 12, 2024, 09:54:27 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: What a miner does?  (Read 1252 times)
blap (OP)
Newbie
*
Offline Offline

Activity: 51
Merit: 0


View Profile
June 03, 2011, 04:07:57 PM
 #1

Just to understand the process, what a miner does? Hash the block header (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...
 Cry
Pieter Wuille
Legendary
*
Offline Offline

Activity: 1072
Merit: 1189


View Profile WWW
June 03, 2011, 04:43:05 PM
 #2


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 do Bitcoin stuff.
compro01
Hero Member
*****
Offline Offline

Activity: 590
Merit: 500



View Profile
June 03, 2011, 05:17:15 PM
 #3


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.
blap (OP)
Newbie
*
Offline Offline

Activity: 51
Merit: 0


View Profile
June 03, 2011, 06:24:11 PM
 #4

What is "ModifyNonce(blockheader, nonce)"?
compro01
Hero Member
*****
Offline Offline

Activity: 590
Merit: 500



View Profile
June 03, 2011, 06:36:32 PM
 #5

What is "ModifyNonce(blockheader, nonce)"?

sticks the incremented nonce into the block header, replacing the previously tried one.
dserrano5
Legendary
*
Offline Offline

Activity: 1974
Merit: 1030



View Profile
June 03, 2011, 08:25:13 PM
 #6

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, 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.
compro01
Hero Member
*****
Offline Offline

Activity: 590
Merit: 500



View Profile
June 03, 2011, 10:54:58 PM
 #7

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, 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.
Pieter Wuille
Legendary
*
Offline Offline

Activity: 1072
Merit: 1189


View Profile WWW
June 04, 2011, 12:39:03 AM
 #8

Miners typically do not modify the timestamp - they just use the timestamp in the block, as received by the getwork call.

I do Bitcoin stuff.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!