Что нового в Artery Blockchain версии 2.0 по сравнению с версией 1.3?
На протяжении 10 месяцев работы Artery Blockchain, по мере роста количества пользователей и транзакций, мы собирали и анализировали статистические данные. На основе этих наблюдений был выявлен ряд “узких” мест, требующих нашего вмешательства. Мы внесли в Road Map ряд изменений улучшающих производительность и удобство работы с блокчейн. Все эти изменения были объединены под общим названием Artery Blockchain 2.0.
В чем же заключаются ключевые моменты этого обновления?
I. Переход с номера блока на время
Раньше ход времени изменялся в блоках из расчёта 1 блок = 30 секунд (например, вознаграждение за делегирование выплачивалось раз в 2880 блоков). На практике блоки могли выходить чуть быстрее или чуть медленнее, из-за чего время выплат и других регулярных событий могло сдвигаться. Теперь эти события привязываются к реальному времени и колебания времени выхода блока на них больше не влияют. Что позволяет уменьшить промежуток между блоками и, теоретически, увеличить скорость прохождения транзакций.
II. Хранение данных
В новой версии для сериализации-десериализации данных используется Protobuf вместо Amino. Он намного быстрее, а сериализованные с его помощью данные занимают гораздо меньше места. А это означает, что блоки будут весить меньше и быстрее будут обрабатываться валидаторами и записываться на диск.
III. Брошенные аккаунты
На данный момент в блокчейне скопилось достаточно много неактивных аккаунтов. По многим из них активности не было с момента их создания. При этом они потребляют вычислительные мощности валидаторов, поскольку входят в реферальную структуру и мониторятся системой. В новой версии аккаунты будут исключаться из структуры после 3 месяцев неактивности, что должно заметно сократить ненужные вычисления и снизить нагрузку. Кроме того, если владельцы отключенных аккаунтов захотят их реактивировать, они легко смогут это сделать оплатив тариф (аккаунт будет возвращен под изначального пригласившего, либо, если он тоже отключен — вверх по цепочке до ближайшего активного пользователя).
IV. Новый API
Кроме REST API новая версия будет также поддерживать интерфейс gRPC, что позволит разработчикам проще и удобнее интегрировать свои продукты с Artery Network. REST API также существенно переработан в т.ч. добавлена документация в формате OPEN API. Искренне надеемся, что он стал проще и удобнее в использовании.
V. Структура модулей
Переработки коснулась и структура модулей и хранимых данных. Для снижения накладных расходов, некоторые небольшие модули с малым объемом хранимых данных (например subscription) были перенесены в профиль. Это позволило уменьшить размер занимаемый блокчейн и уменьшить количество операций чтения / записи.
VI. События
Помимо повышения эффективности сериализации-десериализации данных в общем, мы пересмотрели списки необходимых событий и убрали те, которые имели избыточные (дублирующие между событиями) данные.
VII. Система автоматического обновления
Изначально в Cosmos SDK и Artery Blockchain присутствует система, которая позволяет посредством голосования применить обновление blockchain для исправления каких-то ошибок или внесение нововведений. При этом реализовано это так — на определенном блоке работа текущей версии блокчейн останавливается и все ноды прекращают свою работу. Дальше администратор (а в случае Windows и MacOS приложение Artery Network) должен перезапустить новую, заранее скаченную версию ноды, которая проведет необходимые изменения и продолжит работу. Начиная с версии 2.0 механизм встроен в Cosmos SDK и требует меньше усилий для проведения обновлений.
VIII. Горячий старт
В данной версии помимо полной синхронизации с нулевого блока, использования слепка для старта валидатора появилась еще одна возможность — выгрузить состояние блокчейн на конкретном блоке в специальный файл (файл генезиса) и затем использовать его для запуска ноды без проверки всех предыдущих блоков (при этом для такого блока также вычисляется хэш и он должен сойтись с данными в остальной сети, что исключает возможность подлога данных при запуске).
Хочется отдельно обратить внимание, что из-за несовместимости форматов хранения данных, структуры модулей и параметров работы обновление с 1.3 на 2.0 возможно только через перезапуск блокчейн из файла генезиса. При этом все данные из версии 1.3. сохраняются в этот файл, после чего отдельным скриптом (будет доступен на github) файл преобразуется в совместимый с версией 2.0. И из нее производится запуск.
Для снижения рисков, связанных с ошибками в программе , вышеописанные изменения будут сначала проверены на testnet, который мы планируем запустить в ближайшее время. Для привлечения участников, в testnet будет действовать специальная программа вознаграждений (которые будут выплачиваться монетами ARTR в mainnet). Подробнее можно узнать на сайте testnet: https://artrtest.com