Additional Public API Change

avatar

api changes

Last month we published an article telling you about some of the upcoming changes to the public API that we host at api.steemit.com. Today we would like to announce one additional item to those set of changes. These changes will all go live as soon as 7 days from now (2019-01-10 16:00:00 UTC). If you are an app developer who relies on api.steemit.com to support your app this can be considered additional time to both review the original set of changes and also to test your apps against these changes.

get_account_votes

The get_account_votes method returns all votes made by an account since the beginning of time on the blockchain. For some accounts, this single call can return upwards of 20MB of data. Because of this, get_account_votes is an extremely inefficient way to regularly poll for vote history data and disk-backed instances cannot respond quickly enough to this method. For these reasons we will discontinue support for this method in our public API. In our review of utilization, we found that this method is not used very often and is not required by many apps.

The Replacement

For the few apps that do need this type of data, there is a much more efficient way to obtain it. The newer database_api.list_votes method allows you to specify a limit for votes returned and also allows you to start at a particular post. Documentation for this method has been recently added to our developer portal and is available here.

Next Steps

If you are a Steem app developer who relies on our public API, you should review our previous post about the upcoming API changes and pay special attention to whether you are using the soon-to-be-deprecated get_account_votes method. Our developer portal continues to be an excellent reference and feel free to ask any questions you may have in the comments.

The Steemit Team



0
0
0.000
25 comments
avatar

Anybody can answer how this will impact the common users?
Or any practical benefits it may have in the user experience?

~not a coder,just inlove with steem

0
0
0.000
avatar

It shouldn't affect the ordinary user experience at all. Basically we have given developers the ability to be much more specific about what information they pull from the Steem blockchain. Until the changes go through, some developers don't pull any specific information from the blockchain, they just basically take a whole bunch of data and then only use the data they need. But this is a very inefficient process that has contributed to the size of nodes with no real benefit. So we're making extra sure that all developers still have the ability to pull whatever information they need from the blockchain–so their apps don't suffer–while getting rid of the ability to pull so much data all at once for no good reason.

The only meaningful change is that this will help reduce the size and cost of running Steem nodes, which will make it easier for anyone to run their own node, theoretically leading to increased decentralization.

0
0
0.000
avatar

Thanks, anything that will make improvements to the steem under the hood will always be welcome to us.
I really appreciate @andrarchy the way you explain many technical details of the steem blockchain to the masses.

Godspeed.

Posted using Partiko iOS

0
0
0.000
avatar

Great work in finding efficiencies. Any estimate of the reduction in RAM requirements for a full node from these changes?

Posted using Partiko iOS

0
0
0.000
avatar

I really hope it comes to the day that even an ordinary PC can host a Steem private node. Great job in the bearish market guys.

0
0
0.000
avatar

This should be helpful to exchanges as well, no? If steem is expensive for exchanges to make a wallet, gonna be tough to get and keep it listed...

0
0
0.000
avatar

Is there a reason for the blackout in communication from everyone at @steemit?

  • It would help if at least you could make a public statement @andrarchy.

  • It would also help if you could discuss the Power Downs by @ned and @steemit.

Otherwise it will look like the @steemit team is abandoning ship, without informing the Steem community about it.

I personally would be happy if @ned is using his funds to start Destiny, a Steem-based Dapp that offers SMT's and equal votes for all of it's users, and is based on verified identities as opposed to anonymous accounts.

0
0
0.000
avatar

i doubt changes to the api impact common users unless the people maintaining their neo-programs don't follow up ... good to see the notice there, thanks @steemitdev

0
0
0.000
avatar

I use get_account_votes to display posts upvoted by major community accounts such as @curie and @photofeed (https://alpha.1ramp.io/community/curie).

What can be an alternative for this? I haven't made a full Hivemind sync yet (~19M blocks synced). Should I be streaming the blockchain for this?

0
0
0.000
avatar

Hi!, Did you find an alternative?

0
0
0.000
avatar

For now, I am using account history for the profile and filtering the votes. But this is very inefficient as I need to iterate through a lot of non-vote entries in order to collect a sufficient number of votes.

Here's an example using beem -

from beem.account import Account
acc = Account('singhpratyush')
for entry in acc.history_reverse():
  if entry['type'] == 'vote' and entry['voter'] == acc.name:
    # Do something with entry

The entry would look something like this -

{'account': 'singhpratyush', 'timestamp': '2019-01-10T15:21:48', 'type': 'vote', '_id': 'c3ebc9b2f2ce5b561d1a6c2873372020ff74e90c', 'author': 'ahmadnayan', 'trx_in_block': 34, 'voter': 'singhpratyush', 'trx_id': '453bdef21336689414e142dbf033e08848679d91', 'block': 29336541, 'op_in_trx': 0, 'weight': 10000, 'permlink': 'n9b6astn4ljaqw00x9lfckegyks65v81o585hg0fqfu01h1a7xw0zvzfpw0ft3hc20190110213037', 'index': 3404, 'virtual_op': 0}
0
0
0.000
avatar
"In our review of utilization, we found that this method is not used very often and is not required by many apps."

Hey, I did use that a lot! It was pretty usefull. 💔

0
0
0.000
avatar

I don't get along with this new method, it seems buggy. So far I've not been able to retrieve the data the same way I used to do. I try to download the votes made by an account when specific authors and permlinks are given but then many votes are missing. When I switch the limit from 30 to 200, for instance, the latest query doesn't include the full data that the first one retrieved. Some votes are missing between them and even some votes actually made by the account are never being retrieved by this method. It reminds me of the get_posts method. I 'm reporting this, otherwise, I need support. 😕

0
0
0.000
avatar

Yes, that endpoint is not working as expected. I opened this issue on Github - https://github.com/steemit/steem/issues/3223. It may provide you with some additional information.

Here's a not-so-good method to do it - https://busy.org/steemit/@steemitdev/additional-public-api-change#@singhpratyush/re-mosqueteros-re-singhpratyush-re-steemitdev-additional-public-api-change-20190111t092148496z.

0
0
0.000
avatar

Oh, thanks. I'll take a look.

0
0
0.000
avatar

I cant update my profile image or anything, it always revers back to the previous after saving. Whom to report this issue ?

0
0
0.000
avatar
(Edited)

@steemitdev, @roadscape

get_reblogged_by is no longer supported?
Is there a replacement
or should I read 30,000,000 blocks to find out who is resteeming my articles?

get_follower and get_following no longer supported follow_typ "undefined"?
until 12.01.2019 I got here with a query Blog, Ignore and Unfollow.
Now I have to query blog and ignore in a loop.
But I have no info or possibility to get Unfollows.

An idea
the "follower with time (also ignore, unfollow, new follow ...)"
and "Reblog my articles",
and in "Comments the category, RootAuthor and RootPermlink".
in the Account History!

This saves many queries!!!!!!!!!!!

The AccountHistory is all in and out.
except Follower to me and Resteems of my Artikle!

And if in the AccountHistory the comments are the fields Category, RootAuthor and Root Permlink
I don't have to ask get_content before I can call get_state!

Thanks
Ps. I'm developing a desktop application right now.

0
0
0.000
avatar

hey there,
We noticed at the time of rollout of changes (as of Jan 10) that the post's rshares data is now returning undefined
Is this an intended behaviour?
We are for example pulling post data using steem.api.getDiscussionsByCreatedand then accessing post's post.vote_rshares
This is only no longer working on api.steemit.com and api.steemitdev.com
Would be great if you can provide some insights or look into this.
Thanks!

0
0
0.000
avatar

HOW CAN I BLOCK SOMEONE ON DTUBE? WHERE CAN PEOPLE CONTACT SUPPORT TEAM FOR STEEMIT AND DTUBE???

0
0
0.000
avatar

wtf is going on with steem and steemit accounts on twitter ?

they are not working.

0
0
0.000