想象多聊天:探索聊天应用架构和 Anoma 的潜力
通过多聊天应用的架构设计,展示 Anoma 在去中心化通信领域的巨大潜力。
目录
前言
Multichat 是一个 Anoma 应用的构想。该应用可以被视为一个分布式聊天网络,没有中央服务器运营商。聊天应用的历史丰富多样,从早期的互联网协议如互联网中继聊天(IRC)、扩展消息和存在协议(XMPP)、美国在线即时消息(AIM)和短信/消息服务(SMS),到当今的 Slack、Discord、Discourse、Signal、WhatsApp 和 Telegram。
Multichat 通过允许开发者为特定类型的通信定制界面,并依赖用户信任图谱来识别和维护连接,展示了将协议与运营商分离的原则。
Multichat 提供了一套最小可行功能集,其功能与现有消息服务具有竞争力,但可以超越单一的 Hackathon 活动进行分支和迭代。Multichat 的核心功能集应包括:
1. 消息协议
2. 用户管理系统
3. 复杂的权限管理
4. 消息过期
5. 用户存在和状态
6. 通知系统
7. 端到端加密
在这篇文章中,我们将概述各种聊天应用的情况,并查看三个案例研究:Signal、Matrix 和多聊天。我们想提醒敏锐的读者,这篇文章并没有提供全面的调查,因为我们没有提及许多聊天应用。此外,这篇文章只是权宜之计,因为它描绘了多聊天可能的样子,但没有提供文档或规范中所需的严谨性。
参考文献
应该指出的是,这篇文章受到研究文献的重要贡献的启发。大多数想法、参考文献、短语和术语都来自以下资料来源。此外,应该指出的是,全文使用了维基百科的参考文献。我们建议认真的读者在参与这篇文章之前访问这些资料。
主要参考资料
- •生态系统在行动:从 Signal 开发的角度看分布式和去中心化技术的挑战 by Moxie Marlinspike
- •以太坊:下一代智能合约和去中心化应用平台 by Vitalik Buterin
- •信息管理的联邦架构 by Heimbigner and McLeod
- •矩阵 1.0:大规模去中心化通信 by Matthew Hodgson
- •An Autonomous Ecologist's Guide to Namada and Anoma by Christopher Goes
- •区块链节点是异构的,你的 P2P 覆盖层也应该是:PODS by Zarin, Sheff & Roos
- •主权域 P2P 覆盖层,Anoma P2P 网络简介 by Naqib Zarin
- •迈向以意图为中心的拓扑结构 by Christopher Goes
- •资源机器的崛起 by Yulia Khalniyazova
- •Slack 如何构建共享频道 by Sun and Demmer
- •草根闪电:草根加密货币支付系统 by Lewis-Pye, Noar, Shapiro
- •《Anoma:重新定义货币——灵活的价值承诺》 by Goes, Yin & Brink
致谢
这幅艺术作品灵感来源于与 Christopher Goes、D、Naqib Zarin、TG、Yulia Khalniyazova 和 Tobias Heindel 的对话。
感谢 Christopher Goes、@0x_Emperor 和 Michael Heuer 的初步审查和反馈。请注意,我们并未做出所有请求的修改。审查≠认可。
确实,这项艺术站在巨人的肩膀上,而我们在此的贡献与所参考的文献相比显得微不足道。所有错误、失误、遗漏均为作者个人责任。
介绍
Multichat 是一个 Anoma 应用的构想。这个应用可以被视为一个分布式聊天网络,没有中央服务器运营商。Multichat 展示了将协议与运营商分离的原则,即运营商-协议分离。
OPS 体现了现有 Web 2.0 商业模式解绑的趋势。例如,集中化部分原始互联网协议曾是一种成功模式:
- •Slack 对 IRC 的改造
- •Facebook 对电子邮件的整合
- •WhatsApp 对 XMPP 的运用
显然,这些公司所做的远不止是复制 IRC。然而,它们通常使用开源软件来启动产品开发,然后构建起价值捕获的壁垒,给用户带来高昂的转换成本,同时巩固了一种常被称作监控资本主义的租借模式。
Anoma 协议的优势
Anoma 协议是一个分布式操作系统,应用程序可以在其上运行。Anoma 允许开发者在无需许可的意图基础设施上,不受现有操作者的限制,重新构建这些协议。
Anoma 的架构为开发者提供了一个丰富的实验平台,许多现有应用(如 X(推特))可以在此基础上被重建,使其成为:
- •无需许可
- •可互操作
- •可定制,以满足社区或组织的需要
三种聊天应用架构
存在三种常见的聊天应用网络架构:
1. 基于中心服务器的架构
2. 联盟式架构
3. 点对点(P2P)架构
我们将首先探讨基于中心服务器的架构和联盟式架构,然后继续通过 Anoma 的网络架构来探索 P2P 设计。此外,我们将以 Signal 作为中心化架构的案例研究,以及 [Matrix] 作为联盟式架构的案例研究。
Signal 和 Matrix 为用户提供了许多他们所期望的功能。这项研究的一个明确目标是了解 Anoma 是否能在现有市场之外提供任何创新。
第一部分:概念与案例研究
集中式服务器聊天应用面临的挑战
一种简单的理解是客户端-服务器模型。在客户端-服务器模型中,客户端(服务请求者)和服务器(服务提供者)之间的工作负载是共享的,客户端向服务器请求服务或内容,而服务器可以运行一个或多个程序与客户端共享信息。这种关系是不对称的,服务器为客户端工作。
通常客户端和服务器通过计算机网络在独立的硬件上通信,但客户端和服务器可能位于同一系统中。服务器主机运行一个或多个服务器程序,这些程序与客户端共享资源。客户端通常不共享任何资源,但它会向服务器请求内容或服务。
优势
- •低延迟 - 网络中不同节点之间没有通信开销,所有消息都在同一服务器上处理
- •高性能 - 系统可能针对高性能进行了优化,包括高吞吐量
- •高可用性 - 网络中断不频繁,分区不存在
- •可靠性 - 系统在需要时能够执行其预期功能
- •简单实现 - 集中式应用程序通常很容易实现
- •可扩展性 - 容易租用更多的云空间
缺点
- •控制权 - 系统的中央权威对系统拥有完全的行政管理控制权
- •数据所有权 - 运营商可以获取和存储用户信息,包括其在线行为、原始内容和社交图谱
- •抗审查性 - 可能服从来自国家层面行为者或勒索攻击者的审查请求
- •转换成本 - 集中式应用程序的转换成本很高
Signal 案例研究 - 生态系统正在移动
Signal 的联合创始人 Moxie Marlinspike 在德国莱比锡举行的第 36 届混沌通信大会上发表了引人入胜的演讲。在演讲中,他提出了几个关键观点:
核心观点
1. 软件会演进 - 演进与去中心化系统的静态特性不相容
2. 中心化并不像看起来那么糟糕 - 你可以快速迭代
3. 我们真正想要的去中心化特性 - 隐私、抗审查、可用性和控制
4. 开源软件的重要性 - OSS 在可用性和控制方面比去中心化扮演着更重要的角色
5. 生态系统在发展变化 - 任何正在从事去中心化系统工作的人都需要记住这一点
Signal 的解决方案
隐私:通过私密群组、联系人发现和密封发送来解决隐私问题。Signal 服务无法洞察:
- •群组通信状态、成员信息
- •你的联系人(社交图谱)
- •谁在给谁发消息(使用零知识证明!)
抗审查性:拥有一个集中式服务并具有多个入口点实际上更有效。如果访问该服务的入口被封锁,很容易启动另一个入口点、代理或 VPN。
可用性:虽然分布式系统在理论上可以提供好处,但在实践中它们也会遭受活性故障。
控制:控制来源于开源软件。分叉代码库并重新部署应用程序是非常简单的。
去中心化替代方案,思考联盟式架构
联盟架构没有中央权威的限制。中央权威的角色被协作活动所取代。联盟数据库架构是由独立的数据库系统组成的松散耦合联盟,用于共享和交换信息。
核心原则
联邦架构必须平衡两个相互冲突的需求:
1. 实例应尽可能保持自主性
2. 实现合理的信息共享或互操作性
自主性特征
- •没有任何实例被迫为任何其他实例执行活动
- •每个实例决定它想与其他实例共享哪些数据
- •每个实例决定它将如何查看和组合现有数据
- •实例必须能够加入和退出联盟
信息共享机制
- •数据通信 - 实例可以与其他实例共享其数据的一部分
- •事务共享 - 特定实例可能不希望直接共享其数据
- •协作活动 - 联邦能够正常运行的唯一方式是通过协作
优势
- •低切换成本 - 在最坏情况下,如果存在可信的退出威胁,可以提供审查抗性
- •自主性 - 实例的运营商可以定制适合其社区需求的特性和策略
- •互操作性 - 用户可以发现来自不同实例且遵循共享标准的用户
- •数据所有权 - 用户可以选择与之交互的实例,包括自己的实例
- •信息控制 - 在许可或非许可环境下,可编程披露可以嵌入其中
缺点
- •碎片化可能导致用户体验不佳 - 每个实例可能有自定义配置
- •基于通信复杂度的性能下降 - 跨服务器协调通信可能导致高网络负载
- •安全 - 每个实例都需要单独进行安全防护
- •网络效应 - 用户发现可能是一个挑战
- •维护和升级 - 每个实例可能有自己的升级计划和软件版本管理
[矩阵] 案例研究
Matrix 是一个用于安全去中心化实时通信的联盟网络。Matrix 是开源软件,用于:
- •互操作聊天
- •互操作 IP 语音(VOIP)
- •AR/VR 的开放通信
- •实时物联网数据结构
Matrix 可以在任何需要标准 HTTP API 来发布和订阅数据,同时跟踪对话历史的地方使用。这使用户能够在不同的消息应用程序之间相互通信,包括 Slack、Discord、Signal、WhatsApp 等。
Matrix 的使命
创建一个全球性的去中心化加密通信网络,为实时通信提供一个开放平台。Matrix 可以取代手机网络和电子邮件通信。
Matrix 宣言的核心价值观
- •人们应该对自己的通信拥有完全的控制权
- •人们不应被锁定在中心化的孤岛中,而应能够自由表达个人偏好
- •安全私密地交流是人类的基本权利
- •沟通应当对全球所有人开放,作为一个免费、开放且无障碍的标准
Matrix 的功能包括
- •对话历史记录 - 在聊天室之间同步
- •群组消息 - 一对一通信
- •端到端加密 (E2EE) - 双重棘轮算法
- •可编辑的消息和反应
- •基于网页的实时聊天 VOIP 通话
- •服务器端推送通知规则
- •服务器端搜索功能
- •已读回执、正在输入通知、用户在线状态
- •同步已读状态和未读账户
- •去中心化内容存储库
- •每个房间的"用户数据"
Matrix 的优势
- •去中心化设计消除了单点故障
- •联盟架构提供了低转换成本,并防止运营商锁定
- •多种通信方式支持,包括消息传递、VOIP、物联网通信
- •互操作性 - 与其他基于聊天的协议的连接能力
Matrix 的挑战
- •元数据可见性 - 消息时间戳等元数据可能会对参与消息路由的服务器可见
- •客户端多样性 - 可能导致用户体验上的挑战
- •可扩展性 - 在多个服务器之间同步和复制状态可能导致高延迟
一种结合集中式和联邦式架构的多聊天架构
在评估为构建聊天应用而设计的集中式服务型网络与联邦式网络的优缺点后,应该很清楚这两种架构都具有可取的特性。有没有办法同时获得:
- •自主性
- •互操作性
- •高可用性
- •抗审查性
- •控制权
- •数据保护
- •低延迟
或许有。但要回答这个问题,我们需要考虑 Multichat 提供了现有聊天应用所不具备的功能。
动机
Anoma 的点对点架构有可能提供聊天应用所期望的许多特性:
1. 智能聊天协议 - 使用到实际用户的最低延迟物理链路
2. "离线"功能的聊天
3. 抗审查能力的 P2P - 聊天服务器不会被禁止,用户也不需要不断寻找新的 VPN
什么是 P2P 网络?
P2P 网络是一种没有中央机构协调通信的分布式系统。由于没有协调者,节点需要直接相互通信以维护账本。
P2P 覆盖网络是在底层物理基础设施(互联网)之上构建的虚拟网络。P2P 覆盖网络负责管理节点之间的连接,并确保信息在整个网络中高效传播。
P2P 覆盖网络的两个主要组成部分
1. 拓扑 - 拓扑可能是无结构的或结构的
2. 沟通策略 - 描述数据选择、节点类型和时间选择
特性
互操作性:
- •允许信息在覆盖层之间流动,以防止信息孤岛
- •服务 - 从网络层(资源)的角度看,两个覆盖层可以相互提供服务
- •状态 - 两个可互操作的超层可以从共享某些状态中获益
- •通信 - 通过通信协调相互受益
可扩展性:
- •节点数量 - 如果节点数量增加,保持性能
- •数据量 - 不让特定节点承担大量工作或数据
- •通信流 - 网络应该能够处理不同的通信流
功能
#### 提案:点对点覆盖域具有主权(PODS)
节点是异构的,你的 P2P 覆盖层也应该是异构的。每个域都有自己的覆盖拓扑结构,以及一套独特的 P2P 域内协议,这些协议是根据该域内节点的特征和需求量身定制的。
这种新方法提供了:
- •性能:通过使数据可互操作、收集关于域的数据和统计信息、使用收集到的数据来做出路由决策
- •安全性:通过监控其他域的健康水平、允许节点加入被攻击的域以恢复该域中诚实节点的比例
- •灵活性:通过允许在不同域中运行不同协议,来适应节点的异构性
第二部分:Anoma 上的多聊天
理论上,多聊天功能旨在处理异构的组织结构图。类似于由中央服务器管理的 Slack 或 Discord,其中频道由中央服务器管理。具体来说,您希望允许多聊天用户创建频道,跨这些频道与其他频道进行通信,包括不同的工作空间和不同版本的多聊天。
使用 Anoma 构建的机遇与挑战
机遇代表了世界中代理(人、动物或机器)与某物互动的可能性。
心理学家 James Gibson 于1977年创造了"机遇"一词,指的是基于用户物理能力与物体相关的所有行动可能性。Donald Norman 后来(1988 年)将这一术语引入设计界,将机遇定义为可感知的行动可能性。
Anoma 的功能
无许可的意图基础设施:
- •Anoma 支持具有通用协议的可编程意图
- •开发者无需担心寻找或构建额外的组件
- •每个应用程序都可能需要特定类型的意图来解决
- •Anoma 为去中心化求解提供了无许可的基础
信息流控制:
- •交易参与方可以决定向谁透露其状态信息的多少
- •透明资源和屏蔽资源之间没有区别,但透露的状态信息量不同
- •这是通过屏蔽执行实现的,其中状态转换仅对参与方可见
意图级别的可组合性:
- •所有为 Anoma 编写的应用程序都可以在意图级别进行组合
- •不同应用程序的意图可以组合在一起,并原子化执行
- •可以在不同领域中进行结算,而无需应用程序开发者的任何额外工作
在 Anoma 上构建的挑战
领域特定语言:
- •学习新的编程语言,虽然并非不可能,但并不容易
- •加密生态系统中的函数式编程语言带有负面含义
- •然而,领域特定语言可以是超级力量
极简可爱多聊天
现在我们已经对 Multichat 是什么类型的应用程序有了扎实的理解,一个极简可爱的 Multichat 应该有哪些关键功能?
核心功能
1. 消息协议 - 使用 Anoma 的点对点网络进行通信
2. 用户管理系统 - 允许创建用户资料资源
3. 复杂的权限 - 通过 Intents 的信息流控制功能来处理
4. 消息过期功能 - 允许用户设置消息过期和保留策略
5. 用户存在和状态 - 实现用户存在和状态指示器
6. 通知系统 - 依赖于 Anoma 的点对点网络
7. 端到端加密 - 零知识证明可以帮助实现这一点
资源类型示例
消息资源:
```
messageResource : Resource := {
sender : Address,
recipients : List Address,
content : String,
timestamp : Timestamp,
expiry : Timestamp,
-- other metadata fields
}
```
频道资源:
```
channelResource : Resource := {
name : String,
participants : List Address,
permissions : Permissions,
}
```
用户资料资源:
```
userProfileResource : Resource := {
username : String,
publicKey : PublicKey,
avatar : String,
}
```
#### 资源逻辑
- •messageLogic - 检查发送者权限,验证消息内容和元数据
- •channelLogic - 控制通道的创建、删除和成员资格
- •userProfileLogic - 控制用户资料的创建、更新和删除
- •permissionsResourceLogic - 执行检查,确定用户是否有执行操作的必要权限
#### 意图类型示例
发送消息意图:
```
sendMessageIntent : PartialTx := {
consume := [permissionsResource, channelAccess],
create := [messageResource {
sender = senderAddress,
recipients = recipientAddresses,
content = messageContent,
timestamp = currentTimestamp,
expiry = expiryTimestamp
}]
}
```
比较分析
| 属性 | 多聊天 | Signal | Matrix |
|------|--------|--------|--------|
| 架构 | P2P (Anoma) | 集中式 | 联盟 |
| 去中心化 | 高 | 低 | 中 |
| 抗审查性 | 高 | 中(多个入口点) | 中 |
| 隐私 | 高(信息流控制) | 高(端到端加密) | 中(元数据泄露) |
| 互操作性 | 高(意图级别可组合性) | 低 | 高(与其他应用桥接) |
| 定制化 | 高(分支并修改代码库) | 低 | 中(自定义服务器配置) |
| 可扩展性 | 高(规模不变) | 高(集中式) | 中(状态同步挑战) |
| 用户体验 | TBD | 高 | 中(客户端碎片化) |
| 升级灵活性 | 高 | 高(集中控制) | 低(实例间协调) |
| 信任假设 | 低(可定制) | 高(信任信号) | 中(信任服务器运营商) |
结论
在文章中,我们探讨了当今聊天应用中集中式与分布式架构的优缺点。我们通过分析 Signal 集中式服务器模型和 [Matrix] 联邦架构的案例研究进行了回顾。
随后,我们介绍了 Anoma 的 P2P 叠加架构,将其作为可能结合集中式和联邦式架构优势的一种方式。接下来,我们通过概述关键特性来描述了一个极简且令人喜爱的 Multichat,并尝试勾勒出其实现方式。
特别是,我们根据 Anoma 资源机设计了该应用,用伪代码概述了新的资源类型、逻辑和意图类型。最后,我们回顾了一个 Multichat、Signal 和 Matrix 的比较表格,该表格表明如果我们正确设计 Multichat,它可能会对许多用户有用。
未来方向
进一步的研究方向可能包括:
- •添加新功能
- •整合无冲突复制数据类型(CRDTs)
- •改进用户体验设计
- •优化网络性能
- •增强安全性和隐私保护
反馈
请提供反馈、评论和投诉,在研究论坛中。在那里见。
---
🌟 关键洞察
Multichat 展示了 Anoma 协议在构建下一代去中心化应用方面的潜力。通过结合集中式架构的性能优势和去中心化架构的自主性,Multichat 可能为聊天应用领域带来革命性的变化。
💡 技术创新
- •意图驱动的架构:用户表达意图,系统自动处理执行
- •资源模型:不可变资源的创建和消耗模式
- •P2P 网络:智能路由和低延迟通信
- •可组合性:与其他 Anoma 应用的无缝集成
🚀 未来展望
Multichat 不仅仅是另一个聊天应用,它代表了一种新的应用构建范式,其中协议与运营商分离,用户拥有真正的控制权和自主性。