paint-brush
Giới thiệu ngắn gọn về Hoạt độngPub: Tương lai của Mạng xã hộitừ tác giả@thebojda
8,139 lượt đọc
8,139 lượt đọc

Giới thiệu ngắn gọn về Hoạt độngPub: Tương lai của Mạng xã hội

từ tác giả Laszlo Fazekas10m2023/10/07
Read on Terminal Reader

dài quá đọc không nổi

Hoạt độngPub là một giao thức mạng xã hội phân tán, mở được tiêu chuẩn hóa bởi World Wide Web. Điểm yếu duy nhất của nó là sử dụng giao thức HTTP, yêu cầu máy chủ trung tâm. Giao thức ActPub nên được mở rộng với sự hỗ trợ cho các giao thức phi tập trung hiện có, điều này sẽ cho phép Fediverse phát triển theo hướng cởi mở và phi tập trung hơn nữa.
featured image - Giới thiệu ngắn gọn về Hoạt độngPub: Tương lai của Mạng xã hội
Laszlo Fazekas HackerNoon profile picture

Hoạt độngPub là một giao thức mạng xã hội phân tán, mở được tiêu chuẩn hóa bởi World Wide Web Consortium. Phiên bản đầu tiên của nó được phát hành vào năm 2018 nên không có gì mới. Nó được sử dụng bởi một số mạng xã hội, bao gồm cả Mastodon , gần đây đã chứng kiến mức độ phổ biến tăng lên đáng kể khi Elon Musk mua Twitter và thực hiện những thay đổi khiến nhiều người không hài lòng.


Ngoài ra, Threads, lựa chọn thay thế Twitter của Tumblr và Facebook, cũng đã báo hiệu rằng họ sẽ hỗ trợ giao thức này trong tương lai. Mặc dù không phải là một giao thức mới, nhưng hiện nay ActPub đang ngày càng trở nên phổ biến.


Vì Liên minh Châu Âu và Hoa Kỳ từ lâu đã lo ngại về sự độc quyền thị trường của các mạng xã hội lớn, tôi có thể tưởng tượng rằng trong tương lai, dưới áp lực của chính phủ, các mạng xã hội lớn nhất hiện tại như Facebook và Twitter cũng sẽ hỗ trợ giao thức và trở thành một phần của Fediverse . (Fediverse là một tập hợp các mạng xã hội bao gồm các nhà cung cấp hỗ trợ ActPub.)


Tôi tin rằng trong tương lai, chúng ta sẽ không chọn Twitter hay Facebook vì chúng sẽ đóng cửa và chúng ta sẽ không còn lựa chọn nào khác.


Sức mạnh của mỗi nền tảng sẽ đến từ việc ai có trí tuệ nhân tạo tốt hơn để lọc lượng dữ liệu khổng lồ đến, sàng lọc, chọn lọc và tóm tắt những thông tin quan trọng nhất cho người dùng.


Tất nhiên, để làm được điều này, người ta phải hiểu rất rõ về người dùng, điều này cũng vì lợi ích của người dùng. Đổi lại, trí tuệ nhân tạo có thể cung cấp những quảng cáo phù hợp hơn nhiều.


Trong một hệ thống mở, dễ tiếp cận, sự cạnh tranh sẽ không còn giữa các mạng xã hội nữa mà là giữa các thuật toán dựa trên trí tuệ nhân tạo.


Hãy xem ActPub hoạt động như thế nào. Chức năng cơ bản được tóm tắt độc đáo bằng sơ đồ rất đơn giản này.

Giải thích về Hoạt độngPub


Nguồn: https://activitypub.rocks/



Giao thức có hai thành phần chính: hộp thư đến và hộp thư đi. Đây là hai điểm cuối API có thể được truy cập thông qua giao thức HTTP. Khi người dùng muốn giao tiếp điều gì đó với thế giới bên ngoài (ví dụ: đăng một số nội dung), họ sẽ gửi nội dung đó đến hộp thư đi. Tại đây, hệ thống thêm vào danh sách thích hợp, người theo dõi có thể truy cập bằng cách đọc hộp thư đi.


Nếu ai đó từ thế giới bên ngoài muốn gửi nội dung nào đó cho người dùng (ví dụ: một bài đăng không công khai mà chỉ một số người dùng nhất định mới có thể xem), họ sẽ gửi nội dung đó đến hộp thư đến ở dạng được mã hóa. Hộp thư đến giống như hộp thư đến email, nơi thu thập nội dung đến và nơi người dùng có thể truy cập nội dung đó.


Người ta có thể truy xuất vị trí của hộp thư đến và hộp thư đi bằng giao thức WebFinger. Điều này cũng có thể được kiểm tra với sự trợ giúp của ActPub Explorer , một siêu công cụ để thử nghiệm và hiểu giao thức.


Tên người dùng trong ActPub tương tự như địa chỉ email. Ví dụ: tên người dùng Mastodon của tôi là @[email protected]. Điều này có nghĩa là thông tin người dùng của tôi được lưu trữ trên máy chủ dm.me dưới tên thebojda.


Khi nhập vào ActPub Explorer, nó sẽ truy vấn URL sau theo giao thức WebFinger để lấy dữ liệu:


 https://me.dm/.well-known/webfinger?resource=acct:thebojda%40me.dm


Phản hồi là một đối tượng JSON trông như thế này:


 { "subject":"acct:[email protected]", "aliases":[ "https://me.dm/@thebojda", "https://me.dm/users/thebojda" ], "links":[ { "rel":"http://webfinger.net/rel/profile-page", "type":"text/html", "href":"https://me.dm/@thebojda" }, { "rel":"self", "type":"application/activity+json", "href":"https://me.dm/users/thebojda" }, { "rel":"http://ostatus.org/schema/1.0/subscribe", "template":"https://me.dm/authorize_interaction?uri={uri}" } ] }


Từ đây có thể xác định rằng thông tin ActPub sẽ có thể truy cập được tại URL https://me.dm/users/thebojda . Nếu chúng ta nhập thông tin này vào ActPub Explorer, nó sẽ trả về JSON sau:


 { "@context": [ "https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1", { "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", "toot": "http://joinmastodon.org/ns#", "featured": { "@id": "toot:featured", "@type": "@id" }, "featuredTags": { "@id": "toot:featuredTags", "@type": "@id" }, "alsoKnownAs": { "@id": "as:alsoKnownAs", "@type": "@id" }, "movedTo": { "@id": "as:movedTo", "@type": "@id" }, "schema": "http://schema.org#", "PropertyValue": "schema:PropertyValue", "value": "schema:value", "discoverable": "toot:discoverable", "Device": "toot:Device", "Ed25519Signature": "toot:Ed25519Signature", "Ed25519Key": "toot:Ed25519Key", "Curve25519Key": "toot:Curve25519Key", "EncryptedMessage": "toot:EncryptedMessage", "publicKeyBase64": "toot:publicKeyBase64", "deviceId": "toot:deviceId", "claim": { "@type": "@id", "@id": "toot:claim" }, "fingerprintKey": { "@type": "@id", "@id": "toot:fingerprintKey" }, "identityKey": { "@type": "@id", "@id": "toot:identityKey" }, "devices": { "@type": "@id", "@id": "toot:devices" }, "messageFranking": "toot:messageFranking", "messageType": "toot:messageType", "cipherText": "toot:cipherText", "suspended": "toot:suspended", "focalPoint": { "@container": "@list", "@id": "toot:focalPoint" } } ], "id": "https://me.dm/users/thebojda", "type": "Person", "following": "https://me.dm/users/thebojda/following", "followers": "https://me.dm/users/thebojda/followers", "inbox": "https://me.dm/users/thebojda/inbox", "outbox": "https://me.dm/users/thebojda/outbox", "featured": "https://me.dm/users/thebojda/collections/featured", "featuredTags": "https://me.dm/users/thebojda/collections/tags", "preferredUsername": "thebojda", "name": "Laszlo Fazekas", "summary": "<p>Software developer, contributing writer</p>", "url": "https://me.dm/@thebojda", "manuallyApprovesFollowers": false, "discoverable": false, "published": "2023-03-02T00:00:00Z", "devices": "https://me.dm/users/thebojda/collections/devices", "publicKey": { "id": "https://me.dm/users/thebojda#main-key", "owner": "https://me.dm/users/thebojda", "publicKeyPem": "-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxlvpgcOxBikiXfm9snZt EB3Y2BSnBW3s8nd1d4Z1wCzaNfa/woB6RDQJoQYEISbMpkEyWhDzI4jRDafpn5/j YiyyGka9U2KZHv1to0Ej9uVwUcQOnsq9iUtJGhOWCP27blKGTLKFEHtPL2Y4hp4Z kYzlh1x0aAyw8YC7/nbS8WDAeZNS7R3ET7Syhp3LKiCMmL1aCLSoOQJ5DdxVikMJ rJ9bzlUjxzCsm1aNBB0i269t4fD1evBO8QDhEAOnAZ6wLEV74j9SCjYMvKRV8z5i PQbhbKntXjn1XhbkIkj1D+yGRYYfnm1XyWTuaM4mDllvuOyqJ8GQVFADLc6KCQYz 7QIDAQAB -----END PUBLIC KEY----- " }, "tag": [], "endpoints": { "sharedInbox": "https://me.dm/inbox" }, "icon": { "type": "Image", "mediaType": "image/jpeg", "url": "https://media.me.dm/accounts/avatars/109/955/144/019/799/820/original/fe8e930e0f1467ac.jpeg" } }


Tại đây, bạn có thể tìm thấy tất cả thông tin cụ thể của người dùng về tôi, nhưng điều quan trọng nhất, đây là URL của điểm cuối hộp thư đến và hộp thư đi, cũng như khóa chung để mã hóa tin nhắn gửi cho tôi. Khi truy vấn nội dung của hộp thư đi, JSON sau được trả về:


 { "@context": "https://www.w3.org/ns/activitystreams", "id": "https://me.dm/users/thebojda/outbox", "type": "OrderedCollection", "totalItems": 1, "first": "https://me.dm/users/thebojda/outbox?page=true", "last": "https://me.dm/users/thebojda/outbox?min_id=0&page=true" }


Vì các bài đăng được chia thành các trang nên ở đây chúng ta có thể thấy URL của trang đầu tiên và trang cuối cùng. Bằng cách truy cập URL của trang đầu tiên, chúng tôi có thể xem các mục nhập của tôi, trong đó hiện chỉ có một mục.


 { "@context": [ "https://www.w3.org/ns/activitystreams", { "ostatus": "http://ostatus.org#", "atomUri": "ostatus:atomUri", "inReplyToAtomUri": "ostatus:inReplyToAtomUri", "conversation": "ostatus:conversation", "sensitive": "as:sensitive", "toot": "http://joinmastodon.org/ns#", "votersCount": "toot:votersCount" } ], "id": "https://me.dm/users/thebojda/outbox?page=true", "type": "OrderedCollectionPage", "prev": "https://me.dm/users/thebojda/outbox?min_id=109955178005562038&page=true", "partOf": "https://me.dm/users/thebojda/outbox", "orderedItems": [ { "id": "https://me.dm/users/thebojda/statuses/109955178005562038/activity", "type": "Create", "actor": "https://me.dm/users/thebojda", "published": "2023-03-02T18:47:47Z", "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "cc": [ "https://me.dm/users/thebojda/followers" ], "object": { "id": "https://me.dm/users/thebojda/statuses/109955178005562038", "type": "Note", "summary": null, "inReplyTo": null, "published": "2023-03-02T18:47:47Z", "url": "https://me.dm/@thebojda/109955178005562038", "attributedTo": "https://me.dm/users/thebojda", "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "cc": [ "https://me.dm/users/thebojda/followers" ], "sensitive": false, "atomUri": "https://me.dm/users/thebojda/statuses/109955178005562038", "inReplyToAtomUri": null, "conversation": "tag:me.dm,2023-03-02:objectId=1406005:objectType=Conversation", "content": "<p>My &quot;ars poetica&quot;: How to Change the World?! Pocket Guide for People With a Messiah Complex <a href=\"https://medium.com/geekculture/how-to-change-the-world-pocket-guide-for-people-with-a-messiah-complex-dd2d16bb92a\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">medium.com/geekculture/how-to-</span><span class=\"invisible\">change-the-world-pocket-guide-for-people-with-a-messiah-complex-dd2d16bb92a</span></a></p>", "contentMap": { "en": "<p>My &quot;ars poetica&quot;: How to Change the World?! Pocket Guide for People With a Messiah Complex <a href=\"https://medium.com/geekculture/how-to-change-the-world-pocket-guide-for-people-with-a-messiah-complex-dd2d16bb92a\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">medium.com/geekculture/how-to-</span><span class=\"invisible\">change-the-world-pocket-guide-for-people-with-a-messiah-complex-dd2d16bb92a</span></a></p>" }, "attachment": [], "tag": [], "replies": { "id": "https://me.dm/users/thebojda/statuses/109955178005562038/replies", "type": "Collection", "first": { "type": "CollectionPage", "next": "https://me.dm/users/thebojda/statuses/109955178005562038/replies?only_other_accounts=true&page=true", "partOf": "https://me.dm/users/thebojda/statuses/109955178005562038/replies", "items": [] } } } } ] }


Dựa trên những ví dụ này, thật dễ dàng để triển khai một ứng dụng khách tối thiểu có thể đọc các bài đăng công khai của người khác hoặc có thể xuất bản các bài đăng công khai ra thế giới bên ngoài. Tôi sẽ không đi sâu vào cấu trúc chính xác của từng tệp JSON riêng lẻ và chức năng của hộp thư đến ở đây.


Những thứ đó có thể được tìm thấy trong tài liệu ActPub .


Có thể thấy, ActPub là một tiêu chuẩn tương đối đơn giản, dễ hiểu và dễ thực hiện. Điểm yếu duy nhất của nó là sử dụng giao thức HTTP, yêu cầu máy chủ trung tâm. Điều này đã tạo ra các giao thức thay thế như Nostr, dự án yêu thích của Jack Dorsey (người sáng lập Twitter).


Tuy nhiên, tôi tin rằng điều này là không cần thiết và nó chỉ gây ra sự phân mảnh hơn nữa của mạng xã hội. Thay vào đó, giao thức ActPub nên được mở rộng với sự hỗ trợ cho các giao thức phi tập trung hiện có, điều này sẽ cho phép Fediverse phát triển theo hướng thậm chí còn cởi mở và phi tập trung hơn. Sau đây, tôi sẽ chứng minh làm thế nào có thể đạt được điều này.


Một giải pháp hoàn hảo để phân cấp dữ liệu mô tả và nguồn cấp dữ liệu là sử dụng Nguồn cấp dữ liệu Swarm hoặc IPNS (Tôi có một bài viết đầy đủ về các giao thức này). Trong trường hợp Ethereum Swarm, mã định danh nguồn cấp dữ liệu là một địa chỉ Swarm, trong khi đối với IPNS, nó là khóa chung.


Khi sử dụng những thứ này, người dùng ActPub sẽ trông như thế này: {swarm address}@swarm hoặc {IPNS address}@IPNS. Mô tả người dùng có thể được truy vấn từ đây.


Để tương thích ngược, các máy chủ cổng cũng có thể được sử dụng chẳng hạn như {swarm address}@gateway.ethswarm.org, sẽ trả về mô tả của người dùng được lưu trữ trên Swarm thông qua giao thức Webfinger, cho phép các hệ thống hiện có (như Mastodon) đọc dữ liệu này mà không cần bất kỳ dữ liệu nào. sửa đổi.


Việc triển khai hộp thư đi cũng sẽ được thực hiện thông qua nguồn cấp dữ liệu Swarm hoặc IPNS. Để duy trì khả năng tương thích ngược, cần phải giới thiệu trường "decentralized_outbox", nơi đặt địa chỉ nguồn cấp dữ liệu Swarm (bzz://...) hoặc IPNS (ipns://...).


Để duy trì khả năng tương thích ngược, một địa chỉ cổng bổ sung có thể được đưa vào trường "hộp thư đi" ban đầu để khách hàng hiện tại có thể đọc các nguồn cấp dữ liệu này mà không có bất kỳ thay đổi nào.


Việc triển khai hộp thư đến có thể được thực hiện theo nhiều cách. Ethereum Swarm có một hệ thống nhắn tin tên là PSS , nhưng cũng có những lựa chọn thay thế khác, chẳng hạn như Waku . Ở đây, địa chỉ PSS hoặc Waku sẽ được đặt trong trường "decentralized_inbox", trong khi trường hộp thư đến ban đầu sẽ chứa địa chỉ cổng.


Với một vài tiện ích mở rộng nhỏ này, ActPub có thể được phân cấp hoàn toàn và "tương thích với web3" mà không cần giới thiệu các giao thức mới như Nostr.


Theo kho lưu trữ GitHub của Nostr, nhu cầu về giao thức và hệ thống chuyển tiếp mới là do khả năng kiểm duyệt người dùng của máy chủ ActPub và thiếu hệ thống khuyến khích. Tuy nhiên, vấn đề này được giải quyết hoàn toàn nhờ phần mở rộng trên.


Cả IPNS và Swarm đều có khả năng chống kiểm duyệt, Swarm cũng cung cấp tính năng ẩn danh hoàn toàn. Ngoài ra, Swarm có hệ thống khuyến khích riêng, trong khi FileCoin có sẵn cho IPNS.


Tôi tin rằng tương lai rõ ràng thuộc về ActPub và các nhà phát triển nên tập trung vào việc thúc đẩy và phát triển ActPub thay vì tạo ra các giao thức mới để cuối cùng thiết lập một Fediverse toàn diện và thực sự thống nhất.