206 lines
10 KiB
Markdown
206 lines
10 KiB
Markdown
|
|
# Как запустить узел Монтаны — для не-программиста
|
|||
|
|
|
|||
|
|
**Версия:** 1.0
|
|||
|
|
**Аудитория:** человек который умеет открыть терминал и копировать команды.
|
|||
|
|
|
|||
|
|
## Что это даёт
|
|||
|
|
|
|||
|
|
Запустив узел, вы:
|
|||
|
|
- Становитесь оператором сети Монтана.
|
|||
|
|
- Участвуете в лотерее каждое окно (≈ 60 секунд).
|
|||
|
|
- Если ваш узел выигрывает — получаете эмиссию TC за это окно.
|
|||
|
|
- Помогаете сети существовать (любая дополнительная нода = независимая реплика канона).
|
|||
|
|
|
|||
|
|
Никакой регистрации, KYC, депозита не требуется. Sybil-защита через время — порода узла = ≈ 10 часов работы CPU на регистрацию.
|
|||
|
|
|
|||
|
|
## Что вам понадобится
|
|||
|
|
|
|||
|
|
### Железо
|
|||
|
|
|
|||
|
|
Минимум:
|
|||
|
|
- Любой компьютер с x86_64 или ARM CPU 2017 года или новее.
|
|||
|
|
- 2 ГБ RAM свободно.
|
|||
|
|
- 50 ГБ диска свободно.
|
|||
|
|
- Постоянное интернет-соединение (10+ Мбит/с).
|
|||
|
|
|
|||
|
|
Рекомендуется:
|
|||
|
|
- Современный CPU с SHA-NI (Intel 11+ Gen / AMD Ryzen 5+) или Apple Silicon — окно крутится за 10–20 секунд, потом простой.
|
|||
|
|
- Стационарный компьютер или мини-ПК (а не ноутбук — ноутбук будет постоянно греться).
|
|||
|
|
- Стационарный IP или хотя бы стабильный за NAT.
|
|||
|
|
|
|||
|
|
### Что НЕ нужно
|
|||
|
|
|
|||
|
|
- ❌ ASIC.
|
|||
|
|
- ❌ Стейк (ваших монет на депозите).
|
|||
|
|
- ❌ KYC.
|
|||
|
|
- ❌ Платная подписка.
|
|||
|
|
|
|||
|
|
## Установка (10 минут)
|
|||
|
|
|
|||
|
|
### Шаг 1. Откройте терминал
|
|||
|
|
|
|||
|
|
- **macOS:** Cmd+Space → введите "Terminal" → Enter.
|
|||
|
|
- **Linux:** Ctrl+Alt+T.
|
|||
|
|
- **Windows:** установите WSL2 (Ubuntu) и откройте Ubuntu из меню Пуск.
|
|||
|
|
|
|||
|
|
### Шаг 2. Скачайте бинарь
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
curl -L https://montana.quest/efir369999/montana/releases/latest/download/montana-node -o montana-node
|
|||
|
|
chmod +x montana-node
|
|||
|
|
sudo mv montana-node /usr/local/bin/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
(Если ссылка не работает, она появится после M9 — public testnet milestone. До этого — соберите из исходников: см. [Код/](../../Монтана-Протокол/Код/)).
|
|||
|
|
|
|||
|
|
### Шаг 3. Создайте папку для данных
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
sudo mkdir -p /var/lib/montana
|
|||
|
|
sudo chown $(whoami) /var/lib/montana
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Шаг 4. Сгенерируйте свою identity (один раз)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
montana-node init --data-dir /var/lib/montana
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Команда напечатает 24 слова — это ваша мнемоника. **Запишите её на бумаге и храните как ключ от квартиры.** Если потеряете — теряете доступ к узлу и всем его TC. Если кто-то узнает — он становится вами в сети.
|
|||
|
|
|
|||
|
|
### Шаг 5. Скачайте манифест генезиса
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
sudo mkdir -p /etc/montana
|
|||
|
|
sudo curl -L https://montana.quest/efir369999/montana/raw/branch/main/Монтана-Протокол/genesis-manifest.json -o /etc/montana/genesis-manifest.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
(До M9 манифест в репо может отсутствовать — попросите автора прислать.)
|
|||
|
|
|
|||
|
|
### Шаг 6. Запустите узел
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
montana-node start \
|
|||
|
|
--data-dir /var/lib/montana \
|
|||
|
|
--listen /ip4/0.0.0.0/tcp/8444 \
|
|||
|
|
--genesis-manifest /etc/montana/genesis-manifest.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Узел начнёт крутить VDF, синхронизироваться с 3 genesis-узлами, и через ~10 часов станет полноценным candidate-оператором.
|
|||
|
|
|
|||
|
|
### Шаг 7 (опционально). Сделайте узел сервисом
|
|||
|
|
|
|||
|
|
Чтобы узел крутился сам после перезагрузки:
|
|||
|
|
|
|||
|
|
**Linux (systemd):**
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
sudo tee /etc/systemd/system/montana-node.service > /dev/null <<'UNIT'
|
|||
|
|
[Unit]
|
|||
|
|
Description=Montana Node
|
|||
|
|
After=network.target
|
|||
|
|
|
|||
|
|
[Service]
|
|||
|
|
ExecStart=/usr/local/bin/montana-node start --data-dir /var/lib/montana --listen /ip4/0.0.0.0/tcp/8444 --genesis-manifest /etc/montana/genesis-manifest.json
|
|||
|
|
Restart=on-failure
|
|||
|
|
User=montana
|
|||
|
|
Group=montana
|
|||
|
|
|
|||
|
|
[Install]
|
|||
|
|
WantedBy=multi-user.target
|
|||
|
|
UNIT
|
|||
|
|
sudo systemctl daemon-reload
|
|||
|
|
sudo systemctl enable --now montana-node
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**macOS (launchd):** см. [Код/macOS/](../../macOS/) для готового plist'а `org.montana.node.plist`.
|
|||
|
|
|
|||
|
|
## Проверка работы
|
|||
|
|
|
|||
|
|
### Статус узла
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
montana-node status --data-dir /var/lib/montana
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Вы увидите:
|
|||
|
|
- `current_window` — текущее окно. Должно расти.
|
|||
|
|
- `phase` — `Bootstrapping` → `CandidateVdf` → `Active`. Active = вы полноправный оператор.
|
|||
|
|
- `D (current)` — текущая сложность VDF.
|
|||
|
|
- `узел в Node Table : ДА` — вы зарегистрированы.
|
|||
|
|
- `chain_length` — длина вашей NodeChain.
|
|||
|
|
|
|||
|
|
### Сетевая связь
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
journalctl -u montana-node -n 20 --no-pager # Linux
|
|||
|
|
log show --predicate 'process == "montana-node"' --last 1m # macOS
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Должны видеть строки:
|
|||
|
|
- `[network] heartbeat OK peer=12D3KooW…` — связь с другими узлами есть.
|
|||
|
|
- `[consensus] broadcast Proposal window=…` — вы участвуете в консенсусе.
|
|||
|
|
|
|||
|
|
## Часто задаваемые вопросы
|
|||
|
|
|
|||
|
|
### Сколько времени до получения первой TC?
|
|||
|
|
|
|||
|
|
После того как ваша фаза стала `Active` (~10 часов после старта), вы участвуете в лотерее каждое окно. Шанс победы ≈ 1 / N где N = число активных узлов. На 3 узлах — ≈ 33% за окно. На 100 узлах — 1%.
|
|||
|
|
|
|||
|
|
### Сколько электричества потребляет узел?
|
|||
|
|
|
|||
|
|
Один CPU-ядро под нагрузкой = 5–15 Вт = 0.12–0.36 кВт·ч в сутки. В РФ ≈ 1–3 ₽/сутки. В EU ≈ 0.1–0.3 €/сутки.
|
|||
|
|
|
|||
|
|
### Можно ли запустить на ноутбуке?
|
|||
|
|
|
|||
|
|
Технически — да. Практически — нет: ноутбук будет постоянно греться, вентилятор шуметь, батарея сядет за 1–2 часа без зарядки. Лучше мини-ПК или Raspberry Pi 5 (с SHA-NI) или старый стационарный.
|
|||
|
|
|
|||
|
|
### Что если интернет пропадёт?
|
|||
|
|
|
|||
|
|
Узел переходит в локальный режим, продолжает крутить VDF. Когда интернет вернётся — узел синхронизируется с актуальным каноном. Если за время offline сеть сильно ушла вперёд — может быть момент когда ваш fork отбрасывается. Это нормально.
|
|||
|
|
|
|||
|
|
### Можно ли участвовать без публичного IP?
|
|||
|
|
|
|||
|
|
Да. Узел может быть за NAT, но ему нужно установить outbound-соединения с другими узлами. Поведение worse чем со статическим IP, но работает.
|
|||
|
|
|
|||
|
|
### Что если я хочу остановить узел?
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
sudo systemctl stop montana-node # Linux
|
|||
|
|
sudo launchctl unload … # macOS
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Ваши ключи (`/var/lib/montana/identity.bin`) сохранятся. Если потом снова запустите — продолжите с того же узла.
|
|||
|
|
|
|||
|
|
### Как удалить узел и все данные?
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
sudo rm -rf /var/lib/montana
|
|||
|
|
sudo rm -f /etc/montana/genesis-manifest.json
|
|||
|
|
sudo systemctl disable --now montana-node
|
|||
|
|
sudo rm /etc/systemd/system/montana-node.service
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Внимание:** это удалит и ваши ключи. Если у вас был баланс TC — он останется в сети, но вы не сможете подписать операции его расходования без мнемоники.
|
|||
|
|
|
|||
|
|
## Безопасность
|
|||
|
|
|
|||
|
|
1. **Бэкап мнемоники.** Запишите 24 слова на бумаге. Храните в сейфе. Никогда не вводите в онлайн-сервисах. Никогда не фотографируйте. Никогда не отправляйте через мессенджер/почту.
|
|||
|
|
2. **Полный доступ к узлу.** Кто имеет SSH к вашему узлу — имеет ваши ключи в `/var/lib/montana/identity.bin`. Защитите SSH ключом, не паролем.
|
|||
|
|
3. **Файрвол.** Открывайте только порт 8444 для p2p. Закройте всё остальное.
|
|||
|
|
4. **Регулярные обновления.** Когда выходит новый релиз `montana-node` — обновляйтесь.
|
|||
|
|
|
|||
|
|
## Поддержка
|
|||
|
|
|
|||
|
|
- Спецификация: [Montana Protocol v35.25.0](../../Монтана-Протокол/Montana%20Protocol%20v35.25.0.md)
|
|||
|
|
- Сетевой слой: [05 Сетевой слой](../05%20Сетевой%20Слой/)
|
|||
|
|
- Модель угроз: [07 Модель угроз](../07%20Модель%20Угроз/)
|
|||
|
|
- Внутренний аудит: [09 Внешний аудит](../09%20Внешний%20Аудит/Internal-Audit-2026-05-04.md)
|
|||
|
|
- Связь с автором: efir369999@gmail.com (только для security disclosures)
|
|||
|
|
|
|||
|
|
## Тестовая сеть vs «настоящая»
|
|||
|
|
|
|||
|
|
Сеть `montana` — это уже production-grade имя, не testnet. Однако network в pre-launch фазе (см. [Mainnet Readiness](../Mainnet-Readiness.md)) — это значит TC которые вы заработаете сейчас являются **частью каноничной истории**, но также подпадают под breaking changes если они потребуются до launched-mainnet объявления.
|
|||
|
|
|
|||
|
|
Если вам важна абсолютная финальность TC — дождитесь G1-G6 закрытия. Если вам интересно участвовать в M9-M10 как ранний оператор — запускайте сейчас.
|