• स्थिर वेबसाइटों का उपयोग करने वाला एक विकेंद्रीकृत सोशल नेटवर्किंग प्रोटोकॉल, जिसमें हर उपयोगकर्ता अपने डेटा का सीधे स्वामित्व और प्रबंधन करता है
  • सारा डेटा एन्क्रिप्टेड JSON स्टोरेज में रखा जाता है, और ब्राउज़र क्लाइंट फ़ीड एग्रीगेट करता है तथा पोस्ट प्रकाशित करता है
  • सर्वर या रिले के बिना, दोस्तों की वेबसाइटों और ब्राउज़रों के बीच सीधे संचार के जरिए काम करता है
  • उपयोगकर्ता का डोमेन नाम ही उसकी पहचान है, और HTTPS/TLS के माध्यम से प्रमाणित होता है
  • सरल संरचना के साथ self-sovereign social network को लागू करता है, और व्यक्तियों के बीच भरोसे-आधारित संवाद पर फ़ोकस करता है

sAT Protocol अवलोकन

  • s@ एक स्थिर साइट आधारित विकेंद्रीकृत सोशल नेटवर्किंग प्रोटोकॉल है, जिसमें हर उपयोगकर्ता अपने डेटा को अपनी वेबसाइट पर संग्रहीत करता है
    • सारा डेटा एन्क्रिप्टेड JSON फ़ाइलों के रूप में संग्रहीत होता है, और ब्राउज़र क्लाइंट इन्हें पढ़कर पोस्ट प्रकाशित करने और फ़ीड एग्रीगेशन का काम करता है
    • यह केंद्रीय सर्वर या रिले के बिना काम करता है, और डेटा उपयोगकर्ता की साइट से सीधे दोस्त के ब्राउज़र तक जाता है
  • पोस्ट का आदान-प्रदान केवल आपसी follow संबंध होने पर संभव है, जिससे influencer-केंद्रित संरचना को बाहर रखा जाता है
  • यह प्रोटोकॉल GitHub Pages जैसी किसी विशेष होस्टिंग सेवा पर निर्भर नहीं है

पहचान (Identity)

  • उपयोगकर्ता का डोमेन नाम ही पहचान की भूमिका निभाता है
  • HTTPS/TLS के माध्यम से यह प्रमाणित होता है कि डोमेन स्वामी ने ही सामग्री प्रकाशित की है

डिस्कवरी (Discovery)

  • https://{domain}/satellite/profile.json पथ पर प्रोटोकॉल वर्ज़न और public key उपलब्ध कराई जाती है
    {
      "satproto_version": "0.1.0",
      "public_key": "<base64-encoded X25519 public key>"
    }
    
  • डिफ़ॉल्ट पथ /satellite/ के अलावा कोई दूसरा पथ उपयोग करने पर, .well-known/satproto.json फ़ाइल से वास्तविक स्टोरेज लोकेशन निर्दिष्ट की जा सकती है

एन्क्रिप्शन मॉडल (Encryption Model)

  • सारा उपयोगकर्ता डेटा एन्क्रिप्टेड JSON स्टोरेज में रखा जाता है, और केवल उपयोगकर्ता तथा followers ही इसे डिक्रिप्ट कर सकते हैं
  • X25519 key pair का उपयोग कर public key को profile.json में प्रकाशित किया जाता है, और private key को ब्राउज़र localStorage में रखा जाता है
  • पोस्ट डेटा को XChaCha20-Poly1305 से एन्क्रिप्ट किया जाता है, और content key को प्रत्येक follower के लिए libsodium के crypto_box_seal से एन्क्रिप्ट किया जाता है
  • keys/_self.json फ़ाइल में उपयोगकर्ता की content key और publishing secrets शामिल होते हैं, जिन्हें केवल वही डिक्रिप्ट कर सकता है

key rotation और unfollow

  • unfollow होने पर नई content key बनाई जाती है और सभी पोस्टों को फिर से एन्क्रिप्ट किया जाता है
  • बचे हुए followers के लिए नए key envelopes बनाए जाते हैं और keys/_self.json अपडेट किया जाता है
  • जिसे unfollow किया गया है, वह अब पोस्टों को डिक्रिप्ट नहीं कर सकता

डिक्रिप्शन फ्लो

  • जब कोई विज़िटर दोस्त की साइट पर जाता है, तो वह अपनी private key से keys/{follower-domain}.json को डिक्रिप्ट कर content key प्राप्त करता है
  • इसके बाद posts/index.json और अलग-अलग पोस्ट (posts/{id}.json.enc) को लाकर डिक्रिप्ट किया जाता है

डेटा संरचना (Data Schema)

  • हर पोस्ट को अलग-अलग एन्क्रिप्टेड फ़ाइल के रूप में संग्रहीत किया जाता है, और posts/index.json में पोस्ट ID नई से पुरानी क्रम में सूचीबद्ध होती हैं
  • पोस्ट ऑब्जेक्ट का उदाहरण:
    {
      "id": "20260309T141500Z-a1b2",
      "author": "alice.com",
      "created_at": "2026-03-09T14:15:00Z",
      "text": "Hello, decentralized world!",
      "reply_to": null,
      "reply_to_author": null
    }
    
  • पोस्ट ID, ISO8601 UTC timestamp और 4-अक्षर वाले random hash से बनी होती है

follow सूची (Follow List)

  • https://{domain}/satellite/follows/index.json पथ पर plain-text JSON के रूप में संग्रहीत
    { "follows": ["bob.example.com", "carol.example.com"] }
    
  • यह एन्क्रिप्टेड नहीं होती, क्योंकि key envelopes के माध्यम से follow संबंध पहले ही उजागर हो जाता है

फ़ीड एग्रीगेशन (Feed Aggregation)

  • क्लाइंट follow सूची पढ़ता है और प्रत्येक follower की पोस्टों को डिक्रिप्ट करके समयक्रमिक फ़ीड बनाता है
  • पोस्टों को created_at के आधार पर descending क्रम में sort किया जाता है

रिप्लाई (Reply)

  • रिप्लाई वे पोस्ट हैं जिनमें reply_to और reply_to_author फ़ील्ड सेट होते हैं
  • nested replies समर्थित नहीं हैं, और केवल top-level पोस्ट पर सीधे रिप्लाई किया जा सकता है
  • यदि मूल पोस्ट दिखाई नहीं देती (जैसे non-follow स्थिति में), तो रिप्लाई भी प्रदर्शित नहीं होगी

प्रकाशन (Publishing)

  • नई पोस्ट बनाना → content key से एन्क्रिप्ट करना → स्थिर साइट पर अपलोड करना → posts/index.json अपडेट करना
  • अपलोड के लिए GitHub Contents API आदि का उपयोग किया जा सकता है
  • publishing secrets को keys/_self.json में एन्क्रिप्ट करके संग्रहीत किया जाता है

स्थिर साइट संरचना उदाहरण

{domain}/satellite/
  profile.json              # public key और प्रोफ़ाइल
  posts/
    index.json              # पोस्ट ID सूची
    {id}.json.enc           # एन्क्रिप्टेड पोस्ट
  follows/
    index.json              # follow सूची
  keys/
    _self.json              # content key और credentials
    {domain}.json           # follower-विशिष्ट content key

FAQ

  • “क्या यह RSS + एन्क्रिप्शन है?” → हाँ
  • “क्या यह AT Protocol का firehose-रहित वर्ज़न है?” → हाँ
  • “क्या यह scalable है?” → नहीं (“दोस्ती भी scalable नहीं होती”)
  • “क्या s का मतलब slow/shitty है?” → हाँ
  • “क्या इसे self-host किया जा सकता है?” → हाँ, लेकिन CORS सक्षम होना चाहिए

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.