Update your STEEM apps! Big changes coming for 3rd party developers

in steemitdev •  2 years ago  (edited)

We have created a new public jussi endpoint for third party applications to use. Jussi is our custom built caching layer, for use with steemd and other various services (such as SBDS). The jussi endpoint is available now at https://api.steemit.com. Condenser (the front-end application for steemit.com) is already using api.steemit.com today. We encourage all third party developers to begin using the new endpoint right away. We are planning to deprecate the steemd.steemit.com endpoint in favor of api.steemit.com in the near future.

What does this mean for third party developers?

For our public steemd endpoint using api.steemit.com, apps will need to speak to it through http/jsonrpc instead of websockets. The libraries we maintain will soon be updated to default to api.steemit.com instead of steemd.steemit.com, which will cover a lot of apps that don't set an endpoint and just use the default.

JSONRPC has been chosen to be used for all of our infrastructure for a variety of reasons; the two biggest being the ability to more easily load balance and manage connections, and the ease of use for new developers - as JSONRPC is much more common than websockets.

Is it going to be difficult to update my steem apps?

In most cases it will be extremely easy to make this change. The four most popular steem libraries (steem-js, steem-python, radiator, and dsteem) that the majority of steem apps are built with already support http/jsonrpc. Other libraries may as well. All you'll need to do is update the endpoint/url to https://api.steemit.com from the older wss://steemd.steemit.com. If you have a custom written app that doesn't use one of the popular libraries you will need to change your transport method to http/jsonrpc from websockets.

How long do I have?

The timeframe for deprecating steemd.steemit.com is not determined yet, but you should start implementing this change as soon as possible if you are using our public nodes for your STEEM apps. We will announce a final date before the endpoint is taken away.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

I'm a user..not a geek
I have no idea what this means.
That said..I REALLY APPRECIATE the update.
It makes me feel a LOT better knowing that the devs
and are working on Steemit.
similar updates during the last few weeks when Steemit was broke.

saya pak sekarang mengalami masalah .
1.badwit kehabisan darah

  1. Steempower,steemdolar
    Mohon dibantu selesaikan masalahnya ,tolong pak ya.

I put an oar in here ,since we are in the same boat.

Basically, for end users, you can expect steemit.com and all steem-based tools to become more stable and more responsive.


Two imperfect metaphors that describe what happened in two levels of detail:

  1. You ever gone to an office to talk with a super expert about something, but they are too busy. But, it turns out that their assistant was helpful and solved your problems without you having to wait around.

  2. Whenever you want to work on Steem, you go down to the steem office. There's this one really smart giant, but kinda grumpy robot who takes your request and goes to work magic on the blockchain then gets back to you. They tried making his brain bigger and giving Botty tons of coffee to get him to work faster. They even tried giving him more arms. Still Botty got way too busy and developed a bit of a temper. It's pretty hard to build more like Botty because he's fat, has a ton of custom parts and fills up the building. He also slurps down the electricity and takes ages to wake up if he goes to sleep.
    But, it turns out that most of what botty does is read stuff from steem. And, there's some bots made from high quality mass produced parts that are way less fat, slurp less power and wake up super quick when summoned. These bots are super good at handling your steem requests and remembering what they read just in case you or the next customer needs it. They don't like to bother Botty unless they need too. These guys are called Jussi.
    So now, you when you go to steem office you talk with any of the available Jussi bots. If you're just asking to read something, chances are your Jussi bot can pull it from their memory. When Jussi can't remember something or they need to write something into the blockchain (like upvotes, postings etc) then they go ask Botty and get back to you at super fast bot speeds.
    When the steem office gets really busy, it's super easy to open up more counters and have more Jussi bots ready to serve - afterall Jussi bots are made from cheap mass produced but high quality parts. When steem gets less busy then some Jussi counters can be closed to save power.

That's kinda what happened.

I'm going to turn this into a post.

That explains everything.
Thank you.

Like Everitt, I'm an end user, not a developer.
My IT experience is in usability and human factors (aka "developers' most hated person"), not code.
I'm also PR and communications.
I just want things to WORK... and when they don't, I want someone to wave a flag and say "Yeah, shit's broken right now, but we're fixing it..."
Silence when shit breaks is a bad deal. People lose confidence.
So THANK YOU for the update.

These more frequent updates are great. Please keep them coming & thanks for all your hard work.

  ·  2 years ago (edited)

But got some bugs. I updated one of the server that runs on Yehey.org Load Balancer servers to use https://api.steemit.com as suggested instead of wss://steemd.steemit.com. Getting this error.

[ Europe - Yehey.org server ]
<-- POST /api/v1/page_view 2d2bb8e00b64d68bbd85fd3b82
-- /page_view --> ip=2600:8806:600:2c70:ed83:5c3a:4542:a06f uid=2d2bb8e00b64d68bbd85fd3b82 page=/pick_account
<-- POST /api/v1/csp_violation 2d2bb8e00b64d68bbd85fd3b82
-- /csp_violation --> https://yehey.org/pick_account : https://api.steemit.com/ -- Mozilla/5.0 (Windows
NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36
--> POST /api/v1/csp_violation 200 5ms 0B 2d2bb8e00b64d68bbd85fd3b82
--> POST /api/v1/page_view 200 34ms 12B 2d2bb8e00b64d68bbd85fd3b82

Everything is working fine but when I start in the homepage, click on new or hot I have to reload/refresh the screen to see the posts. Then go back to homepage, it also require to refresh. This behavior is only happening when using https://api.steemit.com.

I will also post this findings in github.com.
Thank you for your hard work.

  ·  2 years ago (edited)

For scripts/bots running #radiator, you can switch to api.steemit.com by upgrading the library:

$ bundle update

Also see: How to Update Radiator Apps

Thanks for adding this information inertia. In your next radiator release can you make this the default? We will be doing the same with steem-js and steem-python, and I'm sure @almost-digital will be updating dsteem also.

EDIT: I see that that is a bundle update so you must have already done so, great :)

dsteem doesn't have default nodes, but I'll make sure to change the examples to show api.steemit.com 😁

I am currently implementing a HTTP Client for SteemJ - The next version will support it ;)

Good news, glad to hear it!

Yep, it's been the default for almost two weeks. :D

But of course, people have to at least do bundle update. There are additional steps if they aren't using the defaults, which is likely. But most of that can be picked up by recloning the app and installing from scratch, which I go over in How to Update Radiator Apps.

Interesting - I believe we weren't quite production ready on that two weeks ago. It's usually best to wait for a formal announcement to update such things. But thank you for being on top of it anyway, much appreciated.

Hay @justinw - I would totally agree with you, but as a third party developer myself I have to say that this is quite impossible. - I need to implement the stuff at the same time you do it, because you do not provide a lot of information to us. From my point of view this is more or less the first time I hear about a change early enough.

If we talk about Steem Updates its quite a nightmare - You release a new Steem Version, everyone updates the nodes, and depending on the changes, a lot of third party tools are no longer usable (at least parts of them).

I've talked to timcliff some time ago that it would be really great to have a changelog for third party devs some weeks before you release changes.

That would be really really nice <3

This IS the advance notification and is why we're not discontinuing hosting a websockets enabled cluster of steemd's (wss://steemd.steemit.com) - at least not yet. We want to give everyone fair warning and a chance to update their libraries before discontinuing this service. It's never our intention to leave behind 3rd party developers. If you need help updating your applications or
steem library feel free to reach out to me directly on steemit.chat and I'll do my best to answer any questions you may have. This will be a transport change, not an API change - anything that worked over websockets to steemd will work over http/jsonrpc, generally with fairly minimal adjustments. We made a commitment earlier this year to communicate as much as and as far in advance as possible for any API changes or anything else that could effect third party developers. We will continue to notify everyone about any upcoming changes in advance. Steem on.

Thanks for taking the time @justinw - Yeah, as I said, this is the first time I see an announcement early enough and I love it. If you keep doing this for the future and especially for API changes I am more than glad to hear that <3

Regarding the switch to HTTP I also agree that it is not the most complex task :D

Steem on! :)

Will there be documentation/tutorials if we want to add Jussi in front of our own full nodes? Are their drawbacks? Was the transaction broadcast errors, account not found, and all the other issues the result of Jussi?

As we have availability to do so we will expand the existing documentation for jussi as well as any other services that are lacking full documentation.

Excellent! Thank you so much for keeping us informed on what's being done to improve the performance of this site we love so much. I'm already starting to see improvements. Things are actually working as expected again!


I like to read the dev blog to keep up to date, although it’s in very general terms since most of this goes over my head... But...
Whatever is going on, to me, Steemit seems much more stable and responsive this evening. And as they say in the tech world, “The proof is in the pudding.” (Just kidding. No one says that in the tech industry, or anywhere else probably... but if I hit “post” and this comment sails right through I’m going to celebrate with some pudding...)

I hope you have plenty of pudding.

"The proof is in the pudding", I'll remember that.

Ahem: "the proof of the pudding is in the eating."

Shortening it the way people have, it sounds like "look for the engagement ring or other prize, it's inside the pudding!" :)

Thanks for the updates. Good to know that devs are working to make the application better!

What about the efficiency of web sockets vs thousands of individual https connections? I'm sure caching will add a lot of efficiencies but a lot is lost by dropping sockets.

When considering millions of connections spread across many servers, short-lived https connections are much easier to load balance and plan for than long-lived websockets. Websockets certainly have their advantages, but in this case https is much more appropriate, and also easier for 3rd party developers to pick up and use.

https connections are exactly the same as wss connections, except they're "upgraded" https connections. Also, the fact they are now using keep-alive would negate your point that they're extracting some benefit by using "short-lived https connections".

Except, they do not scale well. Go try to load balance millions of websocket connections and see how that goes :)

We have difficulties with performance already. This approach will only worsen the situation.


Thanks for the info

Very good news. I can imagine a scenario where 3rd party developers utilize the new api to bring a number of innovative personal and business services to market. This will in turn help to broaden the appeal of Steem blockchain technology.

Congratulations @steemitdev, this post is the most rewarded post (based on pending payouts) in the last 12 hours written by a User account holder (accounts that hold between 0.1 and 1.0 Mega Vests). The total number of posts by User account holders during this period was 1274 and the total pending payments to posts in this category was $1676.44. To see the full list of highest paid posts across all accounts categories, click here.

If you do not wish to receive these messages in future, please reply stop to this comment.

Great, even more apps are coming soon.. wish I could have an online training how to use this..

Yay ! A transparent cache service, that is (I guess) exactly what was needed for these performances issues!

I like these changes, but where is the Jussi currently drawing data from?

I believe Hivemind isn't ready yet, and wasn't easily able to understand which of the other sources are being used for what.

I tried running the docker SBDS as this seems very useful to me, but the documentation isn't really there yet, I couldn't easily see the DB schema, and getting the data as checkpoints required Amazon S3 permissions I don't have. Are there any public sources for this checkpoint data?

Sounds good but it’s a language I don’t understand 😂

  ·  2 years ago (edited)

Dear @ned

I met you very briefly around this time last year at the Indaba Hotel in South Africa. Today we're having the annual lunch for my mom's birthday at the Indaba and my aunt and uncle and I got onto the Steemit discussion (I just joined about a month ago).
Honestly, I don't know if it will reach you or if it will mean anything at all. I just wanted to say - hang in there. Many people can't grasp the "ride the wave" concept very well, but I think you're doing pretty well. From the sounds of things, people have been gunning for you personally. It must be pretty difficult to feel like you're carrying this all, but you seem to have a community behind you that truly believe in you. I owned a small business when I was 27, I can't even begin to think what it might feel like to manage something of the magnitude you're dealing with. You're doing a fantastic job @ned .

Does this mean things will be less glitchy?
Be nice to here from the Dev's when the site is having problems...
Why can't the dev's do something like what the extensions for firefox/crome [email protected]? and implement some way of getting rid of dead followers,and hiding resteems or sort them like Busy.org ? why all the cool things coming from add on's...
Be nicer if things were more unified rather than having to switch things through second? party...app,ext,page.
I am not a tech,so Idk.
Thank You for the great site! I do understand it is still beta stage,I can't wait to see how this grows and expands!

So happy it is back to running smoothly again. Good work @steemitdev

You can find Russian version of this post HERE

Hope that all developer will read this post and will take action.

Well This is really a huge step towards making the apps more fast.

  ·  2 years ago Reveal Comment

hi @steemitdev, @ned


This came up in a #community challenge where people in #GHANA and Africa want to promote #STEEMIT at their various locations.


It's obvious now that your team is working tirelessly to make steemit, steem as better as steemians has dreamed @steemitdev

jussi is another great added value as it's name was derived from juicy.

It's a cool custom built caching layer.

When you cook something with steem, it becomes nice and jussi.

I reciprocate to that meme dude, that's awesome 👏

The guy who made it, @layz3r, is a latin nerd and claims it is latin for “request”.

From what I understand, jussi is the "first-person singular perfect active indicative" of jubeō, jubēre, that is an alternative form of the Latin verb iubeō, iubēre, that means "to command, to order".
So jussi means "I commanded" or "I ordered".