बंटा हुआ सामाजिक नेटवर्क

सोशल का वेब-पैमाना पीयर-टू-पीयर प्रोटोकॉल के साथ

टी.एल.डी.आर :

  • वेब3 तकनीकों का लाभ उठाते हुए उपयोगकर्ताओं को अच्छा अनुभव प्रदान करते हैं जितना  व्यक्ति वेब2 सोशल मीडिया प्लेटफॉर्म के करीब आते हैं।
  • एक बाधा जो किसी भी ब्लॉकचेन-आधारित प्लेटफॉर्म का सामना करती है, वह है उपयोगकर्ता शुल्क। गोपनीयता और सर्वसम्मति बनाए रखते हुए बिना-टोकन वालों के लिए उपयोगकर्ता शुल्क को हटाना, सोलशियल सोलाना में एक पीयर-टू-पीयर (पी 2 पी) परत का निर्माण कर रहा है और सामग्री (फीड, पसंद, आदि) वितरित करने वाले libp2p पर बनाया गया है। स्व-होस्टिंग (self-hosting) और पीर रेप्लिकेशन के माध्यम से।
  • हमने एक विशेष प्रकार का नोड भी विकसित किया है जिसमें एक डेस्कटॉप या मोबाइल ऐप के समान बाहरी प्रोटोकॉल है, जिसमें हजारों साथियों को संभालने के लिए डिज़ाइन किए गए अतिरिक्त अनुकूलन हैं, जिन्हें बीकन नोड्स कहा जाता है। बीकन पिनिंग सेवाओं का एक सेट है जो उपयोगकर्ताओं की सामग्री को तब संरक्षित करेगा जब रचनाकार (creators) ऑफ़लाइन हो जाएंगे और इसे अन्य उपयोगकर्ताओं के लिए उपलब्ध कराएंगे; सभी उपयोगकर्ता सामग्री को आईपीएफएस पर संग्रहीत किया जाता है और सेंसर योग्य सर्वर या गेटवे पर भरोसा के बिना पी 2 पी परत के माध्यम से देखा जाता है।

परिचय

नोटों की श्रृंखला में यह पहली पोस्ट है जिसमें बताया गया है कि कैसे सोलशियल प्रोटोकॉल की आंतरिक कामकाज ने अलग सेंसरशिप प्रतिरोध गुण है उचित डेटा विनिमय प्रदर्शन को बनाए रखते हुए।

नेटवर्क टोपोलॉजी

नोड्स सार्वजनिक इंटरनेट पर संचार करते हैं, हाइपरव्यू प्रोटोकॉल के संशोधित संस्करण का उपयोग करके सोलशियल के लिए एक ओवरले नेटवर्क बनाते हैं।

प्रत्येक नोड log2(N)+1log2⁡(N)+1 के आकार के साथ सक्रिय साथियों की एक सूची रखता है जहाँ N पूरे नेटवर्क का अनुमानित आकार है। N का मान ब्लॉकचैन से अप टू डेट साइन किए गए उपयोगकर्ता खातों की संख्या का पता लगाकर निकाला जाता है, और जैसे-जैसे उपयोगकर्ताओं की संख्या बढ़ती है, इसे समय-समय पर अपडेट किया जाता है। सक्रिय साथियों के साथ कनेक्शन स्थिर, द्विदिश और लगातार होते हैं नोड्स हैं जो किसी अन्य पी 2 पी गतिविधि के दौरान सीधे बातचीत करते हैं। प्रत्येक नोड 6⋅ (लॉग2(एन)+1) 6⋅(लॉग2(एन)+1) के आकार के साथ निष्क्रिय साथियों की एक सूची भी रखता है जो किसी भी सक्रिय सहकर्मी के डिस्कनेक्ट होने या बिना उत्तर देने वाले बनने की स्थिति में बैकअप साथियों के रूप में उपयोग किया जाता है सक्रिय साथियों के बीच कनेक्शन के लिए अंतर्निहित (underlying) प्रोटोकॉल QUIC² NOISE एन्क्रिप्शन के साथ है, जो सभी libp2p³ द्वारा संचालित है।

NAT ट्रैवर्सल तीन विधियों का उपयोग करके प्राप्त किया जाता है जो कि सहकर्मी की नेटवर्क परिस्थितियों के आधार पर उपयोग किए जाते हैं। पहली विधि IPv4 के बजाय IPv6 का उपयोग कर रही है क्योंकि उस स्थिति में NATs की कोई आवश्यकता नहीं है, हालांकि आंकड़ों के अनुसार IPv6⁴ पर केवल 40% इंटरनेट है।

फ़ॉलबैक मैकेनिज्म libp2p के पहचान प्रोटोकॉल को नियोजित करके AutoNAT का उपयोग करना है जो नेटवर्क में अन्य नोड्स को हमारी मशीन के देखने योग्य पते के बारे में पूछता है। एनएटी सहकर्मी द्वारा शुरू किया जा रहा पता है, पहले से ही उनके राउटर के साथ लक्ष्य मशीन में पंजीकृत है, हालांकि ऐसी परिस्थितियां जब यह काम नहीं करता है, तो हम तीसरे और सबसे विश्वास के योग्य व महंगे विकल्प पर वापस आते हैं।

तीसरा विकल्प libp2p सर्किट रिले प्रोटोकॉल का उपयोग करना है जो एक इंटरमीडिएट नोड के साथ एक टर्न प्रोटोकॉल के कामकाज का अनुकरण (intermediate) करता है जो NAT के पीछे दो साथियों के बीच पैकेट को रिले करता है। इस भूमिका को बीकन नोड्स और सार्वजनिक आईपी वाले कुछ साथियों द्वारा ग्रहण किया जा सकता है जो कॉन्फ़िगर की गई सीमाओं के साथ रिले होने का विकल्प चुनते हैं। बीकन नोड्स के बारे में और भी इस पोस्ट पर बाद में।

सहकर्मी की पहचान

साथियों की पहचान उनकी सार्वजनिक कुंजी के द्वारा मल्टीहैश के रूप में की जाती है जो सोलाना पर उनके वॉलेट पते की सार्वजनिक कुंजी के बराबर होती है जो सोलशियल ऑन-चेन कॉन्ट्रैक्ट के साथ पंजीकृत होती है। किसी दिए गए सार्वजनिक पीयर आईडी को मानने का एकमात्र तरीका ED25519 कीपेयर की गुप्त कुंजी रखना है।

इस कीपेयर का इस्तेमाल साथियों के बीच सभी संदेशों के लिए एन्क्रिप्टेड चैनल स्थापित करने के लिए भी किया जाता है, साथ ही उन संदेशों की प्रामाणिकता को सत्यापित करने का एक तरीका है जो संभवतः वॉलेट के मालिक द्वारा उत्पादित किए जाते हैं।

ओवरले सदस्यता

जिन साथियों की सार्वजनिक कुंजी चेन पर पंजीकृत नहीं है उनको HyparView नेटवर्क ओवरले में शामिल होने की अनुमति नहीं दी जाएगी और Solcial के द्वारा पीयर-टू-पीयर नेटवर्क से बाहर कर दिया जाएगा।

सोलशियल पी2पी में शामिल होने के इच्छुक सभी सार्वजनिक विषय पर बूटस्ट्रैप नोड्स में से एक को एक जॉइन संदेश भेजेंगे (उनमें से कुछ बूटस्ट्रैप नोड भी बीकन नोड हैं)।  हाइपरव्यू में विषयों का परिचय मूल पेपर में हमारे संशोधनों में से एक है।

किसी सहकर्मी से जॉइन अनुरोध प्राप्त करने वाला कोई भी नोड पहले यह सत्यापित करेगा कि वह मल्टीहैश चेन पर मौजूद है और एक सॉलशियल खाते से जुड़ा हुआ है, फिर यह अपने सक्रिय साथियों में से एक को एक फ़ोरवर्डजॉइन संदेश भेजेगा जिसमें एक सक्रिय रैंडम वॉक 3 पर सेट होगा, वे उस संदेश को अपने सभी सक्रिय साथियों तक पहुंचाएगा, वर्तमान हॉप संख्या को एक से बढ़ाकर 3 हॉप्स तक पहुंचने तक। यह बूटस्ट्रैप नोड्स के खिलाफ डीडीओएस हमलों के लिए एक शमन (mitigation) है, साथ ही साथ नोड्स के बीच कनेक्टिविटी को फैलाने और यादृच्छिक (randomize) बनाने के लिए एक प्रभावी विकेन्द्रीकरण तकनीक है।

कोई भी नोड जो प्रारंभिक जॉइन रिसीवर के 3 हॉप्स के भीतर है, प्रारंभिक जॉइन अनुरोधकर्ता को उनके बीच एक अच्छा व लगातार कनेक्शन स्थापित करने के लिए एक NEIGHBOR संदेश भेजेगा।

समय-समय पर हर 15 सेकंड में नोड अपने सक्रिय और निष्क्रिय साथियों के यादृच्छिक नमूने के साथ एक यादृच्छिक सक्रिय सहकर्मी को एक SHUFFLE संदेश भेजेगा और इस संदेश की यादृच्छिक चलने की लंबाई 4 पर सेट करेगा। यह सुनिश्चित करता है कि नेटवर्क में सभी साथियों के पास हमेशा ताजा जानकारी होती है  जब भी उनका कोई भी सक्रिय साथी अनुत्तरदायी हो जाता है या बिल्कुल डिस्कनेक्ट हो जाता है, तो अन्य साथियों को वे नेटवर्क की मरम्मत उद्देश्यों के लिए संग्रहीत कर सकते हैं।

कुशल गपशप। (Efficient Gossiping)

साथियों के बीच संदेश को भेजने में केवल सक्रिय साथी ही भाग लेते हैं।  सक्रिय सहकर्मी सार्वजनिक इंटरनेट पर एक ओवरले नेटवर्क बनाते हैं और नोड्स के बीच कनेक्टिविटी ग्राफ में साइकिल्स मौजूद होते हैं। नेटवर्क पर साथियों के बीच संदेशों की कुशल गपशप को सही करने के लिए हमें पहले साथियों के बीच डुप्लिकेट संदेश प्रसार को कम करना होगा और दूसरा संदेशों के लिए सबसे इष्टतम (optical) मार्ग ढूंढना होगा।

यह एपिडेमिक ब्रॉडकास्ट ट्रीज़ एल्गोरिथम का उपयोग करके प्राप्त किया जाता है, जो साथियों के बीच एक न्यूनतम फैले हुए पेड़ का निर्माण करता है, साथियों को इगर -पुश नोड्स और लेजी-पुश नोड्स के समूह में बांटता है। इगर-पुश नोड्स हमेशा किसी भी नोड द्वारा प्राप्त संदेशों को आगे भेजते हैं।

लेजी पुश नोड्स समय-समय पर, प्रत्येक 500ms, मैसेज का बैच देखा जाता है वर्तमान नोड के द्वारा। जब भी कोई नोड देखता है कि लेजी-पुश बैच में एक संदेश आईडी है जो उसके अपस्ट्रीम पैरेंट नोड से प्राप्त नहीं हुई थी, तो यह कनेक्शन का पुनर्निर्माण (GRAFT) करेगा और अपनी सक्रिय-पुश स्थिति को दोबारा स्थापित करेगा। यह कम से कम फैले हुए पेड़ की मरम्मत तंत्र का गठन करता है यदि इनमें से एक नोड्स नीचे चला जाता है और बिना जोड़ के ग्राफ बनेंगे। GRAFT संदेश पूर्ण नेटवर्क कनेक्टिविटी को दोबारा स्थापित करते हैं।

जब भी कोई प्राप्त संदेश सक्रिय नोड से पहले प्राप्त संदेश का डुप्लीकेट पाया जाता है, तो उस नोड के कनेक्शन को ग्राफ़ में एक साइकिल माना जाता है और एक PRUNE संदेश भेजकर एक लेजी-पुश में बदल दिया जाता है।

एक सक्रिय कनेक्शन की छंटाई करने और इसे आलसी सूची से एक के साथ बदलने का एक और मामला यह है कि जब हम देखते हैं कि एक आलसी नोड के माध्यम से हम तक पहुंचने के लिए एक संदेश की संख्या उत्सुक सक्रिय सहकर्मी के संदेश की तुलना में 4 हॉप्स से कम है। यह ब्रॉडकास्ट ट्री ऑप्टिमाइजेशन एल्गोरिदम बनाता है।

सामग्री का प्रसार।

पिछले अनुभागों में बताए गए p2p प्रोटोकॉल के माध्यम से गपशप किए गए संदेश IPFS Bitswap⁹ संदेश हैं जिनमें Solcial उपयोगकर्ताओं द्वारा निर्मित सामग्री के CID होते हैं।  सोलशियल में बिटस्वैप और आईपीएफएस का उपयोग कैसे किया जाता है, इसे अच्छे तरीके से समझने के लिए, पहले उपयोगकर्ता अपनी प्रोफ़ाइल की संरचना का वर्णन करें।

नेटवर्क पर प्रत्येक उपयोगकर्ता खाते में कुछ ऐसा होता है जिसे प्रोफ़ाइल अनुक्रमणिका (index) कहा जाता है। यह अनुक्रमणिका बिंदु करती है नई सीआईडी के वर्जन की तरफ उनके विषय के लिए। सूचकांक एक अंतिम रूप से लगातार अनुक्रम सीआरडीटी है जो खाते द्वारा किए गए संचालन का एक अपरिवर्तनीय लॉग बनाता है।

प्रोफाइल इंडेक्स को एक लिंक्ड सूची के रूप में माना जा सकता है जहां प्रत्येक तत्व पिछले तत्व के सीआईडी ​​​​की ओर इशारा करता है और साथियों द्वारा अगले तत्व के रूप में स्वीकार किया जाता है, यदि यह खाता स्वामी की निजी कुंजी द्वारा हस्ताक्षरित है।  प्रोफ़ाइल फ़ीड का एक उच्च-स्तरीय उदाहरण इस तरह दिखता है:

{

“author”: “12D3KooWSoeYKbpkb5UoL2T5eiomWRHdxR9cPC4tk11gKU89fFwT”,

“prev”: “QmYtUc4iTCbbfVSDNKvtQqrfyezPPnFvE33wFmutw9PBBk”,

“action”: “append-feed-post”,

“timestamp”: “2022–01–11T15:58Z”,

“params”: {

“content”: “QmV8cfu6n4NT5xRr2AHdKxFMTZEJrA44qgrBCr739BN9Wb”

“enckey”: “z2DhMLJmV8kNQm6zeWUrXQKtmzoh6YkKHSRxVSibscDQ7nq”

},

“signature”: “2Lpnvt23H6qHswCNPmwCCUSas7YNP[…]jV1dC9qdNPR4zDqsCuBX”

}

इस तरह की एंट्री का अपना CID होता है और इसे IPFS PB-DAG¹⁰ ऑब्जेक्ट के रूप में /solcial/कंटेंट HyparView ओवरले विषय पर प्रसारित किया जाता है। यह एंट्री इसकी पिछली एंट्री से जुड़ी हुई है और किसी भी अतिरिक्त सामग्री को लिंक किए गए CIDs की उपभोक्ता सारे अकाउंट का इतिहास और कंटेंट जान सकते हैं।

ऑब्जेक्ट को पहले किसी भी प्राप्त करने वाले सहकर्मी द्वारा मान्य किया जाता है, यदि सामग्री का हस्ताक्षर लेखक की सार्वजनिक कुंजी से मेल खाता है तो। असफल हस्ताक्षर सत्यापन के मामले में भेजने वाला सहकर्मी को प्रोटोकॉल का उल्लंघन करने के तहत वर्तमान नोड से हमेशा के लिए हटा दिया जाएगा। एक सफल हस्ताक्षर सत्यापन इस खाते द्वारा लिखित सामग्री में रुचि रखने वाले अन्य सभी साथियों के लिए सामग्री का प्रचार करता है।

जब ऐसा CID किसी सहकर्मी द्वारा प्राप्त किया जाता है, तो इसे लेखक के संचालन के लॉग में जोड़ा जाता है।  लेखक द्वारा किए गए सभी कार्यों का प्रोफ़ाइल की वर्तमान स्थिति को इकट्ठा करता है।

डिफ़ॉल्ट रूप से प्रत्येक नोड अपनी खाता सामग्री और उसके मित्र सामग्री को पिन और सीड करता है। ऐसे विशेष साथी हैं जिन्हें हम अपने बुनियादी ढांचे (infrastructure) के हिस्से के रूप में बना रहे हैं जिन्हें हम बीकन नोड्स कह रहे हैं और वे नियमित उपयोगकर्ता साथियों की तरह हैं, सिवाय इसके कि वे सभी की सामग्री में रुचि रखते हैं और सभी सामग्री के लिए एक सामाजिक-विशिष्ट आईपीएफएस पिनिंग सेवा के रूप में काम करते हैं।  यदि सभी वर्तमान सीड्रस ऑफ़लाइन हैं। उनके बारे मे  नोड्स की तरह सोचें जो सभी के मित्र हैं। नेटवर्क उनके बिना काम कर सकता है, लेकिन वे सामग्री उपलब्धता की एक अतिरिक्त परत प्रदान करते हैं।

पढ़ने के लिए उपलब्ध

सोलशियल p2p ओवरले पर हर कोई वेरी दे सकता है, IWANT और IHAVE बिट्सस्वैप संदेशों को खाते के शीर्ष-स्तरीय रूट इंडेक्स के CID के साथ /Social/सामग्री विषय पर प्रसारित करके किसी भी उपयोगकर्ता सामग्री को क्वेरी, डाउनलोड और प्रदान कर सकता है, और फिर सभी लिंक किए गए CID का पुनरावर्ती अनुरोध कर सकता है।

किसी खाते का शुरुआती समन्वयन, या खाते की सबसे हाल की प्रविष्टियां प्राप्त करना एक HEAD संदेश को /solcial/sync विषय पर प्रसारित करके प्राप्त किया जाता है, जहां अन्य साथी जो सीडर्स हैं (बीकन नोड्स के साथ) नवीनतम सामग्री के सीआईडी के साथ प्रतिक्रिया करते हैं जो वे जानते हैं । उपयोगकर्ता हैंडल और उपयोगकर्ता सार्वजनिक कुंजी के बीच अनुवाद सोलाना ब्लॉकचैन को क्वेरी करके किया जाता है।

पिछली एंट्री फ़ील्ड का उपयोग परस्पर विरोधी HEAD को हल करने और नई एंट्री पर निर्णय लेने के लिए किया जा सकता है।

लिखने के लिए।

एक खाता लॉग में लिखने में सक्षम होने के लिए उपयोगकर्ता के पास ED25519 कुंजीपेयर की निजी कुंजी होनी चाहिए जो उनकी खाता आईडी से मेल खाती है। उस कुंजी के होने से, उपयोगकर्ता एक एंट्री का एक वैध हस्ताक्षर उत्पन्न करने में सक्षम होता है जिसे वे लॉग में जोड़ रहे हैं जिसे नेटवर्क पर अन्य साथियों द्वारा अस्वीकार नहीं किया जाएगा।

विशेषाधिकार प्राप्त सामग्री।

उपयोगकर्ताओं द्वारा पोस्ट की गई कुछ सामग्री केवल प्राप्तकर्ताओं के कुछ समूह के लिए अभिप्रेत है, जैसे कि टियर-1 या टियर-2 सदस्यता फ़ीड। उन पदों को पहले सममित AES-256 एन्क्रिप्शन कुंजी का उपयोग करके एन्क्रिप्ट किया गया है। उस कुंजी का हैश मूल पोस्ट में सामग्री मेटाडेटा से जुड़ा हुआ है।

libp2p हैंडशेक के दौरान स्थापित NOISE एन्क्रिप्टेड चैनल पर योग्य साथियों के एक यादृच्छिक सबसेट के लिए कुंजी का प्रसार किया जाता है। पोस्ट लेखक सभी उपयोगकर्ताओं के लिए प्रक्रिया को पास लाने या जल्दी बनाने के लिए इस अच्छी योजना में बीकन नोड्स को भी भाग लेने की अनुमति देना चुन जा सकता है, लेकिन यदि वे मानते हैं कि उनकी सामग्री अति संवेदनशील है तो उन्हें ऐसा करने की आवश्यकता नहीं है। जब कोई योग्य उपयोगकर्ता सामग्री को समझना चाहता है तो वे एन्क्रिप्शन कुंजी के हैश के साथ /solcial/keyexchange ओवरले विषय पर एक GETKEY संदेश भेजते हैं।

जो ऑनलाइन हैं और जिन जिन के पास वह कुंजी है, ब्लॉकचैन को क्वेरी करके और यह सत्यापित करके कि उपयोगकर्ता सामग्री तक पहुंचने के लिए आवश्यक टोकन रखता है, उस कुंजी को प्राप्त करने के लिए सहकर्मी  किसी योग्य है जांच करेगे। एक सफल सत्यापन के बाद, गपशप प्रोटोकॉल को दरकिनार करने वाले प्रत्यक्ष त्वरित/शोर कनेक्शन का उपयोग करके अनुरोध करने वाले सहकर्मी को कुंजी प्रेषित की जाती है।

प्लेटफॉर्म का समर्थन।

सेंसरशिप रोकने वाली सामग्री के लिए यह पीयर टू पीयर प्रोटोकॉल केवल डेस्कटॉप और मोबाइल क्लाइंट के लिए उपलब्ध है और वेब इंटरफेस पर उपलब्ध नहीं है। यह ब्राउज़र की सीमाओं के कारण है। ब्राउज़र स्वाभाविक रूप से सर्वर पर होस्ट की गई सामग्री के उपभोक्ताओं के रूप में डिजाइन किए गए हैं और उनका सुरक्षा मॉडल अन्य मशीनों से यादृच्छिक कनेक्शन स्वीकार करने से मना करता है।

ब्राउज़र के काम करने के तरीके और ब्राउज़र टैब का जीवनकाल कम होने के कारण वेब संस्करण लगभग हमेशा केंद्रीकृत रहेगा, और वेब इंटरफेस के माध्यम से उत्पादित किसी भी सामग्री को बीकन नोड्स द्वारा p2p पर प्रतिबिंबित किया जाएगा। वेब क्लाइंट द्वारा उपभोग की गई कोई भी सामग्री p2p की एक कॉपी होगी। P2P सत्य का स्रोत है।

अंतर्निहित तकनीकी स्टैक को रस्ट, libp2p का उपयोग करके रिएक्ट नेटिव और टौरी के लिए बाइंडिंग के साथ कार्यान्वित (implemented) किया जाता है।

[1] लीताओ, जोआओ, जोस परेरा और लुइस रोड्रिग्स। "हाइपरव्यू": विश्वसनीय गपशप-आधारित प्रसारण के लिए एक सदस्यता प्रोटोकॉल।"

[2]

https://en.wikipedia.org/wiki/QUIC

[3]

https://libp2p.io/

[4]

https://www.google.com/intl/en/ipv6/statistics.html

[5]

https://docs.libp2p.io/concepts/circuit-relay/

[6]

https://datatracker.ietf.org/doc/html/rfc5766

[7]

https://docs.libp2p.io/reference/glossary/#multihash

[8] लीताओ, जोआओ, जोस परेरा और लुइस रोड्रिग्स।  "महामारी प्रसारण पेड़।" (Epidemic broadcast trees) 2007 विश्वसनीय वितरित प्रणालियों पर 26वीं आईईईई अंतर्राष्ट्रीय संगोष्ठी (एसआरडीएस 2007)। आईईईई, 2007।

[9]

https://docs.ipfs.io/concepts/bitswap/

[10]

https://github.com/ipld/ipld/blob/master/specs/codecs/dag-pb/spec.md

[11]

https://tauri.studio/

सोलशियल के बारे में।

सोलशियल एक विकेन्द्रीकृत सोशल नेटवर्क है जो उपयोगकर्ताओं को सेंसरशिप के डर के बिना लोगों को एक दूसरे के साथ बातचीत करने की अनुमति देकर वेब3 (web3) की शक्ति देता है, और कंटेंट क्रिएटर्स को  मार्केट प्राइस  पर उचित रूप से पुरस्कृत करता है।

सोलशियल के साथ जुड़े।

टेलीग्राम - https://t.me/solcial
ट्विटर - https://twitter.com/solcialofficial
डिस्कोर्ड- https://discord.com/invite/3EpaAbcRPp
ब्लॉग - https://blog.solcial.io/
वेबसाइट: https://solcial.io/
ईमेल - [email protected]
लिंक्ट्री - https://linktr.ee/solcial

You've successfully subscribed to Solcial Blog
Great! Next, complete checkout to get full access to all premium content.
Error! Could not sign up. invalid link.
Welcome back! You've successfully signed in.
Error! Could not sign in. Please try again.
Success! Your account is fully activated, you now have access to all content.
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.