1. What would the single largest incentive be for a miner to check out a new pool? Is it safe to assume that it's just uptime?
2. Can you speak more on the resources required to support more miners within the context of your system? Is it a function of hash throughput, the number of miners connected for example? How does one scale up if so, is it a matter of throwing more cores/disks/memory at the problem? possible to shed some light on how these resources relate to scaling the pool? Not looking for super meticulous detail, would really appreciate just a ballpark idea.
1. So there's a few reasons:
- For the blockchain, it's much more stable/safe/secure to spread hashrate around, rather than having a single pool responsible for mining the majority of all blocks. While this large pool would have a monetary incentive to act ethically, they can also act maliciously and hijack the chain (51% attacks). Not only this, if something happens to that pool and it needs to shut down, it's possible that the chain could become stuck or transactions get delayed because the difficulty's been adjusted to a higher value than the rest of the network can handle.
- For the miner, it usually comes back to where they can maximize their income. Mining on larger pools comes with more steady payments, as the pool finds blocks more often, but with that comes more competition and miners each get a smaller share of each block found. On the other hand, mining on smaller pools comes with much more infrequent payments, but with much less competition and thus a larger share of each block found. But as mentioned, blocks on smaller pools are found much less often, so it's difficult to determine where the best profits are made. Larger pools will give you a steady income, but smaller pools will make you more in the short-term if they get lucky finding blocks quickly. Beyond this, also, most mining pools usually take a cut themselves from each block found. Smaller pools almost always take less (if any), though, which may be the tipping point for some miners regarding profits. Regarding uptime, though, a lot of miners prefer larger pools because, as mentioned, every second that a pool is down, miners are losing money. Larger pools are better at guaranteeing uptime.
2. So in the previous message I mentioned three things:
- Multiple stratum servers in different regions - This is useful because it lowers the latency/distance between your miners and the stratum servers. When your miners find a block candidate, they need to submit it to the server, and this takes longer if they are mining from a longer distance. As such, it gives more time for a different pool/miner to submit a block, which would mean that your miner's block candidate would become an orphan. Beyond this, it would take some of the load off of your main stratum server.
- Multiple/fallback daemons - This is useful because it lets multiple daemons handle requests and everything that your pool needs regarding the blockchain. If your daemon goes down, your pool goes down. Multiple/fallback daemons would let you manage this and allow the pool to continue running until you're able to restart the daemon + debug the issue.
- Get better/dedicated servers - As you mentioned, this is useful because throwing more "cores/disks/memory" at the problem always does make things better + improve uptime, allowing more miners concurrently on your system. You can balance this + deploying more stratum servers to create a more robust network.