Зачем рядовому пользователю анонимность и шифрование / часть 1

Зачем рядовому пользователю анонимность и шифрование / часть 1

HYDRA



 

Зачем рядовому пользователю анонимность и шифрование


Вы слышали про сеть Лайтнинг для Bitcoin? Это предложение заявляет, что: «используя сеть микро-платёжых каналов, Биткойн может масштабироваться до миллионов транзакций в день». Чего вам не говорят, так это что подобная система может работать лишь при помощи больших, централизованных «банковских» конгломератов.

Многие в Биткойн-сообществе ошибочно полагают или их убедили, что сеть Лайтнинг будет распределённой P2P сетью.

Однако же, это недостижимая задача. На самом деле, даже используя при этом щедрый ряд предположений, мы докажем вам, что задача математически невозможна.

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

Часть 1: Обзор Сети Lightning

Дебаты о Масштабировании Биткойна

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

57 разработчиков Bitcoin Core подписались в поддержку официального плана по увеличению пропускной способности, который описывает LN как «механизм масштабирования, действующий в обход стандартной пропускной способности», который может предоставлять «очень высокий уровень децентрализации».

Мы с этим не согласны и докажем, что не может. После чтения и обдумывания информации из этой статьи, мы рекомендуем вам выстраивать свои собственные выводы.

Что такое сеть Lightning и как она работает?

Протокол Lightning позволяет создавать серию офф-чейн двусторонних платёжных каналов. Вот прекрасная серия из 3 статей Аарона ван Вирдума на эту тему, если хотите окунуться в технические детали.

«Двусторонние» попросту означает, что имеется два направления платежа, таким образом Алиса и Боб могут открыть приватный канал и посылать биткойны туда и обратно (вне блокчейна):


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

Связываем несколько каналов

Забегая на один шаг вперёд, предположим, что у Алисы имеется канал с Бобом, а у него имеется канал с Кэрол, тогда Алиса может опосредованно посылать деньги Кэрол: Боб сначала заплатит Кэрол, а затем Алиса отплатит Бобу.


Предполагаемая сеть

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

Так или иначе, это не может быть реально выполнено в виде пир-ту-пир сети, по крайней мере не такой, что имела бы значительные размеры.

Семантика: «Децентрализованные» против «Распределённых»

В каждодневных беседах относительно Биткойна, большинство людей говорят «децентрализованный» о том, что технически является «распределённой топологией».

В то же время, сеть с централизованными узлами может быть технически названной «децентрализованной», если она не имеет единого центра.

Но давайте не будем становиться жертвами словестных игр. Диаграмма ниже должна прояснить ситуацию:

[caption id="attachment_84285" align="aligncenter" width="800"]

Централизованная, Децентрализованная, и Распределённая модели. Автором утверждается, что LN на самом деле не выглядит как на схеме справа.[/caption]

Часть 2: Объяснение для ламера: почему сеть Lightning не может масштабироваться

Сделаю данное объяснение максимально коротким.
Во-первых, вам следует понять, что сеть LN не похожа на большинство других сетей в том смысле, что вы не можете просто соединиться с другим пользователем когда вам захочется.
Чтобы отправить или получить биткойны, вам необходим или платёжный канал с этим конкретным пользователем, или связанная серия платёжных каналовпуть», или маршрут).

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

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


Всё начинается как классическая математическая задача

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

Давайте подумаем вот над чем: если у вас имеется дерево с 10-ю ветвями, и каждая из этих ветвей имеет по 10 листьев, вы можете достигнуть 100 листьев.

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

Так как вам нужно пройти от ветви к ветви 6 сегментов для достижения листа, можно сказать, у нас имеется «6 сегментов». Таким образом, имеется 10 ветвей с 6-ю сегментами, или, в нашем случае, 10 каналов с 6-ю сегментами.

Так, в чём же вызов?

Ваши деньги не могут быть в двух местах одновременно

Если предположить, что нам необходимо иметь 10 платёжных каналов для достижения всех уголков сети в 6 сегментов, это означает, что придётся разделить ваши биткойны на 10 частей.

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

Можем ли мы разобраться с этим просто создав 2 канала и, скажем, 20 сегментов? Мы ещё вернёмся к этому вопросу. Во-первых, давайте поразмыслим над ещё одним важным фактом:

Все занимают деньги всем

Представьте, что Алиса хочет отправить 1 BTC Кэрол через Боба, типа такого: Алиса>>Боб>>Кэрол

Для того, чтобы деньги двигались, Боб должен иметь по крайней мере 1 BTC в своей «табличке баланса» в канале с Кэрол. Таким образом, Алиса занимает деньги у Боба для того, чтобы заплатить Кэрол.

Боб переводит свой 1 BTC Кэрол в их приватном канале [Боб>>Кэрол], в то же время Алиса переводит 1 BTC Бобу через их канал [Алиса>>Боб]. Вот так это работает – Алиса не может «дать» биткойн Бобу, который можно будет передать Кэрол.

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

По факту, КАЖДЫЙ сегмент на пути к пункту назначения должен иметь достаточно свободных средств для каждой транзакции. Таким образом, чем больше сегментов в использовании, тем больше реплицируется этот долговой лейтмотив.

Почему в этом большая проблема?

Это значит, что большое количество сегментов становится разрушительным для системы

Давайте представим, что все используют маршруты, скажем, в 20 сегментов, а большинство пользователей тратят около $1 000 в месяц. Если бы все честно участвовали в маршрутизации платежей, то каждый должен был бы помочь провести около $20 000 в месяц.

Разве это будет возможно?

Зависит от множества факторов, включая: количество времени, необходимое для осуществления маршрута, а также количество транзакций.

Даже если мы сделаем (возможно, весьма щедрое) предположение, что пользователь может перенаправлять в 20 раз больше денег, чем имеется в его обычной транзакционной нагрузке и испытать уменьшение в доступности его каналов на 50%, то в таком случае ему придётся удвоить количество каналов, которые он имел бы в наличии постоянно.

В реальности всё даже хуже

Есть как минимум 5 дополнительных проблем, ухудшающих ситуацию.

1. Даже базовая математика, с которой мы начали: 106 = 1,000,000 — не совсем применима. Ели мы поручим участникам, в большинстве своём со случайным соединением и без центрального узла, планировать маршруты, то имеется определённая вероятность успеха. Шанс «один на миллион», повторенный миллион раз, генерирует лишь 63% вероятности успеха. Выбор 2 миллионов раз поднимает этот показатель до 84%, что будет означать повышение количества каналов.

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

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

4. Есть большой разрыв между богатыми и бедными в любой цивилизации. Таким образом, число пользователей, способных маршрутизировать платежи для других пользователей сети, ограничено. Эта проблема растёт экспоненциально с увеличивающимся количеством сегментов.

5. Всегда существует риск, что участвующий в маршрутизации канал станет недоступным (случайно или намеренно). Такой риск растёт экспоненциально по мере увеличения количества сегментов.

Суммируем для тех, кто «ниасилил»

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

И то и то — огромная проблема. Большое количество каналов означает, что пользователям необходимо разделять свои средства и они не в состоянии совершать ничего, кроме мелких покупок. А большое количество сегментов означает, что все деньги будут связаны задачей передачи денег для всех остальных пользователей.

Заключение: Совершенно нерабочая система

По мере того, как сеть достигнет миллиона пользователей, окажется, что нет реалистичного способа обойти эти проблемы стороной. Разделение средств на множество каналов и постоянный займ средств – всё это делает сеть непригодной к использованию.

Единственные правдоподобные видения такие: а) все будут класть на депозит в сеть намного, НАМНОГО больше, чем они собрались тратить, или б) система зависит от больших централизованных узлов.

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

Часть 3: неформальное математическое доказательство

1. Предположения

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

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

2. Необходимы Каналы и Сегменты, без ограничений

Моделируя сеть в качестве комплексного графа из миллиона узлов, мы изучим вероятность достижения случайного пира при условии наличия нужного количества открытых каналов, С (channel), и с использованием определённого количества сегментов, H (hops).

С точки зрения пользователя, достижение дальних пиров при помощи серии ветвистых каналов сходно со структурой дерева. Количество листиков растёт экспоненциально, также растёт и количество возможных точек назначения платежей.

Для упрощения расчётов, будем игнорировать возможность того, что ветвь на дереве может вести к ветви, которая уже давно на дереве (вроде ветви-предка или брата).

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

Пусть n — количество листочков, определяемое как С в степени H. Например, 10 открытых каналов и 6 узлов это 10 6 = 1,000,000.

Вероятность, P, что не удастся выбрать члена группы каналов |N| с числом объектов n путём выборки n раз, с учётом изменений будет:


(В нашем случае — достижение желаемого узла сопоставлением листика)

Можно это обощить при помощи ограничивающей (lim) модели:


Так как 1/e = 0.3678… то вероятность правильного выбора по крайней мере 1 раз составляет (1- (1/e)) = 63.21…%

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

Использование другого количества попыток может быть выражено так:


 

Например:


Используя разные экспоненты e, мы можем высчитать соответствующие вероятности:


Используя ценность в 1 миллион пользователей и ограничивающую конфигурацию, мы выводим формулу:


При помощи этой формулы мы в состоянии подсчитать первоначальные значения достигая в процессе уровня вероятности успеха в почти 80%; однако, это всё без учёта факторов, пока никем не обсуждаемых:


3. Необходимы каналы и узлы, с базовым денежным ограничением

Все сегменты на пути к цели должны иметь достаточно средств для обработки платежа. Это денежное ограничение.

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

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

Направленные туда средства будут в основном или потрачены, или снова выведены. (Примем, что LN не используется как средство сбережения).

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

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

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


Визуально, это выглядит так:


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

Интеграция функции даёт половину значения периода, как и ожидалось:


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

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

Наша формула вероятности изменяется:


И наша табличка результатов становится такой:


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


Report Page