Протокол Waves-NG

Описание протокола работы блокчейна Waves Enterprise, обеспечивающего преимущество производительности относительно других блокчейнов.

Термины

  • Блок — зафиксированный в блокчейне набор транзакций, подписанный майнером и содержащий ссылку на подпись предыдущего блока. Ограничен 1 Мб или 6000 транзакций.

  • Раунд — период времени между выпуском ключевых блоков. Плавающее значение, регулируется алгоритмом консесуса в зависимости от нагрузки на сеть, в среднем 40 секунд.

  • Доказательство доли владения — получение права майнинга в консенсусе PoS.

  • Нода — узел сети с запущенным приложением блокчейна Waves Enterprise.

  • Майнер — нода, адрес которой обладает достаточным для майнинга балансом и ролью miner.

  • Ключевой блок — блок, содержащий только служебную информацию:

    • публичный ключ майнера — для проверки подписи микроблоков;

    • сумму комиссии майнера за предыдущий блок;

    • подпись майнера;

    • ссылку на предыдущий ключевой блок.

  • Liquid Block — служебный термин, описывающий состояние блока до выпуска следующего ключевого блока, т.е. завершения его майнинга.

  • Микроблоки — наборы транзакций, применяемых к состоянию блокчейна раз в 5 секунд. Ограничен 500 транзакциями. Каждый микроблок подписан приватным ключом майнера.

Описание протокола

Waves-NG — протокол, разработанный Waves Platform на основе Bitcoin-NG для повышения пропускной способности блокчейна Waves, на архитектуре которого реализован Waves Enterprise. Основная концепция протокола — непрерывное создание микроблоков вместо одного большого блока в каждом раунде майнинга, поскольку микроблоки гораздо быстрее пересылаются и проверяются.

Раунды майнинга начинаются с выпуска ключевого блока. Момент появления каждого ключевого блока и адрес указанного в нём майнера определяются консенсусом. Ключевой блок не содержит транзакций и быстро формируется. Далее, до появления следующего блока, раз в 5 секунд формируются микроблоки с транзакциями без доказательства доли, что также повышает скорость обработки. Каждый микроблок ссылается на предыдущий. Ключевой блок добавляется в блокчейн, как только следующий майнер выпустит свой ключевой блок со ссылкой на него.

Такой подход снижает время подтверждения транзакции по сравнению с другими блокчейнами.

1. Процесс создания Liquid Block

  1. Консенсусом определяется майнящий адрес.

  2. Майнер создает и рассылает по сети ключевой блок.

  3. Каждые 5 секунд майнер создает и рассылает по сети микроблок, который содержит транзакции. Он должен ссылаться на предыдущий микроблок или ключевой блок.

  4. Процесс продолжается до тех пор, пока в сети не появится новый валидный ключевой блок.

2. Механизм вознаграждения майнеров в Waves-NG

В протоколе предусмотрена финансовая мотивация соблюдения правил для участников. Комиссия от транзакций в блоке распределяется в следующей пропорции: 40 % комиссии получает майнеру, создавший блок, 60 % - майнер следующего блока. Транзакция по начислению комиссии происходит каждые 100 блоков для обеспечения доверительного интервала проверок.

Схема разделения комиссий

Схема разделения комиссий

3. Разрешение конфликтов

Если майнер продолжает цепочку, создавая два микроблока с одним и тем же родительским блоком, он наказывается отменой дохода от комиссий; тот, кто обнаруживает мошенничество, получает награду майнера за блок. Блокчейн — распределенная система, и каждая нода хранит копию состояния всей сети. При появлении очередного микроблока, нода применяет полученные изменения к своей копии состояния сети и сверяет с остальными узлами сети. В этот момент происходит обнаружение несогласованности транзакций.