I thought the pool created the current block header using transactions from the MemPool, not the miner... I thought the miner only spun through the hashing for the current unique black header/nonce/extra nonce range given to them by the pool ?
In practice, miners & mining pools aren't actually building blocks & they never touch the mempool nor build/verify any transaction besides the coinbase - bitcoind handles all that. Handling Fees, signatures, etc is the job of bitcoind. By the time the pool process received the getblocktemplate() response - the block is already built & verified - besides the coinbase.
What pools do is keep track of miner stats, handle their networking & if a share reaches the target - tell bitcoind about it, which is done via the stratum protocol, which bitcoind has 0 idea about & is much more resource intensive than block verification/construction.
Thats my understanding...
I was hoping to get a better feel for what is actually sent back and forth between the pool software and the miners... there is little online that actually describes the protocol and the data structures, acknowledgements - how does the pool know the miner needs more data ? does it do a pull request or something? If a miner finds a block how does it tell the pool?
You know just some mild curiosity about just what the hell is going on in there ... beyond "Yup it works, look away before it sees you and stops working" 🤨
Thanks
Another situation is that when the computing power of the pool can no longer keep up with the future difficulty, it cannot efficiently and continuously produce the blocks with luck. From the mine pool manager to the miners, maybe someone knows what it is like problem or result