montana/_internal-private/Apps/macOS/INSTALL.md
2026-05-26 21:14:51 +03:00

105 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Montana — установка на Mac (десктоп + ноут)
Узел Montana и desktop-приложение ставятся одной командой `install-anywhere.sh`. Поддерживается fresh-установка и recovery на втором Mac из 24-словной мнемоники либо 64-hex master_seed.
## Требования
- macOS 14.0+ (Sonoma) — Apple Silicon или Intel
- Xcode Command Line Tools (`xcode-select --install`)
- ~5 GB свободного места (Rust toolchain + dependencies + сборка)
Rust ставится автоматически через rustup-minimal, если не найден.
## Сценарий 1 — первый Mac (десктоп)
```
bash /path/to/Montana-Protocol/Apps/macOS/install-anywhere.sh
```
Что произойдёт:
1. Сборка `montana-node` release (~1-2 мин cold).
2. Установка binary в `~/Applications/Montana/montana-node`.
3. Генерация **identity** — 24 слова мнемоники выводятся в Terminal.
4. **Запишите 24 слова на бумагу**. Без них узел не восстанавливается.
5. Регистрация launchd-агента `org.montana.node` (auto-restart, переживает logout/reboot).
6. Сборка `Montana.app` (~10 сек) и установка в `/Applications/Montana.app`.
7. Запуск узла (фаза CandidateVdf → ~10 часов VDF → Registered).
8. Запуск Montana.app — на вкладке **Кошелёк** видны QR-код и `account_id`.
## Сценарий 2 — второй Mac (ноут) — recovery той же identity
На ноуте та же команда, но с переданной мнемоникой:
```
INSTALL_MNEMONIC_OR_SEED='word1 word2 ... word24' \
bash /path/to/Montana-Protocol/Apps/macOS/install-anywhere.sh
```
Альтернативно — через 64-hex master_seed (показывается в приложении на десктопе через **Кошелёк → Backup → Показать master seed**):
```
INSTALL_MNEMONIC_OR_SEED='b0800520902f7439...64-hex' \
bash /path/to/Montana-Protocol/Apps/macOS/install-anywhere.sh
```
Recovery flag `--force` затрёт identity.bin на ноуте если он был — это намеренно.
## Что работает в текущей сборке (ядро 0.1.0)
- ✅ Узел поднимается, проходит lifecycle Bootstrap → CandidateVdf → Registered → Active
- ✅ launchd-агент переживает logout, reboot, краш узла
- ✅ Montana.app — вкладки **Узел** (фаза, окно, VDF, лог) и **Кошелёк** (QR, идентификация, backup)
- ✅ Recovery identity на втором Mac из мнемоники или master_seed
- ✅ QR-код для получения Ɉ — отправители видят `account_id`
## Что НЕ работает в текущей сборке
-**Cross-machine синхронизация state.** Десктоп и ноут с одной identity работают независимо в singleton-режиме — балансы и chain не синхронизируются. P2P (M6+) — следующий milestone, требует 3-node genesis ceremony.
-**Отправка Ɉ.** CLI-команды `transfer` пока нет, в Montana.app кнопка Send показывает honest-сообщение о статусе. Получение через QR работает (отправители запоминают адрес).
-**Подпись транзакций app-уровня.** Anchor, Nickname, Premium, Auction — операции из spec, ещё не экспонированы в CLI.
## Полезные команды
```bash
# статус узла (фаза, окно, балансы)
~/Applications/Montana/montana-node status --data-dir ~/Applications/Montana/data
# показать identity (account_id, node_id, libp2p_peer_id)
~/Applications/Montana/montana-node inspect --data-dir ~/Applications/Montana/data
# показать master_seed для backup (НЕ ВЫВОДИТЬ при кому-то на экране!)
~/Applications/Montana/montana-node inspect --data-dir ~/Applications/Montana/data --reveal-master-seed
# логи узла realtime
tail -f ~/Applications/Montana/data/logs/montana.log
# остановить узел
launchctl unload ~/Library/LaunchAgents/org.montana.node.plist
# запустить узел
launchctl load -w ~/Library/LaunchAgents/org.montana.node.plist
# полная переустановка (сохраняет identity если есть)
bash /path/to/Montana-Protocol/Apps/macOS/install-anywhere.sh
```
## Безопасность мнемоники
- 24 слова — **единственный backup**. Identity.bin защищён правами 0600, но если потерян (отказ диска, переустановка ОС) — без мнемоники восстановление невозможно.
- Мастер-seed (64 hex) функционально эквивалентен 24 словам.
- **Никогда не передавайте** seed через мессенджеры, облачные заметки, фото экраном смартфона.
- **Записывайте на бумагу.** Две копии в физически разных местах.
- Кто получил seed — получил полный контроль над аккаунтом.
## Удаление
```bash
launchctl unload ~/Library/LaunchAgents/org.montana.node.plist
rm ~/Library/LaunchAgents/org.montana.node.plist
rm -rf ~/Applications/Montana
rm -rf /Applications/Montana.app
```
`identity.bin` удаляется вместе с `~/Applications/Montana/data/`. **Перед удалением убедитесь что мнемоника записана.**