• 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?