Someone tried to power down negatively (withdraw negative VESTS) last week. The account was responsible for that:
As the transactions kicked in last night, the system bugged and caused everything to halt. The servers were running, but without any block production.
The official statement is here:
https://steemit.com/steem/@steemitblog/steem-blockchain-patch-issued
Steemit's developers and engineers quickly addressed the issue in a concerted effort with the witnesses. After a few hours of investigating and testing, the developers came up with a fix that was slowly implemented until the system recovered this morning to almost full participation (98.4375%). It's imperative that all witnesses update to the latest 0.19.5 version, or 0.19.10 (AppBase), since the update was a soft fork.
The update is at https://github.com/steemit/steem/releases/tag/v0.19.5
Bug Fixes
A field in withdraw_vesting_operation was not properly checked. This invalid op could halt the blockchain when the vesting withdraw was processed well after the op was made irreversible. Included ops are now no-ops to prevent the halt and new ops have the proper check to prevent this behavior in the future.
During the crisis, I manually rebuilt steemd on all my servers. The main and backup servers were updated to 0.19.5, and my AppBase test server to 0.19.10. Unfortunately, some witnesses experienced a random forced replay (which takes hours) instead of a restart that takes a minute; I was one of unlucky ones. It was a very long night for everyone, while some went to bed, some were waking up; the witnesses are spread across the globe. I tried to sleep a 4:00 am, but couldn't sleep at all. Got up again to monitor the progress and keep in touch with the others. Finally, my first replay finished around 7:00 am!
I enabled my signing key for it and went to sleep. It produced fine. Since many witnesses are disabled or missing blocks for not running 0.19.5, I became a top 20 witness by interim. I finally made it up there, even if it's going to be for a short period (whales, you're always welcome to vote for me). It's a good feeling.
Today, I switched my production to the 0.19.10 server, since I've been running AppBase for a few weeks already without any problems.
Applying The Fix
If you're a witness using the dockerized setup and haven't patched your server(s) yet, check this post https://steemit.com/witness-category/@someguy123/emergency-update-for-steem-in-a-box-witnesses-seeds-and-rpcs
If you're building manually, do:
git pull ; git checkout stable
For the AppBase build, the fix hasn't been merged yet, so you need to do:
git pull ; git checkout 20180702-fix-vesting-withdrawals-steemd
(thanks to for the tip)
Then recompile as usual.
Acknowledgment
Thanks to the Steemit team for quickly dealing with this issue, as they always did with critical incidents. And thanks to my fellow witnesses who were available with me to implement the fix as soon as it was humanly possible, despite the late hours.