Масштабируемость многослойных блокчейнов

Масштабируемость многослойных блокчейнов

Источник · Перевод автора

Все мы знаем, что биткойны – не самая масштабируемая криптовалюта с около 6,5 транзакциями в секунду. Биткойн имеет молниеносную сеть и был принят SegWit, но Биткойн все еще не настолько масштабируем. Мне нравится, что действительно умные люди в сообществе активно развивают биткойн, и проект развивается. Сегодня я буду обсуждать некоторые идеи, которые у меня были в 2017 году. Эти идеи легли в основу моей университетской диссертации.

Я кратко опишу некоторые из текущих решений проблемы масштабируемости Биткойн.

Сеть Lightning

Безусловно, классное решение в настоящее время доступно. Сеть Lightning может рассматриваться как еще один слой биткойнов. Сеть Lightning позволяет осуществлять почти мгновенные транзакции между двумя сторонами, которые не перегружают основной слой биткойнов. Эти транзакции между двумя сторонами происходят по платежному каналу, установленному в сети Lightning. После создания канала оплаты обе стороны могут отправлять тысячи транзакций, которые не должны отображаться в основной цепочке блоков. Это очевидное скопление на блокчейне. Затем, когда одна из сторон когда-то была близка к контракту, они просто транслировали контракт основным сетевым майнерам, чтобы утвердить его как одну транзакцию.

Мне нравится Сеть Lightning, и я мог бы даже настроить свой собственный узел в какой-то момент. Есть несколько минусов сетей. Например, они действительно подходят только для небольшой сделки.

SegWit

Другим решением является то, что называется “сегрегированный (отделенный) свидетель” (для краткости SegWit). Идея этого решения состоит в том, чтобы разделить подписи на отдельную структуру. Поскольку подписи занимают около 65% размера блока, это дает больше места для транзакций.

Bitcoin Cash

Bitcoin Cash выбрал более простое решение. Просто увеличьте размер блока. Размер блока биткойнов составляет 1 МБ, а размер блока Биткойн Кэш – 8 МБ. Это позволяет разместить в блоке в восемь раз больше транзакций, увеличивая его пропускную способность по сравнению с биткойнами. Это решение не совместимо с оригинальной сетью Биткойн. Поэтому Bitcoin Cash и Bitcoin – это две отдельные валюты, когда их называют хард-форком. Критики Bitcoin Cash – это всего лишь банальное решение, которое решит проблему и разделит сообщество.

Background

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

Эта статья имеет коллекцию различных идей. Я хотел бы сделать краткий обзор их.

Сжатие главной книги

Одной из проблем, связанных с размером блока, является его рост. Например, блок в BTC составляет 1 МБ по сравнению с 8 МБ на BHC. Учитывая, что блок добывается примерно каждые 10 минут. Я создал диаграмму, чтобы показать вам рост бухгалтерской книги.

Я хотел бы перейти к тому, что этот блок полон. Денежный поток Биткойн никогда не достигал своей емкости блока размером 8 МБ.

Хотя математика проста, результаты довольно удивительны. Предполагая, что биткойн будет существовать в течение 100 или даже 1000 лет, мы можем быстро увидеть, что размер регистра будет невероятно большим. Через 100 лет регистр биткойнов составит около 5000 Гб.

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

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

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

Энтропия является важным аспектом алгоритмов сжатия. Это потому, что данные с высокой энтропией гораздо сложнее сжать. Около 65% блока содержит подписи. Подписи и хэши будут очень высокой энтропии. Другая проблема заключается в том, что используемый алгоритм сжатия должен быть без потерь. Сжатие без потерь просто означает, что данные не будут потеряны во время сжатия. Это имеет первостепенное значение при сжатии информации жизненно важно. Это около 35% данных могут быть сжаты. У меня нет данных, подтверждающих это, но я сделаю предположение, что избыточные данные могут иметь степень сжатия 2: 1. С числами, которые я описал выше, мы могли видеть уменьшение размера книги на 17,5% со временем. Для BCH это может сэкономить несколько терабайт.

Как мы могли бы реализовать это?

В настоящее время формирование блоков биткойнов выглядит как прямая линия блоков.

Шаблон прост. Когда новый блок найден, он добавляется в цепочку блоков и затем повторяется. Что делать, если мы добавили блоки контрольных точек. Я определил и блок контрольных точек как слияние из n блоков. Когда найдено n блоков, они используются для создания блока контрольных точек. Затем блоки с одного по n могут быть удалены.

Каковы преимущества?

  • Ну, первое, что вы можете сделать, это сжать блок контрольных точек.
  • Этот дополнительный шаг также позволяет блокам быть избыточными данными. (Вы можете удалить или удалить историческую информацию из базы данных и уменьшить размер базы данных)
  • Не требуется хард-форк.
  • Снижает затраты на эксплуатацию и полный узел.
  • Более эффективное внедрение шардинга.

Что такое шардинг?

Шард (часть) базы данных – это горизонтальный раздел данных в базе данных или поисковой системе. Каждый отдельный раздел называется осколком или осколком базы данных. Каждый шард хранится на отдельном экземпляре сервера базы данных, чтобы распределить нагрузку.

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

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

Этот метод отлично работает в централизованных системах, где вы можете доверять узлам или серверам. Но, как вы знаете, Биткойн работает как система без доверия. Откуда мы знаем, что узел 4 не является вредоносным и дал нам неизменный блок Checkpoint. В настоящее время мы не можем знать. Какое решение для этого? Корни Меркель – это то, как Биткойн гарантирует, что транзакции не были подделаны. Если корень Меркеля для блока контрольных точек 4 находится в блоке 5 контрольных точек, тогда предыдущий заголовок корня Меркель является действительным блоком. Чтобы злоумышленник сгенерировал ложный блок, у него было бы 2n блоков.

Разделение блоков для увеличения пропускной способности

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

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