ASICseer mines BCH exclusively with its development fee. In preparation for the BCH halving, we built out an ability to switch between BCH and BTC mining (ultimately, our company must behave profitably). We wanted to go back to BCH mining, but it seemed that BCH profitability was reduced despite supposedly having equalized between the two chains. I started doing some investigation.
I bought coinwarz API access and started logging BCH difficulty, trying to get some real data in the hopes of building out a switching algorithm for internal use.
I figured that I'd take the median value of the last 24 hours. If difficulty was below that value, we'd mine BCH. If difficulty was above that value, we'd mine BTC. A few things came to light:
- I found conclusive proof that the DAA is being gamed.
- I realized the immediate solution to this problem.
This screenshot shows that, anytime the difficulty drops to around 60-70% of the median difficulty value over the past day, pools that have both BTC and BCH endpoints ("the cartel") end up finding a disproportionate amount of blocks (as high as 25 blocks per hour) instead of the expected amount of six blocks per hour. In fact, this cartel waits until the lowest possible BCH difficulty to do that.
So, I began to think: "How can we, as honest miners, prevent this occurrence?" With this question in mind, I built out bchdiff, a JSON API that samples BCH difficulty over the last 24 hours and presents the data in an easily-digestible manner.
The trigger for
is_bch_diff_low is set to return
current_divided_by_median is < 0.99 (99%). With this API, you can mine BCH whenever the difficulty starts to recede. With enough people and enough hashrate, use of this API would prevent crazy oscillations, and would remove the profit motive for this pool cartel. The difficulty would never drop to 70% of its median value, and the pool cartel would no longer be incentivized to bring exahashes of BTC hashrate onto the BCH chain.