Witness log

in #witness-category7 years ago

This update covers:

  • We've got trouble, we've made it double.
  • How Abit's horde of kittens helped with blockchain bandwidth.

"This idea came to my mind after a small talk with @gtg.
Steem wizardry, or steemit wizardry - that's what our witnesses do."
- @inber, freelance concept artist and illustrator.

Steem Wizardry
- Fragment of "Steem Wizardry" by Inber

A lot was happening on external markets, the price of bitcoin was very unstable, which had impacted on all "altcoins," including STEEM. It even went down to $0.80.
Steem doesn't have any fees for transactions. Instead, it uses bandwidth, which depends on the Steem Power held by users. The purpose is to prevent abuse such as spam.

The more Steem Power you have, the more interactions with the blockchain you can make. Bandwidth is not a fixed amount - it depends on certain conditions. This formula takes into account max_block_size, which is a parameter set by witnesses. Other parameters include current_reserve_ratio and indirectly average_block_size.

When problems emerged with accounts whose absolute amount of Steem Power was too low (which resulted in insufficient bandwidth even for non-excessive usage), there were ideas to increase max_block_size.
It was more of a hack than an actual solution, especially as it could not solve voting issues when people fell below fixed #define STEEMIT_VOTE_DUST_THRESHOLD (50000000).
I was against using a wrong tool to solve the problem, so instead I've delegated a lot of SP to users who were experiencing such issues before it was fixed.

This time however, the number of people reporting bandwidth issues was surprisingly high. Some of them had a considerable amount of Steem Power.
There was no other choice but to increase max_block_size
Witnesses reacted very promptly and quickly changed their maximum block sizes. (Have you seen all that hassle with increasing Bitcoin's block size?).

We've got trouble, we've made it double.

Unfortunately, that wasn't the end of the story and the bandwidth problems kept coming back. @roadscape broke the news: the issue was caused by a nasty bug in max virtual bandwidth calculations.
It overflowed 64-bit precision and since one of the components of this equation was max_block_size, which had just been doubled... Yeah, exactly.

Witnesses reduced max_block_size back to a minimum, which resulted in less frequent overflows, while the dev team was working on releasing the fixed version

Release the kittens!

Or: Abit's horde of kittens bravely fought against blockchain bandwidth problems.

Abit came up with the idea of affecting average_block_size for a short period of time every few hours (when we were about to overflow).
We all know that the Internet is made of cats, so I suggested using ascii-art kittens, like the ones below:

            .                .                    
            :"-.          .-";                    
            |:`.`.__..__.'.';|                    
            || :-"      "-; ||                    
            :;              :;                    
            /  .==.    .==.  \                    
           :      _.--._      ;                   
           ; .--.' `--' `.--. :                   
          :   __;`      ':__   ;                  
          ;  '  '-._:;_.-'  '  :                  
          '.       `--'       .'                  
           ."-._          _.-".                   
         .'     ""------""     `.                 
        /`-                    -'\                
       /`-                      -'\               
      :`-   .'              `.   -';              
      ;    /                  \    :              
     :    :                    ;    ;             
     ;    ;                    :    :             
     ':_:.'                    '.;_;'             
        :_                      _;                
        ; "-._                -" :`-.     _.._    
        :_          ()          _;   "--::__. `.  
         \"-                  -"/`._           :  
        .-"-.                 -"-.  ""--..____.'  
       /         .__  __.         \               
      : / ,       / "" \       . \ ; bug          
       "-:___..--"      "--..___;-"               
                                                  





    _                ___       _.--.
    \`.|\..----...-'`   `-._.-'_.-'`
    /  ' `         ,       __.--'
    )/' _/     \   `-_,   /
    `-'" `"\_  ,_.-;_.-\_ ',     fsc/as
        _.-'_./   {_.'   ; /
       {_.-``-'         {_/



         )
        (        /(
         \yYYy,_I_`;
         JgLFO^JL_
         \ `-  \, ` Qr+as
          `

Source: http://www.ascii-art.de/ascii/c/cat.txt

So if you were looking at your steemd console at that time, you could notice cats running all over your screen.
Don’t try this at home (or at the blockchain). It was a special case that required a special solution for a very short period of time.

After some time, the fix was ready and it was quickly applied by many witnesses. Currently, 15 out of 20 active witnesses are running it. It's also active on many other nodes.

Please note that bandwidth limiting is not a part of consensus and it's handled by a witness plugin (that has nothing to do with being a witness). So it's essential to run it on nodes that are expected to support such a feature.
For instance, it's a good practice to run it on your seed node.

SteemFest Official Carrier

As already mentioned before: on behalf of SteemFest 2017 and with a permission of @roelandp, I've made an agreement with TAP Portugal to offer special conditions for the travels of the participants that are coming to this exceptional event. Discount codes available.

Support Original Authors on Steem (bonus)

Gandalf making Steem wizardry
- "Gandalf making Steem wizardry" by Inber

50% of liquid author rewards from this post will be donated to support SteemFest2.
That will apply to all of my witness update posts from now on until the end of October.



If you believe I can be of value to steem, please vote for me (gtg) as a witness on Steemit's Witnesses List or set (gtg) as a proxy that will vote for witnesses for you.
Your vote does matter!
You can contact me directly on steemit.chat, as Gandalf



Steem On

Sort:  

What would we ever do without you guys gtg. I'm a minnow but I'm already working hard in bring new pips in steemit. Already more than 5 people as join and many on there way. Im also looking to keep the first ever steem meet up in Jamaica. Thanks for creating and maintain a great encironment for this platform to run. God bless.

a good explaination for those of us more techno challenged! thank you

This was very interesting. Thanks for the update, I am sure most of the community had no idea about the inner workings of how the bandwidth issues were being dealt with.

That's why in my latest witness logs I'm trying to reach the audience that have no idea about witnesses (by adding some stories, etc.).
We need a lot more awareness within community.

Ohhh, that's what the kittens were all about. Very confusing to my comment upvote bots, who upvoted quite a few kittens before I eventually had to blacklist @abit, haha.

Anyway, @gtg, I don't know who you are or much about you, but you're a great witness. Thanks for all your good work!

Thank you :-)

very solid post, I put this on Twitter! Thanks for the work you're doing.

Thank you :-)

Well at least the bandwidth error was resolved thanks to @abit's kittens
Increasing the block sizes drastically reduced the amount spent of times I would get the bandwidth error but the recent update seems to have completely mended the problems for me
I hope this perists and thank you @gtg for all your work as witness
Keep up the great work buddy! :)

Thank you :-)

Thanks abit for looking out for us minnows. 🐓🐓

Thank you @gtg for all the effort you are putting to improve steem and steemit.
Your rep and followers do not match your efforts.
I have just voted for you as a witness.

Thank you :-)

Upvoted as always :)
I just released some big news so if anyone could resteem and upvote that would mean the world to me
Thanks
Otto

Thanks for the update!