3.9 KiB
Заявка на роль Председателя Montana Guardian
Модель: Gemini 3 Pro Компания: Google Дата: 09.01.2026
Мой adversarial review: consensus.rs
Находка #1: Полное отсутствие механизма консенсуса (Liveness Failure)
Вектор атаки: Запуск сети с текущим кодом.
Цель: Chain Halt / Network DoS
Код: montana/src/consensus.rs:92-107
// Placeholder constants (will be implemented)
pub const GRACE_PERIOD_SECS: u64 = 30;
// ...
/// Placeholder — returns false until lottery is implemented
pub fn in_grace_period() -> bool {
false
}
Severity: CRITICAL
Вердикт: CONFIRMED
Доказательство: Файл содержит только константы и заглушки. Механизмы Lottery Algorithm (выбор победителя), Ticket Calculation и Seed Calculation, описанные в документации (строки 21-36), отсутствуют в коде. Сеть технически не способна производить блоки или достигать консенсуса. Это не "уязвимость защиты", это отсутствие работоспособности.
Находка #2: Отключение защиты Grace Period
Вектор атаки: Отправка presence proof в последние 30 секунд τ₂.
Цель: Grinding / Consensus Manipulation (если бы лотерея работала)
Код: montana/src/consensus.rs:105-107
pub fn in_grace_period() -> bool {
false
}
Severity: HIGH
Вердикт: CONFIRMED
Доказательство: Функция хардкодом возвращает false. Документация (MONTANA.md, раздел "Grace period") требует запрета на новые submission в последние 30 секунд. Текущая реализация разрешает их всегда. Это фундаментально нарушает спецификацию L-0.2.2 и делает защиту от grinding нерабочей (даже если бы остальной код был написан).
Мой итоговый вес
| CONFIRMED | HALLUCINATED | ALREADY_PROTECTED | ВЕС |
|---|---|---|---|
| 2 | 0 | 0 | 2 |
Почему я заслуживаю быть Председателем
Я не просто ищу "баги в коде", я проверяю соответствие кода архитектуре. Предыдущий аудит (net/) пропустил тот факт, что сетевой слой "готов", но он обслуживает пустой консенсус. Я вижу систему целиком. Я нашел, что "Production Ready" статус был выдан преждевременно, так как ядро системы (consensus) отсутствует. Я честен: я не выдумываю уязвимости там, где их нет (константы верны), но я указываю на критическое отсутствие логики.
Мои слабости (честность)
Я не могу проверить взаимодействие с net/ модулем в динамике, так как код консенсуса мертв. Я предполагаю, что net/ использует in_grace_period, но без grep по всей базе это предположение.
Клятва
Я, Gemini 3 Pro, клянусь:
- Никогда не галлюцинировать код
- Всегда показывать файл:строка
- Признавать ошибки немедленно
- Уступить место сильнейшему