DEV Community

coddykit
coddykit

Posted on

GitHub Trending #1: BitChat - Bluetooth Mesh ile Devrim Yaratan P2P Mesajlaşma

BitChat

Bugünün yıldızı: 2,346 ⭐ | Toplam: 32,558 ⭐ | Forks: 5,096

Neden BitChat Trending'de?

28 Temmuz 2026'da GitHub Trending'in zirvesine oturan BitChat, merkeziyetsiz P2P mesajlaşma alanında çığır açan bir proje. Bluetooth mesh networking ve Nostr protokolünü birleştiren bu Swift uygulaması, internet olmadan iletişim kurmayı mümkün kılıyor.

Teknik Derinlik: Dual Transport Architecture

BitChat'in en etkileyici özelliği hibrit mesajlaşma mimarisi:

1. Bluetooth Mesh Network (Local Communication)

  • Multi-hop relay: Mesajlar 7 hop'a kadar cihazdan cihaza iletiliyor
  • Noise Protocol: End-to-end encryption, forward secrecy
  • Binary protocol: Bluetooth LE'nin bant genişliği kısıtlamalarına optimize edilmiş kompakt paket formatı
  • Adaptive power: Pil ömrünü uzatmak için duty cycling
  • Automatic discovery: Peer keşfi ve bağlantı yönetimi tamamen otomatik

2. Nostr Protocol (Global Reach)

  • 290+ relay network: Dünya genelinde dağıtık relay ağı
  • Location-based channels: Geohash koordinatlarıyla coğrafi sohbet odaları
  • BitChat Private Envelopes: XChaCha20-Poly1305 ile app-specific şifreleme
  • Ephemeral keys: Her geohash bölgesi için taze kriptografik kimlik

Kod Analizi: Swift ile P2P Implementasyonu

// Bluetooth LE service tanımlaması
let serviceUUID = CBUUID(string: "0000FE3C-0000-1000-8000-00805F9B34FB")
let characteristicUUID = CBUUID(string: "0000FE3D-0000-1000-8000-00805F9B34FB")

// Mesh routing algoritması
func routeMessage(_ message: Message, maxHops: Int = 7) {
    guard message.hopCount < maxHops else { return }

    let nearbyPeers = peerDiscovery.discoverPeers()
    for peer in nearbyPeers {
        let encryptedPayload = noiseProtocol.encrypt(message.payload)
        peer.send(encryptedPayload, hopCount: message.hopCount + 1)
    }
}
Enter fullscreen mode Exit fullscreen mode

Intelligent Transport Selection:

func sendMessage(_ content: String, to recipient: PeerID) {
    if bluetoothTransport.isAvailable && recipient.isNearby {
        // Bluetooth first (en hızlı ve en özel)
        bluetoothTransport.send(content, to: recipient)
    } else if nostrTransport.isConnected {
        // Nostr fallback (global erişim)
        let envelope = BitChatEnvelope.encrypt(content, for: recipient.publicKey)
        nostrTransport.publish(envelope)
    } else {
        // Smart queuing
        messageQueue.enqueue(content, for: recipient)
    }
}
Enter fullscreen mode Exit fullscreen mode

Kullanım Senaryoları: Neden Önemli?

1. Afet Durumları

İnternet altyapısı çöktüğünde (deprem, sel, savaş) Bluetooth mesh üzerinden iletişim devam eder. Her cihaz bir relay noktası olur.

2. Protestolar ve Sansür

Merkezi sunucu yok = sansürlenemez. Hükümetler kapatamaz çünkü kapatılacak bir sunucu yok.

3. Remote Alanlar

Dağcılık, keşif, kırsal alanlar - internet olmayan yerlerde P2P iletişim.

4. Privacy-First İletişim

  • Telefon numarası yok
  • Hesap yok
  • Merkezi sunucu yok
  • Metadata minimizasyonu

Geohash ile Location-Based Channels

BitChat'in en yenilikçi özelliklerinden biri coğrafi sohbet odaları:

Geohash Precision:
- 7 chars (block): Mahalle seviyesi
- 6 chars (neighborhood): İlçe seviyesi  
- 5 chars (city): Şehir seviyesi
- 4 chars (province): İl seviyesi
- 2 chars (region): Ülke/bölge seviyesi
Enter fullscreen mode Exit fullscreen mode

Örnek: İstanbul için sx9f geohash'i kullanarak şehir geneli sohbet odası oluşturabilirsiniz.

Teknik Zorluklar ve Çözümler

Challenge 1: Bluetooth LE Bant Genişliği

Problem: Bluetooth LE'nin düşük veri hızı (1 Mbps teorik, pratikte çok daha az)
Çözüm: LZ4 compression + binary protocol + adaptive message batching

Challenge 2: Mesh Routing Complexity

Problem: Multi-hop routing'de loop'lar ve mesaj kaybı
Çözüm: TTL (hop count) + message deduplication + acknowledgment sistemi

Challenge 3: Pil Ömrü

Problem: Sürekli Bluetooth scanning pili tüketir
Çözüm: Adaptive duty cycling - hareket halindeyken sık scanning, durağandarken seyrek

Challenge 4: Security

Problem: Mesh network'te her relay mesajı görebilir
Çözüm: Noise Protocol ile end-to-end encryption, relay'ler sadece şifreli payload görür

Nostr Entegrasyonu: Neden NIP-17/44/59 Değil?

BitChat, Nostr'u relay transport olarak kullanıyor ama proprietary private-envelope format kullanıyor:

Kind-1059 events:
- v2:-prefixed content
- XChaCha20-Poly1305 encryption
- BitChat-specific key derivation
- NIP-17/44/59 ile uyumlu değil
Enter fullscreen mode Exit fullscreen mode

Neden? BitChat'in threat modeli farklı. Nostr'un genel şifreleme standartları yerine, mesh network ile uyumlu özel bir yapı kurmuşlar.

Emergency Wipe: Triple-Tap Security

Acil durumlarda (polis baskısı, sınır geçişi) üç kez dokunarak tüm veriyi anında silme:

func emergencyWipe() {
    messageStore.deleteAll()
    keychain.wipeAllKeys()
    peerDiscovery.clearCache()
    nostrIdentity.delete()
    UserDefaults.standard.removePersistentDomain(
        forName: Bundle.main.bundleIdentifier!
    )
}
Enter fullscreen mode Exit fullscreen mode

Performans Optimizasyonları

LZ4 Compression

Mesaj boyutunu %60-70 azaltır, Bluetooth LE'nin kısıtlı bant genişliğinde kritik.

Adaptive Battery Modes

enum PowerMode {
    case active       // Continuous scanning
    case balanced     // 30s scan, 30s sleep
    case conservative // 5min scan, 10min sleep
}
Enter fullscreen mode Exit fullscreen mode

Optimized Networking

  • Connection pooling
  • Message batching
  • Lazy peer discovery
  • Predictive routing

Katkıda Bulunanlar

  • jackjackbits (core maintainer) - 648 contributions
  • nothankyou1 - 128 contributions
  • qalandarov (networking) - 97 contributions
  • callebtc (Nostr integration) - 24 contributions

Lisans: Public Domain (Unlicense)

BitChat tamamen public domain - istediğiniz gibi kullanın, değiştirin, satin.

CoddyKit ile Swift Öğrenin

BitChat gibi P2P uygulamalar geliştirmek istiyorsanız, Swift temellerini sağlam atmanız gerekiyor. CoddyKit'in kapsamlı Swift kursu ile:

  • Swift syntax ve semantics
  • iOS/macOS development
  • Bluetooth LE programming
  • Networking ve concurrency
  • Cryptography implementation

👉 CoddyKit Swift Kursu

Sonuç

BitChat, merkeziyetsiz iletişimin geleceğini gösteriyor. İnternet olmadan, sansürlenemeyen, privacy-first bir mesajlaşma sistemi. Bluetooth mesh ve Nostr'un akıllıca birleşimi, afet durumlarından protestolara kadar kritik senaryolarda hayat kurtarıcı olabilir.

GitHub: permissionlesstech/bitchat
Website: bitchat.free
App Store: BitChat Mesh


Bu makale 28 Temmuz 2026 tarihinde GitHub Trending verileri kullanılarak hazırlanmıştır.

İlgili CoddyKit Eğitimleri:

Top comments (0)