Обмен электронных валют по самому выгодному курсу!
 


Kurbetsoft
Доступно в Google PlayМат. Доказательство: LN не может считаться децентрализованной системой

Мат. Доказательство: LN не может считаться децентрализованной системой

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Часть 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 не используется как средство сбережения).

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

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

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

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

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

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

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

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

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

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

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

4. Дополнительное ограничение займа

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

Это наносит вред пользователю двумя способами.

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

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

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

Давайте определим следующие переменные:

U: количество пользователей
H: количество сегментов (hops)
V: общий объём транзакций в сети за данный промежуток времени
v: объём транзакций на одного пользователя за данный промежуток времени
r: общее количество маршрутизированных средств одним пользователем за опр. Промежуток времени
D: продолжительность в часах временного периода измерения
t: среднее число транзакций на пользователя за временной период D
d: продолжительность в часах среднего пути

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

Таким образом, r = VH/U. А так как V/U=v, то r=Hv.

Например, если v=$1000, то дело представляется таковым:

Позвольте нам представить идею доллар-часов для измерения маршрутизирующей способности.

Естественно, каждый пользователь может лишь один раз потратить свои средства. Но для маршрутизации чужих денег мы можем рассматривать доллар-часы в качестве общего количества долларов в их каналах, помноженное на количество доступных часов. Например, если в течении недели $1000 находится без движения, то это равняется 168 000 доллар-часов. Затем, мы можем рассчитать знаменатель Q, отображающий процент доступной пропускной способности, оставшийся после маршрутизации для других:

Q = 1- (d(H-1))/D

Заметим, что v и t не появляются в уравнении так как они выносятся за скобки, однако они подразумеваются в соотношении d/D. Причина появления H-1 состоит в том, что один сегмент не стоит сети ничего помимо собственных транзакций пользователя (r=HV).

Например, если сеть использует 4 узла, а маршруты требуют 4 часа, и баланс пользователей, доступный для маршрутизации, основан на 168 часах (1 неделя), тогда:

Q=1- ((4)*(3))/168 ) = 0.92

Теперь наша формула вероятности выглядит так:

Если предположить, что D=168, а время на маршрутизацию d = 4 часа, у нас получаются следующие вероятности:

5. Определяем ограничения на транзакции используя Распределение Парето

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

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

Вероятность плотности распределения Парето выражается так:

Для простейшей кривой Парето 1 типа, упрощаем к:

Распредление не изменяется из-за применения постоянных, но модель будет представлена куда лучше при помощи цифр из реального мира, для этого умножаем y-значения на 1000, таким образом количества долларов за большие вещи становится значительным, и интегрируем поверх типичный набор значений x (количество транзакций на каждый доллар ценности), скажем, 50.

Общая сумма транзакций = $980. Используя 10% значение от $98, мы можем решить уравнение: 98 = 1000/х2 чтобы получить значение в 3.194 транзакций.

Далее, мы интегрируем более мелкую последовательность транзакций для получения суммы объёма транзакций, имеющих суммы меньшие, чем наш минимум в $98:

 

Так как 293.48/980=0.299, мы можем утверждать, что лишь 29,9% транзакций от всей желаемой экономической активности были бы возможны в случае, если бы использовалось 10 каналов.

Заключительные мысли

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

Помните, Биткойн должен быть децентрализованным. Остерегайтесь аргументов рационализма вроде «Централизация — это нормально, просто держим основной слой децентрализованным». В этом — коварная ловушка, позволяющая заставлять пользователей уходить с основного слоя к централизованным системам. Такого мы никогда нед должны позволять.

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

Продолжение следует…

Источник

 




[vkontakte] [facebook] [twitter] [odnoklassniki] [mail.ru] [livejournal]

Каталог сайтов