1. A pool got transaction data from bitcoin core network.
2. Then, pool pass block header data to miners (solo miners or pool miners). the pool also use job_id, ntime with every header data.
3. Miners use block header data to create a lot of local block header data (or local works) by using different nonce2 (64 bits).
4. Then, local block header (or called local works) are hashed by miners' bitcoin mining machine.
5. If a nonce is found, job_id, ntime, vmask, nonce2, nonce, and user_id are sent back to the pool. Then, the pool re-create block header data, and test it.
6. Then, the pool submit validated block header data with the pool's a bitcoin address.
7. Then, new found block header data must be confirmed by other nodes in bitcoin core network. New block header is recorded in block header tree in bitoin core network.
8. Then, reward can be created, and can be given to the pool.
9. Then, the pool pass some reward to the miner.
This is a flow of all processing. Any error would occur during this flow.