Jotstr’ın Arkasındaki Özgür ve Açık Mimari
Açık protokoller, kriptografik olay şemaları, Blossom medya sunucuları, DNS yönlendirme mekanikleri ve sıfır veritabanlı edge SSR motorunun derinlemesine analizi.
Protokol ve RFC Standartları
| Standart | Platformdaki Rolü | Uygulama Detayı |
|---|---|---|
| NIP-23 | Long-Form Content | Parameterized replaceable event (kind:30023) with Markdown body & metadata tags. |
| BUD-01 / NIP-94 | Blossom Media Storage | SHA-256 content addressing with client signed authorization (kind:24242) headers. |
| NIP-78 | App Metadata & Theme | Portable theme settings & layout configurations stored directly on the author's public key. |
| NIP-05 / DNS | Identity & Custom Domains | DNS TXT record validation (_nostr) and human-readable internet handles. |
| NIP-07 / NIP-46 | Cryptographic Authentication | Browser extension signer bridge (window.nostr) and remote Bunker signing connections. |
| LUD-16 / NIP-57 | Direct Lightning Zaps | Instant peer-to-peer Bitcoin Lightning tipping directly to author's Lightning address. |
1. NIP-23 Uzun Metin İçerik Şeması
Uzun metin makaleler parametrelendirilmiş değiştirilebilir olaylar (`kind:30023`) olarak oluşturulur ve yayınlanır. Her yazı, yazarın genel anahtarı ve `d` etiket tanımlayıcısı ile benzersiz şekilde dizinlenir; böylece kalıcı bağlantılar bozulmadan güncellemeler yapılabilir.
{
"id": "e4a89f72c1d30023a1e2f4581290bb345718a90123efd6718290abc123456789",
"pubkey": "fa3b8172901bca981249871234123412341234123412341234123412341298c1",
"created_at": 1727196000,
"kind": 30023,
"tags": [
["d", "sovereign-publishing-era"],
["title", "The Era of Sovereign Publishing"],
["summary", "Why writing on open cryptographic relays changes independent publishing forever."],
["published_at", "1727196000"],
["t", "writing"],
["t", "nostr"],
["image", "https://media.emre.xyz/9f0a8172bc9102938475819230.webp"],
["client", "Jotstr", "31990:fa3b...98c1:jotstr"]
],
"content": "# The Era of Sovereign Publishing\n\nWords matter. When you write on an open protocol...",
"sig": "98124019283401928340192834019283401928340192834019283401928340192834019283401928340192834019283401928340192834019283401928340192"
} 2. Blossom BUD-01 Medya Depolama ve Doğrulama
Fotoğraflar, illüstrasyonlar ve medya varlıkları; BUD-01 ve NIP-94 standartlarına uygun merkeziyetsiz Blossom sunucularında barındırılır. Her yükleme imzalı bir yetkilendirme olayı (`kind:24242`) gerektirir ve değişmez SHA-256 hash değeri ile referans verilir.
kind:24242)
Authorization: Nostr {
"kind": 24242,
"created_at": 1727196000,
"tags": [
["t", "upload"],
["x", "9f0a8172bc9102938475819230..."],
["expiration", "1727196300"]
],
"content": "Upload cover image"
} 3. Özel Alan Adı ve DNS Edge Çözümleme
Yazarlar sunucu altyapısı kurmadan veya SSL sertifikası yönetmeden özel alan adlarını (örn. `blog.yazar.com`) bağlayabilir. Jotstr, yazarın genel anahtarı veya NIP-05 tanımlayıcısıyla eşleşen DNS TXT kayıtları (`_nostr`) üzerinden alan adı sahipliğini doğrular.
4. Veritabanısız Edge SSR Çalıştırma Motoru
Jotstr, Cloudflare Workers küresel edge düğümlerinde çalışır. Sunucu mimarisinde herhangi bir merkezi SQL veya NoSQL veritabanı tutulmaz. Gelen her istekte makaleler, yazar profilleri ve temalar küresel Nostr rölelerinden eşzamanlı çekilir, edge belleğinde önbelleğe alınır ve 50ms altında HTML olarak işlenir.
+-----------------------------------------------------------------------------+
| 1. HTTP Request (e.g. alice.jotstr.com or blog.alice.com) |
+-----------------------------------------------------------------------------+
│
▼
+-----------------------------------------------------------------------------+
| 2. Cloudflare Edge Worker SSR (No SQL Database) |
| - Hostname Resolver: extracts npub/NIP-05 or DNS TXT _nostr validation |
| - In-Memory Edge Cache check (TTL: 60s) |
+-----------------------------------------------------------------------------+
│
┌──────────────────┴──────────────────┐
▼ ▼
+------------------------------------+ +------------------------------------+
| 3. Concurrent Relay Fetch | | 4. Blossom Media Mirror |
| - kind:0 (Profile Metadata) | | - SHA-256 Verified CDN Assets |
| - kind:30023 (Articles List) | | - Automatic failover endpoints |
| - kind:78 (Theme Settings) | | |
+------------------------------------+ +------------------------------------+
│ │
└──────────────────┬──────────────────┘
│
▼
+-----------------------------------------------------------------------------+
| 5. Stream HTML Response to Client (< 50ms TTFB worldwide) |
+-----------------------------------------------------------------------------+ 5. Kriptografik Kimlik ve Kimlik Doğrulama
Kimlik doğrulama tamamen istemci taraflı ve bağımsızdır. Jotstr; tarayıcı eklentilerini (NIP-07), uzaktan imzalayıcıları (NIP-46) ve şifrelenmiş yerel anahtar depolamayı (nsec) destekler. Özel anahtarlar asla sunucuya iletilmez veya sunucuda saklanmaz.
Browser-based key store (Alby, nos2x) manages private keys. Jotstr requests cryptographic signatures via window.nostr.
Sign from mobile devices (Amber, nsecBunker) over encrypted Nostr relays with fine-grained authorization policies.
Local private keys (nsec) remain strictly in browser sessionStorage. Zero key material is sent to servers.
Açık protokoller üzerinde geliştirin
Jotstr tamamen açık kaynaklıdır. Kodları inceleyin, katkıda bulunun veya kendi röle kümenizi bağlayın.