DISTRIBUTED SOSYAL AĞ

WEB ÖLÇEKLİ SOSYAL PEER-TO-PEER PROTOKOLÜ

SOSYAL MÜHENDİSLİK


TLDR:

  • Solcial, Web3 teknolojilerinden yararlanırken, kullanıcılara Web2 sosyal medya platformlarına mümkün olduğunca yakın bir deneyim sağlamak için inşa ediliyor.
  • Herhangi bir blockchain tabanlı platformun karşılaştığı bir engel, kullanıcı ücretleridir. Gizlilik ve fikir birliğini korurken tokenle ilgili olmayan işlemler için kullanıcı fee’lerini ortadan kaldırmak için Solcial, Solana’da yerleşik ve libp2p’nin üzerine kurulmuş bir peer-to-peer (P2P) katman oluşturuyor. self-hosting ve peer çoğaltma yoluyla.
  • Ayrıca, tipik bir masaüstü veya mobil uygulamayla aynı harici protokole sahip olan ve Beacon Nodes adı verilen on binlerce eşzamanlı eşle başa çıkmak için tasarlanmış ek optimizasyonlara sahip özel bir düğüm türü de geliştirdik . İşaretçiler, esasen, içerik oluşturucular çevrimdışı olduğunda kullanıcıların içeriğini koruyacak ve diğer kullanıcılar için kullanılabilir hale getirecek bir dizi sabitleme hizmetidir; tüm kullanıcı içeriği IPFS’de depolanır ve sansürlenebilir sunuculara veya ağ geçitlerine dayanmadan bir P2P katmanı üzerinden erişilir.

Tanıtım

TSolcial protokolünün iç işleyişinin, makul veri alışverişi performansını korurken, ona benzersiz sansür direnci özelliklerini nasıl verdiğini açıklayan bir dizi notun ilk gönderisidir.

Ağ topolojisi

Düğümler, HyparView¹ protokolünün değiştirilmiş bir sürümünü kullanarak Solcial’a özel bir yer paylaşımlı ağ oluşturarak genel internet üzerinden iletişim kurar.

Her düğüm , Log2 (N)+1 boyutunda aktif eşlerin bir listesini tutar; burada N , tüm ağın tahmini boyutudur. N değeri, bugüne kadar kayıtlı kullanıcı hesaplarının sayısı bulunarak blok zincirinden çekilir ve kullanıcı sayısı arttıkça periyodik olarak güncellenir. Aktif eşlerle bağlantılar istikrarlı, çift yönlü ve kalıcıdır ve bunlar dedikodu veya herhangi bir diğer p2p etkinliği sırasında doğrudan iletişim kurdukları düğümlerdir. Her düğüm ayrıca , aktif eşlerden herhangi birinin bağlantısının kesilmesi veya yanıt vermemesi durumunda yedek eşler olarak kullanılan 6*(Log2(N) + 1) boyutunda bir pasif peers listesi tutar. Aktif peer’lar arasındaki bağlantılar için temel protokol QUIC ²’dir .NOISE şifrelemeli, tümü libp2p ³ tarafından desteklenmektedir .

NAT geçişi, eşin ağ koşullarına bağlı olarak kullanılan üç yöntem kullanılarak elde edilir. İlk yöntem, mümkün olduğunda IPv4 yerine IPv6 kullanmaktır, çünkü bu durumda NAT’lara gerek yoktur, ancak istatistiklere göre internetin sadece %40'ından azı IPv6 üzerindedir .

Geri dönüş mekanizması, ağdaki diğer düğümlere makinemizin görünür adresini soran libp2p kimlik protokolünü kullanarak AutoNAT kullanmaktır. Bir NAT’ın arkasındaki eş tarafından başlatılan bu adres, yönlendiricileri ile hedef makineye zaten kayıtlıdır, ancak bunun çalışmadığı durumlar vardır, o zaman üçüncü ve en güvenilir ancak pahalı seçeneğe geri döneriz.

Üçüncü seçenek, paketleri NAT’ların arkasındaki iki peer arasında aktaran bir ara düğüme sahip olarak bir TURN protokolünün çalışmalarını taklit eden libp2p devre rölesi ⁵ protokolünü kullanmaktır. Bu rol, işaretçi düğümleri ve yapılandırılmış sınırlara sahip role olmayı seçen genel IP’lere sahip bazı peer’lar tarafından üstlenilebilir. Bu gönderide daha sonra işaret düğümleri hakkında daha fazla bilgi.

Peer Kimliği

Peer’lar , Solcial on-chain sözleşmesine kayıtlı Solana’daki cüzdan adreslerinin ortak anahtarına eşit olan bir multihash biçimindeki ortak anahtarları kullanılarak tanımlanır . Belirli bir ortak eş kimliğini varsaymanın tek yolu, bir ED25519 anahtar çiftinin gizli anahtarına sahip olmaktır.

Bu anahtar çifti aynı zamanda eşler arasında geçen tüm mesajlar için şifreli kanallar oluşturmak ve ayrıca muhtemelen cüzdan sahibi tarafından üretilen mesajların gerçekliğini doğrulamak için kullanılır.

Yer paylaşımı üyeliği

Ortak anahtarları zincirde kayıtlı olmayan peer’ların HyparView ağ katmanına katılmasına izin verilmeyecek ve bu sayede Solcial eşler arası ağdan otomatik olarak dışlanacaktır.

Solcial p2p’ye katılmak isteyen tüm peer’lar, /solcial/public konusundaki önyükleme düğümlerinden birine (bu önyükleme düğümlerinden bazıları aynı zamanda işaret düğümleridir) bir JOIN mesajı gönderecektir . Konuların HyparView’a girişi, orijinal belgede yaptığımız değişikliklerden biridir.

Bir eşten JOIN isteği alan herhangi bir düğüm, önce çoklu hash’in zincirde var olduğunu ve bir Solcial hesabıyla ilişkili olduğunu doğrulayacak, ardından aktif peer’lardan birine aktif rastgele yürüyüş 3'e ayarlanmış bir FORWARDJOIN mesajı gönderecektir. turn, bu mesajı tüm aktif eşlerine yayacak ve 3 sekmeye ulaşana kadar mevcut sekme sayısını bir artıracaktır. Bu, önyükleme düğümlerine yönelik DDoS saldırılarının hafifletilmesinin yanı sıra, düğümler arasındaki bağlantıyı mümkün olduğunca dağıtmak ve rastgele dağıtmak için etkili bir ademi merkeziyetçilik tekniğidir.

İlk JOIN alıcısının 3 atlama noktası içindeki herhangi bir düğüm, aralarında aktif bir kalıcı bağlantı kuran ilk JOIN istek sahibine bir KOMŞU mesajı gönderir.

Her 15 saniyede bir düğümler, aktif ve pasif peer’lardan rastgele bir örnekle rastgele bir aktif peer’a bir SHUFFLE mesajı yayınlayacak ve bu mesajın rastgele yürüyüş uzunluğunu 4'e ayarlayacaktır.Bu, ağdaki tüm peer’ların, aktif peer’larından herhangi biri yanıt vermediğinde veya açıkça bağlantısı kesildiğinde, ağ onarımı amacıyla pasif görünümlerinde saklayabilecekleri diğer peer’lar hakkında her zaman yeni bilgilere sahip olmalarını sağlar.

Efficient Gossiping

Peer’lar arasında mesaj dağıtımına yalnızca aktif peer’lar katılır. Aktif peer’lar, genel internet üzerinden bir bindirmeli ağ oluşturur ve düğümler arasındaki bağlantı grafiğinde döngüler vardır. Ağdaki peer’lar arasında mesajların verimli bir şekilde dedikodusunu sağlamak için önce eşler arasında yinelenen mesaj yayılımını en aza indirmemiz ve ikinci olarak mesajlar için en uygun yolu bulmamız gerekir.

Bu, peer’ları bir grup istekli push düğümü ve tembel push düğümü olarak bölerek, eşler arasında minimum yayılan ağaç oluşturan Epidemic Broadcast Trees ⁸ algoritması kullanılarak elde edilir. Eager-push düğümleri, mesajları her zaman herhangi bir düğüm tarafından alınır alınmaz iletilir.

Lazy push düğümleri, her 500 ms’de bir, geçerli düğüm tarafından görülen bir grup mesaj kimliği alır. Bir düğüm, lazy push toplu işleminde yukarı akış üst düğümünden alınmayan bir ileti kimliği olduğunu gözlemlediğinde, bağlantıyı yeniden oluşturur (GRAFT) ve etkin itme durumunu geri yükler. Bu, düğümlerden birinin çökmesi ve ayrık grafikler oluşması durumunda minimum kapsayan ağaç onarım mekanizmasını oluşturur. GRAFT mesajları, tam ağ bağlantısını geri yükler.

Alınan bir mesajın aktif bir düğümden daha önce alınan bir mesajın kopyası olduğu tespit edildiğinde, o düğüme olan bağlantı grafikte bir döngü olarak kabul edilir ve bir PRUNE mesajı gönderilerek Tembel-Push’a dönüştürülür.

Aktif bir bağlantıyı budamak ve Lazy listeden biriyle değiştirmek için başka bir durum, tembel bir düğüm aracılığıyla bize ulaşmak için bir mesajın kat ettiği atlama sayısının, istekli aktif peer’dan gelen bir mesajdan 4 atlamadan daha az olduğunu gözlemlememizdir. Bu, broadcast tree optimizasyon algoritmasını oluşturur.

İçeriğin Yayılması

Önceki bölümlerde açıklanan p2p protokolü aracılığıyla Gossiping yapılan mesajlar, Solcial kullanıcıları tarafından üretilen içeriğin CID’lerine sahip IPFS Bitswap ⁹ mesajlarıdır. Solcial’da Bitswap ve IPFS’nin nasıl kullanıldığını daha iyi anlamak için önce bir kullanıcı profilinin yapısını tanımlayalım.

Ağdaki her kullanıcı hesabında profil dizini adı verilen bir şey vardır . Bu dizin, içeriklerinin en son sürümlerinin müşteri kimliklerini gösterir. Endeks, hesap tarafından gerçekleştirilen işlemlerin değişmez bir günlüğünü oluşturan bir Nihai Tutarlı Sıra CRDT’sidir.

Profil dizini, her öğenin önceki öğenin CID’sine işaret ettiği ve yalnızca hesap sahibinin özel anahtarı tarafından imzalanmışsa, sıradaki bir sonraki öğe olarak eşler tarafından kabul edildiği bağlantılı bir liste olarak düşünülebilir. Bu biçimde kodlanmış olarak gönderilen bir profil akışının üst düzey mantıklı bir örneği şuna benzer:{
"yazar": "12D3KooWSoeYKbpkb5UoL2T5eiomWRHdxR9cPC4tk11gKU89fFwT",
"önceki": "QmYtUc4iTCbbfVSDNKvtQqrfyezPPnFvE33wFmutw9PBBk",
"Zaman Besleme Zamanı", "Ztppend 9PBBk", "-m- p", " 15": "-m-
p" " ”: “QmV8cfu6n4NT5xRr2AHdKxFMTZEJrA44qgrBCr739BN9Wb” “enckey”: “z2DhMLJmV8kNQm6zeWUrXQKtmzoh6YkKHSRxVSibscDQ7nq”CHSRxVSibscDQ7nq” }, “LQR”NPY } , “LQ”p”

Bunun gibi bir girişin kendi CID’si vardır ve /solcial/content HyparView yer paylaşımı konusuna IPFS PB-DAG ¹⁰ nesnesi olarak yayınlanır. Bu giriş, önceki girişiyle bağlantılıdır ve herhangi bir ek içerik, bağlantılı CID’leri tekrar tekrar sorgulayarak kullanıcılar tüm hesap geçmişine ve içeriğine ulaşabilir.

Bu nesne, içeriğin imzası yazarın açık anahtarıyla eşleşiyorsa, ilk olarak herhangi bir alıcı eş tarafından doğrulanır. Başarısız bir imza doğrulaması durumunda, gönderen eş, protokolü ihlal ettiği için mevcut düğümden kalıcı olarak yasaklanır. Başarılı bir imza doğrulaması, içeriği bu hesap tarafından yazılan içerikle ilgilenen diğer tüm eşlere yayar.

Bir eş tarafından böyle bir Müşteri Kimliği alındığında, yazarın işlem günlüğüne eklenir. Yazar tarafından gerçekleştirilen tüm işlemlerin toplamı, profilin mevcut durumunu oluşturmaktadır.

Varsayılan olarak, her düğüm kendi hesap içeriğini ve arkadaşlarının içeriğini sabitler ve tohumlar. Altyapımızın bir parçası olarak inşa ettiğimiz ve işaret düğümleri olarak adlandırdığımız özel eşler var ve bunlar, herkesin içeriğiyle ilgilenmeleri ve tüm içerik için bir tür Sosyal-özel IPFS sabitleme hizmeti olarak hizmet etmeleri dışında, normal kullanıcı eşleri gibidirler. mevcut tüm ekme makinelerinin çevrimdışı olması durumunda. Onları herkesin arkadaşı olan düğümler olarak düşünün. Ağ onlarsız çalışabilir, ancak ekstra bir içerik kullanılabilirliği katmanı sağlarlar.

Okuma Erişimi

Solcial p2p yer paylaşımındaki herkes, IWANT ve IHAVE Bitswap mesajlarını hesabın üst düzey kök dizininin CID’si ile /solcial/content konusuna yayınlayarak herhangi bir kullanıcı içeriğini sorgulayabilir, indirebilir ve sağlayabilir ve ardından tüm bağlantılı CID’leri tekrar tekrar talep edebilir.

Bir hesabın ilk senkronizasyonu veya hesabın en son girişlerini alma, /solcial/sync konusuna bir HEAD mesajı yayınlayarak gerçekleştirilir; burada, ekici olan diğer eşler (işaret düğümleri dahil), bildikleri en son içeriğin CID’si ile yanıt verir. nın-nin. Kullanıcı tanıtıcıları ve kullanıcı genel anahtarları arasındaki çeviri, Solana blok zincirini sorgulayarak yapılır.

Önceki giriş alanı, çakışan HEAD’leri çözmek ve en son girişe karar vermek için kullanılabilir.

Yazma Erişimi

Bir hesap günlüğüne yazabilmek için kullanıcının, hesap kimliğine karşılık gelen ED25519 anahtar çiftinin özel anahtarına sahip olması gerekir. Kullanıcı, bu anahtara sahip olarak, günlüğe ekledikleri ve ağdaki diğer eşler tarafından reddedilmeyecek bir girişin geçerli bir imzasını oluşturabilir.

Ayrıcalıklı İçerik Erişimi

Kullanıcılar tarafından yayınlanan bazı içerikler, yalnızca Katman-1 veya Katman-2 abonelik beslemeleri gibi belirli bir alıcı grubuna yöneliktir. Bu gönderiler önce simetrik bir AES-256 şifreleme anahtarı kullanılarak şifrelenir. Bu anahtarın karması, orijinal gönderideki içerik meta verilerine eklenir.

Anahtar, libp2p anlaşması sırasında oluşturulan NOISE şifreli kanal üzerinden uygun eşlerin rastgele bir alt kümesine dağıtılır. Gönderi yazarı, süreci tüm kullanıcılar için neredeyse anında yapmak için işaret düğümlerinin de bu anahtar değişim şemasına katılmasına izin vermeyi seçebilir, ancak içeriklerinin süper hassas olduğuna inanıyorlarsa buna mecbur değildirler. Uygun bir kullanıcı içeriği deşifre etmek istediğinde, /solcial/keyexchange bindirme konusuna şifreleme anahtarının karması ile bir GETKEY mesajı gönderir.

Bu anahtara sahip olan ve çevrimiçi olan tüm eşler, blok zincirini sorgulayarak ve kullanıcının içeriğe erişmek için gerekli belirteçlere sahip olup olmadığını doğrulayarak eşin bu anahtarı almak için uygunluğunu kontrol edecektir. Başarılı bir doğrulamadan sonra anahtar, dedikodu protokolünü atlayan doğrudan bir hızlı/gürültü bağlantısı kullanılarak istekte bulunan peer’a iletilir.

Platform desteği

Sansüre dayanıklı içerik için bu eşler arası protokol yalnızca masaüstü ve mobil istemciler için kullanılabilir ve web arabirimi üzerinden kullanılamaz. Bunun nedeni tarayıcı sınırlamalarıdır. Tarayıcılar, doğası gereği, sunucularda barındırılan içeriğin tüketicileri olarak tasarlanmıştır ve güvenlik modelleri, diğer makinelerden rastgele bağlantıların kabul edilmesini yasaklar.

Temel teknik yığın, React Native ve Tauri ¹¹ ile bağlantılarla Rust, libp2p kullanılarak uygulanır .

[1] Leitao, Joao, José Pereira ve Luis Rodrigues. “ HyParView : Güvenilir gossiping tabanlı yayın için bir üyelik protokolü.”
[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] Leitao, Joao, Jose Pereira ve Luis Rodrigues. “ Epidemic broadcast. 2007 26. IEEE Uluslararası Güvenilir Dağıtılmış Sistemler Sempozyumu (SRDS 2007) . IEEE, 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/


Solcial Hakkında

Solcial, Solana’da, kullanıcıların sansürden korkmadan birbirleriyle etkileşime girmelerine ve içerik oluşturucuların herhangi bir aracı olmadan piyasa değerinde adil bir şekilde ödüllendirilmelerine olanak tanıyan merkezi olmayan bir sosyal ağ kuruyor.

Bize Katılın

Telegram: https://t.me/solcial
Discord: https://discord.gg/3EpaAbcRPp
Twitter: https://twitter.com/solcialofficial
Blog: https://blog.solcial.io/
Web: https://solcial.io
Email: [email protected]

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.