.. with an emphasis on scalability, simplicity, and reliability ..
This is so interesting. I'm curious to learn more about what is involved so please be patient with me. Would you mind briefly sharing some of the challenges that go into maintaining a pool? For example, what is the nature of the costs and what other variables are involved (users, bandwidth, servers, coin type??) in maintaining a pool that scales?
If you could point to a resource or two where I could do some reading that would be great too.
So just building a pool and getting people to mine on it is pretty simple, the easiest way is to just rent a server and install Foundation or some other pool source on it. Your costs initially will mainly just be those server fees, and you can charge a fee as a developer cut for every block that you find. Depending on your server and number of miners on the pool, this may/may not make you that much, if any money.
Regarding challenges, while I think Foundation is pretty easy to setup + manage, it still takes some knowledge to debug any issues. The main point of being a reliable mining pool owner is being able to ensure uptime, as every second that your pool is down, your miners are losing money. If you can't guarantee that, it's very likely that your miners will choose to go elsewhere.
Once you get enough miners to where you decide to put more work into the mining pool though, there's a few routes you can go:
1. Multiple stratum servers in different regions
2. Multiple/fallback daemons
3. Get better/dedicated servers
The point of each of these is not only to allow your mining pool to be able to handle more miners, but also to improve reach and lower latency. But either way, you'll have to draw those conclusions from your miners and make decisions accordingly.
Thanks for this. I have some follow-up questions:
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.