读懂Solana生态的可扩展性创新:EphemeralRollups

转载
4 小时前
9316
戈多Godot

文章转载来源: 戈多Godot

Solana 生态的可扩展性创新:Ephemeral Rollups(临时 Rollups)????????

Ephemeral Rollups 是Magic Block开发的实时状态更新引擎,为全链上游戏、社交、交易等高并发场景设计。目前主要应用于全链上游戏引擎。

全链上游戏要求每个动作都要记录在链上,比如移动、攻击、道具消耗等等。

问题在于共识机制带来可拓展性限制。

假设 1000 名玩家同时在线。每个玩家位置每 100 毫秒更新一次,每秒产生 10,000 笔交易。将玩家数量扩展到 100,000 人,交易速率跃升至每秒 1,000,000 笔。这是目前任何共识都无法承受的。

所以,其实想将 QQ 游戏大厅上链,是非常难的,甚至不可实现,更不用说《魔兽世界》《梦幻西游》这种大量玩家在线,且每名玩家每秒有多种复杂操作的游戏了。

但 MagicBlock 希望实现将高并发游戏上链。任何参与者都可无许可地集成或修改游戏内容,或创造"自治世界" (Autonomous Worlds)。

游戏状态和逻辑存储在链上,无法篡改。分布式服务器确保游戏韧性,没有单点故障。

Ephemeral Rollups(临时 Rollups)提供了一个解决方案。

核心原理是,把游戏高频数据,暂时"借"到一个专门的高速环境里——"临时 Rollup"。

在临时环境里,延迟低至 50 毫秒,和传统游戏服务器一样快。完全免费,不用付 Gas 费。还可以编辑被动触发的逻辑,比如游戏里的剧情。

最新状态同步会定期更新到主链,主链可随时查看数据。如果临时环境出问题,数据会自动回滚并归还给主链。

且整个过程,用户无感知。后台的 RPC 路由器会自动决定哪些操作走快速通道(临时 Rollup),哪些操作需要走主链。

具体如何实现?

需要介绍几个概念:Solana 账户结构、程序派生地址 (PDAs)、账户修改权限的委托机制 (Account Modification Delegation)。

1/ Solana 的账户结构

Solana 核心概念是“一切皆账户”。程序代码、用户数据、Token 余额等信息,都存储在账户中。

Solana 账户主要分为两类(代码与数据分离):

1)可执行账户 (Executable Accounts) = 程序账户(只读)

存储程序代码,类似于其他区块链的智能合约。

2)非可执行账户 (Non-Executable Accounts) = 数据账户(可修改)

账户存储数据和状态,不包含可执行代码。

需要注意的是,这个“账户”跟用户的钱包地址是不同的。

查看浏览器会发现,普通地址的 Owner 拥有者是 System Program,地址固定为 11111111111111111111111111111111 。

System Program 是 Solana 官方内置程序。

所以其实,当你创建一个 Solana 钱包,比如 Phantom,得到的地址实际是:

  • 账户类型:非可执行账户(数据账户)
  • Owner:System Program(系统程序)

也就是说,钱包地址 = 系统程序拥有的数据账户。

钱包地址,由私钥派生而来,用户拥有对应私钥,可以签名交易。

账户是链上存储的数据结构,由某个程序(owner)控制,钱包地址"指向"这个账户。

2/ 程序派生地址 (PDAs)

Solana 账户系统的高级特性,对游戏非常重要。

PDA 是一种特殊的账户地址,本质上就是一个普通的 Solana 账户,但它的地址生成方式很特殊,由程序派生,只能由创建它的程序控制,没有私钥(不由用户控制)。

所以,对全链上游戏而言,只有游戏程序可以修改这个 PDA,其他程序只能读取。

于是,通过 PDA 可完成:

1)轻松创建大量游戏状态账户

2)所有权可转移(委托机制)

3)地址可预测(路由更容易)

4)程序控制(用户通过程序授权)

对临时 Rollup 来说,可完成:

1)管理大量游戏状态账户

2)支持频繁委托和取消委托

3)确定性地找到账户

4)实现程序控制(不是用户直接控制)

然后还需要,3/ 账户修改权限的委托机制 (Account Modification Delegation)

这是临时 Rollup 的关键创新:

正常情况:账户只能由其所有者程序修改;

委托机制:可以临时将账户的修改权限"借给"另一个环境(临时 Rollup)。

需要注意的是,委托 ≠ 转移资产所有权,委托的是"修改游戏状态的权限",不是"资产本身"。

再加上,4/Sealevel 并行处理

Sealevel 可识别不相互冲突的交易,并同时处理。

于是,在具体游戏时,

假设玩家 Alice 用 3vj 开头 Solana 地址玩全链上《魔兽世界》,需要频繁更新位置、战斗、消耗道具等等,同时玩家在线超万人。

此时,

1/ 游戏启动:游戏程序计算 Alice PDA 派生地址

2/ 用户授权:Alice 授权委托游戏状态账户

3/ ER 启动:节点检测到委托请求,启动 Ephemeral Rollups(临时 Rollups,以下简称 ER)

4/ 状态同步:从 Solana L1 同步 Alice 的游戏数据到 ER

5/ 游戏进行:玩家在游戏中操作,ER 执行任务

6/ 跨层读取:若需要读取 NFT 等信息,ER 可直接从 Solana L1 上读取,但无权修改

7/ 定期同步:ER 数据定期上传至 L1

8/ 资产操作:若游戏道具或游戏币变现,则需取消 ER 授权,在 Solana L1 执行,需玩家前面,Token 转移由 Token Program 保证安全,游戏金库是 PDA,只有游戏程序能控制。这两者的 Owner 是不同的。

这样就实际完成了《梦幻西游》《魔兽世界》用游戏币买卖点卡,打金团变现等操作。

9/ 游戏结束:玩家下线,ER 关闭。