📝 Обновление Steem для разработчиков (Graphene 2.0) (перевод статьи @steemitblog)

in #ru8 years ago (edited)

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

Представляем Graphene 2.0

Graphene — это технология, лежащая в основе множества различных блокчейнов (Steem, Bitshares, Golos, и т.д.). Graphene 1.0 с его способностью проводить сотни тысяч транзакций в секунду был настоящим прорывом. Он очень удобен для разработчиков, и позволил нам создать Steem всего за пару месяцев. Graphene 2.0 это новый уровень развития этой бэкэнд технологии, который способен сделать масштабирование таких платформ, как steemit.com безопасным и экономически грамотным.

Адаптация файлов, отображаемых в памяти для хранения

Под Graphene 2.0 состояние консенсуса блокчейна будет целиком сохраняться в файле, отображаемом в памяти, к которому смогут обращаться сразу несколько процессов. Это означает, что состояние приложения будет эффективно записано "на диске" и операционная система сможет по надобности передавать данные поискового вызова на диск/с диска.

Поскольку требования блокчейн-памяти растут, это обеспечит множество преимуществ:

  1. Уменьшение времени загрузки и выхода
  2. Параллельный доступ к базе данных
  3. Повышение устойчивости к сбоям
  4. Менее частые повреждения базы данных
  5. Моментальный "слепок" состояния системы
  6. Обслуживание большего количества RPC-запросов на одной памяти

Проблемы с Graphene 1.0

Graphene был разработан специально для сохранения в памяти состояния консенсуса блокчейна, используя при этом то, что, вероятно, является одной из самых передовых технологий в структурах данных памяти (Boost Multi-index Containers). Этот подход очень хорошо масштабируется для любых традиционных криптовалют, так как состояния приложения (балансы аккаунтов) весьма малы относительно транзакционной пропускной способности (баланса переводов и сделок).

Размер состояния программы Steem гораздо больше, чем у любой другой криптовалюты. Это состояние включает в себя все статьи, списки каналов и голоса. В дополнение к этому, к состоянию посылаются запросы тысяч пассивных читателей, которые заинтересованы в просмотре такого блокчейна, как steemit.com

На сегодняшний день ноды Steem, поддерживающие steemit.com, потребляют свыше 14 Гб оперативной памяти, причем это число быстро растет. Это означает, что каждый раз, как мы хотим добавить какую-либо новую функцию, объем необходимой оперативной памяти возрастает.

Большое время загрузки и выхода

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

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

Однопоточные лимиты соединения (эффект бутылочного горлышка)

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

В обычной блокчейн-экосистеме это нормально, но Steemit не обычный блокчейн. Каждую секунду ноды Steem обрабатывают запросы от тысяч клиентов. Каждый из этих запросов должен быть передан в тред, который имеет право читать и записывать данные в базу. Короче говоря, каждая нода Steem способна обработать около 150 одновременных соединений без заметных для пользователя задержек в работе сайта.

Чтобы обеспечить стабильность для всех пользователей, steemit.com запускает множество экземпляров Steem нод и распределяет нагрузку между ними. Каждый из этих экземпляров требует дополнительных 14 Гб оперативной памяти (дальше будет больше).

Восстановление после сбоев программного обеспечения очень дорого

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

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

Управление версиями API

Каждое обновление API требует запуска полной ноды. Поддержание нескольких версий API одновременно требует значительных ресурсов. Под Graphene 2.0 можно будет произвольно запускать останавливать сразу несколько API на одной базе данных.

Улучшенный контроль доступа

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

Параллельные сетевые протоколы

В рамках новой модели мы сможем отделить код P2P сети от основного кода базы данных и логики. Такое разделение позволит нам параллельно добавить несколько сетевых протоколов, поддерживая разделение между публичным кодом сети и логикой проверки блокчейн ядра на уровне операционной системы.

Это позволит нам запускать, останавливать, и перезапускать сетевую инфраструктуру P2P без перезапуска всей базы данных блокчейна.

Краткое содержание

Graphene 2.0 будет включать в себя значительные изменения в самом ядре Steem, поэтому нам потребуется несколько недель для его внедрения и тестирования. Потому как это очень значительное обновление, работа над остальными новыми функциями блокчейна будет продолжена только после полного перехода. На время тестирования старая и новая версия Steem будет работать параллельно, чтобы гарантировать, что случайного неожиданного хард-форка не случится.

После того, как переход на Graphene 2.0 будет завершен, мы переключим всё наше внимание на Гильдии Кураторов.

Оригинальный пост и его обсуждение ЗДЕСЬ


Данный пост опубликован в рамках бета тестирования проекта RuSteemitBlog


Критика, комментарии и предложения приветствуются.


Sort:  

Пофиксили картинку в футере (больше не кликабельна) - просьба всем, у кого были вылеты при просмотре с устройств под Android проверить и отписать результат. Это важно для оформления багрепорта. Спасибо

стало нормально работать.
пусть так и делают,а то с телефона не просмотреть до конца и коммент не оставить

А другие ребята написали что все равно вылетает((

Гильдия кураторов - это хорошо :)))

Интересно это будет гильдия вроде Curie или аналог voting pools, предложенных Нэдом
Кажется кто то уже готовится

NEW SECRECT WHALE ACCOUNTS REVEALED! - A Look Into Which Accounts Were Behind the Massive Spike in Steem Power Recently