@Dusk Я рылся в инженерных обновлениях Dusk, пытаясь понять, как Succinct Attestation реально финализирует блок, а не просто маркетинговую фразу про «быструю вероятностную финализацию». Меня остановил вот какой момент: каждый член комитета получает один или несколько голосов, называемых credit’ами. А общее количество голосов в раунде фиксировано — голоса комитета называются Credits, а число голосов в комитете называется Committee Credits. В общем, это просто взвешенное голосование по доле. Ничего удивительного.
То, чего я не учёл, — что происходит со всеми этими отдельными голосами дальше. Они ведь не просто лежат там как отдельные подписи. Генератор блока собирает их и формирует сертификат — валидное подтверждение (attestation) блока, которое включается в следующий дочерний блок. Так что «доказательство, что блок легитимен» — это не слово одного валидатора: это каждый кредитированный голос, сжатый в один объект с BLS-агрегацией, и именно этот объект дальше реально ссылается будущим консенсусом.
И вот где проблема уникальности незаметно исчезает. Агрегация заставляет каждый кредит указывать ровно на одного кандидата в рамках раунда. Вы не сможете, чтобы ваш голос засчитали дважды или чтобы он засчитывался сразу двум конкурирующим блокам, потому что сертификат способен вместить только один канонический набор. Это не фича для UX. Это то, благодаря чему финализация вообще начинает что-то значить в $DUSK #dusk консенсусе. Но всё ещё не уверен, как это ведёт себя при тяжёлых итерационных таймаутах.
То, чего я не учёл, — что происходит со всеми этими отдельными голосами дальше. Они ведь не просто лежат там как отдельные подписи. Генератор блока собирает их и формирует сертификат — валидное подтверждение (attestation) блока, которое включается в следующий дочерний блок. Так что «доказательство, что блок легитимен» — это не слово одного валидатора: это каждый кредитированный голос, сжатый в один объект с BLS-агрегацией, и именно этот объект дальше реально ссылается будущим консенсусом.
И вот где проблема уникальности незаметно исчезает. Агрегация заставляет каждый кредит указывать ровно на одного кандидата в рамках раунда. Вы не сможете, чтобы ваш голос засчитали дважды или чтобы он засчитывался сразу двум конкурирующим блокам, потому что сертификат способен вместить только один канонический набор. Это не фича для UX. Это то, благодаря чему финализация вообще начинает что-то значить в $DUSK #dusk консенсусе. Но всё ещё не уверен, как это ведёт себя при тяжёлых итерационных таймаутах.
