These questions are partially inspired from this post on Merkle root hashing by pool operators. My understanding is that for Stratum mining the only hashing the pool has to do is produce the Merkle branch (which has to be done once per block and is the same for all miners in the pool?). My questions are:
- On the end device (miner/ASIC) side, (I believe) that the miner has to recompute the Merkle root after changing the extranonce2 field. If I have multiple miners connected to one "mining proxy" that is connected to a mining pool, I assume that each end device produces their own Merkle roots for the changed coinbase transaction and not the mining proxy?
- If it is the end devices computing the Merkle roots, is it done on the ASICs themselves or offloaded? The post I linked suggests that it's offloaded, but why - since wouldn't this be slower? Is the next Merkle root precomputed while hashing of the previous header is being performed by the ASIC?
- Does anybody have a sense of (roughly) what portion of total SHA256 hashes performed are from Merkle root calculations (not PoW hashes)?
Any help/clarification is appreciated.