📢 AppBase: еще один шаг вперед для блокчейна Steem (да начнется тест) (@steemitdev)

in #steem6 years ago (edited)

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

Предварительный релиз AppBase уже здесь

Еще в августе мы поделились с вами новостью о том, что наша команда работает над рядом любопытных обновлений для блокчейна Steem. Одним из таких обновлений является AppBase, необходимый для создания отдельных «модулей», значительно улучшающих способность Steem к масштабированию.

AppBase – это первый шаг в создании мультичейновой структуры. AppBase позволит сделать многие компоненты блокчейна Steem модульными, создавая дополнительные неконсенсусные блокчейны в качестве отдельных плагинов. Такие плагины можно обновлять гораздо быстрее, потому как они не требуют повторного воспроизведения всего чейна.

Мы готовы к широкомасштабному тестированию AppBase!

Если вы простой пользователь steemit.com, вы тоже можете нам помочь. Направляйтесь на steemitstage.com и используйте сайт, как вы обычно это делаете.

В этой промежуточной среде действуют те же меры безопасности, что и на steemit.com, хоть она и считается подготовительной. Она разработана так, чтобы как можно точнее воспроизводить «реальный» steemit.com, дабы полностью проверить новый код, прежде чем он будет внедрен в steemit.com. Если вас все равно беспокоит перспектива использования своих ключей, вы можете использовать исключительно свой ключ для публикаций. Даже если вы вовсе не собираетесь входить в систему, простой просмотр сайта и предоставление нам отзыва тоже будут полезны.

Для разработчиков

Если вы предоставляете или поддерживаете сервис на основе Steem, вам необходимо будет предпринять несколько шагов, чтобы ваш сервис продолжал корректно работать. Подробности приведены ниже.

Изменения для нод steemd

Если у вас запущена нода steemd, вы можете удалить тег ´v0.19.4rc1´ из GitHub или Docker Hub.

Изменения в API

Мы реструктурировали наши API, чтобы обеспечить большую гибкость для будущих апгрейдов и поддержки. Теперь API принимают один объект в качестве аргумента и возвращают в качестве значения один объект. Все существующие API были обновлены в соответствии с этим стандартом.

Поскольку нам больше не нужно придерживаться семантики параметров в стиле C++, мы можем использовать более разнообразные типы аргументов по умолчанию, а также параметры с переменным числом аргументов. К тому же мы можем расширить функциональность вызова, не затрагивая существующие приложения, расширив возвращаемые объекты.

database_api претерпела значительные изменения и теперь разрешает запрашивать все консенсусные объекты в любом порядке, который используется steemd. Это обеспечит службам большую гибкость в процессе поиска нужных им объектов.

Новый condenser_api

Чтобы этот переход давался легко, мы создали файл condenser_api, который содержит все существующие на данный момент методы API и использует существующее форматирование аргументов. Самый простой способ заставить приложение работать с Appbase – это заменить api на condenser_api.

API должны вызываться по именам

Если вы привыкли вызывать API с помощью API id, то знайте, что этот метод вызова больше не поддерживается. Теперь все API должны вызываться по имени.

Удален login_api

login_api был разработан как способ сопоставления имен API с числовыми идентификаторами. Поскольку API больше не вызываются через id, необходимость в login_api отпала, и поэтому он был удален.

Список методов API

Если вы вызовете jsonrpc.get_methods, в ответ получите список всех доступных методов API.

Прототипы аргументов и возвращаемых объектов

Если вы вызываете jsonrpc.get_signature, передавая имя метода API, он возвращает аргумент и возвращает прототипы объектов.

Например:

{"jsonrpc":"2.0", "method":"jsonrpc.get_signature", "params":{"method":"database_api.get_active_witnessess"}, "id":1}
возвращает:

{"jsonrpc":"2.0","result":{"args":{},"ret":{"witnesses":[]}},"id":1}

{} это аргумент типа void, который возвращает список в поле witnesses

Использование condenser_api

Все вызовы в condenser_api возвращают [] в качестве аргумента, поскольку передача аргументов массива непрозрачна и реализуется в самих вызовах API. Они следуют формату текущего аргумента. Существующим приложениям нужно просто прекратить использование login_api и начать отправлять все свои вызовы на condenser_api, ибо для использования Appbase не требуется больше никаких изменений.

Например, вызов get_dynamic_global_properties через condenser_api в сравнении с database_api:
{"jsonrpc":"2.0", "method":"condenser_api.get_dynamic_global_properties", "params":[], "id":1}

{"jsonrpc":"2.0", "method":"database_api.get_dynamic_global_properties", "id":1}

Поскольку метод не содержит аргументов, поле params может быть опущено, если не используется condenser_api. Однако опционально он может быть включен как тип void (например, "params":{}), но это не является обязательным.

Упрощенный синтаксис

Возможно, вы заметили, что в предыдущих примерах для вызова API использовался другой формат. Раньше на этом месте был устаревший синтаксис вызова, который выглядел так:
{"jsonrpc":"2.0", "id":0, "method":"call", "params":["api","function",[ARGS]]}.

Однако теперь мы поддерживаем более упорядоченный синтаксис вызова:

{"jsonrpc":"2.0", "id":0, "method":"api.function", "params":[ARGS]}

Оба формата работают, но предпочтительным для удобства чтения является новый формат.

Усовершенствованный комплаенс JSON-RPC

Также мы внесли изменения, призванные сделать steemd более совместимым с широко используемой спецификацией JSON-RPC. Это довольно новый подход. Пожалуйста, помогите нам протестировать нашу реализацию json-rpc, дабы убедиться, что она соответствует спецификации.

Обратная совместимость

Наша служба обратного проксирования,jussi, обеспечивает трансляцию методов. Это означает, что даже после развертывания Appbase в нашей производственной среде старые вызовы API должны по-прежнему работать.

Необходимость дальнейших обновлений

Обратите внимание, что новые API, представленные в этом релизе, все еще находятся в процессе разработки. Им предстоит пройти целый ряд изменений сериализации, над которыми мы активно работаем, и следовательно, они находятся на разных этапах завершенности. В ближайшее время мы опубликуем пост, раскрывающий характер данных изменений. Пока можете поиграть с этими API, но знайте, что они будут изменены. После того, как мы завершим работу над ними, мы откажемся от condenser_api и начнем переход на новые API.

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

Конфигурация протоколирования всегда была проблемным местом в файле конфигурации из-за количества доступных опций. Всё было настолько сложно, что для этого требовался отдельный парсер. Мы перешли на формат json, который позволяет использовать только один парсер. Конфигурация протоколирование по умолчанию сейчас такова:

# Console appender definition json: {"appender", "stream"}
log-console-appender = {"appender":"stderr","stream":"std_error"}

# File appender definition json:  {"appender", "file"}
log-file-appender = {"appender":"p2p","file":"logs/p2p/p2p.log"}

# Logger definition json: {"name", "level", "appender"}
log-logger = {"name":"default","level":"debug","appender":"stderr"}
log-logger = {"name":"p2p","level":"debug","appender":"p2p"}

Плагины

Плагины включаются с помощью опции plugin. Опции public-api больше нет, и все API теперь доступны через plugin.

Большинство конфигурационных опций теперь именуются по плагину, к которому они принадлежат. Параметры конфигурации, которые не были заменены именами, по-прежнему поддерживаются, но теперь будут сопровождаться предупреждением об устаревании при использовании. contrib/config-for-docker.ini и contrib/fullnode.config.ini – это примеры конфигураций, которые используются в образах Docker. Вы можете использовать их в качестве примеров конфигурационных файлов. Мы по-прежнему настоятельно рекомендуем использовать для развертывания вашей ноды образы Docker.

Вывод

Эти изменения находились в разработке на протяжении многих месяцев и представляют собой серьезный шаг вперед в развитии Steem. AppBase послужит надежной основой для удовлетворения всех наших будущих потребностей в плане масштабирования и позволит нам развивать платформу и одновременно управлять распределением ресурсов для разработчиков сторонних приложений, заверителей и бирж, чтобы мы могли расти все вместе.


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

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


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


Coin Marketplace

STEEM 0.30
TRX 0.11
JST 0.033
BTC 64243.42
ETH 3152.93
USDT 1.00
SBD 4.28