bitchat
एक विकेंद्रीकृत पीयर-टू-पीयर मैसेजिंग ऐप जिसमें दोहरी ट्रांसपोर्ट आर्किटेक्चर है: ऑफ़लाइन संचार के लिए स्थानीय ब्लूटूथ मेश नेटवर्क और वैश्विक पहुंच के लिए इंटरनेट-आधारित Nostr प्रोटोकॉल। कोई खाता नहीं, कोई फ़ोन नंबर नहीं, कोई केंद्रीय सर्वर नहीं। यह साइड-ग्रुपचैट है।
bitchat.free
📲 App Store
लाइसेंस
यह प्रोजेक्ट सार्वजनिक डोमेन में जारी किया गया है। विवरण के लिए LICENSE फ़ाइल देखें।
सुविधाएँ
- दोहरी ट्रांसपोर्ट आर्किटेक्चर: ऑफ़लाइन के लिए ब्लूटूथ मेश + इंटरनेट-आधारित मैसेजिंग के लिए Nostr प्रोटोकॉल
- स्थान-आधारित चैनल: वैश्विक Nostr रिले पर जियोहैश निर्देशांक का उपयोग करके भौगोलिक चैट रूम
- बुद्धिमान संदेश रूटिंग: स्वचालित रूप से सर्वश्रेष्ठ ट्रांसपोर्ट चुनता है (ब्लूटूथ → Nostr फ़ॉलबैक)
- विकेंद्रीकृत मेश नेटवर्क: ब्लूटूथ LE पर स्वचालित पीयर खोज और मल्टी-हॉप संदेश रिले
- गोपनीयता पहले: कोई खाता नहीं, कोई फ़ोन नंबर नहीं, कोई स्थायी पहचानकर्ता नहीं
- निजी संदेश एंड-टू-एंड एन्क्रिप्शन: मेश के लिए Noise Protocol, Nostr के लिए NIP-17
- IRC-शैली कमांड: परिचित
/slap, /msg, /who शैली इंटरफ़ेस
- सार्वभौमिक ऐप: iOS और macOS के लिए मूल समर्थन
- आपातकालीन वाइप: सभी डेटा को तुरंत साफ़ करने के लिए ट्रिपल-टैप
- प्रदर्शन अनुकूलन: LZ4 संदेश संपीड़न, अनुकूली बैटरी मोड, और अनुकूलित नेटवर्किंग
BitChat दो पूरक ट्रांसपोर्ट परतों के साथ एक हाइब्रिड मैसेजिंग आर्किटेक्चर का उपयोग करता है:
ब्लूटूथ मेश नेटवर्क (ऑफ़लाइन)
- स्थानीय संचार: ब्लूटूथ रेंज के भीतर सीधा पीयर-टू-पीयर
- मल्टी-हॉप रिले: संदेश पास के उपकरणों के माध्यम से रूट होते हैं (अधिकतम 7 हॉप)
- किसी इंटरनेट की आवश्यकता नहीं: आपदा परिदृश्यों में पूरी तरह से ऑफ़लाइन काम करता है
- Noise Protocol एन्क्रिप्शन: फ़ॉरवर्ड सीक्रेसी के साथ एंड-टू-एंड एन्क्रिप्शन
- बाइनरी प्रोटोकॉल: ब्लूटूथ LE बाधाओं के लिए अनुकूलित कॉम्पैक्ट पैकेट प्रारूप
- स्वचालित खोज: पीयर खोज और कनेक्शन प्रबंधन
- अनुकूली शक्ति: बैटरी-अनुकूलित ड्यूटी साइकलिंग
Nostr प्रोटोकॉल (इंटरनेट)
- वैश्विक पहुंच: इंटरनेट रिले के माध्यम से दुनिया भर के उपयोगकर्ताओं से जुड़ें
- स्थान चैनल: जियोहैश निर्देशांक का उपयोग करके भौगोलिक चैट रूम
- 290+ रिले नेटवर्क: विश्वसनीयता के लिए दुनिया भर में वितरित
- NIP-17 एन्क्रिप्शन: इंटरनेट गोपनीयता के लिए गिफ्ट-रैप्ड निजी संदेश
- अस्थायी कुंजियाँ: प्रति जियोहैश क्षेत्र ताज़ा क्रिप्टोग्राफ़िक पहचान
चैनल प्रकार
mesh #bluetooth
- ट्रांसपोर्ट: ब्लूटूथ लो एनर्जी मेश नेटवर्क
- दायरा: मल्टी-हॉप रेंज के भीतर स्थानीय उपकरण
- इंटरनेट: आवश्यक नहीं
- उपयोग मामला: ऑफ़लाइन संचार, विरोध प्रदर्शन, आपदाएँ, दूरस्थ क्षेत्र
स्थान चैनल (block #dr5rsj7, neighborhood #dr5rs, country #dr)
- ट्रांसपोर्ट: इंटरनेट पर Nostr प्रोटोकॉल
- दायरा: जियोहैश सटीकता द्वारा परिभाषित भौगोलिक क्षेत्र
block (7 वर्ण): शहर ब्लॉक स्तर
neighborhood (6 वर्ण): जिला/पड़ोस
city (5 वर्ण): शहर स्तर
province (4 वर्ण): राज्य/प्रांत
region (2 वर्ण): देश/बड़ा क्षेत्र
- इंटरनेट: आवश्यक (Nostr रिले से जुड़ता है)
- उपयोग मामला: स्थान-आधारित सामुदायिक चैट, स्थानीय ईवेंट, क्षेत्रीय चर्चाएँ
डायरेक्ट मैसेज रूटिंग
निजी संदेश बुद्धिमान ट्रांसपोर्ट चयन का उपयोग करते हैं:
-
पहले ब्लूटूथ (उपलब्ध होने पर पसंदीदा)
- स्थापित Noise सत्र के साथ सीधा कनेक्शन
- सबसे तेज़ और सबसे निजी विकल्प
-
Nostr फ़ॉलबैक (जब ब्लूटूथ उपलब्ध न हो)
- प्राप्तकर्ता की Nostr सार्वजनिक कुंजी का उपयोग करता है
- गोपनीयता के लिए NIP-17 गिफ्ट-रैपिंग
- वैश्विक रिले नेटवर्क के माध्यम से रूट करता है
-
स्मार्ट क्यूइंग (जब दोनों उपलब्ध न हों)
- ट्रांसपोर्ट उपलब्ध होने तक संदेश कतारबद्ध रहते हैं
- कनेक्शन स्थापित होने पर स्वचालित वितरण
विस्तृत प्रोटोकॉल दस्तावेज़ीकरण के लिए, तकनीकी श्वेतपत्र देखें।
सेटअप
विकल्प 1: Xcode का उपयोग करना
cd bitchat
open bitchat.xcodeproj
किसी डिवाइस पर चलाने के लिए कोड तैयार करने के कुछ कदम हैं:
- स्थानीय कॉन्फ़िग फ़ाइलें क्लोन करें:
cp Configs/Local.xcconfig.example Configs/Local.xcconfig
- नवनिर्मित
Configs/Local.xcconfig में अपना डेवलपर टीम आईडी जोड़ें
- बंडल आईडी
chat.bitchat.<team_id> पर सेट होगी (जब तक आप कुछ और सेट न करें)
- एंटाइटलमेंट को मैन्युअल रूप से अपडेट करने की आवश्यकता है (TODO: स्वचालित करें):
group.chat.bitchat को group.<your_bundle_id> से खोजें और बदलें (जैसे, group.chat.bitchat.ABC123)
विकल्प 2: just का उपयोग करना
इसे macOS पर आज़माना चाहते हैं: just run इसे सेट करेगा और स्रोत से चलाएगा।
मोबाइल ऐप निर्माण और विकास के लिए चीज़ों को मूल स्थिति में बहाल करने के लिए बाद में just clean चलाएँ।
स्थानीयकरण
- मूल ऐप संसाधन
bitchat/Localization/Base.lproj/ के अंतर्गत हैं। Localizable.strings में नई प्रतिलिपि और Localizable.stringsdict में बहुवचन नियम जोड़ें।
- शेयर एक्सटेंशन स्ट्रिंग्स
bitchatShareExtension/Localization/Base.lproj/Localizable.strings में अलग हैं।
- उन कुंजियों को प्राथमिकता दें जो इरादे का वर्णन करती हैं (
app_info.features.offline.title) और जहाँ संभव हो मौजूदा कुंजियों का पुन: उपयोग करें।
- किसी भी स्थानीयकरण अद्यतन की संकलन-जाँच करने के लिए
xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" -configuration Debug CODE_SIGNING_ALLOWED=NO build चलाएँ।