Why is it so fricking hard to find the technical details? This is an open system, so shouldn't there be some documentation about what is done how? Of course i could check the source-code of the clients, but there ought to be a better way oO
- What exactly are these blocks? (sha256 hash of old-block + time +
)
- when exactly are blocks shared with a pool and under which conditions are they accepted?
- why do these two conditions differ?
- what are the protocols for BCN transfers, block generations, etc.etc.
- what is the difference between solo-mining and pool mining? Why can i not submit a block found in pooled-mining as my own via solo-mining? (i know, there have been some posts about this, but there should be some documentation?!....)
The source isn't too bad to read.
A block is a version number, a hash of the previous block in the chain, a hash which is a Merkle root of a transaction tree, a timestamp, a compact representation of the target to generate the block, a nonce, and a tree of transactions.
Blocks are shared with the pool when their hash is below a certain target value that depends on the current difficulty. The only other criteria is if the block is part of the longest work chain, so orphaned blocks won't be shared.
Every transaction has inputs and outputs. For every input, you have to prove that you control the outputs of another transaction by having a key that matches that output. For every output, you specify a key or an address that the other person uses to prove they are the recipient of that output in a future transaction. Block generation is done by incrementing the above mentioned nonce and hashing a block until the resulting hash is below a certain target value.
In solo mining, you make your own blocks and try to find nonces that solve them. In pool mining, you work on blocks that are provided to you by some private point. You send back blocks that are almost solved (below a certain target) as your proof of work, and the controller verifies them. You are paid based on how much work you do, not whether your computer happens to be the one that completely solves the block. You could submit solved block yourself if you're the one that happens to solve it, but since the controller creates the block, including the recipient address of the generating transaction, it wouldn't do you a lot of good. And you could rewrite the recipient address yourself, but then you'd pretty much be solo mining and there's no point in being in the pool.
Hope that helps.