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

Авторы: Колин Шварц, Грегори Марку, Каймановы острова и Марин Петрунич

Обновления спецификаций

Вскоре после того, как мы выпустили наше последнее обновление, мы смогли обновить переход состояния Lodestar до спецификации 0.7.1. После того, как 30 июня была заморожена спецификация 0.8, мы сразу же начали обновлять различные компоненты Lodestar до последней спецификации.

Мы рады, что наконец-то полностью перешли на спецификацию 0.8.1. Сейчас мы проходим все тесты спецификации 0.8.1: ssz, bls, работоспособность и переходы между состояниями как в минимальной, так и в основной конфигурации.

Значительная часть обновления заключалась в приведении ssz в соответствие со спецификацией. Начиная с 0,7 по 0,8, ssz включает две новые функции: явные ограничения для динамических списков и новые типы битовых списков / битовых векторов. С этой целью мы создали новую служебную библиотеку под названием bit-utils, которая реализует эти два новых типа: bitvector и bitlist. Наши самые последние пакеты ssz и bit-utils доступны на npm и github.

Технический прогресс

Помимо того, что мы не отставали от спецификаций, мы добились огромного технического прогресса за последние два месяца. Произошло много событий, но мы постараемся выделить здесь самое главное:

Мы отделили параметры времени выполнения от констант, что позволяет нам запускать тесты основной сети и минимальные спецификации и легко экспериментировать с конфигурациями тестовой сети. Мы также решили перейти к стилю «монорепозиторий» для управления излишками опубликованных пакетов eth2.0, и мы думаем, что это поможет нам двигаться быстрее и повторно использовать как можно больше работы, когда мы начинаем работу над нашим легким клиентом. Мы организовали репозиторий Lodestar, чтобы использовать lerna для управления различными общими модулями в Lodestar, утилитах ssz и легкой клиентской работе. В ближайшие недели мы планируем перенести наши вспомогательные репозитории (ssz, bls, bit-utils, утилиты тестирования и т. Д.) В монорепозиторий Lodestar.

Мы реорганизовали наши параметры интерфейса командной строки, чтобы они были более согласованными для всей кодовой базы, реорганизовали код нашей базы данных, чтобы удалить дублирование кода, исправили выбор лучшего голоса Eth1, завершили депозитный договор / обработку депозита с обновлениями дерева Меркла, завершили нашу реализацию ENR и все в порядке. на пути к реализации Discv5.

Совсем недавно мы работали с командой libp2p над исправлением проблем с gossipsub. Мы уже опубликовали gossipsub v0.0.3 и работаем с командой libp2p над интеграцией gossipsub в качестве реализации pubsub по умолчанию в js-libp2p; ожидайте еще одного релиза в ближайшие недели! Мы также все еще работаем над интеграцией Hobbits и помогаем доработать спецификацию в соответствии с нашими потребностями.

Еще одно направление экспериментов - перенос на AssemblyScript различных более мелких компонентов. Ранее мы делали несколько анонсов по поводу AssemblyScript, но вкратце: AssemblyScript - это язык, который выглядит как TypeScript, но компилируется в WebAssembly. Мы думаем, что будет полезно создать читаемый и доступный код, который может работать с более высоким уровнем скорости и надежности. Несколько недель назад мы начали работу над LMD Ghost и реализацией SHA256 на AssemblyScript.

Мы также создали некоторую инфраструктуру для оптимизации нашего кода. Теперь у нас есть простая платформа для выполнения тестов, и мы также упростили отслеживание использования ЦП в наших спецификациях. Это будет неоценимо, поскольку мы приближаем Lodestar и его утилиты к производственному использованию.

Сотрудничество

Одна из основных целей Lodestar - создать и внести свой вклад в современный инструментарий, чтобы сделать работу разработчиков максимально простой и интуитивно понятной. С этой целью мы продолжаем плодотворное сотрудничество. Создав Lodestar, команда продолжила плодотворное сотрудничество с людьми из libp2p, опираясь на эту великую и развивающуюся экосистему и внося в нее свой вклад. По состоянию на июнь Yeeth и Lodestar также сотрудничают. Команда Yeeth будет создавать компоненты AssemblyScript, которые будут применимы к Lodestar. Мы также подняли наше сотрудничество с SSZ на новый уровень и создали simpleserialize.com. Этот веб-сайт предоставляет готовую для браузера версию SSZ, написанную на TypeScript, и дает представление о том, чего можно достичь в Интернете для Ethereum 2.0. На веб-сайте все еще используется старая версия спецификации, но мы ожидаем ее обновления в ближайшую неделю.

Лицензия

Несколько недель назад мы обновили лицензию Lodestar, чтобы сделать нашу реализацию более доступной. Мы осуществили массовый переход всей ChainSafe с GPLv3 на LGPLv3. Согласно нашей предыдущей лицензии, закрытые веб-сайты не могли бы использовать Lodestar, теперь они могут! Это значительно увеличит количество случаев, в которых можно использовать Lodestar, сделав его более доступным без снижения его защиты.

Будущее направление

Теперь мы находимся в положении, когда у нас есть большинство основных элементов цепочки маяков и клиентов валидатора. Так где же тестовая сеть? Мы над этим работаем. Наше будущее сосредоточено на «производстве» Lodestar, доводке недостающих компонентов и, что наиболее важно, на исследованиях / разработках легких клиентов.

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

У нас также есть много работы по оптимизации Lodestar. В настоящее время у нас есть правильный код, но его необходимо отточить для использования в продакшене. Мы будем строить нашу текущую инфраструктуру для сравнительного анализа и отслеживания, чтобы выявить ключевые точки преткновения и провести соответствующую оптимизацию. Мы также работаем над добавлением мониторинга различных показателей приложений и систем с помощью Prometheus / Grafana.

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

Финансирование

Наконец, мы рады сообщить, что недавно мы получили грант от Moloch DAO. Огромное спасибо тем, кто проголосовал за нас! Грант поможет профинансировать НИОКР для легкого клиента в браузере (т.е. устранение зависимости infura от @metamask_io).