montana/iOS/ARCHITECTURE.md

8.1 KiB
Raw Blame History

Montana iOS — Юнона везде

Архитектура: Юнона = Диалог управления

┌─────────────────────────────────────────────────────────────┐
│                         ЮНОНА                                │
│              AI-диалог управления всей системой              │
│                                                              │
│  ┌─────────────────────────────────────────────────────────┐│
│  │                                                         ││
│  │   "Покажи баланс"      → Wallet функции                ││
│  │   "Создай контракт"    → Contracts функции             ││
│  │   "Подключи VPN"       → VPN функции                   ││
│  │   "Переведи 100 Ɉ"     → Транзакции                    ││
│  │                                                         ││
│  └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘
                              │
          ┌───────────────────┼───────────────────┐
          ▼                   ▼                   ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│   APP STORE      │ │   СЕРТИФИКАТЫ    │ │   СЕРТИФИКАТЫ    │
│                  │ │                  │ │                  │
│  Junona VPN      │ │  Junona Wallet   │ │ Junona Contracts │
│                  │ │                  │ │                  │
│  • VPN ML-KEM    │ │  • Баланс Ɉ      │ │  • Bitcoin Pizza │
│  • Диалог Юнона  │ │  • Переводы      │ │  • Голосование   │
│  • Присутствие   │ │  • Диалог Юнона  │ │  • Диалог Юнона  │
│                  │ │  • ML-DSA-65     │ │  • Escrow        │
│  .junona         │ │  .wallet         │ │  .contracts      │
└──────────────────┘ └──────────────────┘ └──────────────────┘
          │                   │                   │
          └───────────────────┼───────────────────┘
                              │
                 ┌────────────┴────────────┐
                 │      MontanaCore        │
                 │    (SPM Package)        │
                 │                         │
                 │  • JunonaDialog         │
                 │  • Shared Keychain      │
                 │  • AppStoreGuard        │
                 │  • Theme                │
                 └─────────────────────────┘

Присутствие = Время VPN

НЕ трафик!

1 секунда VPN включён = 1 Ɉ

Пример:
├── VPN подключён 1 час = 3600 Ɉ
├── VPN подключён 24 часа = 86400 Ɉ
└── Трафик НЕ считается, только время

Почему гибридная модель?

Канал Плюсы Минусы
App Store (VPN) Доверие, легко найти Ревью Apple
Сертификаты (Wallet/Contracts) Нет контроля Apple Нужен UDID

Ключевые преимущества:

  1. VPN легален в App Store — точка входа для новых пользователей
  2. Crypto/Finance Apple блокирует — обходим через сертификаты
  3. Mutual monitoring — если Junona удалят, показываем предупреждение

AppStoreGuard Mechanism

// Each app runs this on startup
AppStoreGuard.shared.startMonitoring()

// Checks iTunes Lookup API every hour
GET https://itunes.apple.com/lookup?bundleId=network.montana.wallet

// If resultCount = 0 → App removed from store
// Shows warning banner in remaining apps

Warning Message When App Removed

⚠️ ВНИМАНИЕ

Apple удалила из App Store: Montana Wallet

Это ограничивает функциональность Montana Protocol.
Apple не поддерживает свободу финансовых транзакций.

Причина удаления: Apple Inc.

Альтернативы:
• TestFlight: testflight.apple.com/join/montana
• Web: app.efir.org
• Android: play.google.com/store/apps/montana

Время — единственная реальная валюта.
Apple не может удалить время.

Cross-App Communication

URL Schemes

  • montana-wallet:// — Open wallet
  • montana-junona:// — Open Junona chat
  • montana-contracts:// — Open contracts

Shared Keychain

All 3 apps share the same keychain group (group.network.montana):

  • Wallet address
  • Private/Public keys (ML-DSA-65)
  • User preferences
// Any app can access wallet
let address = MontanaKeychain.shared.walletAddress

// Open another app
MontanaLinks.openJunona(message: "Создай контракт")

Все приложения = Юнона

App Канал Юнона помогает
Junona VPN App Store Подключить VPN, показать присутствие
Junona Wallet Сертификаты Баланс, переводы, управление ключами
Junona Contracts Сертификаты Создать контракт, голосовать, escrow

Юнона — единый интерфейс. Пользователь общается с ней, она выполняет.

Bundle IDs

network.montana.junona          — App Store (VPN + AI)
network.montana.junona.vpn      — VPN Extension
network.montana.wallet          — Сертификаты (Wallet)
network.montana.contracts       — Сертификаты (Contracts)

Поток пользователя

1. Находит Junona VPN в App Store
2. Устанавливает, подключает VPN (защита + начисление Ɉ)
3. Видит "Установить Wallet" в приложении
4. Переходит на install.efir.org
5. Регистрирует UDID, устанавливает Wallet/Contracts
6. Все приложения связаны через общий Keychain

Fallback

Если App Store удаляет Junona:
├── Wallet/Contracts продолжают работать
├── VPN доступен через install.efir.org
└── Пользователи получают уведомление

Если сертификаты отзывают:
├── Junona VPN остаётся в App Store
├── Функции интегрируются в Junona
└── Или новый Enterprise-аккаунт

Если всё блокируют:
├── PWA: app.efir.org
├── Android: Play Store + APK
└── Desktop: macOS/Windows

VPN Узлы

Узел IP Регион
Amsterdam 72.56.102.240 Европа
Almaty 91.200.148.93 Азия

Apple не может удалить время. Ɉ