Что такое каналы состояния (State Channels) в Ethereum?
State Channels – это процесс, в котором пользователи взаимодействуют друг с другом непосредственно за пределами блокчейна Ethereum, или «вне цепочки», и значительно минимизируют использование операций «внутри блокчейна».
Другими словами, State Channels или «Каналы состояния» - это простой способ взаимодействовать с блокчейном, который мог бы происходить в блокчейне, но вместо этого операции проводят вне блокчейна, без значительного увеличения риска для любого участника. Наиболее известным примером этой стратегии является идея каналов платежей в Биткоине, которые позволяют мгновенно отправлять платежи без комиссии непосредственно между двумя сторонами.
Также каналы состояния это одно из самых захватывающих решений для масштабирования Ethereum и самое близкое решение в плане готовности к выпуску.
Каналы состояния очень похожи на концепцию каналов платежей в сети Биткойн Лайтнинг, но вместо поддержки только платежей они также поддерживают общие «обновления состояния».
Например, токены для оплаты рекламы по телевидению, могут обновляться на канале состояния и отправляться в сеть Ethereum только после того, как все средства будут собраны. Это увеличивает число вычислений, которые разработчики могут использовать за пределами базового блокчейна Ethereum.
Это безопасно?
Хотя на первый взгляд может показаться, что транзакции в каналах состояния не поддерживаются на том же уровне безопасности, что и базовые транзакции, магия состоит в том, что мы можем достичь того же уровня безопасности, не используя столько ресурсов сети.
Будучи способными всегда возвращаться к базовой цепочке в качестве арбитражного механизма, пользователи теоретически заинтересованы в том, чтобы действовать рационально. Кроме того, каждая транзакция подписывается так же, как действительная транзакция Ethereum.
Операции внутри блокчейна ETH не исключаются полностью, а сводятся только к необходимым последовательностям.
Упрощенный принцип работы State Channels
Алиса и Петр должны создать и оплатить транзакцию Ethereum при первом открытии канала. Когда они будут готовы закрыть канал, им нужно будет заплатить всего за одну транзакцию в блокчейне Ethereum.
Сокращение количества необходимых внутрисетевых транзакций до двух резко снижает затраты и увеличивает скорость, связанную с использованием Ethereum.
Думайте о каналах состояния как о временной карте, которую вы используете на работе. Вы нажимаете, когда начинаете работать (транзакция № 1), и вы нажимаете в конце смены (транзакция № 2). Каждое действие, которое происходит в середине, не должно быть зарегистрировано на карте времени.
Каналы состояния как карточка рабочего
Каналы состояния звучат великолепно в теории, но они еще интереснее, если смотреть на них на практике. Вот краткий пример, чтобы проиллюстрировать, как они функционально работают:
- Пользователи блокируют состояние своего канала, отправляя деньги на многоподписной смарт-контракт, который имеет возможность принимать Эфириум и выплачивать деньги всем отправившим его сторонам.
- Пользователи подписывают транзакции и отправляют их друг другу, каждый из которых делает копию подписи для дальнейшего использования.
- Каждая транзакция содержит одноразовый номер, поэтому смарт-контракт может знать хронологический порядок транзакций.
- Как только обе стороны закончили свою деятельность, они закрывают состояние своего платежного канала, отправляя транзакцию в блокчейн Ethereum.
- После того, как состояние обновлено и разблокировано, смарт- контракт отправляет каждой стороне полагающийся остаток Эфира.
Почему это крайне важно
Масштабирование, возможно, является самым большим препятствием, с которым сталкиваются блокчейны, когда дело доходит до достижения массового внедрения.
Схема работы каналов состояния
Хотя некоторые приложения могут работать сегодня, большинство из них все еще слишком медленные и дорогие для обычных пользователей.
Каналы состояний увеличивают пропускную способность общедоступных блокчейнов, поскольку они уменьшают вычислительную нагрузку, которую узлы должны тратить при обработке и хранении транзакций. Это облегчит работу узла, что сделает работу по майнеров более децентрализованной.
Аналогично, каналы состояния снижают затраты, необходимые для использования сети Ethereum.
Вместо того, чтобы платить комиссию за каждую транзакцию, пользователи должны платить за газ только при открытии и закрытии канала.
Каналы состояния также помогают сохранить конфиденциальность пользователей. Транзакции внутри канала известны только участникам канала. Это в отличие от транзакций в блокчейне Ethereum, где каждая транзакция записывается в публично проверяемый регистр.
Наконец, транзакции внутри каналов состояния получают мгновенную завершенность.
Пользователям не нужно ждать подтверждения каждой транзакции в блокчейне, потому что каждая подписанная транзакция подчиняется сетевым правилам. Это упрощает взаимодействие с пользователем и больше отражает то, как сегодня работают популярные онлайн-приложения.
Плюсы
Каналы состояния имеют сильные свойства конфиденциальности: это происходит потому, что все происходит «внутри» канала между участниками, а не транслируется публично и не записывается в базовом блокчейне.
Только транзакции открытия и закрытия должны быть публичными.
Принимая во внимание, что в сайдчейнах (Сайдчейн — переводиться как боковая цепь (часто ещё говорят «боковой канал») каждая транзакция публикуется в боковой цепочке, которую видит каждый участник боковой цепочки, независимо от того, что вы не взаимодействуете со всеми участниками боковой цепочки.
Каналы состояния имеют мгновенное исполнение, что означает, что как только обе стороны подпишут обновление состояния, его можно считать окончательным.
Обе стороны имеют очень высокую гарантию того, что в случае необходимости они могут «проверить» это состояние в базовом блокчейне.
Минусы
Каналы состояния нуждаются в 100% доступности для всех участников. Если кто-либо из участников выходит из сети, то это может оказаться для него дорогостоящим.
Участники могут использовать кого-то, чтобы представлять его, если он становится недоступным, но возможность того, что представитель подвергнется нападению или подкупу, создает проблемы для канала состояния.
Каналы состояния лучше всего использовать для приложений с определенным набором участников: это связано с тем, что валидатор в контракте (контракт, используемый для блокировки состояния) всегда должны знать участников / объекты (т. е. Адреса), которые являются частью данного канала.
Мы можем добавлять и удалять людей, но это требует изменения контракта каждый раз.
Каналы состояний особенно полезны, когда участники будут обмениваться многими обновлениями состояний в течение длительного периода времени: это связано с первоначальными затратами на создание канала при развертывании контракта с валидатором.
Но после его развертывания стоимость обновления состояния в этом канале становится чрезвычайно низкой и выгодной.