Я углубился в механизмы производства блоков Midnight и, честно говоря, уровень финализации — это та часть, которую большинство людей полностью пропускает 😂
Midnight использует два отдельных механизма консенсуса, работающих одновременно. AURA управляет тем, кто производит следующий блок — система кругового распределения, где валидаторы по очереди работают через фиксированные промежутки времени. Но только AURA не делает блоки постоянными.
Это делает GRANDPA. Соглашение о префиксах, основанное на GHOST, с рекурсивным производным предком. Название сложное, но функция специфична — GRANDPA смотрит на цепочку и определяет, какие блоки получили достаточное согласие валидаторов, чтобы считаться финализированными. Не просто добавлены в цепочку. Финально. Необратимо.
Различие имеет большее значение, чем большинство людей осознает. Блок может существовать в цепочке, не будучи финализированным. Во время стресса в сети, разветвлений или разногласий валидаторов может одновременно существовать несколько конкурирующих блоков. AURA продолжает производить. GRANDPA продолжает оценивать. Только блоки, достигшие порога финализации, становятся постоянными.
Этот двухуровневый подход — AURA для производства, GRANDPA для финализации — напрямую исходит из фреймворка Substrate, на котором построен Midnight. Та же архитектура используется Polkadot.
Честно говоря, не знаю, сколько обычно занимает финализация на Midnight или что происходит с транзакциями в блоках, которые создаются, но никогда не финализируются.
Каково ваше мнение — надежный двухуровневый консенсус или ненужная сложность для сети, которая могла бы использовать более простую финализацию?? 🤔
#night @MidnightNetwork $NIGHT
