Протокол Waves-NG

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

Термины

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

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

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

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

  • Майнер — нода, адрес которой обладает достаточным для майнинга балансом и разрешением «Майнинг».

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

../_images/miner_reward.png

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

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