# Протокол Waves-NG
# 1. Пределы масштабируемости и проблемы в существующих блокчейн-системах
# 1.1. Постановка проблемы
Блокчейн-протоколы имеют некоторые ограничения масштабируемости и проблемы, связанные с нахождением компромисса между пропускной способностью и задержкой. Текущая технология блокчейн является недостаточно быстрой и не масштабируется для включения большего количества транзакций, таким образом, необходимо учитывать проблему производительности. В текущих предложениях основное внимание было уделено тому, как увеличить количество блоков и как увеличить размер блока в будущем.
Все предложения страдают от главного узкого места масштабируемости: независимо от того, какой размер блока выбран, блокчейн система может в лучшем случае достичь надлежащей пропускной способности транзакций, увеличиваясь с ~3 транзакций в секунду до ~7 транзакций в секунду. Это слишком далеко от 30 000 транзакций в секунду, необходимых для конкуренции с существующими системами, такими как VISA. Те же основные ограничения применимы к litecoin, Ethereum и ко всем другим валютам, которые разделяют протокол Bitcoin.
В Waves-NG главная проблема масштабируемости решена, что помогает сети достичь максимальной пропускной способности, в зависимости от условий сети. Это не только повысит пропускную способность транзакций, но и уменьшит задержки. Таким образом, можно получить подтверждение транзакции в считанные секунды, а не ждать несколько минут.
Задержка (Интервал между блоками) | Размер блока | скорость | |
---|---|---|---|
Bitcoin | 10 минут | 1 Mb | 3-7 Tx/сек |
Ethereum | 10 минут | 1 Mb | 5-20 Tx/сек |
Waves | 1 минута | 1 Mb.100 Tx в блоке | 1.6 Tx/сек |
Waves-NG | 1 минута между ключевыми блоками. 3 секунды между микроблоками. | 1 Mb.65535Tx/KeyBlock.200 Tx в микроблоке | 100 Tx/сек |
Таблица 1, Сравнение масштабируемости Bitcoin, Ethereum, Waves and Waves-NG.
# 1.2. Недостатки текущего предложения и улучшение масштабируемости
Блокчейн системы могут обрабатывать транзакции, и максимальная скорость обработки ограничена выбором между двумя параметрами: размер блока и интервал между блоками.
Интервал между блоками определяет среднее время, которое проходит между созданием двух блоков. Решение об уменьшение интервала между блоками может помочь с решением проблемы предела задержки, но система будет иметь меньшую безопасность (увеличивается вероятность форков), что приведет к нестабильности, так как система не будет находиться в согласии (Рисунок 1). Если мы сократим время генерации блока, то возникнет ситуация, когда значительное количество блоков будет генерироваться за меньшее время, чем требуется для рассылки генерируемого блока по всей сети. Таким образом, не будет никакого способа узнать, какой блок является «реальным», а какой - «форком», потому что транзакции, имеющие несколько подтверждений, внезапно имеют меньше подтверждений (или, возможно, вернутся к неподтвержденному состоянию).
Рисунок 1, Увеличение частоты блоков с неизменным размером блоков приводит к уменьшению безопасности сети.
Пропускная способность системы ограничена максимальным размером блока (при фиксированном интервале между блоками), так как максимальное количество включенных транзакций напрямую зависит от размера блока.
Более крупные блоки могут быть причиной меньшей скорости подтверждения транзакций, что может стать причиной увеличения покинутых блоков. Неограниченный размер блока может стать результатом DoS-атаки на систему, путем создания блоков, валидация которых занимает слишком много времени. Если сделать выбор в пользу увеличения размера блока для улучшения пропускной способности, то может появиться большое количество подвисаний сети (Рисунок 2).
Рисунок 2, Увеличение размера блоков при неизменной частоте блоков ведет к большому количеству подвисаний.
# 1.3. Краткое описание протокола Bitcoin-NG
Это блокчейн протокол следующего поколения, который является альтернативным решением для масштабирования биткойна, не предполагающим увеличения размера блоков или уменьшения интервала между блоками, и снижает риск возникновения форков. Bitcoin-NG описывает как основные компромиссы в биткойне могут быть уменьшены с помощью альтернативного блокчейн протокола, предлагающего задержку по консенсусу и пропускную способность, ограниченную только сетевой плоскостью. Протокол разбивает время на периоды времени (эпохи). В каждый период времени конкретный лидер несет ответственность за сериализацию транзакций (рисунок 3).
Лидеры принимают правила генерации блоков:
- Ключевые блоки для выбора лидера.
- Микро блоки для записи транзакций
Рисунок 3: Структура эпохи в Bitcoin-NG с сериализацией транзакций.
# 2. Waves-NG покрытие
Waves-NG основан на биткоин протоколе следующего поколения, который сериализует транзакции и предлагает важные улучшения в пропускную способность транзакций (более высокая пропускная способность) и задержку обработки транзакций (меньшая задержка) в сравнении с обычным Bitcoin протоколом.
Waves подходят к проблеме масштабируемости следующим образом: предоставляют майнеру возможность создания блока во время майнинга в непрерывном режиме. Этот блок продолжает увеличиваться, и называется liquid-блоком. Liquid блок не меняется во времени после создания и добавления следующего блока.
Такой подход увеличивает эффективную пропускную способность и скорость создания блоков, которая описывается как «особенно важная для бизнеса», использующего протокол Waves, так как она позволяет проводить микро-транзакции без каких-либо задержек, которые характерны для традиционных блокчейнов.
Кроме того, это позволяет блокчейну выдерживать высокую нагрузку, такую как распределение токенов, следующее за краудфандингом и эйрдропы бонусных токенов. Скорость обработки биржевых транзакций также повышается.
# 2.1. Операции Waves-NG
Главная идея Waves-NG - разделять Liquid блок на два типа, ключевые блоки и микро-блоки. Процесс создания liquid блока работает следующим образом:
- Нода майнера получает разрешение на создание блока.
- Нода майнера создает и отправляет ключевой блок (который не содержит транзакций).
- Нода майнера создает и отправляет микроблоки (которые содержат транзакции, точно так же, как и нормальный блок с ссылкой на предыдущий микро-блок или ключевой блок) с интервалом в три секунды.
- Майнеры будут майнить микроблоки и распространять их в сети, пока не появится следующий ключевой блок со ссылкой на liquid-блок.
Все транзакции вместе являются частью одного и того же блока. В промежутках между блоками традиционная биткоин система для наблюдателя выглядит бездействующей, поскольку майнеры работают над созданием следующего блока, без отображения видимого прогресса.
В Waves-NG, ключевые блоки могут быть небольшими, поскольку они должны содержать только транзакцию coinbase, которая определяет открытый ключ, который майнер будет использовать для подписи микроблоков. Поскольку ключевой блок требует доказательства владения, майнеры не могут просто создать его и экспроприировать лидерство по своему усмотрению.
После ключевого блока майнер лидер может быстро выпускать микроблоки, просто подписав их с закрытым ключом, соответствующим открытому ключу, указанному в coinbase ключевого блока (Рисунок 4).
Рисунок 4: Процесс подписи ключевых блоков и микроблоков.
# 2.1.1. Лидирующие блоки
Также называется "ключевые блоки", эти блоки генерируются с proof of stake но не содержат транзакций.
Они работают как механизм выбора лидера и содержат открытый ключ, который определяет лидера.
Каждый блок имеет заголовок, который содержит среди прочего уникальную ссылку своего предшественника, являющуюся криптографическим хешем заголовка предшественника (либо ключевого блока, либо микроблока).
Как и в биткоине, для валидного ключевого блока, криптографический хеш в его заголовке должен быть меньше, чем заданное значение, но, в отличии от биткоина, ключевой блок содержит открытый ключ, который будет использован в последующих микроблоках.
# 2.1.2 Микроблоки
Как только нода генерирует ключевой блок, она становится лидером. В качестве лидера ноде разрешено создавать микроблоки с заданной скоростью, меньшей предопределенного максимума.
Микроблоки могут содержать записи без каких-либо требований к PoS, и они генерируются избранным лидером в каждом цикле блокогенерации.
Цикл генерации блоков инициируется лидирующим блоком.
Единственное требование - подписывать каждый микроблок закрытым ключем лидера.
Микроблоки могут генерироваться на очень высокой скорости избранным лидером (майнером), что приводит к увеличению производительности и скорости транзакций.
Для того чтобы микроблок был действительным, все его записи должны быть действительными в соответствии со спецификацией конечного автомата, и подпись также должна быть действительной. На рисунке 5 показана структура. Обратите внимание, что микроблоки не влияют на вес цепи, так как они не содержат доказательства владения.
Когда все микроблоки подтверждены, они объединяются с относящимся к ним ключевым блоком в один блок.
# 2.2. Механизмы распределения награды в Waves-NG
Вознаграждение состоит из двух частей. Во-первых, каждый ключевой блок дает своему майнеру заданную величину. Во-вторых, каждая транзакция снабжается комиссией.
Комиссия делится между лидером, который поместил запись в микроблок и последующим лидером, генерирующим следующий ключевой блок.
Чтобы замотивировать участников следовать протоколу, Waves-NG использует следующие механизмы:
Каждая транзакция оплачивает комиссию системе, но в отличие от Биткойна, этот сбор распределяется: 40% - лидеру, а 60% - последующему лидеру.
Наконец, если лидер продолжает цепочку, создавая два микроблока с одним и тем же родителем, он наказывается отменой дохода от комиссий; тот, кто обнаруживает мошенничество, получает номинальную плату, (рисунок 5).
Рисунок 5: структура цепи протокола Waves-NG. Микроблоки (кружочки) подписываются закрытым ключом, который сопоставляется с открытым ключом в последнем ключевом блоке (квадраты). Гонорар распределяется 40% лидеру и 60% - следующему лидеру.
На практике вознаграждение осуществляется за счет того, что каждый ключевой блок содержит одну coinbase транзакцию, которая распределяет средства нынешнему и предыдущиму лидерам.
Как и в биткойне, эта транзакция может быть потрачена только после периода погашения в 100 ключевых блоков, чтобы избежать необъединенных транзакций после форка.