文章摘要
本文介绍了AT协议(ATProto)的基本架构及其与Bluesky平台的关系,旨在帮助开发者理解该协议的工作原理及其与Fediverse的区别。文章还提到后续将探讨与Fediverse的对比、常见误解以及网络的去中心化状态。Bluesky一词可能指公司、团队或社交网络平台,容易引发混淆。
文章总结
AT协议简介
本文旨在为开发者提供一个关于AT协议(Authenticated Transfer Protocol,简称ATProto)的入门指南,帮助理解Bluesky及其底层协议的工作原理,以及与Fediverse等其他网络的区别。AT协议是Bluesky社交网络的基础,Bluesky最初是作为该协议的技术演示而构建的。
Bluesky的定义
Bluesky可以指代两个不同的概念:一是Bluesky公司(Bluesky PBC),即开发团队;二是Bluesky产品,即基于AT协议构建的社交网络。Bluesky社交网络并非像Twitter或Facebook那样是一个封闭的系统,而是由多个透明且独立的组件构成。
AT协议的核心组件
记录(Records)与二进制大对象(Blobs)
记录是AT协议中最基本的数据单元,以JSON对象的形式存储,代表诸如帖子、点赞、关注等实体。记录以CBOR格式存储和传输,但通常通过API以JSON形式返回。Blobs则用于存储媒体文件,如图片和视频。词汇表(Lexicons)
每个记录都属于特定的记录类型,其数据结构由词汇表定义。词汇表类似于XML/JSON Schema,规定了记录的字段类型、含义等。Bluesky的词汇表通常以app.bsky为前缀,而通用的AT协议词汇表则以com.atproto为前缀。身份标识(Identity)
每个用户通过去中心化标识符(DID)在网络上唯一标识。DID是W3C标准,AT协议支持两种DID类型:did:plc和did:web。DID是永久性的,用户无法更改。AT URI
每个记录可以通过AT URI唯一标识,格式为at://<用户DID>/<词汇表NSID>/<记录键>。AT URI用于记录之间的引用,如回复、点赞等。用户仓库(User Repositories)
所有用户数据(记录和Blobs)存储在用户仓库中,仓库由用户的DID标识。仓库内部使用Merkle搜索树数据结构来存储记录。XRPC
XRPC是AT协议中用于API的约定,API端点的命名与词汇表NSID一致,路径格式为/xrpc/<nsid>。
服务器架构
个人数据服务器(PDS)
PDS是用户数据的原始存储地,负责用户认证和数据管理。用户可以随时迁移到不同的PDS,因为账户的唯一标识是DID,而非PDS。中继服务器(Relay)
中继服务器将来自所有PDS的数据流合并为一个全局数据流,供其他服务(如AppView、标签器等)使用。Bluesky运行一个主中继服务器,但也有第三方中继服务器。应用视图(AppView)
AppView是网络中的第二个重要组件,负责处理数据并提供给客户端应用。它从Relay中获取数据,并将其存储在本地数据库中,以便快速查询和处理。标签器(Labellers)
标签器是Bluesky的第三方审核服务,可以为账户或记录添加标签。用户可以选择如何处理这些标签,如隐藏或标记。Feed生成器(Feed Generators)
Feed生成器允许用户创建自定义的Feed,返回帖子URI列表,AppView将这些URI映射为完整的帖子数据。
客户端应用
Bluesky的客户端应用通过PDS的API与网络交互。官方应用基于React Native构建,支持移动端和Web端。虽然目前第三方客户端较少,但已有一些替代选择。
总结
AT协议的架构由多个独立组件构成,包括PDS、Relay、AppView等,这些组件共同协作,形成了一个去中心化的社交网络。Bluesky作为AT协议的应用之一,展示了该协议的潜力,但AT协议的应用远不止于此,开发者可以基于该协议构建各种不同的应用和服务。
如果你想深入了解AT协议并开始开发,可以参考官方文档、社区讨论以及现有的SDK和工具。
评论总结
评论内容主要围绕AT协议(AT Protocol)展开,观点多样,涵盖了对其应用、技术特点、资源获取等方面的讨论。以下是总结:
对AT协议的期待与应用
- 多位评论者表达了对AT协议的期待,认为它有望成为电子邮件标准的现代替代品,并适用于公共和私人消息传递。
- 引用:
- "Would be great to have a new modern alternative to the E-mail standard that is usable for both public and private messaging."
- "would love fb marketplace disruptor on atproto"
技术挑战与改进空间
- 评论者指出AT协议在处理私人数据方面存在挑战,并希望未来能有所改进。
- 引用:
- "The biggest challenge right now is dealing with private data, I hope they can figure out a way to support it soon."
资源与社区支持
- 评论者提供了关于AT协议的学习资源,包括Discord社区、官方文档和相关文章,建议开发者从这些渠道入手。
- 引用:
- "If you are interested in building on ATProtocol, one of the best places to start is the Discord."
- "Here's another great resource about the ATProto distributed design."
与ActivityPub的对比
- 评论者引用了官方文档,解释了AT协议与ActivityPub的区别,强调AT协议在账户可移植性、可扩展性和架构设计上的优势。
- 引用:
- "Account portability is a major reason why we chose to build a separate protocol."
- "The AT Protocol uses aggregating applications to merge activity from the users' hosts, reducing the overall traffic."
幽默与误解
- 部分评论者幽默地将AT协议与Hayes调制解调器命令混淆,展现了技术文化中的趣味性。
- 引用:
- "In this house, we believe 'AT protocol' refers to Hayes modem commands."
- "+++ATH0
Those old enough will know :)"
总结:评论者对AT协议表现出浓厚兴趣,期待其广泛应用,同时也指出了技术上的挑战。社区提供了丰富的学习资源,而与其他协议的对比则凸显了AT协议的独特优势。此外,评论中不乏幽默元素,增添了轻松氛围。