2022 में, एलन मस्क ने ट्विटर का अधिग्रहण किया, जिसे तब से एक्स के रूप में रीब्रांड किया गया है। कहानी का यह हिस्सा व्यापक रूप से जाना जाता है। हालाँकि, कम लोगों को पता है कि प्लेटफ़ॉर्म को विकेंद्रीकृत करने की एक परियोजना ट्विटर के भीतर आकार ले रही थी। ब्लूस्काई नामक इस परियोजना को 2019 में लॉन्च किया गया था। 2021 तक, इसे ब्लूस्काई सोशल बेनिफिट कॉरपोरेशन में बदल दिया गया, जिससे इसे ट्विटर से स्वतंत्र रूप से जारी रखने की अनुमति मिली। कुछ मायनों में, ब्लूस्काई को ट्विटर के उत्तराधिकारी के रूप में एक्स के रूप में माना जा सकता है।
X एक बहुत ही लाभकारी सेवा है, जो सशुल्क सत्यापन और प्रीमियम सुविधाएँ प्रदान करती है। इसके विपरीत, BlueSky Fediverse के समान खुले प्रोटोकॉल पर निर्मित एक पूरी तरह से खुली प्रणाली है, जिसमें कई स्वतंत्र नोड्स शामिल हैं।
चूंकि ब्लूस्काई टीम एक्टिविटीपब मानक से संतुष्ट नहीं थी, इसलिए उन्होंने अपना प्रोटोकॉल विकसित किया, जिसे एटी प्रोटोकॉल कहा गया।
प्रोटोकॉल का मुख्य तत्व रिपोजिटरी है, जो डेटाबेस के समान है। यह वह जगह है जहाँ पोस्ट, लाइक और अन्य सभी डेटा संग्रहीत किए जाते हैं। प्रत्येक उपयोगकर्ता (या किसी भी इकाई) के पास एक रिपोजिटरी होती है। रिपोजिटरी में संग्रह (डेटाबेस तालिकाओं के समान) होते हैं, और संग्रह में कुंजी-मूल्य प्रारूप में रिकॉर्ड होते हैं। रिपोजिटरी आईपीएफएस की तरह डेटा संग्रहीत करती है। प्रत्येक रिकॉर्ड में एक CID होता है, जो सामग्री-आधारित हैश होता है। यदि कोई उपयोगकर्ता डेटाबेस में कुछ भी संशोधित करता है, तो डेटा से एक कमिट हैश उत्पन्न होता है (Git कमिट के समान)। डेटाबेस में एक सिंगल-बिट परिवर्तन भी एक नए कमिट हैश के परिणामस्वरूप होता है। रिपोजिटरी का मालिक हर बदलाव के बाद इस कमिट हैश पर डिजिटल रूप से हस्ताक्षर करता है
इस समाधान का लाभ यह है कि संपूर्ण रिपोजिटरी या इसके भागों को विभिन्न प्रणालियों के बीच स्वतंत्र रूप से स्थानांतरित किया जा सकता है, जबकि किसी भी प्रणाली के लिए डेटा की प्रामाणिकता को आसानी से सत्यापित करने की क्षमता बनी रहती है।
उपयोगकर्ता अपनी पसंद के व्यक्तिगत डेटा सर्वर (PDS) पर अपने रिपॉजिटरी को होस्ट कर सकते हैं। इस अर्थ में, PDS एक डेटाबेस सर्वर की तरह काम करता है। PDS के माध्यम से, उपयोगकर्ता अपने रिपॉजिटरी को संशोधित कर सकते हैं और इसे दूसरों के लिए सुलभ बना सकते हैं। इसके अलावा, PDS कई अतिरिक्त सेवाएँ प्रदान करता है। यह अन्य उपयोगकर्ताओं के डेटा तक पहुँच की अनुमति देता है, फ़ीड प्राप्त करता है, और बहुत कुछ। अनिवार्य रूप से, PDS एक पूरी तरह कार्यात्मक सोशल मीडिया नोड के रूप में कार्य करता है, जो उपयोगकर्ताओं को नेटवर्क से कनेक्ट करने में सक्षम बनाता है।
चूँकि पी.डी.एस. केवल वह सिस्टम है जो रिपॉजिटरी को चलाता है, इसलिए उपयोगकर्ताओं को अपने रिपॉजिटरी को विभिन्न पी.डी.एस. के बीच ले जाने या यहाँ तक कि अपने स्वयं के पी.डी.एस. को संचालित करने की स्वतंत्रता होती है। यह लचीलापन ही सिस्टम को इसकी स्वतंत्रता प्रदान करता है।
पीडीएस पर संग्रहीत रिपॉजिटरी की सामग्री की निगरानी फीड जनरेटर द्वारा की जाती है, जो विशिष्ट मानदंडों के आधार पर फीड बनाते हैं। अन्य सोशल मीडिया प्लेटफ़ॉर्म (जैसे, फ़ेसबुक) पर आमतौर पर केवल एक ही फ़ीड होती है, लेकिन ब्लूस्काई के मामले में, उपयोगकर्ता यह चुनने के लिए स्वतंत्र हैं कि वे किस फ़ीड से पोस्ट देखना चाहते हैं। यदि किसी उपयोगकर्ता को लगता है कि फ़ीड जनरेटर उनकी रुचियों के लिए प्रासंगिक पोस्ट नहीं दिखा रहा है, वे जो पोस्ट देखना चाहते हैं उन्हें सेंसर कर रहा है, या उनमें हेरफेर करने का प्रयास कर रहा है, तो वे बस किसी अन्य फ़ीड प्रदाता पर स्विच कर सकते हैं।
सिस्टम का यह ढीला नेटवर्क और रिपॉजिटरी को स्थानांतरित करने में आसानी दक्षता का त्याग किए बिना पूरी स्वतंत्रता प्रदान करती है। उदाहरण के लिए, क्लाइंट को कई स्रोतों से पोस्ट इकट्ठा करने की आवश्यकता नहीं है, क्योंकि यह फ़ीड जनरेटर और पीडीएस द्वारा नियंत्रित किया जाता है।
अब जबकि हम सिस्टम की संरचना और मुख्य घटकों को समझ चुके हैं, तो आइए थोड़ा गहराई से देखें कि प्रोटोकॉल कैसे काम करता है।
प्रत्येक उपयोगकर्ता (और अन्य संस्थाओं) को एक अद्वितीय विकेन्द्रीकृत पहचानकर्ता (DID) सौंपा जाता है। यह DID रिपॉजिटरी और उपयोगकर्ता द्वारा रिपॉजिटरी कमिट पर हस्ताक्षर करने के लिए उपयोग की जाने वाली कुंजी जोड़ी से जुड़ा होता है। चूँकि DID को याद रखना मुश्किल होता है, इसलिए उपयोगकर्ताओं की पहचान डोमेन नामों से की जाती है, जिसे सिस्टम DID में बदल देता है।
उदाहरण के लिए, मेरा उपयोगकर्ता नाम thebojda.bsky.social है। DID को दो तरीकों से इससे जोड़ा जा सकता है: या तो इसे डोमेन के TXT रिकॉर्ड में उचित कुंजी के साथ निर्दिष्ट करके या बस प्रसिद्ध URI के माध्यम से। DID को इस URL पर एक्सेस किया जा सकता है:
https://thebojda.bsky.social/.well-known/atproto-did
उदाहरण के लिए, मेरा DID है: did:plc:4x7rynvskplz54p5pofj3jxa
एटी प्रोटोकॉल पीएलसी और वेब दोनों प्रकार के डीआईडी का समर्थन करता है। वेब डीआईडी एक सरल यूआरएल है, जबकि पीएलसी डीआईडी एटी प्रोटोकॉल का एक कस्टम मानक है, जो सार्वजनिक कुंजी और कुछ अतिरिक्त डेटा से उत्पन्न होता है (जो लोग गहराई से जानना चाहते हैं वे इसके बारे में यहाँ और अधिक पढ़ सकते हैं)।
प्रत्येक DID एक DID दस्तावेज़ से संबद्ध होता है, जिसमें DID से जुड़ी सार्वजनिक कुंजी और उस PDS का URL होता है जहां रिपॉजिटरी होस्ट की जाती है।
DID का समाधान इस प्रकार किया जा सकता है:
https://plc.directory/did:plc:4x7rynvskplz54p5pofj3jxa
DID दस्तावेज़ इस प्रकार दिखता है:
{ "@context": [ "https://www.w3.org/ns/did/v1", "https://w3id.org/security/multikey/v1", "https://w3id.org/security/suites/secp256k1-2019/v1" ], "id": "did:plc:4x7rynvskplz54p5pofj3jxa", "alsoKnownAs": [ "at://thebojda.bsky.social" ], "verificationMethod": [ { "id": "did:plc:4x7rynvskplz54p5pofj3jxa#atproto", "type": "Multikey", "controller": "did:plc:4x7rynvskplz54p5pofj3jxa", "publicKeyMultibase": "zQ3shaNKzE66K1Kr3dmbnDwXWHh6v4nUcBmpEaK7bVktKTwfh" } ], "service": [ { "id": "#atproto_pds", "type": "AtprotoPersonalDataServer", "serviceEndpoint": "https://fibercap.us-west.host.bsky.network" } ] }
इस दस्तावेज़ में, यदि कोई व्यक्ति नए PDS पर जाता है, तो PDS URL को अपडेट किया जाना चाहिए। उदाहरण के लिए, मेरा वर्तमान PDS https://fibercap.us-west.host.bsky.network पर उपलब्ध है।
PDS के साथ संचार XRPC के माध्यम से किया जाता है, जो एक सरल HTTP/JSON-आधारित प्रोटोकॉल है। प्रत्येक कॉल का रिवर्स DNS-शैली नाम होता है। उदाहरण के लिए, अगर मैं अपना पूरा रिपॉजिटरी प्राप्त करना चाहता हूँ, तो मैं इसे इस तरह से कर सकता हूँ:
https://fibercap.us-west.host.bsky.network/xrpc/com.atproto.sync.getRepo?did=did:plc:4x7rynvskplz54p5pofj3jxa
com.atproto.sync.getRepo
विधि का उपयोग रिपॉजिटरी को क्वेरी करने के लिए किया जाता है, और इसमें did
पैरामीटर होता है।
ब्लूस्काई टीम ने एपीआई और डेटा संरचनाओं को परिभाषित करने के लिए लेक्सिकॉन नामक एक JSON-आधारित वर्णनात्मक भाषा विकसित की। यह JSON स्कीमा के समान है और इसका उपयोग टाइप-सेफ इंटरफेस बनाने के लिए किया जा सकता है, उदाहरण के लिए, टाइपस्क्रिप्ट के लिए, जो प्रोटोकॉल के कार्यान्वयन को सरल बनाता है।
मेरी पिछली 10 पोस्ट प्राप्त करने के लिए निम्नलिखित कॉल का उपयोग किया जा सकता है:
https://public.api.bsky.app/xrpc/app.bsky.feed.getAuthorFeed?actor=thebojda.bsky.social&limit=10
परिणाम इस प्रकार है:
{ "feed": [ { "post": { "uri": "at://did:plc:4x7rynvskplz54p5pofj3jxa/app.bsky.feed.post/3le3esbhaek2l", "cid": "bafyreihagjnwrkakkajkaighz6kyqww3wznvbdcqpnl4wbfnpwrr2xwmmi", "author": { "did": "did:plc:4x7rynvskplz54p5pofj3jxa", "handle": "thebojda.bsky.social", "displayName": "Laszlo Fazekas", "avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:4x7rynvskplz54p5pofj3jxa/bafkreibxd4mx7rehgkc77diautavpcota6jotzkaagp4zv2t6w3a52n7sq@jpeg", "labels": [], "createdAt": "2024-11-24T01:36:39.146Z" }, "record": { "$type": "app.bsky.feed.post", "createdAt": "2024-12-24T21:20:56.891Z", "embed": { "$type": "app.bsky.embed.external", "external": { "description": "MyETHMeta is a decentralized metadata service for Ethereum accounts. It is something like Gravatar. There are no backend servers, you fully own your data.", "thumb": { "$type": "blob", "ref": { "$link": "bafkreifoezhkdtesuhkaoqt3yml44geozu6ckg2cfffg5t5omob2bdjmo4" }, "mimeType": "image/jpeg", "size": 669185 }, "title": "MyETHMeta v2 – Some Improvements on the Gravatar for Your Ethereum Account | HackerNoon", "uri": "https://hackernoon.com/myethmeta-v2-some-improvements-on-the-gravatar-for-your-ethereum-account" } }, "facets": [ { "features": [ { "$type": "app.bsky.richtext.facet#link", "uri": "https://hackernoon.com/myethmeta-v2-some-improvements-on-the-gravatar-for-your-ethereum-account" } ], "index": { "byteEnd": 270, "byteStart": 240 } } ], "langs": [ "en" ], "reply": { "parent": { "cid": "bafyreieipk3kgwonq3h62wyadauplzgcpdgcg6pxp2776oeldcstgybwha", "uri": "at://did:plc:4x7rynvskplz54p5pofj3jxa/app.bsky.feed.post/3le3es7kzmc2l" }, "root": { "cid": "bafyreieipk3kgwonq3h62wyadauplzgcpdgcg6pxp2776oeldcstgybwha", "uri": "at://did:plc:4x7rynvskplz54p5pofj3jxa/app.bsky.feed.post/3le3es7kzmc2l" } }, "text": "MyETHMeta is a decentralized metadata service for Ethereum accounts. It is something like Gravatar, but here the metadata and your profile picture is assigned to your Ethereum address. There are no backend servers, you fully own your data. hackernoon.com/myethmeta-v2..." }, "embed": { "$type": "app.bsky.embed.external#view", "external": { "uri": "https://hackernoon.com/myethmeta-v2-some-improvements-on-the-gravatar-for-your-ethereum-account", "title": "MyETHMeta v2 – Some Improvements on the Gravatar for Your Ethereum Account | HackerNoon", "description": "MyETHMeta is a decentralized metadata service for Ethereum accounts. It is something like Gravatar. There are no backend servers, you fully own your data.", "thumb": "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:4x7rynvskplz54p5pofj3jxa/bafkreifoezhkdtesuhkaoqt3yml44geozu6ckg2cfffg5t5omob2bdjmo4@jpeg" } }, "replyCount": 0, "repostCount": 0, "likeCount": 0, "quoteCount": 0, "indexedAt": "2024-12-24T21:21:02.466Z", "labels": [] }, "reply": {} }, {}, {}, {}, {}, {}, {}, {}, {} ] }
प्रत्येक तत्व में एक पोस्ट और उससे संबंधित उत्तर होते हैं। जैसा कि पहले बताया गया है, प्रत्येक पोस्ट रिपॉजिटरी में एक रिकॉर्ड है और इसका अपना विशिष्ट पहचानकर्ता है। प्रत्येक पोस्ट को एक अद्वितीय URI असाइन किया जा सकता है, जिसमें DID, संग्रह का नाम और पोस्ट ID शामिल है। ऊपर दिए गए उदाहरण में, URI इस तरह दिखता है: at://did:plc:4x7rynvskplz54p5pofj3jxa/app.bsky.feed.post/3le3esbhaek2l
इसका मतलब यह है कि पोस्ट मेरे DID से जुड़े रिपॉजिटरी में app.bsky.feed.post
संग्रह के भीतर स्थित है और इसकी आईडी 3le3esbhaek2l
है।
यूआरआई के अलावा, पोस्ट का सीआईडी भी शामिल है, जो सामग्री से उत्पन्न एक अद्वितीय हैश है। ये तत्व मिलकर रिपॉजिटरी का अद्वितीय कमिट हैश बनाते हैं।
एक और उल्लेखनीय पहलू thumb
सेक्शन है, जो पोस्ट से जुड़ी एक छवि को संदर्भित करता है। यह एक ब्लॉब-प्रकार की वस्तु है जो किसी संग्रह से संबंधित नहीं है। सिस्टम बड़ी फ़ाइलों (जैसे छवियाँ, वीडियो, आदि) को ब्लॉब के रूप में संग्रहीत करता है, जिन्हें उनके हैश (CID) का उपयोग करके व्यक्तिगत रिकॉर्ड (जैसे, पोस्ट) में संदर्भित किया जा सकता है।
जो लोग रिपॉजिटरी और रिकॉर्ड्स की संरचना को गहराई से देखना चाहते हैं, उनके लिए गो-रेपो-एक्सपोर्ट टूल काफी उपयोगी हो सकता है। इस छोटे से प्रोग्राम से, आप संपूर्ण उपयोगकर्ता रिपॉजिटरी डाउनलोड कर सकते हैं और संग्रह और उनके रिकॉर्ड को JSON प्रारूप में एक निर्देशिका में निकाल सकते हैं। यह आपको यह देखने की अनुमति देता है कि ब्लूस्काई डेटा को कैसे संग्रहीत करता है।
जानकारी का एक और अच्छा स्रोत क्रोम डेवटूल्स है। https://bsky.app वेबसाइट पर, आप API कॉल को स्पष्ट रूप से देख सकते हैं और देख सकते हैं कि क्लाइंट साइड PDS के साथ कैसे संचार करता है।
और, ज़ाहिर है, आधिकारिक दस्तावेज़ भी हैं। AT प्रोटोकॉल और BlueSky के पास बेहतरीन दस्तावेज़ हैं, और GitHub पर, आप क्लाइंट और सर्वर दोनों पक्षों के लिए उदाहरण और स्रोत कोड पा सकते हैं।
जब मैंने पहली बार AT प्रोटोकॉल के बारे में पढ़ा, तो मेरा पहला विचार यह था कि हमें ActivityPub के साथ-साथ एक और फ़ेडरेटेड प्रोटोकॉल की आवश्यकता क्यों है। हालाँकि, AT प्रोटोकॉल में वास्तव में कुछ ऐसी विशेषताएँ हैं जो इसके अस्तित्व को पूरी तरह से उचित ठहराती हैं। बेशक, प्रोटोकॉल सही नहीं है और संभवतः इसमें महत्वपूर्ण विकास होगा। उदाहरण के लिए, यदि हम वास्तव में सेंसरशिप-प्रतिरोधी नेटवर्क बनाना चाहते हैं, तो यह केंद्रीकृत डोमेन नाम प्रणाली पर निर्भर नहीं हो सकता। एक ब्लॉकचेन-आधारित नामकरण प्रणाली, जो वास्तव में सेंसरशिप-प्रतिरोधी है, मूल्यवान होगी (मैं इस पर एक प्रस्ताव भी लिख सकता हूँ)।
ब्लूस्काई के वर्तमान में अनुमानित 20-30 मिलियन उपयोगकर्ता हैं, जो एक्स (ट्विटर) के उपयोगकर्ता आधार की तुलना में बहुत कम है, लेकिन यह अभी भी महत्वपूर्ण है। भविष्य में क्या होगा, इस बारे में कोई भी निश्चित रूप से नहीं कह सकता। फ़ेडरेटेड नेटवर्क एक बड़ा फ़ायदा है, और इस बात पर गहन बहस चल रही है कि क्या ट्विटर या फ़ेसबुक जैसे वैश्विक संचार प्लेटफ़ॉर्म का स्वामित्व किसी एक इकाई के पास होना बहुत ज़्यादा शक्ति है। मैं इस संभावना को पूरी तरह से खारिज नहीं करूँगा कि ब्लूस्काई एक दिन अपने प्रतिस्पर्धियों से आगे निकल सकता है। अच्छे फ़ीड जनरेटर और प्रभावी समुदाय निर्माण के साथ, यह हासिल किया जा सकता है। किसी भी मामले में, इस परियोजना पर ध्यान देना और यह समझना कि यह कैसे काम करता है, इसके लायक है।