April 29, 2022

Что такое Light Client

Перевод данной статьи - ТЫК

Начнем!

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

Прежде чем говорить о том, что такое легкий клиент, давайте начнем с разъяснения того, что такое обычный клиент. Клиент — это аппаратное или программное обеспечение, которое подключается к серверу. Интернет-браузер, например, является клиентом — он подключается к серверу веб-сайта, чтобы запросить его содержимое. В контексте блокчейна клиент — это программное обеспечение, которое подключается к другим клиентам в одноранговой сети. Поскольку все эти клиенты взаимодействуют друг с другом, они образуют сеть, в которой каждый клиент является узлом. По этой причине термин «узел» также используется вместо клиента

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

И Parity Ethereum, и Geth, два самых популярных клиента Ethereum, сегодня могут работать на умеренно мощном ноутбуке. Однако загрузка и проверка всей цепочки блоков требует времени и ресурсов. Например, теперь для полной синхронизации блокчейна Ethereum требуется использование SSD. Жесткий диск не может справиться с необходимыми операциями ввода/вывода в секунду

Варианты использования полного узла

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

В результате большинство пользователей, взаимодействующих с блокчейном, вольно или невольно будут использовать централизованную часть инфраструктуры. Самые популярные программные кошельки по умолчанию полагаются на сторонний хост-узел. Эти клиенты подключаются к удаленному узлу и полностью доверяют его ответам без криптографической проверки. Положительным аспектом этого, очевидно, является улучшенный пользовательский интерфейс, поскольку пользователям этих кошельков не нужно запускать собственный узел. Однако они вынуждены доверять стороннему узлу. Metamask, MyEtherWallet и MyCrypto подключаются к удаленному узлу по умолчанию, но при этом позволяют пользователям подключаться к их собственному локальному узлу, если они того пожелают. Это не относится к кошелькам Jaxx или Exodus, которые по умолчанию подключаются к удаленному узлу без возможности подключения к собственному локальному узлу пользователя. Мобильные кошельки здесь не упоминаются, так как мобильные телефоны не могут запускать полные узлы

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

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

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

Способ, которым разработаны легкие клиентские протоколы, позволяет им взаимодействовать с полными узлами с минимальным доверием. Это очень важный аспект для понимания, поэтому давайте сделаем шаг назад, чтобы рассмотреть основы блокчейна Ethereum:

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

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

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

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

Проблемы легких клиентов

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

По сравнению с полными узлами легкие клиенты обеспечивают гораздо лучший опыт работы с конечными пользователями, позволяя им получить доступ к блокчейну децентрализованным и безопасным образом. Ключ в том, чтобы найти способ стимулировать отдельных лиц и учреждения к запуску полных узлов, обслуживанию легких узлов и наказанию злонамеренных полных узлов, обслуживающих неверные данные. Один из способов сделать легкие клиенты устойчивыми — заставить их выполнять микроплатежи за каждый запрос к полным узлам. В настоящее время легкие клиенты играют важную роль в сегментировании Ethereum, позволяя валидатору быстро синхронизировать различные сегменты. Легкие клиенты также могут использоваться для сообщения о злоумышленниках (например нечестных валидаторах). Стимулирование полного узла легкими клиентами является активной областью исследований, поскольку стимулирование является ключом к стабильности экосистемы!

Надеюсь статья была интересной и понятной!

Мой телеграмм канал - https://t.me/ortomich_crypto