До сих пор большинство проектов Эфириума, имеющих потребность в микроплатежах, ориентировались на использование платёжных каналов. Платёжные каналы позволяют отправлять произвольное количество транзакций, при этом в основной блокчейн записываются только две из них:
- одна транзакция для инициализации платёжного канала;
- и одна транзакция для закрытия канала и записи в блокчейн общего итога совершённых транзакций
.
В промежутке между этими двумя, мы можем отправлять вне основной сети любое количество транзакций. Это огромный шаг вперёд от использования обычных транзакций на основном блокчейне, открывающий возможности для мгновенной оплаты по мере использования и с минимальной комиссией таких услуг, как потоковая передача видео или энергоресурсы.
Поскольку в основной блокчейн записываются только две транзакции, мы можем просто отправить кому-то, с кем у нас ещё не создан платёжный канал, десятую часть цента, так как комиссия за инициализацию и закрытие канала будет во много раз превышать сумму платежа.
Но что если бы мы могли отправлять сколь угодно малые суммы любому количеству получателей без необходимости в транзакциях инициализации и закрытия платёжного канала?
Вероятностные микроплатежи в сети Эфириума позволяют отправлять любое количество платежей любому количеству получателей без необходимости в транзакциях инициализации и закрытия платёжного канала для каждого получателя.
Звучит слишком хорошо, чтобы быть правдой? Это почти так: нам в любом случае нужна по крайней мере одна записанная в блокчейн транзакция для завершения расчёта и подведения общего итога по платежам, однако эффективно получать платежи без записи транзакций в блокчейн возможно.
Обратите внимание, что речь идёт о создании отдельного платёжного канала для каждого получателя – это тонкая, но важная деталь. Вероятностные платежи Эфириума требуют записи одной инициализирующей транзакции для каждого отправителя, замораживая на его счету определённое количество токенов, которые затем будут использоваться при отправке транзакций любым получателям. Получателям со своей стороны нет необходимости финализировать расчёты отдельно с каждым отправителем. Ниже мы приведём пример того, как это может работать.
Протокол Orchid
В Orchid Labs мы работаем над созданием новой децентрализованной оверлейной (наложенной) сети, чтобы надзору и цензуре в Интернете. В сети Orchid участники, обеспечивающие пропускную способность сети (называемые нодами), делятся пропускной способностью и переадресуемым трафиком с другими пользователями Интернета. Пользователи автоматизированно, через программу-клиент, в режиме реального времени оплачивают использованный трафик токенами сети.
Ноды сети Orchid могут обслуживать тысячи других узлов сети, и пользователи могут использовать для доступа к веб-сайтам сотни различных нод. При этом общий объём комиссий за создание и закрытие платёжного канала между каждой парой узлов сети (даже при использовании сети каналов, такой как Raiden) был бы непомерно высок.
Поэтому мы используем вероятностные микроплатежи Эфириума:[*]Отправитель помещает токены – это могут быть ETH, токены ERC20 или их эквивалент – на счёт смарт-контракта (общего для всех отправителей) в сети Эфириума, который ведёт учёт платёжного баланса и состояния обеспечительного эскроу-счёта для каждого отправителя.[*]Отправитель локально создаёт и подписывает тикет – криптографическую структуру данных, которая включает в себя сведения о платеже, такие как получатель и сумма платежа.[*]Отправитель направляет тикет непосредственно получателю, не записывая ничего в сети Эфириума.[*]Получатель верифицирует тикет. Если тикет действителен, то у получателя теперь есть криптографическое доказательство права получения оплаты. Обратите внимание, что, даже если тикет не является «выигрышным», получатель, тем не менее, имеет абсолютное доказательство права получения оплаты, поскольку элементы случайности, используемые для определения того, является ли тикет выигравшим или нет, получаются и от отправителя, и от получателя таким образом, что ни у кого из них нет возможности манипулировать результатом.[*]Действительный тикет может стать «выигравшим» – в этом случае он может быть записан в виде транзакции в блокчейн Эфириума.
Эта схема подробно описана (и частично формализована) в черновом варианте «белой книги» Orchid, где обсуждаются и цитируются предшествующие исследования вероятностных микроплатежей и их применимости к блокчейнам.
Хоть мы и не можем использовать эту схему для одиночных платежей, поскольку в этом случае у получателя нет гарантии получения оплаты, мы можем использовать её для криптографического подтверждения того, что принятый получателем тикет имеет определённую вероятность в результате стать полноценным платежом.
Если мы можем настроить точную вероятность выигрыша, сумму выигрыша и количество тикетов в единицу времени, то мы можем уменьшить величину отклонения (активный торговый баланс) до такой степени, что он станет пренебрежимо малым.
Другими словами, вероятностные платежи превосходят по эффективности платёжные каналы в случае, если предоставляемая услуга является продолжительной во времени и детализированной настолько, что вероятностное отклонение становится незначительным.
Пример: Потоковая передача видео
Давайте представим себе децентрализованный YouTube, где каждый может организовать потоковую передачу видео для любого круга зрителей.
Сценарий для платёжного канала:[*]Вы видеостример, получающий 1 доллар за каждый час просмотра передаваемого видео.[*]Новый пользователь подключается к вашему вещанию и ровно 10 секунд смотрит на милых котят.[*]Сумма транзакции без учёта данных в настоящий момент составляет около 0,006 доллара, если ожидание нескольких блоков для подтверждения не представляет собой проблемы. Однако, поскольку нам нужно настроить канал до начала стриминга (во избежание неоплаты услуги пользователями), то мы, вероятно, хотим получить более быстрое подтверждение, что будет стоить 0,026 доллара. Создание платёжного канала будет стоить несколько дороже, так как это требует выполнения специального смарт-контракта. По грубой оценке, это обойдётся в два раза дороже – в 0,052 доллара.[*]То есть затраты на создание платёжного канала в несколько раз превышают сумму, которую вы, как организатор вещания, хотите получить от пользователя. Если пользователь смотрит ваш канал продолжительное время, то эти затраты могут быть разумными, однако в случае с новыми или случайными зрителями они будут чрезмерными.
Сценарий для вероятностного платежа:
Вы ведёте видеотрансляцию и получаете 1 доллар за каждый час просмотра передаваемого контента.
Новый пользователь подключается к вашему вещанию и ровно 10 секунд смотрит на милых котят.[*]Каждые 4 секунды пользователь отправляет вам тикет с вероятностью выигрыша 1/2500. Сумма выигрыша установлена в размере 2,78 доллара.[*]Если вы не получаете платёжный тикет каждые 4 секунды (с некоторым запасом по времени на случай задержки в сети), вы просто отключаете пользователя от трансляции.[*]Если зритель не получает доступа к видеотрансляции, он немедленно прекращает отправку платёжных тикетов.[*]Когда вы получаете выигрышный тикет, в блокчейн записывается транзакция, посредством которой сумма выигрыша из токенов, замороженных на счёте отправителя, перечисляется на ваш счёт.Даже если тикет не является выигрышным, вы по-прежнему имеете криптографическое доказательство права получения оплаты, поскольку ни у отправителя, ни у получателя, нет возможности манипулировать значением, которое определяет, является ли тикет выигрышным. Имея такое доказательство, вы можете спокойно продолжать трансляцию для этого зрителя. Подключение к вашей трансляции тысяч новых зрителей не влечёт для вас затрат на каждого из них – вы платите комиссию сети, только когда заявляете выигрышные тикеты и записываете транзакцию в блокчейн.
Для данного «среднего общего платежа,» вероятность выигрыша (и количество тикетов в единицу времени) определяет количество записываемых в блокчейн транзакций. Таким образом, чем выше сумма выигрыша, тем меньше комиссий за выполнение транзакций выплачивает получатель с течением времени. Чем меньше сумма выигрыша, тем меньше токенов замораживается на счету отправителя, что снижает стоимость их ликвидности.
Разумная сумма выигрыша для услуги потоковой передачи видео может составлять 2,78 доллара. Для снабжения электроэнергией или другими энергоресурсами она может составлять 27 долларов.
Предотвращение двойной траты
Важнейшая часть механизма вероятностных платежей – это обеспечение того, чтобы двойные траты были полностью исключены либо, по крайней мере, невыгодны для отправителя. Упоминавшиеся ранее обеспечительные «эскроу-счета» делают двойные траты в нашей системе невыгодными для отправителя. Это обеспечивается следующим образом: прежде чем получить возможность создавать тикеты, отправитель должен заблокировать (заморозить) на своём счету сумму, в определённое количество раз превышающее сумму выигрышного тикета. Получатель проверяет, что отправитель имеет не только достаточное количество средств для оплаты суммы выигрышного тикета, но и достаточный баланс эскроу-счёта.
В случае двойной траты, когда, на момент записи в блокчейн транзакции по выигрышному тикету, остаток на балансе отправителя окажется меньше суммы транзакции (суммы по выигрышному тикеру), неустойка вычитается с баланса эскроу-счёта отправителя. Это быстро сжигает небольшой депозит, который отправитель должен держать на счёте смарт-контракта, делая попытки двойного расходования средств невыгодными. Минимальный баланс эскроу-счёта должен быть достаточно высоким, чтобы исключить двойные траты, но достаточно низким, чтобы не доставлять отправителю слишком больших неудобств.
Заключение
Вероятностные микроплатежи Эфириума имеют несколько преимуществ по сравнению с платёжными каналами для систем, в которых пользователям предоставляются продолжительные во времени и детализированные услуги. Снижение комиссий за транзакции позволяет не только эффективно использовать микроплатежи, но и применить на практике наноплатежи.
Потоковая передача видео, снабжение электроэнергией и другими энергоресурсами, а также предоставление широкополосного доступа к Интернету – хорошие примеры систем, в которых вероятностные платежи применимы наилучшим образом. Вместо того чтобы нести издержки за создание платёжного канала для каждой пары отправителя и получателя или использовать сложные сети платёжных каналов, с вероятностными микроплатежами, нам нужна только одна записанная в блокчейн транзакция для каждого получателя. Поставщики могут немедленно начинать предоставление услуг пользователям без риска не получить своевременную оплату. Пользователи могут быстро отключиться в случае, если услуга перестанет им предоставляться.
Это позволяет поставщикам услуг полностью избежать затрат на неплательщиков и недобросовестных клиентов, а также немедленно пресекать атаки типа «отказ в обслуживании,» поскольку система позволяет сделать микроплатёж обязательным условием даже для самого первого запроса.
Источник