- whats a merkle tree
- the transactions are not computed as one big input for a hash, but each transaction is concatenated with the ofllowing one, then hashed, and these results are hashed with the next results, kind of like a knockout game schema. This allows you to figue out if a transaction is part of a valid block using just the compare values that were used down the tree instead of the full transaction list, less data and less compute or hashing
- Why does bitcoin use 2 hash passes?
- avoid block length extension attacks
- safer because it doesnt depend on the security of one hash family type
- why was ripemd chosen for addresses
- usability of shorter addresses, ripe shrinks the 65 byte public key to 20 bytes address
- public key stays hidden until spent, guarding against quantum attacks
- first sha256 and then ripe, because of the fixed length high entropy inputs for ripe hash phase
- How does a miner decide which nonces to try?
- nonces do not provide the proper search space
- a unique extranonce part of the coinbase hash is supplied per stratum connection, and a mining machine rolls through the extranonce space, nonce, ntime nudges and version values to avoid recomputing the merkle tree
- Can you elaborate on how miners typically distribute work across a grid of miners?