Безопасность и архитектура
Безопасность ZooBC держится на подписях и хешах, а не на затраченной энергии. Каждый блок, транзакция, квитанция и доказательство сида подписаны, и каждый узел проверяет всё, что принимает, поэтому ни одному узлу не приходится верить другому на слово. Вокруг этого ядра архитектура добавляет несколько жёстких пределов: устоявшуюся историю нельзя переписать, новый узел может сам найти подлинную цепочку, а подпись действует только в одной цепочке.
Злоумышленник, на которого рассчитан ZooBC
Дизайн исходит из злоумышленника, который может запустить любое число узлов и аккаунтов, видит каждое сообщение, использует любой логический изъян и богат, но не может подделывать подписи, находить коллизии хешей или скупить все токены. Его целями были бы кража, цензура, переписывание истории или нарушение работы цепочки. Статья от чего защищает Proof of Participation разбирает каждую атаку и ответ на неё.
Две цепочки в каждом узле
Каждый узел ведёт две цепочки. Основная цепочка создаёт блок каждые 15 секунд и несёт транзакции; её блоки создают зарегистрированные узлы, выбранные жеребьёвкой (см. Proof of Participation). Spine-цепочка в mainnet создаёт один блок в сутки и не несёт транзакций: каждый её блок — это контрольная точка основной цепочки, запись о ключах узлов, которые вошли или вышли, и манифесты последних снимков состояния, соподписанные двумя третями мест.
Уровни защиты
| Уровень | Что он гарантирует | Статья |
|---|---|---|
| проверка каждым узлом | блок засчитывается, только если его подписал выбранный жеребьёвкой производитель, а его доказательство сида, транзакции и квитанции проходят проверку | Proof of Participation |
| равные места, допускаемые размеренно | власть нельзя быстро купить: один равный шанс на место, один допуск за цикл | От чего защищает Proof of Participation |
| ограниченный откат | ни один узел не откатывается больше чем на 720 блоков (3 часа) | Финальность и откат |
| контрольные точки spine-цепочки | ни один узел не реорганизуется ниже контрольной точки, которую соподписали две трети мест | Spine-цепочка |
| проверяемая быстрая синхронизация | новый узел загружает состояние, названное spine-цепочкой, проверяет каждый хеш и опрашивает выборку пиров | Снимки и быстрая синхронизация |
| пин релиза | новая установка отвергает историю spine-цепочки, противоречащую её релизу | Пин релиза |
| подписи, привязанные к цепочке | транзакция, подписанная для одной цепочки, отклоняется во всех остальных | Подписи, привязанные к цепочке |
| решения двух третей | контрольные точки, переводы через мост, факты оракула и вето релизов требуют двух третей мест | Правила двух третей |
| непредсказуемые сиды | ни один производитель не может выбрать случайность, которая выбирает следующего производителя | Сид блока (VRF) |
| отчёты о двойном подписании | производитель, подписавший два блока на одном родителе, изобличается и несёт наказание | Двойное подписание (эквивокация) |
Уровни перекрываются. Например, переписывание истории годичной давности проваливается на каждом из нескольких уровней по отдельности: на пределе отката, на нижней границе контрольных точек, на соподписях spine-цепочки и на пине релиза.
Что могло бы и чего не могло бы сделать большинство
Даже злоумышленник, владеющий более чем половиной мест, мог бы лишь задерживать или цензурировать транзакции и заменять недавние блоки в пределах 3 часов. Он не мог бы подделать подписи, потратить чужие монеты, выпустить больше, чем предусматривает график coinbase, или опуститься ниже контрольной точки spine-цепочки, потому что каждый узел сам проверяет каждый блок.
На что безопасность ZooBC не опирается
- На секретность. Трафик между пирами — простой gRPC; защиту обеспечивают подписи и проверка.
- На энергию или оборудование. Никакая головоломка не решается, и никакая машина не даёт преимущества.
- На доверенную сторону. Никакой фонд не соподписывает блоки, никакой сайт не ручается за снимки, а чтобы узнать о самой тяжёлой цепочке, достаточно одного честного пира.
См. также
Статьи по этой теме
- Spine-цепочка
Медленная вторая цепочка, которую ведёт каждый узел ZooBC: один блок в сутки, соподписанный двумя третями мест, с контрольными точками основной цепочки, изменениями ключей узлов и манифестами снимков. - От чего защищает Proof of Participation
Злоумышленник, которому призван противостоять ZooBC, и то, как Proof of Participation отвечает на каждую атаку: купленная власть, места Сивиллы, большинство, игры с сидом, переписывание истории издалека и затмение. - Пин релиза
Пин, который может поставлять релиз ZooBC: одна публичная строка с высотой и хешем spine-блока, которую узел проверяет при запуске, чтобы никогда не работать на поддельной истории spine-цепочки. - Подписи, привязанные к цепочке
Почему транзакцию, подписанную для одной цепочки ZooBC, нельзя воспроизвести в другой: каждая подпись охватывает хеш генезиса цепочки — единственную идентичность, которая есть у цепочки ZooBC. - Правила двух третей
Какие решения в ZooBC требуют двух третей зарегистрированных мест (spine-блоки, переводы через мост, факты оракула, вето релизов, обновления правил), как учитываются приостановленные места и что не требует голосования. - Снимки и быстрая синхронизация
Как новый узел ZooBC добирается до настоящего, не воспроизводя каждый блок: ежемесячные снимки состояния, названные в spine-цепочке, проверяемые чанк за чанком и с помощью пиров. - Финальность и откат
Насколько далеко узел ZooBC откатится, чтобы последовать за более тяжёлой ветвью (720 блоков, 3 часа), почему он никогда не опускается ниже контрольной точки spine-цепочки и как отрезанный узел восстанавливает себя.