Additional Public API Change

in #steemit5 years ago

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

Sort:  

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

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.

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

Posted using Partiko iOS

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...

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

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.

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.

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

Loading...

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

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. 😕

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.

Oh, thanks. I'll take a look.

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?

Hi!, Did you find an alternative?

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}
"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. 💔

Awesome update!

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

Congratulations @steemitdev! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You received more than 4000 upvotes. Your next target is to reach 5000 upvotes.

Click here to view your Board
If you no longer want to receive notifications, reply to this comment with the word STOP

Support SteemitBoard's project! Vote for its witness and get one more award!

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!

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.035
BTC 64866.85
ETH 3369.73
USDT 1.00
SBD 4.45