Связь между размером блока и масштабируемостью
Среди многочисленных параметров, определяющих эффективность того или иного блокчейна, одну из ведущих ролей занимает его способность к масштабированию. То есть – к сохранение эффективной скорости работы при значительном увеличении числа активных пользователей и количества совершаемых транзакций. И один из способов, который позволяет лучше адаптироваться под повышение нагрузки на сеть – увеличение размера блока. Поэтому мы рассмотрим этот момент более подробно.
Почему размер блока так важен?
Начнём, пожалуй, с того, что сам термин «блокчейн» переводится как «цепочка блоков». Каждый отдельный блок представляет собой определённый объем данных, в котором хранится информация о транзакциях. Учитывая этот объем, а также – скорость генерации новых блоков, можно высчитать, какое количество транзакций в секунду (transactions per second - TPS) способен поддерживать блокчейн. Очевидно, что чем это число выше – тем лучше. Поэтому разработчики активно ищут способы повысить его.
И в контексте использования криптовалют это особенно актуально. Ведь Bitcoin, даже со всеми решениями второго уровня и прочими дополнениями, выдаёт максимум 7 TPS. А Ethereum – до 15. Для сравнения, система денежных переводов Visa генерирует до 1700 транзакций в секунду. Поэтому для того, чтобы начать составлять реальную конкуренцию традиционным финансовым системам, криптовалютные проекты должны значительно повысить скорость своей работы. Однако просто увеличить размер блока – это временное решение, которое в будущем может привести к некоторым проблемам. К счастью, есть и другие варианты действия, и мы сейчас постараемся некоторые из них разобрать.
Как именно могут масштабироваться блокчейны?
Есть две основных категории решения этой проблемы – внутри цепочки и вне её. У каждого подхода свои плюсы и минусы, так что единого решения по поводу того, что эффективнее и перспективнее – нет.
Масштабирование внутри цепочки. Подразумевает изменение работы самой цепочки с целью сделать её более эффективной. Существуют следующие варианты действия:
- Уменьшить размер информации о транзакциях. Это позволяет размещать в стандартном блоке больше переводов. Подобным путём пошли в Bitcoin, когда внедрили протокол SegWit. Уменьшение длины транзакции и записываемой в ней информации привело к значительному повышению пропускной способности.
- Повысить скорость генерации блоков. Работает до определённого предела, поскольку необходимо некоторое время для распространения подтверждённых данных по сети. Иначе может получиться неприятная ситуация – более поздние блоки будут доходить до пользователей раньше, чем их предшественники. А это однозначно вызовет конфликт с алгоритмами консенсуса.
- Бесшовная связь между разными блокчейнами. Если цепочки смогут непосредственно взаимодействовать друг с другом, то каждой из них придётся обрабатывать меньшее количество информации. Но да, необходимо обеспечить на 100 процентов точную передачу данных между разними блокчейнами. На этом принципе работает проект Polkadot. За счёт совместной работы нескольких внутренних цепочек и смарт-контрактов, можно добиться довольно эффективного масштабирования системы.
- Сегментирование. Каждая транзакция разбивается на отдельные сегменты, которые подтверждаются и проверяются независимо. Несколько параллельных процессов значительно быстрее одного последовательного. Данный подход работает и в PoW, и в PoS. Более того, именно он лёг в основу Ethereum 2.0, который планирует довести своё быстродействие до 100 тысяч TPS. Есть, впрочем, у этого метода и недостатки, в основном – связанные с безопасностью. Станет намного проще получать вознаграждение за «двойной подтверждение», да и нужно будет меньше ресурсов для обеспечения атаки 51 процента.
- Уменьшение количества валидаторов. Чем меньше проверяющих узлов – тем выше скорость работы всей сети. По этому пути пошли в EOS, ограничив количество возможных валидаторов 21 узлом, которые были выбраны общим голосованием среди всех держателей токенов. Это позволило повысить скорость до 4 тысяч TPS. Однако меньшее количество проверяющих узлов равно большей централизации сети, а также – существенно повышает риск злоупотребление предоставленными полномочиями.
- Увеличение размера блока. Самый, пожалуй, простой способ. Чем больше блок – тем больше в него помещается данных. Но тем сложнее его майнить, поэтому пользователи с большими вычислительными мощностями получают преимущество. По этому пути развития пошли в Bitcoin Cash, последовательно увеличивая размеры сначала до 8 МБ, а потом и до 32 МБ. Впрочем, до бесконечности увеличивать размеры нельзя, так что данное решение – лишь временное. Ещё и снижающее децентрализацию сети. Что особенно интересно, если учесть, что средний размер блока в данном блокчейне всё равно держится на уровне 1 МБ. Есть у этой идеи и другие недостатки, но о них чуть позже.
Масштабирование вне цепочки. Это решения, которые позволяют повысить производительность, не меняя способ хранения информации в основной цепочке. Их ещё называют «решениями второго уровня». Наиболее эффективными оказались следующие варианты:
- Классические «решения второго уровня». Впервые были использованы в Bitcoin в виде Lightning Network. Узлы этой подсети могут открывать каналы между собой для совершения сделок напрямую. По завершению процесса, канал закрывается, а данные всем скопом кодируются и отправляются в основной блокчейн. Кроме того, это позволяет снизить цену транзакций, поскольку не нужно конкурировать с другими пользователями. Аналогичное решение было внедрено и в Ethereum - Raiden Network. А вслед за ним – и более общий блокчейн-продукт Celer Network. Оба этих проекта не только проводят транзакции вне основной сети, но позволяют использовать смарт-контракты. Проблема в том, что всё это находится на стадии разработки, поэтому технические ошибки всё ещё возможны.
- Сайдчейны. Это ответвления от основной цепочки, в которых активы могут перемещаться независимо. По сути – создание «параллельных путей» для потока транзакций, что значительно снижает нагрузку на основою цепочку. Впервые этот подход тоже применили в Bitcoin – в виде сайдчейна Liquid. Аналогичное решение было внедрено и в Ethereum – Plasma. Существенным его недостатком, впрочем, является то, что каждая такая боковая цепочка контролируется определёнными узлами. Которым нужно доверять. Но которые теоретически могут злоупотреблять своими полномочиями.
Аргументы за и против простого увеличения размера блока
Многие полагают, что ключом к более массовому внедрению блокчейна Биткоин лежит исключительно в увеличении размеров блока. Поскольку это позволит не только повысить общее количество транзакций, но и снизить издержки. То есть сеть станет и быстрее, и дешевле. Также энтузиасты «увеличения» делают упор на то, что как сайдчейны, так и решения второго уровня, всё ещё находятся на этапе «доведения до ума» и не готовы к массовому внедрению.
Но есть тут и некоторые проблемы. На текущем уровне технического развития, у владельцев узлов нет никаких проблем с загрузкой новых блоков. И не будет, даже если повысить их размер до 32 МБ. Однако если этот процесс продлится и размеры увеличатся до гигабайт, начнутся проблемы. Как с пропускной способностью сети интернет, так и с объемами памяти на компьютерах. Поэтому блкочейн перестанет быть сетью для «всех и каждого», а станет инструментом для «каждого с реально продвинутым компьютером, а ещё лучше – с сервером или системой серверов». То есть – усиление централизации.
Также часть проблемы заключается в том, что с увеличением размера блока его становится сложнее «добывать». Нужно обработать больше информации, чтобы подобрать хэш. И если сейчас обычные пользователи хоть как-то могут конкурировать с майнинг-пулами, то при увеличении количества обрабатываемой информации у них не останется никаких шансов. Что тоже означает большую централизацию и большую возможность перехвата управления сетью.
Как обстоят дела с решением проблемы на данный момент?
На момент написания статьи, блокчейн Bitcoin не менял природы используемых блоков с начала внедрения протокола SegWit. Но активно развивал решения второго уровня и сайдчейны. Именно они позволили использовать биткоины для осуществления повседневных покупок. Что касается увеличения блоков, то в BitcoinSV пошли ещё дальше, чем в Bitcoin Cash, повысив их размер до 2 ГБ. Это, впрочем, привело лишь в увеличению стоимости обслуживания и регулярной потере данных.
Вот только это не предел. В проекте ILCOIN используется протокол RIFT, который, по словам его создателей, позволяет создавать блоки до 5 ГБ размеров и обеспечивает TPS на уровне 100 тысяч. Это возможно благодаря тому, что каждая большая единица хранения информации состоит из образований поменьше (всего 25 МБ) которые не нужно добывать индивидуально, поскольку они автоматически генерируются «родительским блоком».
В блокчейне Ethereum рассчитывают, что с масштабированием поможет справиться новый алгоритм консенсуса, основанный на доказательстве доли – Casper.
В рамках проекта Cardano была разработана система Hydra, в рамках которой каждый пользователь генерирует 10 «голов», каждая из которых работает как самостоятельный канал, повышающий пропускную способность сети.
Выводы
Несмотря на значительную проделанную разработчиками работу, пока что не существует универсального, безопасного и эффективного решения проблемы масштабирования. Да, все приведённые выше решения способствуют более эффективному использованию криптовалют, но все они не идеальны. Кроме того, многое зависит от индивидуальных особенностей проектов. Так что разработки всё ещё ведутся.