montana/_internal-private/Whitepaper Montana RU.md
2026-05-26 21:14:51 +03:00

62 KiB
Raw Blame History

Монтана: постквантовый блокчейн, в котором редкость — это время

Алехандро Монтана github.com/efir369999/Montana

Статус перевода. Перевод приведён в соответствие с английским источником Whitepaper Montana.md после внешнего аудита 2026-05-19 (CISO-as-a-Service, 16 findings) и закрытия WP-2 через развёртывание Noise_PQ XX. Каноническая версия для внешней аудитории — английский файл; русский — внутренняя версия для проектной работы.

Аннотация

Постквантовая цифровая ценность должна переноситься между сторонами без опоры на классические криптографические основания, которые квантовый противник способен разрушить. Существующие сети опираются на подписи (ECDSA, EdDSA), стойкость которых рассыпается под алгоритмом Шора, и на комиссионные механизмы защиты от спама, которые при росте сети вытесняют рядового пользователя. Мы предлагаем блокчейн, consensus-подписи и application-layer key encapsulation которого опираются на постквантовые примитивы, стандартизованные NIST в 2024 году (ML-DSA-65, ML-KEM-768), а защита от спама работает на времени, а не на деньгах. Sequential delay function над SHA-256 порождает глобально упорядоченную цепь окон длиной около шестидесяти секунд каждое. Каждое окно запечатывается итерированным вычислением хеша, которое нельзя распараллелить и нельзя пропустить; стоимость проверки равна стоимости вычисления. Операции внутри окна ограничены по личности, по накопленной длине цепи аккаунта-оператора и по ограничению старшинства — три разные редкости, выведенные из протекшего времени, а не из удержанного баланса. Пока честные операторы исполняют sequential delay function, цепь продлевается — независимо от того, сколько участников держат токены и какие комиссии они готовы были бы заплатить. Сетевой транспорт — Noise_PQ XX: трёхсообщенческое рукопожатие с эфемерной инкапсуляцией ключа ML-KEM-768 на обеих сторонах, подписи личности ML-DSA-65 над транскриптом и фреймирование ChaCha20-Poly1305 AEAD на установленной сессии. Стек транспорта — TCP → Noise_PQ XX → Yamux. PeerId — SHA-256-multihash открытого ключа личности ML-DSA-65 каждого пира. Конфиденциальность транспорта опирается на постквантовые примитивы.

1. Введение

Биткоин и его потомки показали, что децентрализованный денежный консенсус достижим без доверенных посредников. Два ограничения мешают этим системам стать общим финансовым основанием в масштабе миллиардов пользователей.

Во-первых, всякая боевая криптовалюта черпает стойкость своей подписи из задачи о дискретном логарифме на эллиптической кривой. Алгоритм Шора [8], запущенный на достаточно мощном квантовом компьютере, ломает эту задачу за полиномиальное время. Национальный институт стандартов и технологий США в 2024 году стандартизовал постквантовые механизмы инкапсуляции ключа и подписи (FIPS 203 [2], FIPS 204 [3]); существующие крупные сети к ним не перешли. Миграция — не тривиальная смена параметра: проводной формат, вывод адреса, мульти-подписные схемы, доказательства для лёгкого клиента — всё опирается на лежащий в основе примитив.

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

Мы предлагаем Монтану — цепь, consensus-подписи которой опираются на постквантовые примитивы, а защита от спама работает на времени, а не на деньгах. Цепь продвигается sequential delay function над SHA-256, порождая глобально упорядоченные окна длиной около шестидесяти секунд. Операции ограничены окнами на личность, длиной цепи аккаунта и старшинством — тремя независимыми редкостями, выведенными из протекшего времени.

2. Время как редкий ресурс

В комиссионной цепи редкий ресурс — место в блоке; доступ распределяется готовностью платить. Спам сдерживается ценой включения. Из этого следуют два провала. При перегрузке обычный пользователь вытесняется ценой. При свободе спамер возвращается по предельной стоимости. Механизм не сходится к стабильной точке; он колеблется вместе со спросом.

Мы заменяем редкость места в блоке редкостью времени. Sequential delay function над SHA-256 принуждает к последовательному вычислению, которое нельзя распараллелить: D итераций SHA-256 должны быть выполнены подряд, где D откалибровано так, чтобы расчёт занимал около шестидесяти секунд на обычном процессоре x86_64. Выход одного окна становится входом следующего. Полная длина цепи измеряет настенное время, протекшее с Генезиса, и восстанавливается всяким, кто умеет проверить цепь повторным проигрыванием итераций.

Время равно доступно всем участникам. Противник, у которого ресурсов в сто раз больше, чем у честного оператора, не получает в сто раз больше времени на цепь. Он может крутить больше параллельных цепей, но каждая идёт по тому же настенному ходу. Sybil-личности не дают больше времени на личность — они дают больше личностей, и каждая подчинена тому же ограничению «один шаг на личность за окно» внутри протокола.

Время как редкость не требует ценового канала, биржи, оракула цен. Его стоимость зафиксирована протоколом: одно окно равно одному окну, какой бы ни была курсовая цена монеты.

3. ВремяЦепь

Пусть T_W — выход цепи на окне W. ВремяЦепь продвигается так:

T_W = SHA-256^D (T_{W-1})

где T_0 — семя Генезиса, а D — счёт итераций на окно. D инициализирован значением 325 000 000 и пересчитывается каждые 20 160 окон (около четырнадцати дней) по формуле, привязанной к медианному наблюдаемому настенному времени окна по честным операторам. Пересчёт каноничен: всякий честный оператор вычисляет одно и то же новое D из открытых входов.

Эта конструкция — sequential delay function: итерация должна быть выполнена по порядку, а проверка требует прогона тех же D итераций. Стоимость проверки равна стоимости вычисления — нет асимметричного быстрого пути проверки, как в verifiable delay functions Бонэ, Бонно, Бюнца и Фиша [5], Пьетшака [6] или Весоловского [7]. Те конструкции работают над группами RSA или классовыми группами мнимых квадратичных полей и достигают проверки O(log T) или O(1). Монтана выбирает более простой примитив по двум причинам: (i) криптографическая поверхность минимизирована, опираясь только на SHA-256 (FIPS 180-4 [4]), который и так необходим для хеширования, адресации и коммитментов Меркла; (ii) асимметрия проверки строго не требуется, когда верификатор сам — оператор, продлевающий цепь: операторы проверяют, продлевая цепь, что есть та же работа, которую они выполняют на следующее окно.

От нового оператора, входящего в сеть, требуется произвести цепь-кандидат последовательного хеша длиной не менее 20 160 окон — протокольный параметр vdf_entry_windows, равный одной эпохе τ₂, приблизительно четырнадцать дней настенного времени на обычном железе — прежде чем получить право участвовать в лотерее. Это требование — Sybil-барьер входа протокола.

Стоимость производства N кандидатских личностей масштабируется линейно. Каждая цепь-кандидат имеет одну и ту же настенную стоимость T (приблизительно четырнадцать дней, одна эпоха τ₂). Противник с N машинами может вычислить все N цепей параллельно за настенное T, заплатив N × T машиночасов вычисления. С одной машиной противник платит N × T настенного времени. Квадратичного множителя нет, и нет непараллелизуемости времени между разными личностями. Sybil-стоимость, следовательно, линейна в оборудовании и линейна в энергозатратах, не сверхлинейна.

Sybil-устойчивость внутри Монтаны выводится из композиции этой входной стоимости с пер-личностными ограничениями скорости (раздел 10) и старшинственным gating-ом лотереи (раздел 7). Совокупный эффект — влияние противника на консенсус растёт линейно с бюджетом оборудования и совсем не растёт с удержанием токенов.

4. Постквантовые примитивы

Подписи производятся и проверяются ML-DSA-65 — модуль-решёточной схемой подписи FIPS 204 [3]. Инкапсуляция ключа, где она применяется (рукопожатие операторов, шифрование прикладной нагрузки), исполняется ML-KEM-768 — модуль-решёточной схемой FIPS 203 [2]. Обе входят в итог стандартизации NIST PQC на уровне безопасности NIST 3 (примерно эквивалент 192-битной симметричной стойкости). Размеры ключей: открытый ключ ML-DSA-65 — 1952 байта, секретный ключ — 4032, подпись — 3309; открытый ключ ML-KEM-768 — 1184 байта, шифротекст — 1088, общий секрет — 32.

ML-DSA-65 используется в детерминированном режиме (RND = 0x00 × 32 per FIPS 204 §3.7) для обеспечения побайтно-идентичных подписей для одинаковых пар (sk, message). Все реализации обязаны использовать постоянно-временные операции для устойчивости к атакам по таймингу и потреблению.

Хеширование — SHA-256 (FIPS 180-4 [4]). Алгоритм Гровера [9] снижает действенную стойкость SHA-256 к нахождению прообраза с 256 до 128 бит в квантовой модели, что остаётся приемлемым. Стойкость к коллизиям против квантового противника ограничена 85 битами (алгоритм BHT); это влияет лишь на протоколы, зависящие от стойкости к коллизиям при противно выбранных входах. Domain-separated хеш-композиции и подписные input-конструкции Монтаны эту зависимость снимают: входы в consensus-критические хеши — либо канонические и непредсказуемые-офлайн, либо подписанные честными участниками, что устраняет квантовую поверхность коллизионной атаки на практике (инвариант [I-8], раздел 7).

Деривация ключей из 24-словной мнемоники использует PBKDF2-HMAC-SHA-256 с iter = 2^20 для вычисления мастер-семени, далее HKDF-SHA-256 разводит на ключи по назначению (подпись аккаунта, подпись узла, шифрование прикладной нагрузки). Мнемонический словарь — 256 русскоязычных слов, отобранных по различимости при наборе, на слух и при переписывании. Протокол алфавитно-независим; словарь — выбор внедрения и может быть заменён любым набором из 256 слов с той же энтропийной мощностью (8 бит на слово). Текущий файл словаря поддерживается в репозитории как Montana wordlist.txt; формальная публикация словаря с методологией отбора закреплена за milestone M9.

5. Модель угроз

Модель угроз Монтаны формулируется явно — для разграничения свойств безопасности, которые заявляются, от тех, которые не заявляются.

Классы противников. Рассматриваем три класса:

  • Профит-ориентированные противники — противники с рациональной экономической мотивацией, ограниченные бюджетом и стремящиеся к положительной ожидаемой доходности.
  • Саботажные противники — противники с фиксированным бюджетом, стремящиеся нанести ущерб сети без ожидания денежной отдачи (государственные акторы, крупные конкуренты, недовольные инсайдеры).
  • Сетевые противники — противники, контролирующие существенные доли сетевых путей, способные ронять, переупорядочивать или задерживать сообщения между операторами.

Предполагаемое честное большинство. Честные операторы контролируют более 67% совокупного active_chain_length (суммы цементированных операций по всем активным операторским цепям). Кворум взвешивается по active_chain_length, не по поголовью, поэтому раздувание Sybil-личностей не ослабляет порог кворума.

Влияние, ограниченное оборудованием. Преимущество противника в участии в консенсусе масштабируется линейно с бюджетом оборудования (параллельный SHA-256-вычислитель) и совсем не масштабируется с удержанием токенов. Капитал не покупает больше времени. Противник с k-кратным оборудованием честного медианного оператора получает в ожидании не более k-кратной доли оператора.

Что Монтана защищает. Целостность консенсуса (никакая операция не цементируется без подписи честного кворума); невозможность подделки подписи (постквантовая, ML-DSA-65); Sybil-ограниченное влияние (линейно по оборудованию); живучесть цепи при честных > 67% (раздел 8 и ниже).

Вне области протокольного слоя. Анонимность метаданных прикладного слоя сверх того, что даёт шифрование Якоря — сеть наблюдает время и счёт операций, даже когда содержимое зашифровано. Справедливость периода bootstrap до стабилизации операторской популяции — раздел 9. Конфиденциальность транспортного слоя против квантового противника — внутри области, обеспечивается Noise_PQ XX (раздел 13).

Условия отказа. Безопасность нарушается, когда противник одновременно и продолжительно контролирует > 50% active_chain_length и > 50% операторской SHA-256-мощности. Живучесть останавливается (без потери безопасности), когда менее 67% активных операторов отзывчивы в пределах fallback-каскада (раздел 8).

Квантовый противник. Релевантная угроза — противник, записывающий шифротексты сегодня и расшифровывающий их, когда станет доступен достаточно мощный квантовый компьютер. Consensus-подписи опираются на ML-DSA-65 (FIPS 204 [3]), безопасность которой сводится к жёсткости задачи Module Learning With Errors при квантовых редукциях. Транспортные рукопожатия опираются на ML-KEM-768 (FIPS 203 [2]) по тому же модуль-решёточному предположению. Хеширование — SHA-256 (FIPS 180-4 [4]), чья стойкость к прообразу падает до 128 бит под Гровером [9] и остаётся приемлемой. Стойкость к коллизиям под квантовым поиском падает до 85 бит (BHT); consensus-критические хеш-входы domain-separated и либо канонически-непредсказуемы, либо подписаны честными участниками, что устраняет квантовую коллизионную поверхность атаки на практике (инвариант [I-8], раздел 7).

Sybil-атака. Производство N кандидатских операторских личностей требует N кандидатских последовательных хеш-цепей длиной vdf_entry_windows = 20 160 окон каждая (одна эпоха τ₂, приблизительно четырнадцать дней настенного времени на обычном железе). При M машинах, работающих параллельно, настенная стоимость N кандидатов — ⌈N/M⌉ · τ₂; машиновременная стоимость — N · τ₂. Масштабирование линейно по оборудованию или по настенному времени. Квадратичного множителя нет и нет непараллелизуемости времени между разными личностями. Sybil-устойчивость, следовательно, композирует входную стоимость с пер-личностными ограничениями скорости внутри протокола (раздел 10) и старшинственным gating-ом лотереи (раздел 7): враждебное влияние на консенсус растёт линейно с бюджетом оборудования и совсем не растёт с удержанием токенов.

Equivocation. Каждая цепь аккаунта ограничена не более чем одной цементированной операцией за τ_1 = 1 окно. Две операции с одинаковым prev_hash от одного отправителя — это equivocation; обе операции помечаются equivocated, и ни одна не цементируется. Поверхность внутри-оконного упорядочивания (источник нарушения детерминизма [I-3] и дополнительный источник consensus-seed [I-8]) устранена по построению при N = 1.

Grinding при оборудованной асимметрии. Противник с k-кратной пропускной способностью SHA-256 commodity-оператора может предвычислить k часов выхода ВремяЦепи за один час настенного времени. Семя лотереи содержит cemented_bundle_aggregate(W-2) — значение, зависящее от подписей ML-DSA-65 честных операторов в окне W-2. Предвычисление против этого семени требует подделки подписей ML-DSA-65, что предотвращается решёточной EUF-CMA-безопасностью на уровне NIST 3 (192-битная квантово-эквивалентная стойкость). Горизонт grinding-а схлопывается до уже цементированных окон, где выбираемые противником поля заморожены зарегистрированным node_id, зафиксированным при регистрации (раздел 7).

Eclipse-атака. Противник, контролирующий смежные сетевые пути, пытается монополизировать набор пиров жертвенного оператора. Защита — libp2p outbound-разнообразие: каждый оператор поддерживает не менее 24 исходящих соединений, отобранных по разнообразию AS и IPv4-префикса /16 (≥7 различных автономных систем). Вероятность eclipse при доле противника f = 0.3 в пуле пиров — f^24 < 2⁻⁴⁰, что соответствует целевому интервалу rekey стандартных сетевых криптографических протоколов.

Long-range rewrite. Противник, пытающийся подменить альтернативную историю цепи от Генезиса, должен воспроизвести все последовательные хеши SHA-256 между Генезисом и текущим окном — настенный эквивалент всего возраста цепи. Работа по построению непараллелизуема между окнами (вход каждого окна — выход предыдущего). При любом возрасте цепи за пределами входного окна стоимость long-range rewrite превышает стоимость прямого продления тем же противником на множитель, равный возрасту цепи, делённому на входной порог (active_chain_length / vdf_entry_windows).

Устойчивость к побочным каналам. Все реализации ML-DSA-65, используемые в Монтане, работают в постоянном времени по отношению к секретным ключам, согласно implementation guidance FIPS 204 §3.7. Дисциплина постоянного времени проверяется audit-чек-листом эталонной реализации (Code/docs/security-cards.md) и входит в требование возможностей зависимости [C-5] для выбора криптографической библиотеки в эталонной реализации. Память, содержащая приватный подписной материал, выделяется через mlock-защищённые страницы и очищается через zeroize при сбросе.

Противник транспортного слоя. Транспортное рукопожатие — Noise_PQ XX (раздел 13), трёхсообщенческий протокол с эфемерной инкапсуляцией ключа ML-KEM-768 на обеих сторонах, подписями личности ML-DSA-65 над полным транскриптом и ChaCha20-Poly1305 AEAD на установленной сессии. Противник, записывающий транскрипты, не может вывести сессионные ключи, не решив Module-LWE для ML-KEM-768. Активный man-in-the-middle не может подменить личности, не подделав подписи ML-DSA-65 над транскриптом, привязывающим эфемерные ключи, шифротексты ML-KEM-768 и заявленные открытые ключи личности.

Эта модель угроз — основа для заявлений безопасности в последующих разделах. Свойства за пределами этой модели — включая всякое свойство приватности сверх явного шифрования содержимого — вне области протокольного слоя.

6. Операции и Таблица Аккаунтов

Состояние — единая Таблица Аккаунтов, отображающая идентификаторы аккаунтов в записи:

AccountRecord {
  account_id            32 байта (SHA-256 от открытого ключа аккаунта)
  public_key            1952 байта (ML-DSA-65)
  balance               16 байт (u128, в нɈ; 1 Ɉ = 10^9 нɈ)
  account_chain_length  8 байт (u64, число цементированных операций аккаунта)
  last_active_window    8 байт (u64, индекс последнего активного окна)
  is_node_operator      1 байт (булев флаг)
  ...
}

Суммарный размер AccountRecord — 2 059 байт, включая все поля. Операции преобразуют состояние через apply_proposal(state, proposal) → state'. Преобразование детерминировано, побайтно воспроизводимо любым узлом из той же пары (state, proposal). Множество классов операций замкнуто: Transfer, OpenAccount, ChangeKey, NodeRegistration, Anchor, NicknameBid, TransferActivation, CloseAccount. У каждой операции — фиксированная каноническая кодировка, фиксированное правило валидации, фиксированная функция применения.

Каждая цепь аккаунта ограничена одной операцией за τ_1 окно. Две операции с одинаковым prev_hash от одного отправителя — equivocation; обе помечаются equivocated, и ни одна не цементируется. Проблема внутри-оконного упорядочивания устранена по построению при N = 1, что снимает и субъективную поверхность упорядочивания (нарушение [I-3] детерминизма), и дополнительную поверхность consensus-seed ([I-8]).

Инварианты сохранения держатся пооперационно: сумма приращений баланса по всем затронутым записям равна приращению эмиссии плюс приращению сжигания. Ни одна операция не создаёт и не уничтожает ценность втихую.

7. Лотерея

Оператор, завершивший цепь для окна W, выбирается детерминированной лотереей из множества зарегистрированных операторов. Каждый оператор подаёт VdfReveal с выходом цепи для окна и подписью; победитель лотереи определяется как

winner = argmin_{operator}  ticket(operator, W)

где

ticket(operator, W) = SHA-256(
    "mt-lottery"                      // domain separator (запись реестра mt-lottery)
    || T_W                            // канонический выход ВремяЦепи на окне W
    || cemented_bundle_aggregate(W-2) // network-bound источник непредсказуемости
    || operator.node_id
    || W                              // u64-LE индекс окна
)

Слагаемое cemented_bundle_aggregate(W-2) — network-bound источник непредсказуемости лотереи. Оно вбирает подписи честных операторов из окна W-2 — значения, которые противник не может предвычислить без приватных ключей честных участников. Это закрывает класс grinding-атак, в которых противник с оборудованным преимуществом предвычисляет будущие выходы цепи и grind-ит выбираемые им поля против них. Полная нормативная формулировка, включая integer-form-вывод лотерейного ранжирования, выбирающего argmin-билет среди цементированных VdfReveal, взвешенных по chain-length оператора, — в спецификации протокола (раздел «Lottery», домен mt-lottery в реестре Domain separators).

Grinding-атака проходит следующим образом. Противник с k-кратной SHA-256-пропускной способностью commodity-оператора может предвычислить k часов выхода цепи за один настенный час. Если бы семя лотереи было H(node_id || T_W || W) с офлайн-предсказуемым T_W, противник мог бы породить много кандидатских пар ключей, вычислить их билеты против предвычисленного T_W и отобрать пару ключей, дающую самый низкий билет для каждого будущего окна. Это давало бы непропорциональную консенсусную долю при фиксированном оборудовании. Компонент cemented_bundle_aggregate(W-2) блокирует эту атаку: противник не может предвычислить агрегат без подделки честных подписей, что предотвращается решёточной схемой ML-DSA-65 на уровне безопасности NIST 3 (192-битная квантово-эквивалентная стойкость). Горизонт grinding-а схлопывается до уже цементированных окон, где выбираемые противником поля заморожены зарегистрированным node_id, зафиксированным при регистрации. Это инвариант протокола [I-8], network-bound непредсказуемость consensus-seed.

8. Живучесть

Цепь продлевается, пока собираются подписи кворума. Механизм — fallback-каскад, определённый в спецификации протокола.

Канонический пропозер окна Wwinner_{W-2}, оператор, билет которого достиг argmin(weighted_ticket) в окне W-2. Если этот пропозер офлайн или подаёт невалидный proposal, роль переходит к fallback_1 = second_min(weighted_ticket), затем fallback_2 = third_min, и так далее. Каскад каноничен — всякий честный оператор вычисляет одно и то же упорядочение fallback-ов из цементированного набора окна W-2.

Порог кворума для BundledConfirmation — 67% от active_chain_length. При более 67% честного active_chain_length кворум достигается у канонического пропозера или одного из ранних fallback-ов, и proposal цементируется внутри окна.

Каскад ограничен глубиной fallback_depth = 255. Если 255 последовательных fallback-ов не дают кворум, протокол останавливается по живучести — не по безопасности. Безопасность сохраняется (никакой невалидный proposal не цементируется); прекращается только прогресс, пока честное участие снова не превысит 67%.

Полный механизм, включая построение BundledConfirmation, агрегацию подписей и обратную связь participation_ratio в пересчёт D, описан в спецификации протокола.

9. Стимул и bootstrap

Победитель лотереи окна W получает 13 базовых единиц Ɉ (13 × 10^9 нɈ), зачисляемых на операторский аккаунт на settlement следующего окна. Комиссий нет. Инфляции второго уровня нет. Премайна, продажи до запуска, доли учредителей нет. Полная эмиссия после окна W — ровно 13 × (W + 1) базовых единиц (окна индексируются с нуля; каноническая формула supply_moneta(W) = EMISSION_moneta × (W + 1) определена в спецификации протокола), замкнутая функция от номера окна.

Хранение накопленной ценности отдельно не стимулируется. Протокол не платит за удержание токенов. Единственный путь награды — управлять цепью на окне и выиграть лотерею этого окна.

Для оператора ожидаемый доход за единицу времени зависит от доли цементированных VdfReveal, внесённых этим оператором по окнам. При N операторах равной вычислительной мощности, честно исполняющих последовательное хеширование, ожидаемая награда оператора за окно — 13/N Ɉ. При неравной мощности доля пропорциональна числу действительных VdfReveal, поданных вовремя.

Экономика bootstrap. При малом N награда на оператора велика: один оператор получает все 13 Ɉ за окно, два оператора делят как 6.5 каждому. По мере роста N индивидуальная доля разжижается к асимптотическому 13/N. Это создаёт стимул для раннего входа, пока сеть мала, и соответствующее равновесие, в котором новый вход становится маржинальным по мере приближения 13/N к операционной стоимости.

Формальный анализ Nash-равновесия (исключая стратегии рационального промедления, характеризуя равновесие N* при разных стоимостях оборудования и ценах электроэнергии) отложен до академической публикации в milestone M9. Whitepaper не утверждает, что равновесия рационального промедления исключены; bootstrap-период признаётся областью открытых исследований внутри модели time-as-scarcity.

10. Защита от спама без комиссий

Защита от спама — композиция трёх временны́х механизмов:

Темп на личность. Операции класса A (Transfer, NicknameBid и пр.) ограничены одной на аккаунт за окно τ_1 = 1 окно. Противник с N Sybil-личностями выполняет не более N операций за окно, но у каждой Sybil-личности своя стоимость создания (раздел 3). Темп равномерен по личностям; «быстрых полос» нет.

Порог по длине цепи. Привилегированные операции (NodeRegistration, NicknameBid) требуют, чтобы account_chain_length оператора превышал порог k. Аккаунт обязан быть активным не менее k окон, прежде чем выпустит такую операцию. Порог не покупается — только зарабатывается протекшей активностью.

Старшинственный gating. Лотерейный вес в отборе операторов растёт с account_chain_length оператора до точки насыщения. Новые операторы имеют меньший вес; вес копится участием по окнам. Это гасит атаки «толпой», когда множество противоборствующих операторов регистрируются одновременно.

Эти механизмы вместе закрывают DoS без денежных барьеров. В протоколе нет поля fee ни в одной операции.

11. Жизненный цикл состояния и масштабирование

У всякой постоянной записи в consensus state — либо барьер по стоимости, либо граница жизненного цикла, либо жёсткая квота. Создание аккаунта требует от создателя подать открывающую операцию, чьё правило валидации включает предусловие на длину цепи. Аккаунты, у которых баланс достиг нуля и last_active_window отстоит от текущего окна более чем на 4 × 20 160 окон (4 × τ₂, протокольный параметр pruning_idle_windows для prune-ага AccountRecord), удаляются процедурой apply_candidate_expiry на ближайшей границе эпохи.

Prune не опционален; он часть канонического перехода состояния. Два честных узла, идущие по протоколу, prune-ят одинаково. Размер Таблицы Аккаунтов сверху ограничен:

|AccountTable(W)| ≤ creation_rate × retention_window

что независимо от накопленного настенного времени и гарантирует: долгоживущие цепи не порождают неограниченное состояние.

Масштабирование до одного миллиарда аккаунтов. AccountRecord — 2 059 байт. Состояние при 1 × 10^9 активных аккаунтов — приблизительно 2.06 ТБ, помещается на обычные диски. NodeRecord при 4 034 байтах добавляет меньшее слагаемое, пропорциональное числу операторов (обычно много менее 1% от числа аккаунтов). Рост состояния доминируется активной популяцией аккаунтов, ограниченной правилом prune выше.

Быстрая синхронизация новых операторов против 2-ТБ-состояния поддерживается snapshot-based-синхронизацией, привязанной к текущему коммитменту Меркла, с доставкой состояния в независимо-проверяемых чанках. Полная реализация snapshot-based fast-sync запланирована на milestone M7. До этого новые операторы выполняют полную историческую синхронизацию, пригодную при текущем масштабе популяции, но непригодную при таргете в один миллиард аккаунтов. Результаты бенчмарков из M7 определят максимальную популяцию, при которой протокол может комфортно онбордить новых операторов; это один из эмпирических вопросов, на которые количественно ответит академическая публикация в M9.

Размер состояния не неограничен временем. Правило prune гарантирует, что состояние растёт с активной популяцией, а не с возрастом цепи.

12. Приватность

По умолчанию протокол открывает балансы, переводы, графы аккаунтов и личности операторов. Приватность прикладного слоя достигается объектами Якорь: аккаунт фиксирует на цепи 32-байтовый хеш, а содержимое (зашифрованное под ключ владельца) хранится вне цепи самим владельцем или делегированным пиром. Механизм Якоря не даёт протоколу видимости содержимого.

Приватность — выбор пользователя, а не свойство, навязанное протоколом. Массовая слежка через приватность-по-протоколу вне области; избирательная приватность через шифрование пользователем — внутри. Эта граница согласует протокол с регуляторными рамками (FATF, MiCA), которые отвергли протокольные миксеры приватности, но принимают шифрование пользователем содержимого вне цепи.

Сверх приватности содержимого протокол не заявляет анонимности метаданных. Сетевой слой наблюдает время, счёт операций и личность оператора. Операторы, обеспокоенные раскрытием метаданных, поднимают собственные узлы и избегают стороннего хостинга. Развёртывания Tier-1 (self-hosted) и Tier-2 (Noise_PQ-tunneled) разграничены в спецификации Сети.

13. Сеть и транспортная безопасность

Проводной формат и механизм синхронизации описаны в mt-net и mt-net-transport эталонной реализации. Операторы находят пиров, обмениваются VdfReveal и BundledConfirmation, реплицируют цементированную цепь через libp2p поверх стека TCP → Noise_PQ XX → Yamux.

Транспортная безопасность — Noise_PQ XX. Каждое рукопожатие выводит эфемерные пары ключей ML-KEM-768 на обеих сторонах; ответчик инкапсулирует к эфемерному открытому ключу инициатора, а инициатор — к ответчику, порождая два общих секрета FIPS-203. Обе стороны передают свои открытые ключи личности ML-DSA-65 и подписывают транскрипт подписями FIPS-204. Сессионные ключи выводятся domain-separated SHA-256 над конкатенацией двух общих секретов и транскрипта; установленная сессия — AEAD-зашифрованный поток байт под ChaCha20-Poly1305. Consensus-подписи (ML-DSA-65) независимы от транспорта и проверяются отдельно.

Рукопожатие Noise_PQ XX — трёхсообщенческий протокол с эфемерными парами ключей ML-KEM-768 на обеих сторонах (так что инициатору не нужно априори знать статический открытый KEM-ключ ответчика — свойство, требуемое для libp2p-подключения в слот auth-upgrade). Проводной формат: msg1 1184 байта (эфемерный KEM-pk инициатора); msg2 7533 байта (эфемерный KEM-pk ответчика, KEM-шифротекст к инициатору, открытый ключ личности ML-DSA-65 ответчика, подпись ответчика над транскриптом); msg3 6349 байт (KEM-шифротекст к ответчику, открытый ключ личности ML-DSA-65 инициатора, подпись инициатора над транскриптом). Сессионные ключи выводятся SHA-256 с domain-separator-ами над конкатенацией двух общих секретов и транскрипта; получаемый AEAD-зашифрованный поток байт экспонируется приложению как mt_noise_pq::stream::NoisePqStream. PeerId выводится как SHA-256-multihash открытого ключа личности ML-DSA-65 каждого пира (код sha2-256 multihash 0x12, стандарт libp2p / IPFS для идентификаторов пиров). Криптографическая личность, используемая в консенсусе, и маршрутная личность, используемая libp2p, связаны с одним и тем же ключевым материалом. Проводной формат, KAT-векторы и согласование возможностей нормативно специфицированы в спецификации Сети.

Свойства безопасности Noise_PQ XX. Forward secrecy обеспечивается эфемерными парами ключей ML-KEM-768, отбрасываемыми после рукопожатия. Аутентичность личности обеспечивается подписями ML-DSA-65 над полным транскриптом, который связывает эфемерные открытые ключи, шифротексты ML-KEM-768 и открытые ключи личности обеих сторон. Активный man-in-the-middle, подменяющий личность любой стороны, должен произвести валидную подпись ML-DSA-65 над транскриптом, включающим подменённую личность — эквивалент EUF-CMA-подделки на ML-DSA-65, которую лежащее в основе Module-LWE-предположение исключает на уровне NIST 3 (192-битная квантово-эквивалентная стойкость). Пассивный подслушивающий, записывающий рукопожатие, не может вывести сессионные ключи, не решив соответствующие экземпляры Module-LWE для обоих шифротекстов ML-KEM-768. ChaCha20-Poly1305 (RFC 8439 [10]) обеспечивает конфиденциальность и целостность установленной сессии при стандартных предположениях псевдослучайной перестановки и универсального хеша. Повтор любого сообщения рукопожатия предотвращается привязкой всего транскрипта в обе подписи личности.

Новый узел синхронизируется, получая текущую голову ВремяЦепи у любого честного пира, проверяя цепь локально и реплицируя снимок Таблицы Аккаунтов, привязанный к текущему коммитменту Меркла. Синхронизация — только проверка; доверие к источнику-пиру нужно только для живучести, не для безопасности.

14. Расчёты

Рассмотрим сценарий, в котором честный оператор и противник соревнуются за победу в окнах. Вероятность, что противник выиграет данное окно, пропорциональна его доле в полной зарегистрированной операторской вычислительной мощности. При доле противника p и честной доле 1 p вероятность того, что противник выиграет k окон подряд, — p^k, убывает геометрически.

Чтобы лотерея сместилась в пользу противника, ему нужно контролировать более половины всей зарегистрированной операторской мощности. Поскольку настенное продвижение цепи на оператора постоянно (распараллеливание внутри одной цепи невозможно), умножение Sybil-личностей не увеличивает полной мощности; оно лишь дробит ту же мощность по большему числу личностей. Доля противника ограничена числом физических машин, которыми он распоряжается, умноженным на пропускную способность SHA-256 на машину.

P(противник выигрывает k окон подряд) = p^k

При p = 0.3 и k = 10 имеем P = 5.9 × 10^-6. Это вероятность последовательных оконных побед; она не соответствует напрямую вероятности переписи цепи в смысле Биткоина, поскольку правило цементирования Монтаны требует подписи честного кворума на BundledConfirmation для вступления операции в силу (раздел 8). Серия последовательных лотерейных побед противника не позволяет противнику цементировать враждебные операции без подписей 67% честного active_chain_length — лотерея выбирает пропозера, но proposal всё равно требует кворума.

В этом и состоит аргумент безопасности: денежный капитал не покупает больше времени. Операторская экономика сводится к экономике оборудования, в которой штучный товар (одно оконное звено цепи) единообразно расценен в джоулях.

15. Заключение

Мы предложили блокчейн, consensus-безопасность которого опирается на постквантовые криптографические примитивы, а защита от спама работает на времени, а не на комиссиях. Конструкция не требует доверенной установки, не требует ценового канала и не накладывает денежного барьера на участие. Архитектура рассчитана на масштабирование до миллиардов активных аккаунтов на оборудовании commodity-дисков, с поправкой на бенчмарки fast-sync в milestone M7.

Эталонная реализация на Rust доступна по указанной ссылке под мягкой лицензией (Apache-2.0 / MIT). Дальнейшая работа включает расширение многоузлового развёртывания за пределы трёх-узловой Genesis-когорты, snapshot-based быструю синхронизацию (M7), формальный анализ живучести и bootstrap-равновесия как академическая публикация (M9) и расширение conformance-набора на вторые реализации на независимых языках (M9).

Литература

[1] S. Nakamoto, "Bitcoin: A Peer-to-Peer Electronic Cash System," 2008.

[2] National Institute of Standards and Technology, "Module-Lattice-Based Key Encapsulation Mechanism Standard," FIPS 203, 2024.

[3] National Institute of Standards and Technology, "Module-Lattice-Based Digital Signature Standard," FIPS 204, 2024.

[4] National Institute of Standards and Technology, "Secure Hash Standard (SHS)," FIPS 180-4, 2015.

[5] D. Boneh, J. Bonneau, B. Bünz, B. Fisch, "Verifiable Delay Functions," CRYPTO 2018. Цитируется как смежная работа с проверкой O(log T) на группах RSA; sequential delay function Монтаны выбирает более простой примитив без эффективной проверки, согласно инварианту [I-7] минимальной криптографической поверхности.

[6] K. Pietrzak, "Simple Verifiable Delay Functions," ITCS 2019. Смежная работа, классовые группы мнимых квадратичных полей.

[7] B. Wesolowski, "Efficient verifiable delay functions," EUROCRYPT 2019. Смежная работа, группы RSA с доказательством проверки O(1).

[8] P. W. Shor, "Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer," SIAM Journal on Computing, 1997.

[9] L. K. Grover, "A fast quantum mechanical algorithm for database search," STOC 1996.

[10] Y. Nir, A. Langley, "ChaCha20 and Poly1305 for IETF Protocols," IETF RFC 8439, 2018.

[11] T. Perrin, "The Noise Protocol Framework," Revision 34, 2018. Спецификация паттернов рукопожатия Noise, включая паттерн XX, принятый здесь с подстановкой ML-KEM-768 вместо Diffie-Hellman-компонента.

[12] E. Heilman, A. Kendler, A. Zohar, S. Goldberg, "Eclipse Attacks on Bitcoin's Peer-to-Peer Network," USENIX Security 2015.

[13] G. Marcus, E. Heilman, S. Goldberg, "Low-Resource Eclipse Attacks on Ethereum's Peer-to-Peer Network," IACR ePrint 2018.

[14] National Institute of Standards and Technology, "Post-Quantum Cryptography Standardization Process: Round 3 Finalists," 2022.


Алехандро Монтана