Космические ракеты и алгоритмы, или что удерживает децентрализацию в зачаточном состоянии
Специально для ForkLog соавтор книги «Web 3.0. Настоящее вчерашнего завтра» Владимир Попов рассказал о принципиальных проблемах алгоритмов (D/L)PoS, изъянах в их архитектурной реализации и децентрализованных социальных сетях будущего.
В этом материале я разберу конкретные примеры, расскажу о векторах атак и сделаю ряд обобщающих выводов. Кому-то они покажутся фантастическими.
Что общего у ракет и алгоритмов?
У меня есть стойкое ощущение, что порой программисты настолько погружаются в виртуальный мир, что забывают о реальном.
Есть формула Циолковского. Она определяет «скорость, которую развивает летательный аппарат под воздействием тяги ракетного двигателя, неизменной по направлению, при отсутствии всех других сил».
Зная эту формулу, можно понять три важных момента:
- Зависимость между скоростью ракеты и массой топлива носит экспоненциальный характер.
- У ракет на твердом/жидком топливе есть вполне конкретный предел. Сегодня исследуются очень разные, даже весьма экзотические, способы космических путешествий: от «лифта в небо» до полетов с помощью термоядерных двигателей, на солнечном ветре и т.д.
- Возникает масса теоретических, инженерно-прикладных и прочих проблем, большая часть из которых не будет решена даже в XXI веке, не говоря про обозримый промежуток одной человеческой жизни (далее буду просто писать: пункт №1, №2 или №3).
«И что? При чем тут блокчейн?» — спросят скептики. Ровно по этой логике произошла градация на PoW- и PoS-системы, а затем и PoA, PoI и другие. Но на этом в большинстве случаев все и закончилось.
Именно от третьего пункта зависит создание реально децентрализованных (если повезет — и распределенных) сервисов: будь то социальная сеть или же полноценный виртуальный конференц-зал, вмещающий сотни и даже тысячи человек для онлайн-работы.
Концентрация богатства
Многие до сих пор считают, что блокчейн — про доверие, хотя он создан исключительно для того, чтобы работать в среде без необходимости доверять.
В документации Cardano указано, что последняя версия клиента делает нечто, «если существует достаточное количество честных участников». А если нет? Если же кто-то захочет сделать рейдерский захват? Дорого? Пусть.
Даже внутри блокчейн-сообществ подобное случалось не раз: киты EOS спамили приложения на Ethereum, Джастин Сан попытался завладеть Steem через Steemit и так далее.
На мой взгляд нарушение сути может привести к весьма печальным последствиям именно при экспоненциальном росте. Сейчас рынок криптовалют мал, но именно поэтому шлифовать безопасность на архитектурном уровне — самое время.
И вот — первые цифры для разъяснения:
33,05% у Cardano против 5,61% у биткоина. Если упростить коэффициент Джини и взять за единицу допустимого экономического неравенства (ДЭН) уровень первой криптовалюты, то выйдет, что ДЭН Cardano превышает его почти в шесть раз.
Это говорит сразу о нескольких проблемах:
- (D/L)PoS системы мимикрируют под пункт №3, но на самом деле лишь ускоряют появление предела пункта №2, не разрабатывая ничего «про запас».
- Вся защита от атаки 51% сводится к ТОП-10/20/30 адресам. Это касается EOS в первую очередь.
Конечно, стоит учитывать итоговую эмиссию, показатели распределенности /децентрализованности сети по нодам, числу пользователей и прочее. Однако на суть проблемы это не повлияет никак: если у здания плохой фундамент — не важно, насколько оно красиво выглядит.
Перейдем к куда более сложному и фундаментальному вопросу: почему так важно для построения ДСС учесть разные аспекты децентрализации, как бы парадоксально это ни казалось.
Твердое и мягкое
Если криптовалюту не подвержена атаке 51%, то она централизована. Это же касается и разновидностей атаки Сивиллы.
This is a thought-provoking observation. 🤔
By definition, a decentralized cryptocurrency must be susceptible to 51% attacks whether by hashrate, stake, and/or other permissionlessly-acquirable resources.
If a crypto can’t be 51% attacked, it is permissioned and centralized. https://t.co/LRCVj5F0O1
— Charlie Lee [LTC⚡] (@SatoshiLite) January 8, 2019
Несмотря на то, что блокчейн может стать хорошим подспорьем для устранения атак Сивиллы на p2p-сети (TOR-net, i2p, torrent-сети и другие), он сам по себе остается восприимчивым к такому классу атак. Из-за математически доказанных ограничений возникает иллюзия защищенности.
Алгоритмы PoS всегда приходят к тому, что суперузлов (не обязательно ноды, возьмем шире — некий сверх-unit) на сегодня может быть около 1000. В EOS — 21 производитель блоков (72 в листе ожидания); в Cosmos — 100 валидаторов (не более 300 заявок) и т.д.
В нормальных условиях их работа может казаться эффективней, чем сотен тысяч майнеров и десятков тысяч полных нод. Однако работа не всегда бывает нормальной и стабильной, а система не всегда оказывается защищенной. На этом строится теория Нассима Талеба о «черных лебедях» и антихрупкости. Она работает одинаково хорошо в медицине, воспитании или технологиях.
Зададим простой вопрос: «что, если?». Если пропускная способность, как она представлена во многих (D/L)PoS решениях, будет иметь отклонения большие, чем заложено в алгоритм?
Упростим ситуацию: переведем Facebook с его полумиллионом серверов полностью на EOS (или Cosmos/Cardano/Ethereum). Выдержит ли подобную нагрузку любая p2p-сеть? На практике уже было, что сеть не справлялась не из-за архитектурных проблем, а вполне тривиальных багов с железом. Проследить же за изменением нагрузки можно на примере Ripple — Moneygram, в том числе — в онлайн-режиме.
Изучив казусы, пришел к простому, но обидному выводу: мы до сих пор надеемся на то, что идеальная математика победит реальный физический мир. Это не так. Что нужно FB/VK/Telegram для масштабирования, когда ПО масштаба уже не дает? Правильно, купить это самое «железо» и по заданному алгоритму «расширить» возможности сети.
А как же быть с p2p?
Во-первых, не бывает дешевых серверов и рано или поздно вопросы, которые стояли перед Golem и другими и не были решены, снова возникнут. Прежде всего — решение длинного пинга (это крайне важно именно для ДСС) и замена оборудования альтернативным при отключении.
Во-вторых, даже если все пойдет по маслу, нужно будет одобрение в тех самых ⅔ голосов, а это — время. Если же его не будет, то возникает сложность более высокого порядка: идеологическая.
В-третьих, все существующие решения (выход на уровень Dapps, сайдчейны и т.п.) сами по себе содержат вопросы централизации/доверия. Это уводит нас от работы в недоверенной среде, на которую блокчейн и рассчитан.
Условно, выразить можно так:
Pr(hrd) = k*Ps(sft)
Где Pr — некая гипотетическая проблема, связанная с железом; k — коэффициент, зависимый от сетевого эффекта (он в свою очередь зависит от количества пользователей, нод и т.д.); Ps — условная максимально возможная эффективная работа сети, заданная ПО (будь то блокчейн или любая иная децентрализованная /распределенная система).
Поскольку k по определению (по закону Меткалфа: «полезность сети пропорциональна половине квадрата численности пользователей этой сети ≈n2/2») стремится к экспоненциальному росту, то и проблемы, связанные с ним, будут иметь взрывной характер после достижения некоего максимума. Формула более чем упрощенная, но она по вектору рассуждений совпадает с теми, что даны в материалах выше.
Подобная проблема усложняется при рассмотрении всех уровней децентрализации/распределенности сети:
- По количеству пользователей;
- Их долям владения;
- По нодам (полные/неполные/иные);
- Майнерам (пулы, конечные держатели «железа» и т.д.);
- Разработчики (владельцы гита, пользователи и прочее).
Возьмем близкие к сети биткоина показатели:
Из этой визуализации сразу выяснится, что атака на пулы не такая уж и правильная идея (с учетом сложности сети и стоимости S17(+)/S19). Поиск багов из разряда эпохальной ошибки 2010 года (для Ethereum ею стала The DAO) более логичен. Самое слабое звено — централизованные решения, использующие p2p-сети для заработка.
Еще один очевидный вектор — не уничтожать, а использовать ресурс: будь то вирусы-майнеры или вредонос под ASIC.
В этом смысле количественный прирост токенов дает абсолютно положительный эффект для усиления возможностей глобальной децентрализованной/распределенной сети. Атомарные свопы, децентрализованные приложения, сайдчейны и мультиблокчейны — феномены одного порядка в таком аспекте, потому как направлены на улучшение общей связанности и стабильности.
Но это проблемы первого порядка. Рассмотрим теперь следующие.
Гипотеза о суперузлах и преимущество предварительного расчета
Казалось бы, все знают про атаки Сивиллы, но что получается на практике? Если у нас есть сеть с ограниченным числом нод, которые к тому же крайне сложно масштабировать, получаем пример того, когда Эйнштейн + красотка != красивый гений-ребенок, или же — глупый ребенок-уродец.
Если провести атаку Сивиллы на ДРС с ограниченным числом неких суперузлов (СУ), то пользователь сможет отправить платеж на внушительную сумму. При этом та верификация транзакции, которую он получит от СУ-злоумышленников, будет расходится с реальностью.
В ряде блокчейнов каждый может поставить полную ноду (биткоин, Ethereum, их форки, The Power и другие) и проверять все самостоятельно. В этом случае такие методы защиты как протекция Winkle может работать (Winkle — децентрализованный вторичный уровень валидации от клиента, где каждый клиент включает в транзакцию, которую подписывает, одно дополнительное поле: хэш предыдущего блока).
Но как быть, если такой возможности у обычного пользователя нет? Приходится доверять СУ. В этом случае мы попадаем в ситуацию, когда бутылочным горлышком становится совокупность проблем централизованных и децентрализованных систем: нам не нужен 51% для атаки, направленной на деструктивное использование системы, нам нужно куда меньше (см. рис. выше).
Синхронизированный захват нод (чем их меньше — тем меньшего количества соответственно), которые не нужно брать в соотношение ⅔, а столько, сколько нужно для осуществления атаки Сивиллы, чтобы конкретный пользователь доверился предоставленным данным.
Прямая нематериальная заинтересованность атакующего: это может быть построение конкурентной системы на пепелище предыдущей; условный заговор спецслужб; рейдерских захват компании-разработчика через гашение капитализации и т.д.
Обобщенно получаем:
Sa(d) ->∞,N->x, x < 1000
Где Sa(d) — атака Сивиллы деструктивного типа; N — число нод (СУ) в сети; х — физически заданный предел нод. Конечно, число атак, даже деструктивного типа, никогда не будет бесконечным, но оно будет обратно пропорционален числу СУ:
Sa(d) = 1/N(x)
Возможно, этот сценарий как раз и покажется фантастическим, но давайте обратимся к нескольким живым примерам:
- Вспомним первые вирусы — никакой материальной выгоды они не несли, но зато вносили множество неприятностей в работу различных систем. Почему? Просто кому-то захотелось попробовать свои силы в создании чего-то «живого».
- ICO в пике популярности до 10% таковых взламывалось. При этом хаков собственно на основе уязвимости блокчейна/его элементов было немного. А остальное? Взлом компьютера администратора, банальный фишинг, социальная инженерия и прочее.
Атака на высокоразвитые системы через примитивные вполне реализуема.
В этом кроется основная проблема построения децентрализованных сетей: видим ноды как нечто абстрактное, а это всего лишь некий администрируемый компьютер (а то и вовсе виртуальный сервер с ПО: 25-60% тех же нод в Ethereum устроены именно так); говорим о том, что выкупаем / резервируем / арендуем процент от пропускной способности сети, забывая, что физический уровень таковых имеет вполне конкретные лимиты, погрешности и т.д. Кинолента «Операция «Колибри» хоть и имеет изъяны, но как раз об этом: за счет погрешности в 15% был добыт положительный эффект ускорения на 1 мс.
И здесь получаем следующий вывод: в PoW-системах расчет масштабирования сети на «железном» уровне заложен алгоритмически за счет сложности (хотя ноды не имеют прямой зависимости от подключаемых ASIC/GPU, никто не будет создавать крупный пул, не устанавливая полные ноды, поэтому корреляция прямая); в (D/L)PoS это соотношение имеет сугубо доверительный характер и является тем самым очень спорным и крайне уязвимым аспектом работы подобных сетей.
Все это наводит на мысли, что следующий шаг децентрализации (пункт №3) состоит в том, чтобы владельцы разных СУ и пользователи стали максимально близки. Есть телефон? Отлично, ты — майнер, нода, валидатор, оракул и т.д.
При этом по-прежнему настаиваю на том, что подобный подход будет работать только при смене парадигмы: от субъектной репутации к транзакционной. Сделал нечто полезное? Получил оценку. Паспорт, верификация по биометрии и прочее — все это больше похоже на цифровое рабство, чем увеличение степени децентрализации.
Поэтому, чтобы рассмотреть модель будущее ДСС, нужно понять, что PoW и PoS не просто имеют проблемы, плюсы и минусы, но архитектурные ограничения по самому главному критерию — степень децентрализации: это приводит нас к пункту №2, но не №3.
Если на уровнях выше сетевого (транспортный, сеансовый, представления, прикладной) все более или менее развивается, то на трех других (физический, канальный, сетевой) вопросов остается масса, а без этого не решается главная проблема — проблема рубильника, когда кто-то (правительство, провайдер связи и т.д.) может просто технически убить наш доступ к нужной ноде, пулу и далее по списку. Да, 5G, меш-сети и развитие Wi-Fi закрывают вопросы, но концептуально: имплементаций пока крайне мало.
Итоги таковы:
- проблемы пункта №1 на сегодня выявляются и решаются.
- ответы на вопросы второго уровня — в разработке.
- а вот с третьим — пока все на стадии «генезис».
Сделаю и следующее обобщение: если в какой-либо ДРС упущен рост по экспоненте на любом из уровней по модели OSI, то участники подобной сети могут решить лишь проблемы первого порядка и дойти до постановки вопросов второго порядка, но не достигнут решений в формате третьего порядка.
Именно поэтому сегодня видим развитие Ethereum 2.0, Cosmos, Polkadot и других с одной стороны; развитие эффекта самовложенности Dapps из разных блокчейнов (атомарные свопы — нулевой ответ); а также вывод масштабирования мощности через сайдчейны. Но это только первая ступень.
Подписывайтесь на новости Forklog в Facebook!
Рассылки ForkLog: держите руку на пульсе биткоин-индустрии!