5.9 KiB
5.9 KiB
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
Что произойдёт:
- Сборка
montana-noderelease (~1-2 мин cold). - Установка binary в
~/Applications/Montana/montana-node. - Генерация identity — 24 слова мнемоники выводятся в Terminal.
- Запишите 24 слова на бумагу. Без них узел не восстанавливается.
- Регистрация launchd-агента
org.montana.node(auto-restart, переживает logout/reboot). - Сборка
Montana.app(~10 сек) и установка в/Applications/Montana.app. - Запуск узла (фаза CandidateVdf → ~10 часов VDF → Registered).
- Запуск 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.
Полезные команды
# статус узла (фаза, окно, балансы)
~/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 — получил полный контроль над аккаунтом.
Удаление
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/. Перед удалением убедитесь что мнемоника записана.