社交与经济
Realm 管的两件事里,一件是"谁和谁有关系",另一件是"价值怎么流动"。前者归社交,后者归经济。两边的记录一旦写下就不会被改写,只会继续追加。
社交
在 Realm 里,一对人之间只有一条朋友关系。不管 Alice 和 Bob 一起出现在多少个世界、多少个 App 里,他们的朋友关系就是同一条记录。
| 属性 | 值 |
|---|---|
| 存储 | Realm R-SOC-* |
| 形状 | 有序对唯一性图 |
| 跨世界可见 | 是;同一条关系出现在所有世界 |
| 跨应用可见 | 是;同一条关系出现在所有 Nimi 应用 |
| 变更 | 通过准入的 Realm 契约 |
社交做什么
- 记录朋友关系和准入图。
- 把人类聊天的前置条件交给社交:私聊可能要求双方处于已准入的社交状态。
- 不持有 thread 本身;thread 归 Realm Chat。
朋友关系为什么是规范层
如果朋友关系是按应用或按世界存储的,两个应用之间会对"这两个人是不是朋友"产生分歧。然后就要做同步、同步会冲突、用户体验会撕裂。
规范化的朋友关系给整个平台一个真相。应用读,Realm 是权威。
经济
平台规范经济是 append-only 的:每一条货币交易、收入归因和结算事件都有明确的强类型语义。
| 属性 | 值 |
|---|---|
| 存储 | Realm R-ECON-* |
| 形状 | append-only 事件流 |
| 事件类型 | 显式声明;在 kernel 层准入 |
| 结算 | 强类型事件 |
| AI 算力成本 | 不归 Realm 核心真相(另外的关注点) |
经济持有
- 货币交易历史。
- 创作者内容的收入归因和分成。
- 结算事件。
- 钱包余额的派生视图。
经济不持有
- AI 算力成本(runtime 侧的关注点)。
- 世界内部货币(一个世界可以有自己的票据;那不是平台规范经济)。
- 订阅 / 支付处理器的内部细节(在它们各自的准入面上)。
Append-only 姿态
经济流在权威层是 append-only 的。一条错误的结算事件不会被删除,而是由一条 correction 事件取代。整条链都可以重建。
经济正确性因此可审计。一个想知道收入到底怎么结算的创作者,可以从头到尾读这条事件流,没有歧义。
读者场景:跨世界的朋友关系
Alice 和 Bob 都在世界 A 里游玩,在那里成了朋友。
- 好友请求。Alice 发送请求;Realm 准入。
- Bob 接受。Realm 准入;
R-SOC-*里写入一条有序对记录。 - 处处可见。Alice 进入世界 B 时,朋友关系仍然可见。世界 B 自己的本地社交规则可以叠加(比如"朋友"在世界 B 享有不同特权),但底层的规范朋友关系是同一条记录。
- 跨应用。任何读取社交状态的 Nimi 应用看到的是同一条朋友关系。
新启动的应用不需要重新准入这条朋友关系。
读者场景:收入结算
一项已准入的收入来源归属于创作者的内容。
- 确认来源归属。Realm 根据强类型来源引用确认归属。
- 结算事件。按当前分成方案,强类型结算事件写入账本。
- 钱包视图更新。创作者余额由规范账本派生。
- 审计链路。来源、结算事件和分成方案保持关联。
- 提现。创作者按准入的提现流程取出资金。
整条收入链可以端到端重建,没有任何环节无声发生。
读者场景:带内部货币的世界
某创作者的世界用票据做内部交易。
- 世界内部票据。这个世界的规则定义了票据的语义,是本地经济、本地规则。
- 不属于 Realm 规范层。票据是世界本地数据,不出现在
R-ECON-*事件流里。 - 若准入兑换则可入账。如果该世界准入了票据与平台货币之间的兑换事件,那条兑换会作为强类型规范经济事件入账。
- 跨世界标准不变。世界 A 里的票据不会影响 Bob 在规范层的钱包余额,除非有一条准入的兑换事件。
这条划分是有意为之。世界拥有自己的内部经济创造空间;平台规范经济保持为一份可审计真相。
社交与经济的连接
有些事件同时触发两侧:
| 事件 | 触及范围 |
|---|---|
| 创作者收入结算 | 经济事件可以引用已准入的来源所有者 |
| 成为朋友 | 社交事件;可能解锁需要社交前置的经济能力 |
当事件同时触及两侧时,平台不会把它们合并成一条记录。每一侧拿到自己的强类型事件;整条链通过审计连接。