P2P 元宇宙:以分布式支撑虚拟世界的技术
数千人漫步于同一虚拟空间的元宇宙和 MMOG,仅靠中央服务器支撑负载成本高昂。从中心化架构在服务器成本、单点故障、物品所有权上的局限,到 P2P/去中心化方案,再到 NFT 资产可携带性的现实,本文基于二十余年的研究积累加以解说。
中心化元宇宙的局限
当前主流的元宇宙/MMOG 是由运营公司准备的服务器集群统一管理全体玩家状态的客户端-服务器型架构。这种结构存在三个根本性的局限。
- 服务器成本:随同时在线人数增加,服务器台数、带宽、运维人力需要超线性增长,费用由运营公司全额承担。人气骤增时增容往往跟不上,连接限制、排队等待并不罕见。
- 单点故障:持有世界状态的服务器一旦停止运行,玩家眼中的「世界」也随之消失。一旦运营方决定终止服务(EOL,End of Life,即服务停运),此前积累的虚拟资产、建筑物、人际关系记录会一并丢失。
- 物品所有权:玩家购买或获得的物品,实体不过是运营公司数据库中的一条记录。用户协议变更、账号封禁乃至服务终止,都可能让玩家为之付费的资产被单方面剥夺访问权,这是架构本身带来的结构性风险。
兴趣管理(AOI):只同步「看得见的范围」
同步虚拟世界的全部参与者与全部状态是不可能的,因此大原则是只交换各虚拟化身周边,即AOI(Area of Interest,兴趣区域)的信息。P2P 型 NVE(网络虚拟环境)研究的中心课题,就是如何维持这种「只与近旁节点相连」的结构。代表性方案有:用沃罗诺伊图分割空间以管理邻接关系的 VON、维持基于位置的组播结构的 pSense、为每个对象指派管理节点的 Colyseus 等。
把 AOI 直接接入 P2P 连接维护本身是一种常见模式:先给每个节点的并发连接数设一个固定上限,再按两条准则挑选具体邻居:(a) 空间距离,以及 (b) 方向分散,即把自己周围的方向球面划分成若干固定的方向区间,每个区间只保留距离最近的一个对等节点。仅按距离挑选容易导致连接全部扎堆在近旁的某一群节点上,而正相反方向反而无人问津;引入方向分散这一约束,正是为了防止这种偏斜。
缓存策略同样可以引入空间性:淘汰已加载的世界内容时,与其用朴素的 LRU,不如按与当前位置的距离加权(保护半径以内的内容绝不淘汰,距离越远淘汰概率越高)。已被显式 pin 住的数据则完全不参与淘汰流程,这正体现了「缓存」与「存储」二者本应有别的一条设计准则。
世界类型与架构:如何划分世界,如何将其呈现给客户端
设计元宇宙时,首先需要做出两个相互独立的设计决策:如何在玩家之间划分世界(世界类型),以及如何把这个世界的状态传递给各个客户端(架构)。
世界类型:平行世界方式与单一世界方式
随着同时在线人数增加,处理世界的方式大体分为两种截然不同的思路。
- 平行世界方式(实例化):把相同布局、相同内容的世界同时运行为多个实例(副本),并把玩家分配到其中之一。由于可以为每个实例的同时在线人数设置上限,AOI 的计算量与状态同步的通信量便容易控制在可预测的范围内,水平扩展也更容易。许多 MMORPG 的地下城、拥挤区域的「分线(channel)」都是这种思路。缺点是:处于不同实例的玩家原理上永远无法相遇,「大家共处同一个世界」的一体感会被削弱。
- 单一世界方式(无缝世界):不制作世界的副本,全体玩家物理上共享同一个空间。通过把空间划分为若干区块(cell),并借助前述的 AOI 只与近旁节点同步来实现扩展,但正因为没有副本可以分摊负载,一旦热门区域出现玩家扎堆的「热点」,该区块的负载便会骤增而无处分流。VON、pSense 这类空间分割式 P2P 同步方案,正是为了让这种单一世界方式得以成立而设计的。
| 维度 | 平行世界方式 | 单一世界方式 |
|---|---|---|
| 可扩展性 | 只需增加实例即可无限水平扩展 | 必须对热点做动态负载均衡,设计难度高 |
| 社交一体感 | 不同实例的玩家无法相遇 | 所有人共享同一空间,会发生偶遇 |
| 实现复杂度 | 需要实例的生成/销毁/分配,但实例内部同步简单 | 需要区块间的无缝交接与边界处理,较为复杂 |
| 代表案例 | 多数 MMORPG 的地下城、拥挤区域分线 | EVE Online(单一分片)、VON/pSense 等 P2P NVE 研究 |
实际上两者并非互斥:主流做法是让广阔的开放场景作为单一世界无缝共享,只把地下城、团队副本等局部内容做成平行世界实例,形成混合架构。
元宇宙架构:状态复制方式与渲染流式传输方式
世界类型决定「与谁共享空间」,架构则决定「这个空间的画面如何送达客户端」。大体分为两种方式。
- 状态复制方式(State Replication):服务器或对等节点只分发位置、朝向、动画状态、事件等轻量的「状态」,各客户端在自己的设备上用本地持有的 3D 模型与贴图独立渲染场景。本文介绍的基于 AOI 的同步、CRDT、航位推测,都是以这种方式为前提的技术。通信量小,客户端性能可直接转化为画质,但所有客户端必须预先持有相同的资产,且需要靠补间与外推技术(下节详述)来弥补状态偏差。包括 mistlib 在内,几乎所有 P2P 元宇宙实现都采用这种方式。
- 渲染流式传输方式(Rendering Streaming):由服务器端的高性能 GPU 实际渲染出视频帧,再把画面流式传输给客户端,与云游戏是同一种思路。客户端只需显示画面并把输入回传给服务器,是「瘦」终端,即便低配置设备也能体验高画质渲染。但由于每一帧渲染结果都要经过一次往返,对延迟极为敏感,与下文所述 VR 这类对低延迟要求苛刻的场景相性不佳,服务器端 GPU 成本也更高。由于结构上依赖单一渲染服务器,这本质上是一种中心化架构,与 P2P 元宇宙基本不相容。
既然 P2P 元宇宙采用状态复制方式,就不能像渲染流式传输方式那样「服务器持有真相,客户端只管显示」,每个客户端都要自行负责,把收到的状态重建成一段流畅的画面。承担这一重建任务的,正是下文所述的补间、外推与同步周期设计。
基础设施构成要素:CDN、信令与持久化
真正运行元宇宙的基础设施,并不能仅用「状态复制还是渲染流式传输」这一条轴线来概括。无论拓扑结构如何,几乎所有实现都离不开三种性质迥异的组成部分。
- 资产分发(CDN):3D 模型、贴图、音频这类「重」的静态资产,内容并不会随会话变化,因此通常会与实时状态同步通道分开,改由 CDN(内容分发网络)负责分发。预先缓存到地理上分散的边缘服务器后,用户便可以从离自己物理距离最近的节点获取,从而保持低延迟。Roblox 通过其称为「Asset Server」的 CDN 分发模型、贴图与音频,并借助边缘数据中心缩短与玩家之间的物理距离。即便是志在去中心化的项目,通常也会落到同样的分工上:把「重」的资产分发交给 CDN 或 IPFS 之类的分布式存储,只让「轻」的状态同步走 P2P。下文提到的 NFT「资产本体大多不在链上」的问题,归根结底也是这一资产分发层面的设计问题。
- 信令与匹配:即便是节点间直接交换数据的 P2P 系统,也无法回避某种充当「最初该由谁与谁连接」的中介,即集合点。正如WebRTC与NAT 穿透所述,通过 STUN/TURN 服务器中继、通过信令服务器交换连接信息,是即便自称纯 P2P 的系统实际上也几乎无法避免的、为数不多的中心化环节。
- 持久化与账号管理:用户账号、好友列表、世界元数据、库存记录等,相较于实时性,更需要强一致性,因此多数实现会把它们统一持久化到专门的后端 API(数据库)中。下文提到的需要线性一致性的数据,归根结底大多要在这一持久化层处理。
状态同步的拓扑结构:从纯客户端-服务器到纯 P2P 的连续谱
「谁与谁直接相连、谁持有状态的正本」这一同步拓扑,若看作一条谱系上的连续区间会更容易理解。把纯客户端-服务器与纯 P2P(全网状)放在两端,绝大多数实际实现都落在中间地带,即客户端-服务器混合方式。
- 纯客户端-服务器:所有客户端都连接到单一的权威服务器,由服务器独自持有状态的唯一正本。客户端只能发送自己的输入,无法自行申报位置或结果(服务器权威模型)。Roblox 是这方面的典型:把服务器作为唯一可信来源,从结构上排除了飞天、加速等整类作弊手段。为了掩盖感知延迟,客户端会配合使用客户端预测,在本地立即模拟自己输入产生的效果。其弱点,正是本文开篇提到的服务器成本与单点故障问题。
- 客户端-服务器混合方式(P2P 辅助):匹配、资产的正本管理,以及需要防作弊的判定留在服务器一侧,而位置同步、语音、视频这类高频率、低风险的数据,则由邻近客户端之间通过 WebRTC 直接交换。这样既能降低服务器负载与延迟,又能把「绝不允许重复成功」的处理(如资产转移),连同下文所述的排他控制机制,留在中心一侧,从而在成本与安全性之间取得平衡。包括 mistlib 在内,许多 P2P 元宇宙实现采用的,正是这一现实的折中方案。
- 此外,基于 Photon Engine 的 VRChat 之类平台,是这种中间形态的一个有趣变体。其全部通信实际上都经由 Photon 的云服务器转发,属于真正的客户端-服务器架构,并未使用节点间直接相连的真正 P2P 连接;但对具体某个对象的同步权限,会委托给主客户端(master client),即在该实例中停留时间最长的玩家。服务器始终是通信的中继点,而状态的权威却被分散到了某个节点身上,这是把「拓扑结构」与「权限归属」拆开来独立设计的一个好例子。
- 纯 P2P(全网状、基于 DHT):完全不经过服务器,全体参与者以对等身份直接互连。DHT负责节点发现,流言协议负责状态传播,共同支撑起这种方式。理论上单点故障与运营成本都能降到零,但现实中的门槛很高。人人直接与所有人相连的全网状结构,连接数会以 O(n²) 增长,这与PBFT的通信量问题撞上了同一类瓶颈。NAT 穿透的成功率因对端而异,无法保证与所有节点都维持连接;而资产转移这类需要线性一致性的处理,若没有分布式共识算法这套沉重的机制,也无法回答「究竟由谁来最终确定」这个问题。基于这些原因,作为消费级服务落地的「纯 P2P」元宇宙目前几乎不存在,仍停留在 VON、pSense 之类的学术研究阶段。
| 维度 | 纯客户端-服务器 | 客户端-服务器混合方式 | 纯 P2P |
|---|---|---|---|
| 服务器成本 | 随同时在线人数增长 | 仅承担部分状态,较轻 | 理论上为零 |
| 近旁节点间延迟 | 必须经过服务器往返 | 直连,延迟最小 | 直连,延迟最小 |
| 可扩展性上限 | 取决于服务器处理能力 | 相对较高 | 全网状结构因 O(n²) 而较早触顶 |
| 反作弊能力/一致性 | 结构上很强(服务器是唯一正本) | 仅由服务器担保关键判定 | 没有主体担保,需要分布式共识 |
| 单点故障 | 存在 | 仅关键功能依赖服务器 | 原理上不存在 |
| 代表案例 | Roblox、多数 3A 级在线游戏 | 基于 mistlib 的实现、VRChat(经 Photon 中继的混合方式) | VON、pSense 等学术研究阶段 |
归根结底,多数以「去中心化元宇宙」为目标的实现,最终落脚点并非纯 P2P,而是客户端-服务器混合方式。与其说这是技术上的妥协,不如说它是把下文一致性模型一节中「位置从宽、资产从严」的设计原则,原样体现在了基础设施层面。让低风险、高频率的数据轻装走 P2P,只把需要一致性保证的高风险数据交给服务器或分布式共识这类沉重的机制。这种基础设施层面的分工,在实践中远比理论上纯粹的 P2P 程度更重要。
按一致性模型梳理:位置从宽,资产从严
虚拟世界中交换的信息并非铁板一块。有些信息即便暂时有偏差,只要下次更新能收敛就无实质损害;另一些信息哪怕只错一次也会直接造成经济损失。若对两者要求同等强度的一致性,只会白白推高成本。为不同信息分配恰当的一致性模型,正是 P2P 元宇宙设计的核心。
位置一致性:为何最终一致性已经足够
虚拟化身与物体的位置信息,处在一致性阶梯中最宽松的一级,即最终一致性(eventual consistency),它只承诺一旦更新停止,所有副本终将收敛到同一状态。位置信息之所以能承受这种宽松,是因为些许延迟或一时的偏差,只要下一帧能自然修正,就不会损害体验。
- 航位推测:不逐帧发送坐标,而由速度向量外推位置、仅当误差超阈值时发送校正的经典技法(自 NPSNET 以来的传统)。
- 按关注度调节质量:Donnybrook 用「被注视的对象更新频率更高」的思路,让大规模 FPS 得以在 P2P 上成立。
- 虚拟化身移动的实测:对 Second Life 等的测量研究揭示了虚拟化身聚集于特定地点的「热点」性,成为负载均衡设计(八叉树、空间填充曲线的区域划分)的前提。
实际的坐标同步实现,通常会把航位推测这种面向未来的外推(extrapolation),与把两个已收到的过去快照平滑衔接起来的补间(interpolation)结合使用。外推根据最新收到的数据预测未来位置,不会带来额外延迟,但一旦预测出错,就会在被修正时出现明显的「跳变」。补间则相反:在两个过去快照之间平滑回放,因此始终只显示「实际收到过的值」,不会跳变,代价是要故意回放几十毫秒到 100 毫秒左右的过去,从而带来延迟。多数游戏引擎的网络代码都采用混合方案:自己的输入用外推(客户端预测)立即生效,他人的虚拟化身用补间平滑呈现。因为自己的操作手感要求零延迟,而他人身上的些许延迟通常不易察觉。
VR 场景下的额外考量:在 VR 中,自己头部与双手的动作根本不会经过网络同步:头显传感器的数值必须在本地立即反映到渲染管线中。哪怕只有几十毫秒的额外延迟,也会造成视觉信息与内耳前庭平衡感之间的错位,引发 VR 眩晕,因此自己的视角必须始终由纯本地处理完成,绝不能经过网络。而对于他人的虚拟化身则是另一回事:立体视觉与宽广的周边视野,让位置漂移与跳变比在平面屏幕游戏中更容易被察觉,因此实现上通常更倾向于对远端虚拟化身使用补间而非外推,宁可多一点延迟也要换取流畅。此外,一种常见做法是只同步头显与手柄实际追踪到的三个点,即头部与双手(3-point tracking),其余身体姿态则由接收端通过反向运动学(IK)在本地重建,从源头上减少需要同步的状态量。
同步周期(tick rate):坐标并不需要每个渲染帧(VR 下 90~120Hz,普通显示器也有约 60Hz)都发送,多数实现会把网络发送频率降到 10~30Hz 左右,中间的空隙靠补间与外推填补,以节省带宽。前文提到 Donnybrook「被注视的对象更新频率更高」这一按关注度调节质量的思路,本质上就是让同步周期本身随 AOI 可变的一种优化。在 VR 中,为了保证手部抓取、操作近旁物体等近距离交互的精度,尤其需要为近旁节点单独提高同步周期。
数据一致性与 CRDT:「暂时的分歧」能容忍到什么程度
与位置不同,门的开关、开关的状态、非战斗物体的摆放等「世界共享状态」,需要略强一些的一致性保证。这里用到的是CRDT(无冲突复制数据类型),即无论更新到达顺序如何错乱,无需中央仲裁即可让所有副本自动收敛到同一状态的数据类型。像「让最后一次写入生效」的 LWW-Register(Last-Write-Wins),或只做累加的计数器这类简单数据类型与 CRDT 适配性好;但涉及物理运算的连续位置更新、以及多人同时操作的复杂交互,仅靠 CRDT 难以保证收敛到自然合理的结果,仍是有待解决的研究课题。CRDT 所能保证的仅仅是「大家终将落到同一状态」,至于「何时」收敛、收敛到「哪个值」,则无法控制。这正是它与下文资产类数据的决定性区别。
物品复制(dupe)问题:一致性薄弱如何摧毁经济系统
最终一致性的「薄弱之处」最直观的体现,就是许多 MMO 反复出现过的物品复制(dupe)问题。典型成因是:同一件物品的状态迁移(交易达成、丢弃与拾取、跨服务器转移等)在多个节点或服务器上被同时且各自独立地处理,双方都把「成功」确定了下来,这是一种竞态条件。若是中心化的单一数据库,行锁与事务(ACID 特性)能从结构上杜绝此类竞态;但在 P2P 或跨多台服务器的环境中,无法保证所有节点对「此刻这件物品到底在谁手上」给出同样的答案。这本质上与攻击与防御中讨论的双花问题同构:问题的核心都在于能否从技术上让「同一资产在两处同时被使用」变得不可能。
排他控制:「不允许同时在两处处理」的机制
要从结构上防止物品复制,需要让资产的状态迁移得到排他控制,即任一时刻只能有一个处理在进行。
- 中心化锁:若是单一数据库,行锁或事务的串行化(Serializable 隔离级别)便能自然实现排他控制。这是最简单、也最广泛应用的解法。
- 分布式锁:若跨越多台服务器,一个现实的折中方案是让 Redis 之类的单一锁服务器来仲裁「现在谁可以操作这件物品」。锁服务器本身会成为单点故障,但实现简单。
- 基于共识的排他控制:在连锁服务器这一单点故障都不愿保留的完全分布式环境中,可以用分布式共识算法,让全体节点通过投票来决定「谁先处理」这一全局顺序本身。区块链中「把交易打包进区块并确定下来」的过程,实质上正是这种基于共识的排他控制。
线性一致性(Linearizability):资产操作所要求的最严格一致性
线性一致性(Linearizability)是一致性阶梯中最强的保证。即便是并发发出的多个操作,也要求全体节点观察到的结果,如同每个操作都在某个与实时顺序不矛盾的单一瞬间被依次执行一般。像货币余额的增减、唯一物品所有权的转移这类「绝不允许重复成功」的操作,正需要这种最严格的保证。
一致性阶梯以线性一致性为顶点,越往下保证越宽松,可扩展性与性能则随之提升。
| 一致性级别 | 保证的内容 | 适合的元宇宙数据 | 典型实现手段 |
|---|---|---|---|
| 线性一致性(Linearizability) | 全部操作呈现为单一的全局顺序,且与实时先后关系不矛盾 | 货币余额、唯一物品的所有权转移、交易处理 | 单一数据库事务、分布式共识(PBFT/HotStuff)、区块链 |
| 顺序一致性(Sequential Consistency) | 所有节点看到相同的操作顺序,但不要求与实时先后一致 | 全局事件日志、排行榜更新顺序 | 中央定序器、全序广播 |
| 因果一致性(Causal Consistency) | 有因果关系的操作对所有人顺序一致,无关操作之间的顺序可以互换 | 聊天、评论串、社交互动 | 向量时钟、部分 CRDT |
| 最终一致性(Eventual Consistency) | 仅承诺更新停止后所有副本终将收敛到同一状态 | 虚拟化身位置、环境演出、装饰性世界状态 | 航位推测、LWW-CRDT、流言协议 |
P2P 元宇宙设计的实务,归根结底就是不对所有数据要求同等强度的一致性:位置信息用最终一致性轻量处理,只把货币与唯一物品的转移当作需要线性一致性的「重」处理来对待。通过这种取舍,把分布式共识、多重签名这类高成本机制限定在真正需要的场景,从而保住系统整体的可扩展性。
实例中的 P2P/去中心化元宇宙探索
「完全 P2P 的元宇宙」目前仍主要停留在研究阶段,但也存在部分引入去中心化技术的服务。Decentraland 将土地与穿戴物的所有权以以太坊(及 Polygon)上的 NFT 形式管理,把「谁拥有什么」的记录从单一企业的数据库中剥离出来。但实际负责场景渲染与实时同步的部分(catalyst 节点)仍依赖运营社区管理的服务器集群,「所有权去中心化、执行基础设施半中心化」才是其真实构成。
Webaverse 作为开源的 Web 3D 引擎,将资产存放于 IPFS(星际文件系统,一种点对点分布式存储网络)等分布式存储中,志在让任何人都能托管自己的世界。这些尝试所揭示的是:「所有权记录」与「大规模实时世界同步」是两个独立的问题:前者与分布式账本适配性好,后者仍是需要DHT、NAT 穿透与状态同步协议进一步成熟的高难度领域。
NFT 与资产可携带性:理想与现实
NFT(非同质化代币)能把「谁拥有这件物品」的记录,从单一企业的数据库转移到区块链这一分布式账本上,因而可以成为物品所有权问题的一种解答。理论上,即使某项服务终止,NFT 的所有权记录本身也会留在链上。但在实务中仍有若干障碍。
- 资产本体大多不在链上:3D 模型、贴图文件对区块链而言过于庞大,无法直接上链,因此 NFT 所指向的多半只是 IPFS 或中心化 CDN 上的一个 URI。一旦所引用的存储服务下线,所有权记录虽存,但可显示的实体已经消失,即所谓的「链接失效」问题。
- 平台间互不兼容:要在某游戏购买的穿戴类 NFT 在另一个元宇宙中穿戴,需要两个平台共享同样的虚拟化身骨架、网格格式与比例约定。现状是各平台各自采用专有格式,「拥有 NFT 即可跨世界通用」的宣传语与实际实现之间存在巨大鸿沟。
- 交易成本与版税:NFT 的铸造与买卖需支付区块链交易手续费(gas),二次交易时创作者版税能否强制执行,也因交易市场与链的实现而异,并无统一保障。
商业模式与可持续性:「先有内容,还是先有社区」的困境
真正决定元宇宙能否普及的,往往不是技术实现得多精巧,而是那个经典的先有鸡还是先有蛋的困境。用户之所以来到某个世界,是因为那里「已经有热闹的社区和内容」;内容创作者之所以愿意花时间创作,是因为那里「已经有用户」。可是在服务刚上线时,用户和内容都是零。这正是平台商业理论中长期研究的冷启动问题,元宇宙也不例外。
网络效应:元宇宙特有的一道坎
元宇宙的体验价值,很大程度上受网络效应(梅特卡夫定律)支配,其价值大致随参与人数的平方增长。无论同步技术多么流畅、AOI 调校得多好,一个世界里只有寥寥数人,其体验价值也几乎为零。反过来说,光靠优秀的同步技术无法把用户吸引过来;真正决定元宇宙成败的,是如何搭建起初期用户与内容基础这一非技术性的设计问题。
为什么去中心化系统的冷启动更难
中心化平台一直是靠集中资本与决策权来跨过这道坎的:运营公司可以亲自制作上线时的招牌内容,也可以付费邀请创作者入驻,或先集中精力经营一个规模虽小但热度很高的社区再逐步扩大,这一切都建立在把资金与权限集中于一处、从而获得初始动能的基础上。相比之下,去中心化 / P2P 元宇宙往往不存在(或刻意排除了)这样一个能够「先行注水」的中心主体,冷启动问题因而更加严峻。「所有参与者一律平等」这一设计理念,讽刺地让「谁来补贴第一步」这个问题变得更难回答。
靠投机制造的虚假繁荣及其局限
许多基于 NFT 的元宇宙,都曾试图靠「土地 NFT 销售引发的投机热潮」来跨过这道坎。对升值的预期会把用户吸引过来,也能制造出一时的繁荣景象,但这并不能真正解决冷启动问题。聚集而来的往往不是「想要消费和创作内容的参与者」,而是「押注升值的投资者」,一旦投机热度冷却,同时在线人数便会骤减。可持续的商业模式,需要的是来自持续使用与交易的收入,例如市场手续费、订阅费、创作者经济分成等,而不是资产价格的上涨,这一点也与DAO 的资金库运营息息相关。
「购买土地」这个想法本身的怪异之处
人们为什么要购买元宇宙里的「土地」?物理不动产的价格,与其说是由面积本身的稀缺性支撑,不如说是由人们实际聚集、经过、居住这些可观测的使用事实所支撑。而虚拟世界里的「地块」,其稀缺性仅仅是运营公司自己编写的智能合约规定「这个坐标只有若干个」,这是合约条款上的约定,而非物理规律。一个能体现这种差异的典型案例,发生在 2021 年 11 月的 Decentraland:加密资产公司 Tokens.com 的子公司 Metaverse Group,以约 240 万美元(61.8 万枚 MANA)的价格,买下了「时尚街区(Fashion Street)」的 116 个地块,当时被广泛报道为「元宇宙地产史上最高价」。买家表示将用于举办数字时尚活动,但在成交之前,并没有相应的访客量或使用数据能够支撑这一价格。
大约一年后的 2022 年 10 月,CoinDesk 基于分析公司 DappRadar 的数据报道称,估值约 13 亿美元的整个 Decentraland 生态系统,24 小时内的「活跃用户」仅有 38 人。这一数字来自 DappRadar 一个较为狭窄的定义,即直接与智能合约交互过的独立钱包数,Decentraland 方面对此提出异议,称平台实际日均用户约为 8,000 人。但无论采信哪个数字,一个问题依然存在:当时是否真的存在足以支撑 240 万美元价格的人流。
优质的实体地产,其定价大体由「有多少人实际经过、使用这片空间」这一可观测的需求信号支撑。而虚拟空间「地块」的价值,则仅仅依托于运营公司自己写的代码所制造出的人为稀缺性,以及对未来用户增长的预期,把两者都称作「地产」,本身或许就是一种范畴错误。事实上,据研究机构 CoinGecko 的分析,The Sandbox 与 Decentraland 的土地价格,相比 2022 年前后的高点分别下跌了约 90% 与约 88%。这次暴跌,正是价格由投机预期而非实际使用需求所支撑的一项佐证。
NFT 能证明什么、不能证明什么:「真假包」问题
包括 NFT 在内的区块链技术真正能够可靠解决的,是「这是真的还是假的」这一溯源真实性(provenance)问题。某个地块 NFT 确实是指向该坐标、未被复制的唯一代币,这一点可以通过密码学方式加以验证。这与奢侈品品牌通过防伪鉴定或序列号来确认「这个包是正品,不是假货」,本质上是同一种职能。
而这恰恰是 NFT 批评的核心所在。能证明一个包是正品,与这个包本身做工是否优良、是否值那个价钱,是完全不同的两个问题。同样,能证明某个土地 NFT 是不可复制的唯一正版代币,与那块地是否值得访问、是否有使用价值,也是完全不同的两个问题。前文提到的那块 Decentraland 地块无疑是「正品」,买家并没有买到伪造品或复制品。但「是正品」这件事,既没有保证会有访客到来,也没有保证资产价值能够维持。
更进一步说,正如本文前面所述,地块 NFT 所指向的「实体」,也就是实际被渲染出来、可供访问的 3D 空间,依然依赖运营公司自己管理的服务器集群(catalyst 节点)。也就是说,NFT 在密码学上能保证的,仅仅是「这枚代币的所有权链条」,而这枚代币所指向的体验本身能否延续、质量如何,最终仍然掌握在与从前无异的中心化服务器运营之中。区块链解决的,只是「所有权真实性」这一有限的问题,却没有回答「这项资产是否有价值」「这份价值能否持续」这两个本应更重要的问题。
现实的破局之道:渐进式去中心化与互操作性
- 渐进式去中心化:DApps一节提到的设计方针,即项目起步阶段由团队集中决策,随着业绩与社区的成长再分阶段移交权限,同样适用于元宇宙的冷启动对策。刻意保留一个能提供初始动能的主体,待网络成长起来后再放手。
- 搭乘既有社区的顺风车:与其从零开始建立社区,不如把 P2P 空间事后提供给早已聚集了热度的社区(例如某个 Discord 服务器),让人们把既有的人际关系直接带进来。
- 靠资产互操作性吸引用户:前文提到的 NFT 跨平台不兼容问题,反过来看也是一个机会:如果能把在其他平台已经建立好的身份与物品原样带入,就能在不必等待内容从零创作的情况下,提供一种「似曾相识」的体验。实现互操作性既是技术挑战,也具有作为冷启动对策的商业意义。
归根结底,P2P / 去中心化元宇宙需要解决的,不只是同步算法与一致性模型。「如何聚拢最初的一百人,又如何让这一百人留下来」,这个与技术无关的社区设计问题,才是众多项目遭遇过的最大一道坎。
延迟与反作弊:P2P 元宇宙的技术难关
基于 AOI 的 P2P 分发适合同步广阔世界的背景内容,但把直接决定玩家胜负的命中判定、物品获取先后等「结果攸关」的处理完全交给 P2P 是危险的。在没有中央权威的情况下,系统只能相信各节点自行申报的位置与状态,这使得恶意节点发送对自己有利的虚假位置信息(作弊)难以被察觉。
- 延迟:P2P 路径受跳数与各对等节点线路质量影响,比集中式服务器更难保证一致的低延迟。当参与者横跨多个大陆时,公平的同时性设计本身就很困难。
- 反作弊:由于不能让节点自己验证自己申报的位置或结果,需要靠多节点投票,或用密码学证明(如承诺-揭示方案)来佐证自我申报的内容。这本质上与攻击与防御中讨论的女巫攻击对策、以及分布式共识的思路是同一类问题。
- 现实中的折中方案:许多实现最终采取混合架构:外观层面的同步用 P2P/边缘节点轻量完成,而与胜负相关的判定则经由可信服务器或类似多重签名的多签确认来完成。
中心化 vs P2P/去中心化:当下的现状对比
梳理以上论点,两者的利弊可归纳如下。
| 维度 | 中心化 | P2P/去中心化 |
|---|---|---|
| 服务器成本 | 与同时在线人数成正比,由运营公司全额承担 | 计算与带宽由参与者分摊,运营成本低但质量参差不齐 |
| 单点故障 | 运营服务器停止或终止服务将导致整个世界一并消失 | 节点分散因而更能承受局部故障,但完全的可用性仍需另行设计 |
| 物品所有权 | 完全是运营公司的数据库记录,可能因协议变更或破产而丧失 | 可用 NFT 等将所有权记录外部化,但资产本体的可用性仍是另一个问题 |
| 延迟/一致性 | 服务器拥有单一真相来源,更易保持一致性 | 靠共识与 CRDT 达成一致,但传播延迟与冲突解决的设计较难 |
| 反作弊能力 | 得益于服务器权威,相对稳健 | 验证成本高,防范恶意节点是必须的设计要求 |
在浏览器中体验 P2P 元宇宙
把本文介绍的 AOI、状态同步、NAT 穿透等要素技术真正整合起来,致力于实现不依赖中心服务器的分布式元宇宙的,正是本站运营团队推进的 tik-choco-lab 项目(GitHub)。团队不满足于停留在理论讲解,而是把亲手实现并验证这些要素技术作为活动的核心。
其核心是实现了本文所述技术的开源 P2P 网络库 mistlib(GitHub)。其核心用 Rust 编写,通信层并用 WebRTC 与 WebSocket,支持NAT 穿透,并具备基于本文所述 AOI(兴趣区域)优化近旁节点间空间同步的功能。除浏览器外,也可从 Unity、Python、JS 中调用,并支持音视频轨道传输(目前为测试版)。
作为使用 mistlib 构建的浏览器应用示例,以下几款已公开发布:无需安装,只需在浏览器中打开即可实际体验多人 P2P 通信与空间同步的运作方式。
三者均为开发中的测试版本,不对性能或稳定性作出保证,公开目的在于让读者以具体实现为例,确认本文所述理论在浏览器中的实际运作方式。
总结而言,当下大多数所谓「元宇宙」依然以客户端-服务器型为主流,P2P/去中心化目前只是部分解决了物品所有权等课题。结合 P2P、边缘与云的下一代架构研究正在进行中,该领域的一手文献已在参考文献页面充分汇总。