montana/Montana-Protocol/Apps/macOS/INSTALL.md
2026-05-18 18:05:32 +03:00

5.9 KiB
Raw Blame History

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.

Полезные команды

# статус узла (фаза, окно, балансы)
~/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/. Перед удалением убедитесь что мнемоника записана.