Перейти к основному контенту
Change page

Легкие клиенты

Запуск полного узла — это самый не требующий доверия, приватный, децентрализованный и цензуроустойчивый способ взаимодействия с Эфириумом. С полным узлом вы храните собственную копию блокчейна, к которой можете мгновенно обращаться с запросами, и получаете прямой доступ к одноранговой сети Эфириума. Однако запуск полного узла требует значительного объема памяти, дискового пространства и ресурсов процессора. Это означает, что не каждый может позволить себе запустить собственный узел. В дорожной карте Эфириума есть несколько решений этой проблемы, включая отсутствие состояния, но до их реализации еще несколько лет. В краткосрочной перспективе решением является компромисс: отказ от некоторых преимуществ запуска полного узла ради значительного повышения производительности, что позволяет узлам работать с очень низкими требованиями к оборудованию. Узлы, идущие на этот компромисс, известны как легкие ноды.

Что такое легкий клиент

Легкая нода — это узел, на котором работает программное обеспечение легкого клиента. Вместо того чтобы хранить локальные копии данных блокчейна и независимо проверять все изменения, они запрашивают необходимые данные у какого-либо провайдера. Провайдером может быть прямое подключение к полному узлу или централизованный RPC-сервер. Затем данные проверяются легкой нодой, что позволяет ей не отставать от вершины цепи. Легкая нода обрабатывает только заголовки блоков, лишь изредка загружая фактическое содержимое блока. Узлы могут различаться по своей «легкости» в зависимости от комбинаций программного обеспечения легких и полных клиентов, которые они запускают. Например, самой легкой конфигурацией будет запуск легкого клиента исполнения и легкого клиента консенсуса. Также вероятно, что многие узлы предпочтут запускать легкие клиенты консенсуса с полными клиентами исполнения, или наоборот.

Как работают легкие клиенты?

Когда Эфириум начал использовать механизм консенсуса на основе доказательства доли владения (PoS), была внедрена новая инфраструктура специально для поддержки легких клиентов. Это работает путем случайного выбора подмножества из 512 валидаторов каждые 1,1 дня для выполнения роли комитета синхронизации. Комитет синхронизации подписывает заголовок последних блоков. Каждый заголовок блока содержит агрегированную подпись валидаторов в комитете синхронизации и «битовое поле», которое показывает, какие валидаторы поставили подпись, а какие нет. Каждый заголовок также включает список валидаторов, которые, как ожидается, будут участвовать в подписании следующего блока. Это означает, что легкий клиент может быстро увидеть, что комитет синхронизации утвердил полученные им данные, а также может проверить подлинность комитета синхронизации, сравнив полученный список с тем, который ожидался в предыдущем блоке. Таким образом, легкий клиент может продолжать обновлять свои данные о последнем блоке Эфириума без фактической загрузки самого блока, используя только заголовок, содержащий сводную информацию.

На уровне исполнения нет единой спецификации для легкого клиента исполнения. Область применения легкого клиента исполнения может варьироваться от «легкого режима» полного клиента исполнения, который имеет все функции EVM и сети полного узла, но проверяет только заголовки блоков без загрузки связанных данных, до более урезанного клиента, который в значительной степени полагается на пересылку запросов RPC-провайдеру для взаимодействия с Эфириумом.

Почему легкие клиенты важны?

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

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

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

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

Какие инновации открывают легкие клиенты?

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

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

Развитием этого направления является поддержка устройств Интернета вещей (IoT). Легкий клиент может быть использован для быстрого доказательства владения балансом какого-либо токена или NFT со всеми гарантиями безопасности, предоставляемыми комитетами синхронизации, что инициирует определенное действие в сети IoT. Представьте себе сервис проката велосипедов (opens in a new tab), который использует приложение со встроенным легким клиентом, чтобы быстро проверить, владеете ли вы NFT сервиса проката, и если да, разблокирует велосипед, чтобы вы могли на нем уехать!

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

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

Каково текущее состояние разработки легких клиентов?

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

Насколько нам известно, ни один из них пока не считается готовым к использованию в рабочей среде.

Также ведется большая работа по улучшению способов доступа легких клиентов к данным Эфириума. В настоящее время легкие клиенты полагаются на RPC-запросы к полным узлам с использованием модели клиент/сервер, но в будущем данные можно будет запрашивать более децентрализованным способом с использованием выделенной сети, такой как Портал Нетворк (opens in a new tab), которая сможет предоставлять данные легким клиентам с использованием однорангового протокола сплетен.

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

Дополнительная литература