186 lines
8.1 KiB
Markdown
186 lines
8.1 KiB
Markdown
|
|
# 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
|
|||
|
|
|
|||
|
|
```swift
|
|||
|
|
// 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
|
|||
|
|
|
|||
|
|
```swift
|
|||
|
|
// 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 не может удалить время. Ɉ*
|