Author

Topic: Can someone help me understand Blocks? (Read 2117 times)

vip
Activity: 1386
Merit: 1140
The Casascius 1oz 10BTC Silver Round (w/ Gold B)
February 22, 2011, 12:12:12 AM
#6
Hmm, ok, so why search for the low difficultly blocks and not just the difficult ones?

So the person running the share server knows how much mining everybody has contributed
vip
Activity: 1386
Merit: 1140
The Casascius 1oz 10BTC Silver Round (w/ Gold B)
February 21, 2011, 11:55:16 PM
#5
Assuming that you're in a mining pool, the hashes you find and submit are likely not blocks, they are shares.  They are basically blocks, but with an extremely low difficulty, so you can find a lot to prove that you are trying to find hashes for real blocks.  Eventually, someone in the pool finds a hash that works on the low artificial difficulty and also works for the real difficulty.  The pool submits it as its own and collects the coins.  Everyone in the same pool is hashing the data for the pool's address.

Yep, the way I understand it, the "artificially low" difficulty is 1, which is any hash with 8 leading hex zeroes.

If the difficulty is 36000, then one out of every 36000 of those will also be good for a block.
newbie
Activity: 5
Merit: 0
February 21, 2011, 11:53:29 PM
#4
casascius is right on all but number 4.  

4.) If I watch the output of puddinpop's software, occasionally it spits out "Found Hash!" and it reports something that looks like a hash with leading zeros.  Why is the software finding more of these than one per 10 minutes?  I guess there are multiple possibilities for each block and whoever returns the first block hash with the correct amount of leading zeros is assigned to that block?

Assuming that you're in a mining pool, the hashes you find and submit are likely not blocks, they are shares.  They are basically blocks, but with an extremely low difficulty, so you can find a lot to prove that you are trying to find hashes for real blocks.  Eventually, someone in the pool finds a hash that works on the low artificial difficulty and also works for the real difficulty.  The pool submits it as its own and collects the coins.  Everyone in the same pool is hashing the data for the pool's address.
administrator
Activity: 5222
Merit: 13032
February 21, 2011, 11:50:31 PM
#3
Here is the exact current target, which block hashes must be below:
http://blockexplorer.com/q/hextarget

As a performance optimization, miners only check for a certain number of leading zeroes when doing the hashing. Then, when that has occurred, they check that the hash is really lower than the target. Possibly this is the cause of the "Found hash" messages.
vip
Activity: 1386
Merit: 1140
The Casascius 1oz 10BTC Silver Round (w/ Gold B)
February 21, 2011, 11:04:26 PM
#2
So, i'm running puddinpop's rpcminer for a gpu.

1.) I assume it is searching for a new block such that the new block is linked to the latest block in the block chain.

Correct


2.) I think I read that a new block is found based on the number of leading zeros in the output hash for the new block computation.  Is there a way to query for the number of leading zeros required?

Yes, it is the "difficulty" factor.  You can see it at bitcoincharts.com.  It is currently about 36000.

Expressed as "number of (hexadecimal) zeroes", you could calculate that as: log2(difficulty)/4 + 8, which right now is about 11 or 12.  (It is not strictly number of zeros, it's "is the hash less than a number (that number being 2^224 / difficulty)")

3.) There is something running to make sure that a new block is only found every 10 minutes.  How does the p2p network control this?


It's average 10 minutes.  The difficulty is the only control.  As mining increases sharply, the average time decreases, and then the difficulty jumps even more to correct for it.



4.) If I watch the output of puddinpop's software, occasionally it spits out "Found Hash!" and it reports something that looks like a hash with leading zeros.  Why is the software finding more of these than one per 10 minutes?  I guess there are multiple possibilities for each block and whoever returns the first block hash with the correct amount of leading zeros is assigned to that block?


Yes, there are practically infinite possibilities for each block.  Since each miner is trying to commit a block that includes a transaction to him/herself, every miner is hashing something different, no two miners are trying to hash the same thing.


5.) I also think I read on a page that the bitcoin network asseses the number of blocks created in the past two weeks and uses that to scale the processing power required to find blocks such that the combined cpu power of the network will only find 6 blocks per hour.  I assume this is controlled by increasing or decreasing the number of leading zeros required in front of a hash for a new block.  Does the network enforce this by deciding every two weeks how many leading zeros are required at the front of new blocks?


Yes, it is done by increasing the difficulty, which effectively means more leading zeroes are needed.
newbie
Activity: 42
Merit: 0
February 21, 2011, 10:49:34 PM
#1
So, i'm running puddinpop's rpcminer for a gpu.

1.) I assume it is searching for a new block such that the new block is linked to the latest block in the block chain.

2.) I think I read that a new block is found based on the number of leading zeros in the output hash for the new block computation.  Is there a way to query for the number of leading zeros required?

3.) There is something running to make sure that a new block is only found every 10 minutes.  How does the p2p network control this?

4.) If I watch the output of puddinpop's software, occasionally it spits out "Found Hash!" and it reports something that looks like a hash with leading zeros.  Why is the software finding more of these than one per 10 minutes?  I guess there are multiple possibilities for each block and whoever returns the first block hash with the correct amount of leading zeros is assigned to that block?

5.) I also think I read on a page that the bitcoin network asseses the number of blocks created in the past two weeks and uses that to scale the processing power required to find blocks such that the combined cpu power of the network will only find 6 blocks per hour.  I assume this is controlled by increasing or decreasing the number of leading zeros required in front of a hash for a new block.  Does the network enforce this by deciding every two weeks how many leading zeros are required at the front of new blocks?

I'm really trying to exactly nail down what constitutes a block, and what we are doing to go about "finding", creating and verifying those blocks.
Jump to: