Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
btcuua
5 лет назад

Что такое Raiden Protocol

Этот материал подготовлен btcu.ua как перевод статьи Raiden Network, объясняющей, что такое Raiden Protocol.

«Мы расскажем об основах сети платежных каналов, а также механизма посреднических переводов, маршрутизации и обработки нескольких ожидающих переводов.

Основы сети платежных каналов

Платежные каналы позволяют обмениваться токенами между контрагентами вне сети (офф-чейн, — прим. ред.). Платежный канал в Raiden всегда поддерживается on-chain-депозитом в токенах.

При совершении платежа отправитель подписывает подтверждение баланса соответствующему получателю. В качестве аналогии доказательство баланса (proof of balance) можно представить как форму цифровых чеков. Они не могут превышать количество токенов, находящихся в цепочке у обеих сторон, соответственно, и поэтому гарантированно подлежат погашению на токены.

Платежи, осуществляемые через платежный канал, могут быть на несколько порядков быстрее и дешевле, чем в blockchain. Тем не менее открытие платежных каналов с контрагентами стоит газ и требует внесения депозита on-chain, чтобы токены не использовались, пока хранятся в качестве депозита. К счастью, этот недостаток смягчается тем, что в сети платежных каналов пользователям не нужно открывать каналы со всеми, кому они хотят платить.

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

Чтобы обеспечить справедливое поведение всех пользователей, необходим набор правил для управления сетью. Протокол Raiden Network гарантирует, что все узлы (ноды, — прим. ред.) следуют абсолютно одинаковым правилам при отправке и получении платежей.

Посреднические переводы

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

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

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

Если одна из нод-посредников перестает отвечать (например, потому что она оффлайн) после того, как секрет был запрошен, будет невозможно разблокировать все ожидающие переводы до истечения срока действия блокировок.

В таком случае Дэйв может вместо этого передать секрет в смарт-контракт, называемый секретным реестром. После регистрации секрета on-chain посреднические ноды могут увидеть секрет, разблокировать свои переводы и отправить подписанное обновленное подтверждение баланса своему контрагенту.

Маршрутизация

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

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

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

Протокол Raiden Network имеет полное представление о сети и всех начальных балансах каналов. Предположим, что все пользователи внесли 5 токенов на канал и уже сделали некоторые переводы. Затем протокол пробует разные пути, пока не будет найден один с достаточной пропускной способностью:

  1. Если у Алисы есть 5 токенов, и у Боба — 5, достаточная пропускная способность есть.
  2. У Боба есть 4 токена, позволяющих продолжить платеж.
  3. Если у Чарли есть только 2 токена, а у Дэйва — 8, этот маршрут невозможен.
  4. Чарли инициирует возвратный платеж, который будет требовать Боб.

Протокол Raiden Network теперь пробует путь через Эрла, Фрэнка и Гэри, который сработает, потому что есть достаточная пропускная способность во всех каналах.

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

В будущем вспомогательные службы, такие как поиск пути (pathfinding), облегчат поиск маршрута с достаточной пропускной способностью, которые будут посредничать для переводов. Услуги поиска пути будут включены в предстоящий релиз Ithaca.

Обработка нескольких ожидающих переводов

Для управления несколькими ожидающими передачами ноды сохраняют локальное состояние в структуре дерева Меркла.

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

В Raiden Network каждая нода имеет одно дерево Меркла на канал для каждого направления.

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

Такая конструкция позволяет протоколу обрабатывать 160 ожидающих переводов на канал. Ограничение до 160 является округленным значением, гарантирующим, что стоимость разблокировки в газе будет составлять менее 40% от традиционного предельного количества газа в пи-милионном блоке Ethereum (3141592); также см. документацию Raiden для получения дополнительной информации.

В нашем примере Боб будет выполнять несколько переводов Алисе. Чтобы убедиться, что Алиса не обманывает, протокол создаст дерево Меркла из всех ожидающих переводов, которые Боб ожидает от Алисы.

  • Алиса хочет заплатить Чарли, используя Боба в качестве посредника.
  • У Боба есть ожидающий перевод «Перевод1», который заблокирован, пока платеж не будет завершен. Он обновляет новый lock1, чтобы посмотреть на дерево Меркла.
  • Алиса отправляет еще один перевод Дэйву, используя Боба в качестве посредника. В этом переводе она также отправляет корень своего собственного дерева.
  • Боб вычисляет корень и видит тот же lock1, что и раньше, поэтому он знает, что Алиса не обманывает, так как «Перевод1» все еще ожидает.
  • Корень дерева Боба изменяется и теперь содержит информацию об обеих блокировках: lock1 от предыдущего перевода Чарли и lock2 от перевода Дэйву.
  • Алиса отправляет третий перевод Эрику, используя Боба в качестве посредника.
  • Достаточно, чтобы Алиса отправила только корень Меркла и новый перевод Бобу. Ей не нужно отправлять предыдущие ожидающие переводы, потому что Боб может вычислить корень и проверить, что Алиса имеет такое же количество ожидающих передач, как он ожидает. (Здесь преимущества использования древовидной структуры Меркла становятся видимыми!)
  • Алиса отправляет четвертый перевод Фрэнку, используя Боба в качестве посредника.
  • Корень, который получает Боб, согласуется с его локальным состоянием, и поэтому он добавляет четвертую блокировку к своему дереву Меркла.
  • Алиса последовательно отправляет не более новой блокировки и корня из предыдущего дерева Меркла независимо от количества отправленных переводов.

  • Дэйв просит секрет, чтобы разблокировать его ожидающий перевод.
  • Дэйв получает секрет, отправляет секрет Бобу, который продолжает разблокировать lock2, содержащий платеж Дэйву.
  • Затем Боб отправляет секрет Алисе, которая продолжает и отправляет подписанное подтверждение баланса Бобу.
  • Дерево Меркла больше не содержит lock2 и, следовательно, корень Меркла изменился.

Офф-чейн разблокировка нескольких ожидающих переводов

Мы уже узнали, что ноды могут перестать отвечать во время ожидающего перевода, что приводит к тому, что секрет регистрируется в цепи в секретном реестре.

Далее мы покажем, как протокол Raiden Network управляет разблокировками, если существует несколько ожидающих переводов.

В этом примере Бобу все еще нужно разблокировать свои ожидающие переводы Чарли, Эрику и Фрэнку, единственная проблема заключается в том, что Алиса закрыла канал.

  • Чарли посылает Бобу секрет, чтобы разблокировать lock1, чтобы Боб мог требовать свой ожидающий перевод.
  • Однако Алиса закрыла канал и никогда не отправляла Бобу обновленное подтверждение баланса. Поэтому Боб должен разрешить блокировки 1, 3 и 4 он-чейн.
  • Боб начинает с регистрации секретов, которые ему сейчас известны. В данном случае секрет lock1, который он получил от Чарли.
  • Боб предоставляет сетевой контракт токена с последним подтверждением баланса от Алисы, которая разблокировала lock2.
  • Смарт-контракт сети токенов проверяет подлинность подписи, которая принадлежит Алисе по утверждению Боба. Это возможно путем криптографического восстановления адреса и проверки, принадлежит ли этот адрес Алисе.
  • После того, как окно расчета прошло, дальнейшие подтверждения баланса не могут быть представлены. Затем Боб представляет свое локальное состояние в виде своего дерева Меркла, которое проверяется смарт-контрактом сети токенов.
  • Он вычисляет корень дерева Меркла из трех представленных блокировок. Если вычисленный корень совпадает с ранее предоставленным корнем Меркла, несомненно, что блокировки, которые были предоставлены смарт-контракту, действительны и что они представляют реальность событий, которые произошли офф-чейн.

  • Смарт-контракт сети токенов теперь должен выплатить ожидающие переводы законным владельцам.
  • Смарт-контракт сначала проверяет, известен ли какой-либо из секретов секретному реестру.
  • В этом случае секрет lock1 был известен, и поэтому этот перевод принадлежит Бобу.
  • Ожидающие переводы, заблокированные lock3 и lock4, так и не были завершены, поэтому срок их действия истекает, и Алисе возмещаются средства.

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

Мы надеемся, что вам понравилось это небольшое глубокое погружение в основные принципы протокола Raiden.

Если вам интересно узнать больше о Raiden Network, пожалуйста, не стесняйтесь попробовать программное обеспечение самостоятельно или ознакомьтесь с нашей документацией. По любому техническому вопросу, напишите нам сообщение в нашем чате на Gitter.

И последнее, но не менее важное: мы по-прежнему предоставляем вознаграждение за нахождение ошибки в коде Raiden Red Eyes. Если вы bounty-хантер, вы можете проверить награды и правила подачи здесь.

Команда Raiden

Отказ от ответственности: предоставленный контент может содержать взгляды и мнения, ошибки и упущения, за которые создатель контента и любые представленные организации не могут нести ответственность. Формулировки и понятия, касающиеся финансовой терминологии (например, «платежи», «чеки», «валюта», «перевод» [стоимости]), используются исключительно в качестве примера для описания технологических принципов и не обязательно соответствуют реальному миру или юридическим эквивалентам этих терминов и понятий».

7
0.404 GOLOS
На Golos с December 2018
Комментарии (0)
Сортировать по:
Сначала старые