RE: Steem Network Status - And A Witness Update
Hey, @dragosroua.
I understand the desire to keep a positive tone here—rarely anything good is accomplished through negativity—as long as we're also keeping it real.
I don't think it's being overly negative to state that the blockchain being down for 10-11 hours in my case is really that okay. So, it would be nice, not by you, but someone—Steemit Inc through the steemitblog—would come up with a way to keep the blockchain running particularly in times like this, but any time, really, and announce it, and then implement it.
I understand that the blockchain programming is hefty, and that bugs are bound to happen and to be missed. Can bug searches only be done manually? I would hope not. I would hope that some kind of app could be constantly looking for bugs in the background (maybe it already is), or some kind of discrepancy in the coding between forks even.
I would also hope that before all 20 Top Witnesses committed to the new hard fork, that the older version could continue to roll on somehow until it was apparent that the new fork was okay and going to take. It seems like there would be a way for that to happen.
I can be thankful that my account is okay and that things are back up and that I can now leave this comment—and I am. But I also feel like it shouldn't go down in the first place, especially before anything permanent or however you say it is supposed to happen.
Bugs are rarely occurring because of software itself (hence an app monitoring the blockchain for that is not plausible) but because of humans. With that being said I can assure you that the steemd blockchain is coded at the highest standards and it has functional and unit tests in place. Each version and each release comes with these tests, which are basically ran to maintain the integrity of the software itself between various upgrades.
But the nature of blockchain itself makes it difficult to test it. You may end up with a case in which all the functional and unit tests are passing, but some edge case on the real blockchain will not. In this specific case, the bug was triggered by somebody issuing a vote on the lockout period, which, for some nodes was 12 hours, but for others 12 seconds. To put in practice such a test is really time consuming and really hard to implement. I salute the fact that there is a Steem testnet and, in an ideal world, this bug should have been triggered there. But again, the nature of the blockchain makes it very hard to do so. Testnet doesn't have the same number of witnesses or even the same structure of them.
I am also annoyed about these hiccups, but, as a programmer doing this thing for a living, I know they are inevitable. Sooner or later a big boo-boo will happen. And when it happens, the only thing that matters is how fast and dedicated (and lucid) those involved in fixing it are.
And in this case they did their job very, very well.
I appreciate all of that. I've been told enough times of the complexity of the blockchain and the inevitability of a bug. And while that may very well be the case today, as more and more people gravitate to any blockchain of any kind, and as entire industries are built upon them, it is my hope that someone, somehow, someway, will figure out how to keep the blockchain running properly and accurately—without causing greater issues as it continues to run—and that it won't be such a difficult thing. I imagine money and resources will help that come to be. And I guess for the meantime, we hope it won't happen again and we all find something else to do when it does.