پرش به مطلب اصلی

Bitsocial و Secure Scuttlebutt

Secure Scuttlebutt (SSB) یک پروتکل اجتماعی همتا به همتاست که Dominic Tarr در سال 2014 ساخت. Manyverse شناخته‌شده‌ترین اپ آن برای Android، iOS و دسکتاپ است؛ Patchwork پیش از بایگانی شدن، کلاینت اصلی دسکتاپ بود. در میان سیستم‌هایی که در این مستندات مقایسه شده‌اند، SSB از نظر روح و رویکرد نزدیک‌ترین سیستم به Bitsocial است: هیچ سروری در مسیر داده نیست، بلاک‌چینی در کار نیست، ترتیب سراسری وجود ندارد و هویت بر پایهٔ کلیدهای Ed25519 است. این دو دربارهٔ اینکه هر همتا چه چیزی ذخیره می‌کند و اسپم کجا متوقف می‌شود، انتخاب‌هایی متضاد کرده‌اند.

Scuttlebutt چگونه کار می‌کند​

  • فیدها. هر هویت یک جفت‌کلید Ed25519 است که به شکل @<public key>.ed25519 نوشته می‌شود. هر چیزی که کاربر منتشر می‌کند به فید خودش می‌رود؛ فید یک لاگ فقط‌افزودنی (append-only) است که در آن هر پیام امضاشده یک شمارهٔ ترتیبی و هش پیام قبلی را با خود دارد. طبق راهنمای پروتکل، پیام پس از انتشار قابل تغییر نیست.
  • تکثیر. همتاها کل فیدها را کپی می‌کنند، نه پست‌های تکی را، و گراف دنبال‌کردن تعیین می‌کند هر همتا کدام فیدها را نگه دارد. برای نمونه، Patchwork فیدهایی را که تا دو گام (hop) فاصله داشتند نمایش می‌داد و فیدهای تا سه گام فاصله را تکثیر می‌کرد. با درخت‌های پخش همه‌گیر (EBT)، همتاها آخرین شمارهٔ ترتیبی‌ای را که از هر فید دارند مقایسه می‌کنند و فقط آنچه را کم است می‌فرستند.
  • اتصال‌ها. همتاها با secret handshake احراز هویت می‌کنند و ترافیک را با box stream رمزگذاری می‌کنند. این handshake به یک شناسهٔ شبکه گره خورده است، پس همتاهای یک شبکهٔ SSB جداگانه با شناسهٔ متفاوت نمی‌توانند به شبکهٔ اصلی وصل شوند.
  • یافتن همتاها. همتاها با پخش همگانی UDP خود را در شبکهٔ محلی اعلام می‌کنند و از طریق LAN همگام‌سازی می‌کنند؛ Manyverse از طریق Bluetooth هم همگام‌سازی می‌کند. در بستر اینترنت، کاربران به pubs تکیه می‌کنند، یعنی همتاهای همیشه آنلاینی که پس از آنکه یک کد دعوت را به کار بردید شما را متقابلاً دنبال می‌کنند و سپس فید شما را ذخیره و ارائه می‌کنند، و نیز به rooms، که هیچ فیدی ذخیره نمی‌کنند اما اتصال‌های میان اعضایشان را تونل می‌کنند.
  • بلاب‌ها و پیام‌های خصوصی. تصاویر و دیگر فایل‌ها بلاب‌هایی (blobs) با آدرس‌دهی مبتنی بر محتوا هستند که از همتاها دریافت می‌شوند، و در پیاده‌سازی‌های کنونی سقف پیش‌فرض اندازهٔ آن‌ها 5 MB است. پیام‌های خصوصی برای حداکثر هفت گیرنده رمزگذاری می‌شوند و به صورت متن رمزشده در فید نویسنده منتشر می‌شوند.

تفاوت‌ها کجاست​

یک همتا چه چیزی ذخیره می‌کند​

یک همتای SSB از هر فید در محدودهٔ تکثیر خود، از نخستین پیام آن فید، یک نسخهٔ کامل نگه می‌دارد و آن فیدها را به دیگران ارائه می‌کند. همین است که به SSB امکان کار آفلاین می‌دهد، اما فضای ذخیره‌سازی با هر پیام در این محدوده بیشتر می‌شود، و یک نصب تازه باید پیش از آنکه چیز زیادی نشان دهد آن فیدها را دانلود کند. کلاینت Bitsocial آخرین وضعیت انجمن‌هایی را که باز می‌کند از گرهٔ انجمن و همتاهایی که آن را seed می‌کنند می‌گیرد، و شبکه فقط همان آخرین وضعیت را نگه می‌دارد. پروتکل همتا به همتا را ببینید.

حذف و دستگاه‌ها​

از آنجا که فید یک زنجیرهٔ هش است، SSB حذف در سطح کل شبکه ندارد: یک همتا می‌تواند پیام‌ها را از پایگاه دادهٔ خودش پاک کند، اما نمی‌تواند آن‌ها را از نسخه‌های همتاهای دیگر پس بگیرد. انتشار با یک کلید از دو دستگاه، یا از یک نسخهٔ پشتیبانِ بازیابی‌شده، فید را دوشاخه (fork) می‌کند، بنابراین راه‌حل معمول یک هویت برای هر دستگاه است. PZP، پروتکل جانشینی که تیم Manyverse ساخت، حذف، چند دستگاه برای هر حساب و فیدهای مقاوم در برابر دوشاخگی را جزو تغییرات اصلی خود نسبت به SSB برمی‌شمارد (پست معرفی). گرهٔ انجمن Bitsocial در هر به‌روزرسانی نسخهٔ تازه‌ای از وضعیت انجمن منتشر می‌کند، پس محتوایی که ناظرانش حذف می‌کنند از آخرین وضعیت بیرون می‌افتد.

صدای چه کسانی به شما می‌رسد​

محدودهٔ تکثیر SSB هم‌زمان نقش فیلتر اسپم را هم دارد. فید یک غریبه فقط وقتی به شما می‌رسد که کسی در محدودهٔ گام‌های شما او را دنبال کند، و مسدود کردن یک فید باعث می‌شود گرهٔ شما دیگر آن را تکثیر نکند. اسپم بیرون می‌ماند، اما تازه‌واردها هم تا وقتی کسی دنبالشان نکند بیرون می‌مانند. Bitsocial به هر کسی اجازه می‌دهد در یک انجمن منتشر کند، و گرهٔ انجمن از طریق چالشش تصمیم می‌گیرد که یک پست پذیرفته شود یا نه. چالش‌های ضد اسپم سفارشی را ببینید.

انجمن‌ها​

SSB شیء انجمن ندارد. کانال‌ها و هشتگ‌ها برچسب‌هایی روی پست‌های تکی‌اند، پاسخ‌های یک رشته در فیدهای کسانی قرار دارند که آن‌ها را نوشته‌اند، و اینکه چه مقدار از یک رشته را می‌بینید به این بستگی دارد که گرهٔ شما کدام‌یک از آن فیدها را دارد. rooms می‌توانند ناظر و فهرست اعضا داشته باشند، اما این‌ها تعیین می‌کنند چه کسی می‌تواند از طریق room وصل شود، نه اینکه چه چیزی منتشر شود. انجمن Bitsocial یک شیء درجه‌یک با جفت‌کلید، قواعد، ناظران و چالش خودش است.

زیرساخت​

هر دو سرورها را بیرون از مسیر داده نگه می‌دارند و هر دو به کمک‌رسان‌ها تکیه دارند. pubs نزدیک‌ترین چیزی هستند که SSB به یک سرویس میزبانی‌شده دارد: آن‌ها فیدهای همهٔ کسانی را که دنبال می‌کنند ذخیره و ارائه می‌کنند. rooms به روترهای HTTP در Bitsocial نزدیک‌ترند، چون هیچ‌کدام محتوا ذخیره نمی‌کنند، اما یک room اتصال میان اعضایش را رله می‌کند، در حالی که یک روتر فقط آدرس‌های ارائه‌دهندگان را برمی‌گرداند و هیچ نقشی در انتقال ندارد. گرهٔ انجمن Bitsocial نیز مانند یک همتای SSB روی سخت‌افزار معمولی اجرا می‌شود و برای پذیرفتن پست‌های تازه باید آنلاین باشد.

آفلاین و شبکه‌های محلی​

اینجا SSB قوی‌تر است. دو همتای SSB روی یک شبکهٔ Wi-Fi، یا از طریق Bluetooth در Manyverse، می‌توانند بدون اتصال اینترنت همگام‌سازی کنند، و هر چیزی که پیش‌تر تکثیر شده به صورت آفلاین خواندنی می‌ماند. هدف اصلی اعلام‌شدهٔ Manyverse این است که شبکه‌های اجتماعی را از اتصال اینترنت مستقل کند. Bitsocial برای یافتن همتاها و برای انتشار به اتصال اینترنت نیاز دارد.

مرورگر​

اپ‌های اصلی SSB یک گرهٔ کامل SSB را همراه خود دارند: Manyverse یکی را در اپ‌های موبایل و دسکتاپ خود جای داده است. ssb-browser-demo SSB را با تکثیر جزئی و اتصال از طریق rooms درون مرورگر اجرا می‌کرد و در سال 2022 بایگانی شد. اپ‌های Bitsocial یک گرهٔ همتا به همتا را در یک زبانهٔ معمولی مرورگر اجرا می‌کنند. همتا به همتا در مرورگر را ببینید.

پیام‌های خصوصی​

SSB پیام‌های خصوصی رمزگذاری‌شده را به‌صورت داخلی دارد. Bitsocial بر انجمن‌های عمومی تمرکز دارد و هنوز پیام مستقیم بومی ندارد.

وضعیت پروژه​

André Staltz، سازندهٔ Manyverse، در آوریل 2024 از SSB، Manyverse و جانشین برنامه‌ریزی‌شدهٔ آن‌ها کناره گرفت (آخرین به‌روزرسانی او). در ژوئیهٔ 2024، Jacob Karlsson آن جانشین را با نام PZP راه‌اندازی کرد و نوشت که دیگر روی Manyverse کار نخواهد کرد و کس دیگری را هم سراغ ندارد که چنین برنامه‌ای داشته باشد. در اکتبر 2026، مخزن‌های PZP در Codeberg پس از دسامبر 2024 هیچ به‌روزرسانی‌ای نداشتند. مخزن Patchwork با v3.18.1 به‌عنوان آخرین نسخه بایگانی شده است، و تیم سازندهٔ Planetary، یک اپ SSB برای iOS، در سال 2023 با اپ Nos خود به Nostr کوچ کرد. شبکهٔ SSB همچنان روی آن دسته از همتاها و pubs که مردم آنلاین نگه می‌دارند کار می‌کند، اما اپ‌های اصلی آن دیگر توسعه داده نمی‌شوند.

مقایسه​

پرسشSecure ScuttlebuttBitsocial
دستهپروتکل gossip همتا به همتاشبکهٔ انجمنی همتا به همتا
هویتیک جفت‌کلید Ed25519 برای هر دستگاهجفت‌کلیدهای Ed25519 برای کاربران و انجمن‌ها
پست‌ها کجا نگهداری می‌شوندفید فقط‌افزودنی نویسنده، که هر همتایی که آن را تکثیر کند از آن نسخه برمی‌داردگرهٔ مالک انجمن و همتاهایی که آن را می‌خوانند و seed می‌کنند
یک همتا چه چیزی نگه می‌داردتاریخچهٔ کامل هر فید در محدودهٔ دنبال‌کردن خودآخرین وضعیت انجمن‌هایی که می‌خواند یا seed می‌کند
انجمن‌هاشیء انجمن ندارد؛ کانال‌ها و هشتگ‌ها روی پست‌ها برچسب می‌زننداشیای درجه‌یک که گره‌شان پست‌ها را می‌پذیرد یا رد می‌کند
مهار اسپممحدودهٔ تکثیر بر اساس گراف دنبال‌کردن، و مسدودسازی‌هاچالش هر انجمن پیش از پذیرفته شدن یک پست
نظارت بر محتوادنبال‌کردن‌ها و مسدودسازی‌های هر کاربرمالکان انجمن بر انجمن خود نظارت می‌کنند؛ اپ‌ها انتخاب می‌کنند چه چیزی را نشان دهند
سرورهای کمکیpubs فیدها را ذخیره و ارائه می‌کنند؛ rooms اتصال‌ها را تونل می‌کنندروترهای HTTP همتاهای ارائه‌دهنده را برمی‌گردانند و هیچ محتوایی ذخیره نمی‌کنند
آفلاینهمگام‌سازی از طریق LAN و Bluetooth بدون اینترنتبه اتصال اینترنت نیاز دارد
مرورگراپ‌ها یک گرهٔ کامل SSB را همراه دارندگرهٔ همتا به همتا درون یک زبانهٔ معمولی مرورگر
شبکهدر حال کار، اما اپ‌های اصلی‌اش دیگر توسعه داده نمی‌شوندشبکهٔ فعال با اپ‌هایی مانند 5chan و Seedit
معاوضهٔ اصلیآفلاین کار می‌کند و به میزبانی نیاز ندارد، اما فیدها بی‌پایان رشد می‌کنند و غریبه‌ها نامرئی می‌مانندانتشار باز و پشتیبانی از مرورگر، اما به اینترنت نیاز دارد و فقط آخرین وضعیت را نگه می‌دارد