Протокол 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¶
Консенсусом определяется майнящий адрес.
Майнер создает и рассылает по сети ключевой блок.
Каждые 5 секунд майнер создает и рассылает по сети микроблок, который содержит транзакции. Он должен ссылаться на предыдущий микроблок или ключевой блок.
Процесс продолжается до тех пор, пока в сети не появится новый валидный ключевой блок.
2. Механизм вознаграждения майнеров в Waves-NG¶
В протоколе предусмотрена финансовая мотивация соблюдения правил для участников. Комиссия от транзакций в блоке распределяется в следующей пропорции: 40 % комиссии получает майнеру, создавший блок, 60 % - майнер следующего блока. Транзакция по начислению комиссии происходит каждые 100 блоков для обеспечения доверительного интервала проверок.
3. Разрешение конфликтов¶
Если майнер продолжает цепочку, создавая два микроблока с одним и тем же родительским блоком, он наказывается отменой дохода от комиссий; тот, кто обнаруживает мошенничество, получает награду майнера за блок. Блокчейн — распределенная система, и каждая нода хранит копию состояния всей сети. При появлении очередного микроблока, нода применяет полученные изменения к своей копии состояния сети и сверяет с остальными узлами сети. В этот момент происходит обнаружение несогласованности транзакций.