There are more changes than we've ever made before in one release, but I'll try to summarize them in categories below. The system will be changing so dramatically that we encourage reports of any issues that come up. While we can test with simulators, we are deploying something that has never been done before, and we have no idea how it will effect the coin networks and block-finding, which we can't test with fake miners.
Performance improvements
- Many of the pool's tasks are now multithreaded. As a result, there is less likely to be a delay between the time a share is received and when it is evaluated to see whether a block has been found or not. This change should improve profitability because we will find more blocks and reject fewer stale shares.
- The memory leak that previously caused crashes and mandated a server restart every 12h has been resolved.
- Inefficient data structures have been replaced with more efficient ones. The pool was tested at 600GH/s with fake miners and performed adequately, a 10,000% performance improvement from the current code.
Bugfixes and fairness
- The orphan rate of many coins is very high because sometimes, the same person finds multiple blocks in a row for an easy coin. The second, third, and subsequent blocks are orphaned by the daemon. Now, we will reject blocks from miners when a block has already been found for the same height by someone else in the pool. This change will significantly lower the orphan rate. It is possible that profitability will increase by as much as 20% due to this change alone. The orphan rates will take one week to decline, so profitability will increase slowly until it reaches an equilibrium.
- Previously, jobs were not marked as stale quickly enough, so miners with very high ping times ended up with fewer stale shares than they should have. Meanwhile, miners with low pings paid for these other miners' stale shares from their own well-performing rigs. Now, the pool is more aggressive about stale shares. Even though the same amount of money is being earned, miners who have good connections will receive a greater portion of it. The result is that profitability will increase moderately, and stale shares will increase a little (except for the few miners who are very high latency, who will get a lot of stale shares).
- The present code sends two work restarts when only one is necessary at least 75% of the time. This major bug is fixed in the new release.
- Customers using automatic variable difficulties previously had the variable difficulties calculated across all miners using the account. If a customer had ten low-powered miners, it was possible that they could all be assigned difficulties of 65536. Now, each miner's variable difficulty is computed individually.
- A problem that caused some litecoin-denominated markets to be marked as having errors has been resolved, so profitability will increase now that we can trade these coins.
User interface improvements
- The "share details" dialog displays the coin your miner actually mined, in addition to the existing data that shows the proportions that all miners were mining.
Work restart accounting
- Upon connect, miners will be sent six difficulty 1 shares to test their work restart times and network latencies. Subsequent coin assignments will be chosen based, in part, upon these two values. These test shares are ignored, but normal mining begins after this testing period ends. One additional test share is sent every hour thereafter and the latency is the median of all the values.
- The work restart delay is used to mathematically determine which coin is the most profitable to mine, and whether more time would be lost switching than money would be gained in the event that a more profitable coin becomes available. For example, kires's miners are so inefficient (work restart median of 8s) that he mined litecoins 50% of the time in testing, but that was still the best choice for his miners.
- Whether or not to request a work restart when a merge mined coin has a new block is determined mathematically. When a merge mined coin gets a new block, the amount of money lost not mining the primary coin during the work restart is computed. If more money would be lost than would be gained from merge mining, then that miner receives no work restart. All the merge mining shares will be stale until the next primary block occurs - but the miner is still making the most money possible. Kires's miners, surprisingly, lost money with dogecoin restarts, so he will probably end up merge mining only half of the time.
- The "work restart penalty" is the percentage of money your miner is earning compared to the money earned by mining the coin it would have mined were there no network latency or work restart delay. The "average work restart penalty" is the average value for the entire pool. If your miner performs better than average, then you receive a bonus; if not, you receive a penalty. Either way, you receive consistent, pay-per-share earnings that are mathematically proven to be the most your miner can possibly make.
- The earnings reported to PoolPicker and other sites, and posted at the top of the page, will be the earnings of a hypothetical miner with the average work restart penalty, which, had we not made the changes in the "bugfixes" section, would be lower than they are now. That doesn't mean that earnings are actually lower; it means that many people could not achieve the earnings reported previously because of work restarts and network latency.
With such a major change, there are bound to be issues after the release. We appreciate your patience if any come up. We believe that these changes will significantly increase profitability for all miners, will make the pool more fair, and will allow miners who previously would receive too many work restarts to join in. Feel free to offer comments, before and after these changes take effect.