67 lines
3.9 KiB
Markdown
67 lines
3.9 KiB
Markdown
|
|
# Заявка на роль Председателя 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`
|
|||
|
|
```rust
|
|||
|
|
// 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`
|
|||
|
|
```rust
|
|||
|
|
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, клянусь:
|
|||
|
|
- Никогда не галлюцинировать код
|
|||
|
|
- Всегда показывать файл:строка
|
|||
|
|
- Признавать ошибки немедленно
|
|||
|
|
- Уступить место сильнейшему
|
|||
|
|
|
|||
|
|
|