In my GitHub you can see that I’ve done a fair amount of work in analyzing hash attacks. Zcash has an advantage in that they’re solve time is four times faster. So they have four times more data to determine what the difficulty is over any given period of time. This means they will have 1/2 the error in estimating the correct difficulty. I’m trying to organize a lot of coins to use this algorithm, but I’m most worried about Bitcoin gold because it has the longest solve time. I am pleasantly surprised to see your chart above because the error I made is not showing up anymore like it was at the beginning probably because your network hashrate is higher and it’s harder to suddenly increase your hashrate. So right now the algorithm is pretty good and it’s a lot faster than if you had stuck with Digi Shields parameters. But I need to look at it carefully to see if there are hash attacks making it more expensive for your miners. Zcash dedicated miners are losing only about 5% of their profit to transient miners. I am going to have to do some more research to determine if my current recommendation of 60 blocks for your window is the best guess. I don’t look at any test Nets because I have a lot of real coins to look at to compare with my modeling. The basic modeling is amazingly accurate. If you have changed the adjust Factor to 0.998 and check the solve time you can see that the simple modeling that determined that factor is exact to Within the inverse of the square root of the number of blocks in your test net so far except for a little error from very large hash attacks. I am not finished with Bitcoin gold especially since it’s so far the largest coin about to use the algorithm. Also because it’s the first using such a long solve time. Just please send me a note when you have an estimate on when you might Fork to make sure I do not have any more suggested changes. I do not know why Bitcoin chose such a large future time limit but it seems like maybe you could go down to 1800 seconds to have a little more protection against greater than >50% hash rate timestamp manipulators. Do not hesitate to send me any questions or concerns via email or our Developers difficulty Discord.
Youre right that hash attacks are not such a big deal with big coins like Bitcoin gold. My focus has been with small coins who need a lot of protection from huge hash attacks. But from that starting point I only need to increase the size of the averaging window to get close to the optimal algorithm for a larger coin. Large coins have less of a problem with difficulty so a lot of good developers were not interested in it. But miners are concerned about being treated fairly and it’s good to assure them that the difficulty is as good as you can make it. I worked on it because I liked this kind of engineering puzzle. Karbo wanek coin stumbled upon one of my posts and implemented it with great success and started telling other coins. These coins coming to me and asking me things motivated me to learn a lot more. Bitcoin cash then ask me to help and showed me to better ideas than what I was able to find. So my interest got a lot stronger and I had to work more
BTG sent me the difficulty data for the last few weeks. The algorithm is doing terrible because I approved letting the old Digishield limits stay in place. The network hashrate is increasing 400% about 3x a day, getting 10 to 35 blocks at a difficulty that is 1/4 of what it should be. When they leave there are delays. The situation will be fixed when they fork to employ LWMA. It’s possible this could improve the price.
All the blue and magenta in these charts should not be there. The second series one is a close up showing 4 days per plot. Reminder about the problem: digishield uses BTC’s limits on the rise and fall difficulty is allowed. But it’s an ill-concieved type of limit. It actually stops the difficulty from rising when it is needed the most. Solvetimes are below target because I also allowed digishield’s asymmetrical limits to remain in place. I allowed the limits because they would have never been reached if the code did not have a big error.
I am new here, but have now read several of your posts… Can I just say that you are a true asset to the community? Great responses every time I see them. Well thought out and I learn something from nearly each one
Thanks. That’s what I’m trying to be - and I’ll continue to work hard to live up to your expectations.