Блокчейн

Nakamoto vs Classical консенсус

В мае 2022 Terra/Luna потеряла 40 миллиардов за 72 часа. Валидаторы массово покидали сеть, и Tendermint - движок с deterministic finality - просто остановился. Нет кворума, нет блоков, нет спасения. В тот же момент Bitcoin продолжал работать как ни в чём не бывало, несмотря на панику рынка. Два протокола, два подхода к консенсусу - и диаметрально противоположное поведение в кризисе. Почему один остановился, а другой нет? Ответ лежит в фундаментальном выборе, который делает каждый блокчейн ещё до написания первой строчки кода: probabilistic или deterministic finality.

  • **Биржи (Coinbase, Binance)** ждут разное количество подтверждений для разных блокчейнов: 6 для Bitcoin (~60 мин), 1 для Cosmos (~6 сек) - потому что у них разный тип финальности
  • **DeFi-протоколы** выбирают L1 исходя из CAP-свойств: Aave и Compound на Ethereum (гибрид AP+CP), протоколы Cosmos экосистемы на CP-цепочках с мгновенной финальностью
  • **Cross-chain мосты** (Wormhole, IBC) должны понимать тип финальности обеих цепочек: перевод из CP-цепочки в AP-цепочку и обратно требует разных стратегий ожидания и верификации
  • **Ethereum после The Merge** использует гибрид GHOST + Casper FFG (Gasper): блоки производятся каждые 12 секунд (AP-стиль), но финализируются батчами каждые ~13 минут (CP-стиль)

Предварительные знания

  • Proof of Work: security through energy
  • BFT Consensus: PBFT and variants

Probabilistic Finality: уверенность вместо гарантии

В Bitcoin ни одна транзакция не является финальной в абсолютном смысле. Каждый новый блок, построенный поверх вашего, **уменьшает вероятность реорганизации** экспоненциально - но никогда не сводит её к нулю.

**Probabilistic finality** означает, что уверенность в транзакции растёт с каждым подтверждением, но теоретически всегда остаётся ненулевая вероятность отмены.

Сатоши Накамото вывел формулу, описывающую вероятность успешной атаки для злоумышленника с долей `q` от общего hashrate после `z` подтверждений:

Обратите внимание: при `q = 0.1` (10% hashrate) уже после 6 подтверждений вероятность атаки падает ниже **0.025%**. При 12 подтверждениях - ниже одной десятимиллионной. Именно поэтому биржи ждут 6 подтверждений для Bitcoin.

При `q >= 0.5` формула ломается: атакующий **всегда** догонит честную цепочку. Это и есть знаменитая **51% attack** - не порог магии, а точка, после которой вероятность атаки становится равной 1.

Биржа Coinbase требует 6 подтверждений для Bitcoin-депозита. Почему именно 6, а не 1?

Deterministic Finality: раз и навсегда

В отличие от Bitcoin, **BFT-протоколы** (Byzantine Fault Tolerant) дают абсолютную гарантию: как только блок прошёл commit-фазу, он **финален навсегда**. Никакой реорганизации, никаких откатов, никакого ожидания подтверждений.

**Tendermint** (движок консенсуса Cosmos) - классический пример deterministic finality. Каждый блок проходит двухфазное голосование: **pre-vote** и **pre-commit**. Если более 2/3 валидаторов подписали pre-commit, блок считается финальным.

Но за deterministic finality приходится платить. Главный trade-off - **liveness vs safety**:

  • **Safety** (безопасность): финализированный блок никогда не будет отменён - гарантировано при `f < n/3`
  • **Liveness** (живучесть): сеть продолжает производить блоки - **НЕ гарантировано**, если >1/3 валидаторов offline
  • Если 61 из 180 валидаторов Cosmos Hub уйдут offline, **сеть полностью остановится** до их возвращения
  • Bitcoin в аналогичной ситуации продолжит работать - просто медленнее

**Liveness failure** - реальная проблема. Сеть Cosmos Hub останавливалась в 2019 году. Terra/Luna остановилась в мае 2022 при массовом выходе валидаторов. Solana (частично BFT) переживала многочасовые простои.

Сеть Cosmos Hub имеет 180 валидаторов. Если 70 валидаторов одновременно уйдут offline, что произойдёт?

CAP-теорема: невозможный выбор

В 2000 году Эрик Брюер сформулировал теорему, которая объясняет **фундаментальный** trade-off между Nakamoto и Classical consensus. В распределённой системе невозможно одновременно гарантировать все три свойства:

В блокчейне **Partition Tolerance обязательна** - узлы разбросаны по всему миру, сетевые разрывы неизбежны. Значит, реальный выбор стоит между **C** и **A**:

**Гибридные подходы** пытаются взять лучшее из обоих миров:

  • **Ethereum 2.0 (Gasper):** Nakamoto-style block production (always available) + BFT-style finality через Casper FFG каждые ~13 минут. Цепочка работает даже при потере >1/3, но финальность приостанавливается
  • **Avalanche:** вероятностная выборка подмножества валидаторов (subsampling) - быстрая финальность (~1 сек) при высокой доступности. Формально AP, но с очень высокой вероятностью consistency
  • **Polkadot (GRANDPA + BABE):** BABE производит блоки (AP), GRANDPA финализирует батчами (CP). Если GRANDPA отстаёт, блоки всё равно производятся

Выбор AP vs CP - не вопрос "что лучше", а вопрос **для чего система**. Для платежей (Bitcoin) доступность критичнее: лучше принять платёж с малым риском реорга, чем не принять вовсе. Для DeFi (Cosmos) consistency критичнее: лучше остановиться, чем допустить двойную трату на миллионы.

DeFi-протокол выдаёт займы на 100M. При выборе L1 блокчейна, какое свойство CAP для него приоритетнее и почему?

Fork Choice Rule: кто главный?

Когда два майнера одновременно находят блок, возникает **fork** - временное расхождение цепочки. Кто решает, какая ветка "правильная"? Для этого нужно **fork choice rule** - детерминированное правило, по которому каждый узел выбирает canonical chain.

**Longest Chain Rule** (Bitcoin) - самое простое fork choice rule: побеждает цепочка с наибольшим количеством блоков. Но у него есть проблема: оно не учитывает "потерянную" работу в побочных ветках.

Ethereum до The Merge использовал **GHOST** (Greedy Heaviest Observed SubTree) - модифицированное правило, предложенное Sompolinsky & Zohar в 2013:

**Uncle (ommer) блоки** - валидные блоки, которые не попали в главную цепь. В Bitcoin они просто теряются (orphaned blocks). Ethereum включал ommer-блоки в подсчёт веса поддерева и даже давал их авторам частичную награду (7/8 от полной):

  • **Справедливость:** майнер, нашедший валидный блок, получает награду даже если его обогнали на миллисекунду
  • **Безопасность:** учёт ommer-блоков делает 51% атаку дороже, так как атакующий должен перевесить ВСЁ поддерево, а не только главную цепь
  • **Масштабируемость:** позволяет уменьшить block time без потери безопасности (Ethereum: 12-15 сек vs Bitcoin: 10 мин)

После The Merge (сентябрь 2022) Ethereum перешёл на **LMD-GHOST** (Latest Message Driven GHOST) в рамках Gasper - гибрида GHOST и Casper FFG. Вместо hashrate-веса используются голоса валидаторов:

**Chain quality** - метрика, измеряющая долю блоков в canonical chain, произведённых честными участниками. Хорошее fork choice rule должно обеспечивать chain quality > `1 - f/n`, где `f` - количество Byzantine узлов. GHOST улучшает chain quality по сравнению с longest chain rule при высокой частоте блоков.

Fork choice rule - одно из самых недооценённых решений при проектировании блокчейна. Оно определяет устойчивость к атакам, скорость convergence после fork, и fairness для майнеров/валидаторов. Каждый крупный протокол имеет своё правило, адаптированное под его модель угроз.

Longest chain rule выбирает цепочку с наибольшим количеством блоков, поэтому в Bitcoin побеждает тот, кто быстрее производит блоки

В Bitcoin "longest chain" на практике означает цепочку с наибольшей **cumulative proof of work** (суммарной сложностью). Если атакующий производит много лёгких блоков с пониженной difficulty, они не победят меньшее количество тяжёлых блоков. Корректнее говорить **heaviest chain**, а не longest chain.

Это различие критично для безопасности. Если бы считались просто блоки, атакующий мог бы создать длинную цепочку дешёвых блоков. Суммарная PoW делает атаку пропорционально дорогой: чтобы перевесить честную цепь, нужно потратить столько же (или больше) энергии, сколько потратила вся сеть.

В Ethereum до The Merge использовался GHOST вместо Bitcoin-стиля longest chain. Какое главное преимущество это давало?

Ключевые идеи

  • **Probabilistic finality** (Nakamoto): уверенность растёт экспоненциально с каждым подтверждением, но никогда не достигает 100%. Формула Накамото: при 10% hashrate атакующего и 6 подтверждениях вероятность реорга < 0.025%
  • **Deterministic finality** (BFT): после commit блок финален навсегда. Trade-off: сеть может остановиться при потере >1/3 валидаторов (liveness failure). Вспомните Terra/Luna из начала урока - именно этот trade-off сработал в кризис
  • **CAP-теорема** определяет фундаментальный выбор: Bitcoin = AP (всегда работает, eventual consistency), BFT = CP (всегда консистентен, может остановиться). Гибридные подходы (Gasper, Avalanche) переключаются между режимами
  • **Fork choice rule** определяет каноничную цепочку при расхождении. Longest chain (Bitcoin) считает суммарную PoW; GHOST (Ethereum) учитывает ommer-блоки в весе поддерева, что позволяет безопасно сокращать block time
  • Выбор между Nakamoto и Classical - не вопрос "что лучше", а вопрос **какой failure mode допустим**: временная inconsistency (реорг) или временная остановка (liveness failure)

Связанные темы

Этот урок связывает теорию консенсуса с конкретными протоколами:

  • Proof of Work — Базовый механизм Nakamoto consensus, на котором построена probabilistic finality
  • BFT-консенсус — Базовый механизм Classical consensus, обеспечивающий deterministic finality
  • HotStuff — Оптимизация BFT до линейной communication complexity - решение проблемы масштабирования classical consensus
  • Gasper (Ethereum PoS) — Гибрид LMD-GHOST и Casper FFG - главный пример сочетания Nakamoto и Classical подходов на практике

Вопросы для размышления

  • Если вы проектируете блокчейн для международных банковских расчётов (миллиарды долларов в день), какой тип финальности вы выберете и почему? Какой failure mode (реорг vs остановка) менее приемлем для банков?
  • Ethereum перешёл от чистого Nakamoto consensus (PoW + longest chain) к гибриду (PoS + LMD-GHOST + Casper FFG). Какие свойства он приобрёл и какие потерял? Стал ли Ethereum после The Merge ближе к AP или CP?
  • Avalanche утверждает, что достигает "финальности за 1 секунду" через вероятностную выборку. Это probabilistic или deterministic finality? Может ли вероятностная финальность быть "достаточно хорошей" для замены детерминированной?

Связанные уроки

  • dist-08-paxos
Nakamoto vs Classical консенсус

0

1

Войти