Данная статья посвящена рассмотрению оффчейн платежных каналов: их виды, принципы работы и особенности применения.
Представленный материал поможет вам понять, почему идея каналов оплаты является революционной в системах финансового учета.
Мы поговорим о каналах оплаты специально для Биткойна.
Эта статья будет полезна тем, кто еще не знаком с понятием платежных каналов, а также даст понимание принципов работы Lightning Network.
Платежные каналы и основная информация о них
Что такое платежный канал?
Платежный канал — это метод совершения нескольких платежей без добавления транзакции в блокчейн.При этом участники канала взаимодействуют только друг с другом.
Никаких дополнительных валидаторов или доверенных третьих лиц не требуется.
Преимущества платежного канала
Какие преимущества дает платежный канал перед обычными транзакциями? В рамках уже открытого платежного канала участники имеют возможность совершать мгновенные платежи.Получающая сторона проводит быструю независимую проверку и принимает платеж.
В базовой версии комиссии отсутствуют. Соответственно, микроплатежи имеют свое место.
Именно из-за этой особенности каналы оплаты еще называют каналами микроплатежей.
Еще одним интересным преимуществом является то, что участники канала могут взаимодействовать конфиденциально.
Соответственно, детали каждого микроплатежа останутся в тайне от всех остальных, хотя сам факт использования платежного канала между конкретными биткоин-адресами будет известен всем.
Особенности платежного канала
Нельзя сказать, что платежные каналы имеют серьезные недостатки по сравнению с обычными транзакциями, но есть некоторые характерные особенности.Платежный канал необходимо открыть и, соответственно, рано или поздно закрыть.
Это делается в отдельных транзакциях в цепочке.
Они неизбежно платят комиссию и требуют ожидания подтверждения.
Для открытия сделки лучше дождаться полного подтверждения.
В рамках определенного канала платежи доступны только до заранее определенной суммы.
Его устанавливают сами участники, замораживая необходимую сумму с помощью специального биткойн-скрипта.
Каналы оплаты могут быть однонаправленными или двунаправленными, однонаправленными или двунаправленными соответственно.
Это зависит от самой методологии реализации канала.
Срок жизни канала и максимальное количество платежей могут быть ограничены или не ограничены.
Это зависит от техники.
Соответственно, каналы могут закрываться в определенное время или досрочно.
При этом канал может быть закрыт по обоюдному согласию участников или по просьбе одного из них, но с некоторыми особенностями.
В упрощенном варианте работу платежного канала можно изобразить на следующей схеме.
Существует сеть Биткойн.
Есть два пользователя: Алиса и Боб.
У них есть биткойн-кошельки с дополнительным модулем для работы платежного канала по определенному методу.
Эти модули обмениваются данными для непосредственной обработки платежей.
Чья идея?
Идею платежных каналов впервые описал сам Сатоши Накамото в личном письме одному из активных разработчиков протокола много лет назад. В то время Биткойн еще не принял достаточно важных обновлений, позволяющих создавать надежные каналы оплаты.Однако позже это стало возможным и в 2013 году к этой поистине перспективной идее вернулись.
О способах реализации платежных каналов
Мы рассмотрим четыре основных из них.Платежные каналы в стиле Спилмана — это простейшая версия одностороннего канала с ограниченным сроком действия и неограниченным количеством платежей.
Позже было принято еще одно усовершенствование протокола Биткойн, и стали возможны платежные каналы в стиле CLTV, которые являются усовершенствованием предыдущего метода.
Платежные каналы Poon-Dryja — это метод двунаправленных каналов с неограниченным временем работы.
Они требуют еще нескольких обновлений протокола Биткойн, которые были недавно приняты.
Кроме того, эти каналы используются при проектировании сети освещения.
Дуплексные платежные каналы Декера-Ваттенхофера — это вариант использования двух однонаправленных каналов одновременно, улучшающий их свойства за счет формирования не последовательной цепочки заменяемых транзакций, а целого дерева заменяемых транзакций.
Кроме того, такие каналы могут иметь более двух участников.
Остановимся подробнее на первых двух методах, но сначала повторим некоторые особенности протокола Биткойн.
Что-то из протокола Биткойн
nLockTime — это поле в теле каждой транзакции, содержащее метку времени или номер блока.До этого времени или до высоты блокчейна валидаторам не разрешается включать транзакцию в блок.
nSequence — это поле в каждом вводе транзакции, содержащее значение времени, в течение которого транзакция не может быть подтверждена.
Причем время рассчитывается относительно того, когда был подтвержден выход, который тратит этот вход. MultiSignature дает возможность устанавливать условия в конце транзакции, для которых необходимо предоставить несколько электронных подписей.
Эти подписи будут проверены конкретными открытыми ключами.
Каналы оплаты в стиле Спилмана
Итак, платежные каналы в стиле Спилмана — это метод создания однонаправленных платежных каналов, где есть роль отправителя и роль получателя.Время работы такого канала устанавливается отправителем произвольно, при этом получатель может закрыть канал досрочно.
Давайте рассмотрим основные этапы работы такого канала на схеме.
Для простоты понимания представим, что есть сервис, который продает доступ к глобальной сети через точку доступа Wi-Fi, и клиент, желающий получить доступ к сети на сутки.
Услуга будет стоить один биткойн.
Очевидно, клиент не доверяет услуге за такую сумму и хочет платить за трафик посекундно.
Затем они решают открыть канал оплаты на день суммой в один биткойн.
Сервис генерирует новую пару ключей для электронной подписи и передает открытый ключ клиенту.
Клиент, в свою очередь, генерирует новую пару ключей и использует свой открытый ключ и открытый ключ службы для формирования адреса с мультиподписью 2 из 2. Далее клиент создает транзакцию номер один, в которой отправляет один биткойн на мультиподписной адрес, подписывает его, но не раздает в сеть биткойн, так как сервис может настроить клиента и отказаться подписывать какие-либо транзакции для дальнейших перевод одного биткойна.
Поэтому клиент создает транзакцию номер два, в которой монеты с мультиподписного адреса отправляются на адрес, который он контролирует сам.
Более того, он устанавливает поле nLockTime, чтобы транзакцию можно было подтвердить в течение суток.
Он не подписывает эту транзакцию, а отправляет ее в сервис.
В свою очередь сервис соглашается, что клиент может забрать всю монету себе, но не ранее, чем через сутки, и подписывает транзакцию своим ключом.
Он передает подпись клиенту, и клиент ее проверяет. Теперь у него есть возможность предварительно подписать транзакцию своим ключом и гарантированно забрать монету обратно, если сервис решит отказать в обслуживании.
Следующий шаг — клиент распространяет транзакцию номер один в сеть Биткойн или передает ее сервису для распространения, если у него самого нет подключения.
После подтверждения первой транзакции канал оплаты считается открытым.
В этом случае первая транзакция называется транзакцией финансирования, а вторая — транзакцией возврата.
Как осуществляется взаимодействие при расчетах внутри платежного канала? Давайте посмотрим на следующую диаграмму.
Для отправки первого платежа клиент запрашивает биткойн-адрес сервиса, которым он управляет самостоятельно.
Далее клиент генерирует транзакцию номер три, в которой монета с мультиподписным адресом распределяется между двумя выходами: первый — это оплата сервисного адреса за одну секунду работы точки доступа, а второй — изменение на клиентский адрес.
собственный адрес.
Клиент подписывает транзакцию номер три своим ключом и передает ее сервису.
Сервис проверяет правильность транзакции и подписи, а затем принимает оплату, поскольку может предварительно подписать эту транзакцию своим личным ключом и гарантированно получит оплату за первую секунду трафика, если сделает это в течение 24 часов.
Но если сервис намерен продолжать предоставлять услугу клиенту и получать оплату внутри канала, то он просто хранит транзакцию номер три локально, пока канал не закроется.
Для отправки всех последующих платежей клиент меняет выходные значения транзакции номер три, соответственно, переподписывает ее и передает сервису только саму подпись и сумму изменения.
Сервис также проверяет полученные данные и сохраняет новую версию транзакции номер три, так как в этой версии он уже получает больше монет.
Как закрывается канал?
На диаграмме видно, что сервис должен успеть опубликовать в сети Bitcoin последнюю версию транзакции номер три до истечения времени работы канала.
В противном случае отправитель может обмануть, предварительно подписать и обнародовать транзакцию номер два, где всю сумму он заберет на свой адрес.
Стоит отметить, что клиент может сделать транзакцию возврата публичной в любое время, когда канал открыт. Служба сочтет такое поведение мошенничеством.
Поэтому он постоянно следит за появлением этой транзакции в сети и в случае ее обнаружения разрывает контракт с клиентом, досрочно закрывая канал, публикуя последнюю версию транзакции номер три.
Платежные каналы в стиле CLTV
Давайте теперь посмотрим на улучшенную версию этого метода, а именно на платежные каналы в стиле CLTV. Этот метод платежных каналов стал применим после того, как было проведено обновление софтфорка Биткойна с добавлением нового кода сценария — OP_CHECKLOCKTIMEVERIF. Его особенность в том, что теперь в выводе транзакции можно задавать правила, согласно которым монеты можно тратить только в транзакции с параметром nLockTime, установленным не меньше указанного.На практике это означает, что, помимо прочих условий, монеты можно будет потратить только через определенный период времени.
Теперь, используя скриптовые операции ветвления условий, а именно IF-ELSE, можно задавать разные условия расходов в зависимости от времени.
Преимущество этих каналов оплаты по сравнению с предыдущими заключается в том, что нет необходимости создавать транзакцию возврата.
Вместо этого вы можете указать двойное условие траты монет в выходном скрипте транзакции финансирования.
То есть до закрытия канала монеты можно потратить по правилам мультиподписи, а после закрытия будет достаточно одной подписи.
Как используются каналы оплаты?
Здесь есть два варианта: либо в чистом виде для проведения регулярных платежей между заранее установленными сторонами, либо формирование Lightning-сети путем переключения каналов между собой.Под коммутацией подразумевается возможность совершения платежа между пользователями, которые не открыли канал оплаты друг с другом, но имеют открытые каналы с другими участниками сети.
Тогда стоимость будет передаваться по цепочке каналов внешних участников, если таковая существует. В случае с молниеносной сетью имеются дополнительные сложности и особенности.
Это развитие общепринятого формата коммутации каналов и протокола связи между узлами.
Важно, что кошельки одних разработчиков могут работать с кошельками других.
Еще одной трудностью является вопрос маршрутизации в этой сети.
Задача — найти кратчайший путь передачи стоимости с учетом того, что в каждом канале существуют ограничения на сумму перевода в каждом направлении.
Особенности сети
На следующей схеме давайте рассмотрим особенности функционирования сети Bitcoin и сети Lightning.В сети Биткойн узлы обмениваются данными о транзакциях и блоках, а также сетевыми адресами друг друга.
В этом случае достигается консенсус и формируется общая база данных.
Помимо полных узлов, в сети Биткойн есть облегченные узлы, которые получают только необходимую им информацию, без обработки и хранения всей истории.
В сети Lightning узлы не обмениваются завершенными транзакциями и не достигают консенсуса.
Но им также важно обновлять статусы друг друга и обмениваться сообщениями, чтобы обеспечить бесперебойную работу платежных каналов.
Стоит отметить, что сеть Lightning также не будет однородной, в том смысле, что будут узлы с большей и меньшей нагрузкой, а также узлы с непоследовательной активностью.
Скорее всего, в сети появятся хабы, узлы с большим количеством открытых платежных каналов, и им придется справляться с большой нагрузкой.
А обычные пользователи откроют в лучшем случае один-два платежных канала, причем с одним из этих хабов.
Это произойдет потому, что для открытия каждого платежного канала необходимо заморозить определенное количество монет, тогда принимать и отправлять платежи можно будет только в пределах ограниченной суммы.
Если обычный пользователь разделит свои монеты на несколько частей и откроет несколько каналов, то он фактически получит очень маленькое окно для выплаты в каждом из каналов по сравнению с исходной суммой.
При этом хабами будут выступать крупные организации, такие как разработчики кошельков, централизованные биржи или популярные торговцы.
Они могут позволить себе содержать большое количество каналов, открытых на большие суммы и на длительные периоды времени, не выходя в оффлайн.
Актуальные вопросы
Давайте рассмотрим часто задаваемые вопросы по теме платежных каналов и Lightning Network. — Насколько надежны платежи в каналах по сравнению с обычными биткойн-транзакциями? По надежности платежи в каналах можно сравнить с обычными, т.е.монеты не отнимут и платеж не отменят. Но есть ряд особенностей, таких как необходимость своевременного открытия и закрытия каналов, ограничения на сумму внутри канала, необходимость постоянной синхронизации с сетью Биткойн, а также вероятность заморозки монет на некоторое время.
— Ограничена ли пропускная способность в каналах и сети Lightning? Дело в том, что никаких ограничений нет, но могут быть задержки, связанные с обработкой каналов, разведкой сети и построением маршрутов, которые зависят от производительности конкретных участников.
Кроме того, узлы могут непредсказуемо отключаться от сети, что может иметь определенные ограничения на осуществление платежей другими участниками.
— Должны ли участники канала доверять друг другу? Нет, механизм платежного канала обеспечивает защиту от любых злонамеренных действий взаимодействующих сторон.
— Какой смысл в каналах для человека, который хочет отправить только один платеж? Если человек хочет избавиться от последних монет и больше не планирует принимать и отправлять платежи, то открывать канал нет смысла; ему нужно отправить обычную внутрисетевую транзакцию.
Во всех остальных случаях открытие канала будет полезно.
Этой теме также посвящена одна из лекций онлайн-курса по Блокчейну.
Теги: #bitcoin #Криптовалюты #Криптография #конфиденциальность #масштабируемость #масштабируемость #Криптовалюта #lightning network #микроплатежи
-
Качество: Руководство Gov.uk
19 Oct, 24 -
Yahoo И Его Настройки
19 Oct, 24 -
Звуковая Сигнализация
19 Oct, 24 -
Кеддроид — S01E03
19 Oct, 24 -
По Теме Сертификации Доменов
19 Oct, 24