First, a brief explanation of the cause of the problems recently. In early November, we took the site down for a few hours on a Saturday to prepare for the feature we're going to release within a week (the ability to use game theory to distribute hashrate optimally across many coins). When the site came back online, Chris ran through a series of tests, such as connecting a miner, using a static difficulty, issuing payouts, and so on. The tests all passed, so the upgrade was considered successful. However, dollar payouts, while available, was not placed on the test list by mistake.
Forgetting to put dollar payouts on the test list caused two issues to remain undetected until recently, when someone with the right configuration started requesting dollars to be paid out, and that caused a crash. We fixed the first issue successfully on Friday, but that simply allowed the code to get to where the second issue happened. Now, we've fixed both issues and released the changes so that this configuration won't cause problems again. I also instructed Chris to add dollar mining to the tests to prevent future occurrences.
Now, on to current development. We have four major features that are in final testing by Chris now:
- The game-theoretic miner is in testing by Chris. Once enabled, miners will be assigned to a number of coins at once. Yesterday, we created a setup identical to the current pool and discovered that the profitability would be above 7 cents and would consist of four coins being mined simultaneously (plus everyone mining dogecoins).
- I successfully completed a job that will COPY old data from the database, zip it up, transfer it off the server, and then VACCUUM the tables to delete the old rows. The database is currently full with 150GB of shares and coin economics data. The job will retain data from the last 30 days and archive the remainder for permanent storage, in case we develop a feature that requires this data in the future. The feature passed initial testing and is waiting for final testing by Chris. The purpose of this archival is to improve orphan rates by reducing the time required to find block and share data in the database.
- I completed and tested Bittrex integration. Bittrex has several highly profitable coins, and it also tends to have a wider spread than most exchanges. Bittrex supports automated withdrawals, making it easy for us to integrate it. Bittrex is in final testing with Chris. After release, he'll have to delete more old coins that Cryptsy has permanently locked the wallets for in order to free up CPU usage for Bittrex.
- Bter integration is implemented, but is not yet tested because I want Chris to get the backlog of other issues tested first. Bter does not support automated withdrawals, so it will be a "sell-only" exchange. It isn't feasible to have Chris withdrawal coins from 100 wallets every night manually, so Bter will only be used to sell coins where it is the highest available price, and then Chris will withdrawal bitcoins when necessary.
This is also the case with stability. While the dollar payouts were a setback, the mining server had run for three weeks before that without any interruptions or issues, and the trader no longer causes the audit tables to diverge from the exchange balances.
We have finally passed the knee of the curve, where it is now simple to add many new features and to test them quickly, since the foundation is solid. With software, as with most technology, it appears for the longest time that not much is happening, but then all of a sudden progress starts to accelerate because of the knowledge gained and the work done before.