📢 Грядущие изменения в api.steemit.com


Вчера (07.12.2018 в 23:00:00 по UTC) конечная точка api.steemit.com начала направлять избранные методы steemd непосредственно на hivemind. Если вы используете эту конечную точку для любого из приведенных ниже методов, вы должны как можно скорее начать тестирование своих приложений на api.steemitdev.com.

Этот шаг предпринят нами в рамках процесса удаления плагинов tags и follows из наших полных нод, функциональность которых была перенесена в сервис hivemind. И хотя hivemind пытается имитировать существующий формат запроса/ответа, как и всю основную логику, в этой схеме есть заметные исключения, о которых пойдет речь в этом посте.

Как мы уже рассказывали в одном из наших постов, одним из основных приоритетов Steemit Inc. является значительное снижение стоимости запуска ноды Steem. Направляя эти вызовы API на Hivemind мы значительно уменьшаем количество ресурсов, используемых нашими полными нодами.

Предыстория

Целью реализации condenser_api для Hive является перенос соответствующего набора функций tags и follows со steemd для поддержки экземпляров condenser с минимальными требуемыми изменениями. Это позволит операторам нод снизить ресурсные требования steemd, и при этом заложит основу инфраструктуры для социальных API следующего поколения.

Несмотря на то, что мы пытались обеспечить прежнюю доступность соответствующих данных, в некоторых случаях это оказалось просто невозможно. Ярким примером является вызов get_state, ответ которого является монолитом, включающим в себя чрезвычайно широкий спектр данных. Часть возвращенных в ответ данных нерелевантна для большинства приложений, а часть из них полностью исключена из области действия hive (пример: расписание заверителей). Ещё один пример – при загрузке треда комментариев все задействованные объекты аккаунтов возвращаются в полном объеме (включая балансы, полномочия, статистику). Это приводит к дополнительному потреблению пропускной способности, при том что релевантна лишь небольшая часть данной информации.

В некоторых случаях части ответов API, неиспользуемые condenser, просто не были реализованы в hive, дабы сэкономить время или снизить сложность. В других случаях ожидаемые значения могут немного отличаться, но быть представлены в совместимом формате. Hive не может гарантировать точность данных в соответствии с самым последним блоком. Поскольку интерфейсы часто полагаются на вспомогательную информацию, такую как steem_per_vests или feed_price, hive хранит и возвращает некоторые выходящие за область действия, однако всё же доступные данные, но они будут кэшироваться с TTL продолжительностью вплоть до нескольких минут. Эти значения всё равно можно получить с помощью отправки других API-вызовов к steemd.

Обзор изменений API

Мы перенесем API, переопределив конкретные методы steemd, переданные api.steemit.com.

Эти методы теперь будут обслуживаться hivemind:

Follows Queries

    get_followers                 [following, start_follower, follow_type, limit]
    get_following                 [follower, start_following, follow_type, limit]
    get_follow_count              [account]

Content Monolith

    get_state                     [path]

Trending Tags

    get_trending_tags             [start_tag, limit]         (!) only supports ('', 250)

Discussion Queries

    get_discussions_by_trending   {tag, limit, start_author, start_permlink}    trending
    get_discussions_by_hot        {tag, limit, start_author, start_permlink}    hot
    get_discussions_by_promoted   {tag, limit, start_author, start_permlink}    promoted
    get_discussions_by_created    {tag, limit, start_author, start_permlink}    created

    get_discussions_by_blog       {tag, limit, start_author, start_permlink}    account-blog
    get_discussions_by_feed       {tag, limit, start_author, start_permlink}    account-feed
    get_discussions_by_comments        {limit, start_author, start_permlink}    account-comments
    get_replies_by_last_update    [author, permlink, limit];                    account-replies

Исключения

Эти вызовы НЕ будут переадресованы hivemind, а будут переадресованы легкой ноде steemd:

get_state.params=['@<user>/transfers']
get_state.params=['~witnesses']

Не портированы

Deprecated/Unused Discussion Queries - NOT ported!

    get_post_discussions_by_payout        {tag, limit, start_author, start_permlink}    payout
    get_comment_discussions_by_payout     {tag, limit, start_author, start_permlink}    payout_comments
    get_discussions_by_cashout            {tag, limit, start_author, start_permlink}    UNUSED/cashout
    get_discussions_by_children           {tag, limit, start_author, start_permlink}    UNUSED/responses
    get_discussions_by_votes              {tag, limit, start_author, start_permlink}    UNUSED/votes
    get_discussions_by_active             {tag, limit, start_author, start_permlink}    DEPRECATED
    get_discussions_by_trending30         {tag, limit, start_author, start_permlink}    DEPRECATED (DNE)
    get_discussions_by_payout             {tag, limit, start_author, start_permlink}    UNUSED (DNE)
    get_discussions_by_author_before_date [author, start_permlink, before_date, limit]  UNUSED

Кроме того, следующие запросы также не были портированы, что означает, что они могут стать недоступны:

    get_feed_entries()
    get_feed()
    get_blog_entries()
    get_blog()

    get_account_reputations()
    get_reblogged_by()
    get_blog_authors()
    get_tags_used_by_author()

Они могут оставаться доступны в течение некоторого времени, но будут обслуживаться только легкой нодой. Мы не можем гарантировать их доступность.

Многие из этих вызовов очень похожи (или идентичны) одному из поддерживаемых методов. Если это не так, пожалуйста, оставьте комментарий под оригинальным постом, и мы рассмотрим варианты.

Не портированы, все еще доступны через steemd condenser_api

Поскольку они все еще являются частью консенсуса, и потребители ожидают, что они будут на 100% точны и актуальны, в настоящее время они не обслуживаются hivemind и будут по-прежнему доступны через steemd.

Content Primitives

    get_content                   [author, permlink]
    get_content_replies           [parent_author, parent_permlink]

    get_active_votes              [author, permlink]
    get_account_votes             [account]

Изменения в конфигурации Steemd

После периода тестирования плагины follow и tags будут удалены из наших API-нод. Однако мы добавим плагин reputation, который позволит нам продолжать использовать существующую метрику репутации. Раньше он был подразделом функциональных возможностей плагина follow, и это единственный элемент логики, который трудно воспроизвести за пределами steemd. Если вы полагались на методы репутации, предоставляемые follow_api, вам необходимо обновить код и начать использовать reputation_api.

Детали изменений API

Предшествующий метод call

call ['condenser_api', method, params]

Метод call прежнего стиля принимает в качестве параметров [api, method, [params]]. Hive направляет эти вызовы к соответствующему внутреннему методу.

Примечания

  • API должен быть установлен на Condenser_api
  • Мы не рекомендуем использовать этот метод

Запросы Follow

condenser_api.get_followers
condenser_api.get_following
condenser_api.get_follow_count

Это простые прямые замены.

Примечания:

  • плагин steemd follows способен удерживать несколько состояний follow; hive удерживает одно
  • функция допускает недокументированные маловероятные крайние случаи
  • внутренне состояние follow в hive должно быть blank, followed или muted

Примитивы контента

Важно: хотя hive предлагает эти методы как часть своего condenser_api, api.steemit.com будет продолжать обслуживать их непосредственно из steemd. Тем не менее, hive использует их в своих рамках для создания ответов для get_state и различных методов get_discussions_ *.

Примечания:

  • Формат ответа на комментарий в hive является подкатегорией steemd.
  • устаревшие/неиспользуемые поля были удалены или нормализованы
  • некоторые области сомнительной полезности не были удалены из реализации

Монолит контента

condenser_api.get_state

Обратите внимание! Теперь Hive отказывает в обслуживании этих маршрутов:

  • /@account/transfers
  • /witnesses и /~witnesses

Hive обслуживает эти маршруты, запрошенные condenser, которые ни к чему не привязаны, однако steemd обрабатывает их в любом случае:

  • /@account/followed
  • /@account/followers
  • /@account/permissions
  • /@account/password
  • /@account/settings

Примечания:

  • встроенные данные get_dynamic_global_properties усекаются
  • hive не хранит актуальные ключи для аккаунтов, но на страницах /@account/xxx он по-прежнему выдает минимальные данные аккаунта.

Набирающие популярность теги

condenser_api.get_trending_tags

Примечания:

  • параметры [start_tag, limit] должны быть оставлены пустыми или переданы как ['', 250]
  • в этой статистике учитываются только первичные теги (“категория”), а не все теги (в текущей реализации)

Запросы обсуждения

Глобальные

condenser_api.get_discussions_by_trending
condenser_api.get_discussions_by_hot
condenser_api.get_discussions_by_promoted
condenser_api.get_discussions_by_created

Специфичные для аккаунта/блога

condenser_api.get_discussions_by_blog
condenser_api.get_discussions_by_feed
condenser_api.get_discussions_by_comments
condenser_api.get_replies_by_last_update

Примечания:

  • все примечания к get_content применимы и здесь

Тестирование и обратная связь

Если ваше приложение или сервис использует какие-либо из перечисленных выше вызовов и api.steemit.com, начните тестирование с api.steemitdev.com как можно скорее. Если вы обнаружили неподдерживаемый вызов API, который вам критически необходим, сообщите нам об этом, и мы найдем решение.

Обратите внимание, что в этот раз API steemd не меняются – только API, предоставляемые api.steemit.com.

Если какие-либо из ваших приложений по-прежнему используют get_state, мы настоятельно рекомендуем как можно скорее внести в них изменения и отказаться от него.

  • Команда Steemit

Переведено @blockchained

Оригинал поста: ЗДЕСЬ


Если вам нравится то, что мы делаем - поддержите делегата blockchained в сети Steem


Телеграм чат: https://t.me/steemit


Загрузите десктопное приложение с открытым исходным кодом RuDex


Вы можете торговать токенами STEEM/SBD на RuDEX с 0% торговой комиссией


Comments 1