Это вторая часть серии из трех частей, в которой Эндрю Левин описывает проблемы, с которыми сталкиваются унаследованные блокчейны, и предлагает решения этих проблем. Прочтите часть 1 на кризис возможности модернизации здесь и Часть 3 о кризисе корпоративного управления в том виде, в каком он начнется 25 сентября.
Появление Интернета показало, что у нас есть цифровое «я», которое может усилить нашу реальную мощь благодаря способности взаимодействовать с людьми в любой точке Земли и координировать действия, которые наше физическое «я» никогда не могло.
Но наше цифровое «я» сковано – заключено в тюрьму на частных компьютерах, принадлежащих Facebook, Google, Amazon, Netflix, Twitter, и этот список можно продолжать. Эти частные монополии фактически не производят технологии; скорее, их продукт – это мы, наше цифровое «я», и вся их цель – извлечь из нас как можно больше ценности.
Многие люди осознают, что технология блокчейн способна разрушить эти частные монополии и олигополии, но, к сожалению, ни один конкретный блокчейн не смог выйти за пределы существующего сообщества блокчейнов и криптовалют.
А если бы это было так, то технически он не был бы способен поддерживать рост и принятие, необходимые для того, чтобы дать возможность каждому человеку на Земле взять под контроль свое цифровое «я». Это почему? Это просто вопрос выбора правильных функций? Переходите на доказательство ставки? Шардинг?
К сожалению, проблема намного больше, чем одна или две отсутствующие функции, и она не будет решена запланированными изменениями существующих протоколов, поскольку проблемы лежат в самой основе того, как они построены. Сама архитектура ограничивает возможность вертикального масштабирования этих платформ.
Что такое вертикальное масштабирование?
Вертикальное масштабирование – это способ управления ростом отдельного узла (компьютера) в сети. Блокчейны – это базы данных, которые никогда не отбрасывают информацию. Информация только добавляется в базу данных, но не удаляется. Это делает рост еще большей проблемой. Более того, большинство блокчейнов не предназначены для эффективного использования различных частей компьютера. Это приводит к большой базе данных, неэффективно потребляя много вычислительных ресурсов на данной машине.
Чтобы компенсировать эти недостатки, операторы узлов полагаются на дорогостоящее оборудование корпоративного уровня – в частности, оперативную память или ОЗУ и энергонезависимую экспресс-память, или NVMe, что расширяет возможности участия в сети (операции узла) за пределы понимание простых людей. И почему-то мы должны поверить, что это неплохо для децентрализации!
Но шардинг!
По иронии судьбы, одним из самых сильных аргументов в пользу существования кризиса вертикального масштабирования является уровень спроса на решения для горизонтального масштабирования.
На момент написания этой статьи полный узел Ethereum все еще не превышают 500 ГБ. Ничего подобного! И все же абсолютно верно и то, что в Ethereum необходимо добавить сложный и рискованный механизм, чтобы его блокчейн можно было разбить на части, и что драгоценные вычислительные ресурсы должны быть потрачены на то, чтобы просто позволить этим «осколкам» общаться друг с другом, не говоря уже о выполнении значимых вычислений.
Проблема в том, что горизонтальное масштабирование – сегментирование – не заменяет вертикальное масштабирование. Представьте, что у вас есть завод, производящий 1000 автомобилей в год, но есть достаточный спрос на 2000 автомобилей. Что вы делаете в первую очередь: строите новый завод или пытаетесь производить больше автомобилей из уже имеющегося у вас завода? Вертикальное масштабирование оптимизирует завод для производства большего количества автомобилей, прежде чем просто построить новый завод. Узлы блокчейна являются «фабрикой», и их результат определяется тем, насколько эффективно они используют компоненты в компьютере.
Судя по непосредственному опыту, блокчейны ужасно неоптимизированы в отношении управления ресурсами узлов, что делает их идеальным кандидатом для решений вертикального масштабирования.
В блокчейне, по сути, есть две линии: Ethereum и BitShares. Многие люди могут быть не знакомы с BitShares, но его архитектурный дизайн лежит в основе некоторых из самых производительных блокчейнов в мире, включая EOS, Hive и Steem. В то время как Ethereum и множество цепочек, смоделированных на его основе, остается наиболее ценным блокчейном общего назначения с наиболее децентрализованными приложениями и уникальными пользователями, линия BitShares абсолютно точно доминирует с точки зрения активности транзакций, что делает его королем производительности.
Моя команда, возможно, имеет больше опыта в области BitShares, чем любая другая команда на Земле, поэтому мы сосредоточимся на этом дизайне. Поскольку блокчейны в линейке BitShares способны выполнять гораздо больше транзакций в секунду, это фактически увеличивает важность вертикального масштабирования, потому что их состояние блокчейна растет намного быстрее.
Вертикальное масштабирование, ОЗУ и вилки
Вертикальное масштабирование в контексте вычислений, по сути, сводится к использованию наиболее дешевой формы памяти (диска), когда это возможно и в максимально возможной степени. В случае блокчейнов двумя наиболее важными процессами являются разрешение вилки и сохранение состояния. Существуют все эти разные версии базы данных («вилки»), и узлы должны прийти к консенсусу по поводу того, какая из них «правильная». Это разрешение вилки.
Теперь у вас есть необратимая база данных, которую нужно сохранить. В идеале вы хотите, чтобы они хранились на самом дешевом носителе (диске), а не на самом дорогом (ОЗУ).
Поскольку вы хотите, чтобы вилки разрешались как можно быстрее, вы хотите, чтобы эти вычисления выполнялись в ОЗУ (быстрой памяти). Но как только вилки будут разрешены и новые транзакции будут добавлены в необратимое состояние, вы захотите сохранить эту базу данных на диске. Проблема с блокчейнами из линейки BitShares заключается в том, что они достигают своей производительности благодаря дизайну, который никогда не отражает текущее состояние блокчейна. Вместо этого, когда применяется каждый блок, состояние отложенной транзакции «отменено», старые значения записываются обратно в базу данных, а затем применяется блок.
Одна из проблем этого подхода заключается в том, что в большинстве случаев это означает повторное выполнение тех же вычислений и запись того же состояния обратно в базу данных, которая была только что там, что крайне неэффективно.
Чтение и письмо: арифметика
Еще более актуальным для проблемы вертикального масштабирования является то, что такая конструкция означает, что необратимое состояние в целом не может быть сохранено на диске без необходимости «выталкивать» блоки обратно с диска в ОЗУ для разрешения вилок. Это не только увеличивает нагрузку на ОЗУ на данном узле, но также имеет очень серьезные последствия в отношении использования RocksDB.
RocksDB – это технология баз данных, разработанная Facebook для работы с новостной лентой. Короче говоря, это позволяет нам получить производительность оперативной памяти, но с диска. Многие проекты блокчейнов используют RocksDB по-разному, но проблема с дизайном базы данных, который мы обозначили, заключается в том, что постоянная необходимость отменять ожидающие транзакции и перезаписывать в базу данных сводит на нет преимущества RocksDB.
Лента новостей Facebook посвящена чтению из базы данных. Подумайте, сколько сообщений вы просматриваете, прежде чем начнете работать с одним. По этой причине RocksDB лучше всего работает, когда в базу данных гораздо больше операций чтения, чем записи. Описанный выше дизайн базы данных приводит к такому количеству операций записи в базу данных, что сводит на нет преимущества даже использования RocksDB.
Чтобы в полной мере воспользоваться преимуществами RocksDB, нам необходимо перестроить блокчейн с нуля, чтобы эффективно пересылать блоки из ОЗУ на диск, минимизируя количество операций записи, чтобы извлечь выгоду из RocksDB. Мы можем добиться этого, устранив необходимость отмены / перезаписи и создав единую базу данных, которая отслеживает необратимое состояние и никогда не требует отмены.
Это позволило бы минимизировать использование ОЗУ в узлах за счет эффективного переноса необратимых блоков из ОЗУ на диск без необходимости их возврата. По нашим оценкам, это может снизить стоимость эксплуатации узла на 75%! Это не только сделает работу узла более доступной, увеличив количество узлов в работе, но и эта экономия затрат в конечном итоге будет передана пользователям и разработчикам.
Ограничение блокчейнов или безлимитных блокчейнов?
Существующие цепочки блоков достигают пределов производительности того, что они могут получить от одного узла, вследствие того, как они разрешают вилки и как они хранят состояние своей цепочки. В этой статье мы объяснили, как дизайн базы данных может привести к процессу разрешения вилки, который увеличивает использование ОЗУ, а также количество операций записи в базу данных, которые сводят на нет преимущества, которые можно получить от использования RocksDB, что в конечном итоге приводит к менее эффективным узлам блокчейна.
Дело в том, что вертикальное масштабирование – это гораздо больше, чем эта единственная проблема. Экосистемы блокчейнов сложны, многие компоненты взаимодействуют друг с другом. Снижение затрат на эксплуатацию отдельного узла имеет решающее значение для увеличения количества узлов в работе и снижения затрат на использование сети, но есть также огромные выгоды, которые можно получить за счет минимизации перегрузки сети, стимулирования эффективной работы узла и многого другого.
Наша цель не в том, чтобы подробно объяснить, как можно решить проблему вертикального масштабирования, а в том, чтобы дать некоторое представление о природе того, что, по нашему мнению, является резко недооцененной проблемой в пространстве блокчейнов. Горизонтальная масштабируемость – безусловно, очень важная область интереса, но если мы проигнорируем проблему вертикальной масштабируемости, все, что мы достигнем с помощью горизонтального масштабирования, – это резко увеличить количество ужасно неэффективных узлов.
Взгляды, мысли и мнения, выраженные здесь, принадлежат только автору и не обязательно отражают или отражают взгляды и мнения Cointelegraph.
Эндрю Левин является генеральным директором OpenOrchard, где он и бывшая команда разработчиков, стоящая за блокчейном Steem, создают решения на основе блокчейна, которые позволяют людям брать на себя ответственность и контролировать свое цифровое Я. Их основополагающим продуктом является Koinos, высокопроизводительный блокчейн, построенный на совершенно новой платформе, созданной для предоставления разработчикам функций, необходимых им для предоставления пользовательского опыта, необходимого для распространения внедрения блокчейна в массы.