Bitsocial และ Secure Scuttlebutt
Secure Scuttlebutt (SSB) คือโปรโตคอลโซเชียลแบบเพียร์ทูเพียร์ที่ Dominic Tarr สร้างขึ้นในปี 2014 Manyverse คือแอปที่เป็นที่รู้จักมากที่สุดของ SSB มีให้ใช้บน Android, iOS และเดสก์ท็อป ส่วน Patchwork เคยเป็นไคลเอนต์เดสก์ท็อปหลักก่อนจะถูกเก็บถาวร ในบรรดาระบบที่เปรียบเทียบไว้ในเอกสารชุดนี้ SSB มีแนวคิดใกล้เคียงกับ Bitsocial มากที่สุด คือไม่มีเซิร์ฟเวอร์ในเส้นทางข้อมูล ไม่มีบล็อกเชน ไม่มีลำดับระดับโลก และใช้กุญแจ Ed25519 เป็นตัวตน แต่ทั้งสองเลือกทางตรงข้ามกันในเรื่องที่ว่าเพียร์แต่ละตัวจัดเก็บอะไร และสแปมถูกหยุดไว้ที่จุดใด
Scuttlebutt ทำงานอย่างไร
- ฟีด ตัวตนแต่ละตัวคือคู่กุญแจ Ed25519 ซึ่งเขียนในรูป
@<public key>.ed25519ทุกสิ่งที่ผู้ใช้เผยแพร่จะเข้าไปอยู่ในฟีดของผู้ใช้คนนั้นเอง ฟีดคือล็อกแบบเพิ่มต่อท้ายได้อย่างเดียว (append-only) ซึ่งข้อความที่ลงลายเซ็นแต่ละข้อความจะมีเลขลำดับและแฮชของข้อความก่อนหน้า ตาม คู่มือโปรโตคอล เมื่อโพสต์ข้อความไปแล้วจะแก้ไขไม่ได้ - การทำสำเนา เพียร์คัดลอกฟีดทั้งฟีด ไม่ใช่โพสต์ทีละโพสต์ และกราฟการติดตามเป็นตัวกำหนดว่าเพียร์จะเก็บฟีดใดไว้ ตัวอย่างเช่น Patchwork แสดงฟีดที่อยู่ห่างออกไปไม่เกินสองฮอป และทำสำเนาฟีดที่อยู่ห่างออกไปไม่เกินสามฮอป เมื่อใช้ epidemic broadcast trees (EBT) เพียร์จะเปรียบเทียบเลขลำดับล่าสุดที่ตนมีของแต่ละฟีด แล้วส่งเฉพาะส่วนที่ขาดไป
- การเชื่อมต่อ เพียร์ยืนยันตัวตนกันด้วย secret handshake และเข้ารหัสทราฟฟิกด้วย box stream แฮนด์เชกนี้ผูกกับตัวระบุเครือข่าย เพียร์ในเครือข่าย SSB แยกต่างหากที่ใช้ตัวระบุต่างกันจึงเชื่อมต่อกับเครือข่ายหลักไม่ได้
- การหาเพียร์ เพียร์ประกาศตัวเองในเครือข่ายท้องถิ่นผ่าน UDP broadcast และซิงก์ผ่าน LAN ส่วน Manyverse ซิงก์ผ่าน Bluetooth ได้ด้วย สำหรับการเชื่อมต่อข้ามอินเทอร์เน็ต ผู้ใช้พึ่งพา pubs ซึ่งเป็นเพียร์ที่ออนไลน์ตลอดเวลา คอยติดตามคุณกลับหลังจากคุณใช้โค้ดเชิญ แล้วจัดเก็บและให้บริการฟีดของคุณ และพึ่งพา rooms ซึ่งไม่จัดเก็บฟีดใดเลย แต่ทำอุโมงค์ส่งต่อการเชื่อมต่อระหว่างสมาชิกของตน
- บล็อบและข้อความส่วนตัว รูปภาพและไฟล์อื่น ๆ เป็นบล็อบที่อ้างอิงตามเนื้อหา (content-addressed) ซึ่งดึงมาจากเพียร์ โดยมีขนาดจำกัดเริ่มต้นที่ 5 MB ในอิมพลีเมนเทชันปัจจุบัน ข้อความส่วนตัวถูกเข้ารหัสสำหรับผู้รับได้สูงสุดเจ็ดคน และเผยแพร่เป็นข้อความเข้ารหัสในฟีดของผู้เขียน
จุดที่ต่างกัน
เพียร์จัดเก็บอะไร
เพียร์ SSB เก็บสำเนาเต็มของทุกฟีดในขอบเขตการทำสำเนาของตน ตั้งแต่ข้อความแรกของแต่ละฟีด และให้บริการฟีดเหล่านั้นแก่ผู้อื่น นี่คือสิ่งที่ทำให้ SSB ทำงานแบบออฟไลน์ได้ แต่พื้นที่จัดเก็บจะเพิ่มขึ้นตามทุกข้อความในขอบเขต และการติดตั้งใหม่ต้องดาวน์โหลดฟีดเหล่านั้นก่อนจึงจะแสดงอะไรได้มากนัก ไคลเอนต์ Bitsocial ดึงสถานะล่าสุดของชุมชนที่ตนเปิดจากโหนดของชุมชนและจากเพียร์ที่ซีดชุมชนนั้น และเครือข่ายเก็บไว้เฉพาะสถานะล่าสุดนั้น ดู โปรโตคอลเพียร์ทูเพียร์
การลบและอุปกรณ์
เนื่องจากฟีดคือห่วงโซ่แฮช SSB จึงไม่มีการลบที่มีผลทั้งเครือข่าย เพียร์ลบข้อความออกจากฐานข้อมูลของตนเองได้ แต่ดึงข้อความเหล่านั้นกลับคืนจากสำเนาของเพียร์อื่นไม่ได้ การโพสต์ด้วยกุญแจเดียวกันจากสองอุปกรณ์ หรือจากข้อมูลสำรองที่กู้คืนมา จะทำให้ฟีดแตกแขนง (fork) วิธีที่ใช้กันทั่วไปจึงเป็นการใช้หนึ่งตัวตนต่อหนึ่งอุปกรณ์ PZP ซึ่งเป็นโปรโตคอลที่ทีม Manyverse พัฒนาขึ้นเพื่อสืบทอดต่อจาก SSB ระบุว่าการลบ การใช้หลายอุปกรณ์ต่อบัญชี และฟีดที่ทนต่อการแตกแขนง เป็นความเปลี่ยนแปลงหลักจาก SSB (โพสต์เปิดตัว) โหนดชุมชนของ Bitsocial เผยแพร่สถานะของชุมชนเวอร์ชันใหม่ทุกครั้งที่มีการอัปเดต เนื้อหาที่ผู้ดูแลชุมชนลบออกจึงหายไปจากสถานะล่าสุด
คุณได้ยินจากใครได้บ้าง
ขอบเขตการทำสำเนาของ SSB ทำหน้าที่เป็นตัวกรองสแปมไปในตัว ฟีดของคนแปลกหน้าจะมาถึงคุณได้ก็ต่อเมื่อมีใครสักคนในระยะฮอปของคุณติดตามเขา และการบล็อกฟีดจะทำให้โหนดของคุณหยุดทำสำเนาฟีดนั้น สแปมจึงเข้ามาไม่ได้ แต่ผู้มาใหม่ก็เข้ามาไม่ได้เช่นกันจนกว่าจะมีคนติดตามพวกเขา Bitsocial ให้ใครก็ได้เผยแพร่ไปยังชุมชน และโหนดของชุมชนเป็นผู้ตัดสินผ่านชาเลนจ์ของตนว่าจะยอมรับโพสต์หรือไม่ ดู ความท้าทายในการต่อต้านสแปมแบบกำหนดเอง
ชุมชน
SSB ไม่มีออบเจ็กต์ชุมชน แชนเนลและแฮชแท็กเป็นเพียงป้ายกำกับบนโพสต์แต่ละโพสต์ การตอบกลับในเธรดอยู่ในฟีดของผู้ที่เขียนการตอบกลับเหล่านั้น และคุณจะเห็นเธรดได้มากเพียงใดขึ้นอยู่กับว่าโหนดของคุณมีฟีดใดบ้างในบรรดาฟีดเหล่านั้น Rooms มีผู้ดูแลและรายชื่อสมาชิกได้ แต่ควบคุมเพียงว่าใครเชื่อมต่อผ่าน room ได้ ไม่ใช่ว่าอะไรถูกเผยแพร่ ชุมชนของ Bitsocial เป็นออบเจ็กต์ระดับพื้นฐานที่มีคู่กุญแจ กฎ ผู้ดูแล และชาเลนจ์ของตัวเอง
โครงสร้างพื้นฐาน
ทั้งสองระบบกันเซิร์ฟเวอร์ออกจากเส้นทางข้อมูล และทั้งสองก็พึ่งพาตัวช่วย Pubs คือสิ่งที่ใกล้เคียงกับบริการแบบโฮสต์มากที่สุดใน SSB เพราะ pubs จัดเก็บและให้บริการฟีดของทุกคนที่ตนติดตาม 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 ถอยออกจาก SSB, Manyverse และโปรโตคอลรุ่นถัดไปที่วางแผนไว้ในเดือนเมษายน 2024 (อัปเดตครั้งสุดท้ายของเขา) ในเดือนกรกฎาคม 2024 Jacob Karlsson เปิดตัวโปรโตคอลรุ่นถัดไปนั้นในชื่อ PZP และเขียนว่าเขาจะไม่ทำงานกับ Manyverse อีกต่อไป และไม่รู้ว่ามีใครอื่นวางแผนจะทำต่อ ในเดือนตุลาคม 2026 รีโพซิทอรีของ PZP บน Codeberg ไม่มีการอัปเดตเลยหลังเดือนธันวาคม 2024 รีโพซิทอรีของ Patchwork ถูกเก็บถาวรโดยมี v3.18.1 เป็นรุ่นสุดท้าย และทีมที่อยู่เบื้องหลัง Planetary ซึ่งเป็นแอป SSB สำหรับ iOS ได้ย้ายไปยัง Nostr พร้อมแอป Nos ของตนในปี 2023 เครือข่าย SSB ยังคงทำงานอยู่บนเพียร์และ pubs ที่ผู้คนเปิดออนไลน์ไว้ แต่แอปหลักของมันไม่ได้รับการพัฒนาอีกต่อไป
การเปรียบเทียบ
| คำถาม | Secure Scuttlebutt | Bitsocial |
|---|---|---|
| ประเภท | โปรโตคอล gossip แบบเพียร์ทูเพียร์ | เครือข่ายชุมชนแบบเพียร์ทูเพียร์ |
| ตัวตน | คู่กุญแจ Ed25519 หนึ่งคู่ต่อหนึ่งอุปกรณ์ | คู่กุญแจ Ed25519 สำหรับผู้ใช้และชุมชน |
| โพสต์อยู่ที่ไหน | ฟีดแบบเพิ่มต่อท้ายอย่างเดียวของผู้เขียน ซึ่งถูกคัดลอกโดยทุกเพียร์ที่ทำสำเนาฟีดนั้น | โหนดของเจ้าของชุมชน และเพียร์ที่อ่านและซีดชุมชนนั้น |
| เพียร์เก็บอะไรไว้ | ประวัติทั้งหมดของทุกฟีดในขอบเขตการติดตามของตน | สถานะล่าสุดของชุมชนที่ตนอ่านหรือซีด |
| ชุมชน | ไม่มีออบเจ็กต์ชุมชน แชนเนลและแฮชแท็กเป็นป้ายกำกับของโพสต์ | ออบเจ็กต์ระดับพื้นฐานที่มีโหนดของตัวเองคอยยอมรับหรือปฏิเสธโพสต์ |
| การควบคุมสแปม | ขอบเขตการทำสำเนาตามกราฟการติดตาม และการบล็อก | ชาเลนจ์ของแต่ละชุมชนก่อนที่โพสต์จะถูกยอมรับ |
| การกลั่นกรอง | การติดตามและการบล็อกของผู้ใช้แต่ละคน | เจ้าของชุมชนกลั่นกรองชุมชนของตน ส่วนแอปเลือกเองว่าจะแสดงอะไร |
| เซิร์ฟเวอร์ตัวช่วย | Pubs จัดเก็บและให้บริการฟีด ส่วน rooms ทำอุโมงค์ส่งต่อการเชื่อมต่อ | เราเตอร์ HTTP ส่งคืนเพียร์ผู้ให้บริการและไม่จัดเก็บเนื้อหา |
| ออฟไลน์ | ซิงก์ผ่าน LAN และ Bluetooth โดยไม่ต้องใช้อินเทอร์เน็ต | ต้องใช้การเชื่อมต่ออินเทอร์เน็ต |
| เบราว์เซอร์ | แอปรวมโหนด SSB เต็มรูปแบบไว้ในตัว | โหนดเพียร์ทูเพียร์ภายในแท็บเบราว์เซอร์ปกติ |
| เครือข่าย | ยังทำงานอยู่ แต่แอปหลักไม่ได้รับการพัฒนาอีกต่อไป | เครือข่ายที่ใช้งานจริงพร้อมแอปอย่าง 5chan และ Seedit |
| ข้อแลกเปลี่ยนหลัก | ทำงานแบบออฟไลน์ได้และไม่ต้องมีโฮสติ้ง แต่ฟีดเติบโตไปเรื่อย ๆ ไม่สิ้นสุด และคนแปลกหน้ายังคงมองไม่เห็น | เผยแพร่ได้อย่างเปิดกว้างและรองรับเบราว์เซอร์ แต่ต้องใช้อินเทอร์เน็ตและเก็บไว้เฉพาะสถานะล่าสุด |