解读 MOPN:如何设计一款 NFT 放置挖矿全链游戏?
如果让你设计一款全链游戏,你会怎么做?
如果让你设计一款全链游戏,你会怎么做?
撰文:Shew Wang、白丁,极客 web3
摘要:可能每个人都有自己设计一款游戏的冲动,闲暇时的各种脑洞如果组合到一起,能否促成一款游戏的诞生?如果让你自己设计一款全链游戏,你会怎么做?可能想着容易做起来难,如果你真的下场设计一款全链游戏,需要考虑的问题其实比想象的更多更复杂。
本文以一款名为 MOPN 的 NFT 放置挖矿游戏为例,其主要玩法是在有限的公共土地上放置 NFT 来赚取收益,即放置挖矿。在设计这款游戏时,游戏设计者不但要考虑为其原生 Token 制造销毁 / 通缩场景,还要思考怎么反女巫、为关键的数据指标构造合适的数学公式,以及解决全链游戏对预言机等第三方组件的依赖。
下文中,我们将从 MOPN 的机制设计和经济模型等多角度展开解析,帮助更多人理解 Web3 游戏的设计思路和全链游戏的实现路径。
MOPN 游戏规则简述
作为一款 Token 本位的放置游戏,MOPN 的核心玩法很简单:该游戏创建了一个包含近 100 万个地块的开放地图,玩家在开放地图上放置 NFT 以获取奖励。MOPN 中包含 4 种资产:
1. MOPN 的原生 Token——MT(MOPN Token),
2. 用于放置 NFT 的地块——MOPN Land
3. 玩家放置在地块上的 NFT
4. 炸掉地块上已有 NFT 时使用的炸弹 Bomb
其中,MT Token 是游戏内的核心资产,所有经济活动都与 MT 相关,玩家把 NFT 放置于某个地块后,可以根据 NFT 的积分权重和放置时间获得 MT 奖励。NFT 放置挖矿产出的 MT,90% 会被该 NFT 的主人获得,5% 的挖矿产出被地块的主人获得,相当于地租,5% 进入该 NFT 所属 IP 的金库(比如 BAYC 有自己的游戏内金库)——Collection Vault 中,相当于税收。
在 MOPN 的设计方案中,地块隶属于名为 MOPN Land 的 NFT。MOPN LAND 总供应量为 10981 个,每个 Land 覆盖地图上的 91 个地块,所有 Land 合起来覆盖了地图中全部近 100 万个地块。
Land 的获得途径包括铸造和拍卖。玩家获取 Land 后,可以将其放置在地图上,激活那些处于休眠状态的地块,被 Land 覆盖后激活的地块才可以放置 NFT。任何玩家都可以把 NFT 放置在某个 Land 下辖的地块上,但要把 5% 的收益分给地主(Land 的所有者)。
MOPN 游戏规则中比较有趣的是, 你可以用「炸弹」把你周围的异类 NFT 清理掉。游戏规定,以你放置 NFT 的地块为中心,两个地块的距离内,不能有其他 IP 系列的 NFT(比如 BAYC 和胖企鹅就是彼此冲突的 IP)。此时,如果你非要在这个地块放置 NFT,那就要用炸弹将异类 NFT 清除。
最终达到的效果如下图:每个 NFT 周围两个地块的距离内,都是同类 NFT。
总体概括,游戏的规则比较简单:把自己的 NFT 放置在某个地块上获取挖矿奖励,你要分一部分挖矿产出给地主,同时你要保证自己周围没有非同类 NFT。
另外,MOPN 为参与放置挖矿的 NFT 合集配备了特定的 Collection Vault 金库,由于 MOPN 是全链游戏,与 NFT 相关的市场数据不应依赖于预言机,所以 MOPN 设置了 Collection Vault 通过特定机制来获取 NFT 市场价格等场外信息(后面会提到怎么实现)。
上述规则构建起了以 MT Token 为核心的经济系统,如图所示。下文中,我们将从游戏设计者的视角,对 MOPN 的实现方式进行简要介绍。
ERC-6551 账户解析
MOPN 为每个参与放置挖矿的 NFT 创建了 ERC-6551 抽象账户,而ERC-6551 账户是 MOPN 游戏系统的核心组件,大量的业务逻辑都依赖于它来实现。
ERC-6551 标准源自 EIP-6551,旨在为 NFT 创建专属的 AA 钱包账户,让 NFT 可以像普通的以太坊用户一样拥有诸多权利。比如说,你可以为 BAYC 注册一个 ERC-6551 账户,利用该账户进行收款及链上操作。当用户转让 NFT 时,相应 ERC-6551 账户的所有权也会被一并转移。
这么做有什么意义呢?在某游戏场景中,假设以太坊地址 A 拥有一个名为 Bob 的虚拟游戏角色,而 Bob 本身是以 ERC-721 NFT 的形式来实现的,其持有多个道具(如帽子、鞋子、武器等)以及其他资产(如金元宝),这些资产可能借 ERC-20、ERC-721 等形式来实现。虽然这些道具在游戏的设定中被视为属于 Bob,但在底层合约的视角,上述资产关联在地址 A 名下。
假设地址 A 的控制者将虚拟角色 Bob 出售给别人,需将 Bob 及其持有的游戏资产逐一转移给买家,这在实际操作中比较繁琐且并不合理。EIP-6551 的目标在于,直接为游戏中的虚拟角色 Bob 创建一个专属的钱包账户,用于管理其持有的道具和资产,使得整个交互流程更简洁更合理化。
ERC-6551 主要由以下两个模块构成:
1.Registry。Registry 是一个工厂合约,用户可以把自己的 NFT 合约地址和 tokenId 提交过去,Registry 将为其生成一个专属的固定地址,在此地址内为用户的 NFT 部署账户。
2.Account Implementation。该模块涵盖了 ERC-6551 账户的具体实现细节,各个项目方会根据自身需求,采用适合自己的具体实现方案。
MOPN 配备了自己的 Registry 和 Account Implementation 模块,用户可以输入 NFT 合约地址以及 tokenId,以确定性的方式为 NFT 创建一个专属的 ERC-6551 账户,用于适配游戏操作中的各种需求。
NFT 放置挖矿的机制设计
前面我们曾提到,用户进入游戏后的第一步,便是选择 NFT 并将其放置于适合的区域,下图展示了目前 MOPN 的部分地图:
在游戏地图上,我们可以观察到属于不同 IP 合集的 NFT 以及不同颜色的地块。每个 NFT 都会将自己周围 1 格的地块辐射成特定颜色,只有同类 NFT 才可以紧挨着放置,非同类 NFT 之间至少要拉开两个地块的距离。
对此,MOPN 采用了六边形地块,并建立了坐标系如下图:
显然,地图上的每个地块都有唯一的坐标,整个地图被分为 10981 个区域,划分为 10981 个 MOPN Land,每个 Land 有自己专属的 LandId。在 MOPN 的设计中,Land 拥有者可以向 NFT 放置者收取租金,即 5% 的 NFT 挖矿收益会流入地块拥有者的 ERC-6551 账户。
每个被放置的 NFT,其 ERC-6551 账户中存在一个 titleAccounts 字段,表示该 NFT 所属的集合。当你尝试将 NFT 放置在某个地块上时,相关合约会读取该地块紧邻的 19 个地块上的 NFT 对应的 ERC-6551 账户,通过检查 titleAccounts 字段判断是否有异类的 NFT 被放置在了临近区域。
上面讲到的内容还只是整个 MOPN 机制设计的冰山一角。站在游戏设计者的角度,你还要考虑很多麻烦的问题。首先,在游戏早期,你要考虑哪些 NFT 可以参与到 MOPN 游戏中,如果你不对 NFT 种类进行限制,一定会有人把大量的垃圾 NFT 放置在地图中快速获取大量 MT Token 收益,最终使得 Token 严重通胀,这本质就是反女巫问题。
为了避免此类情况,一定要采取限制措施,仅允许特定类型的 NFT 参与到游戏中。MOPN 在正式启动前,使用以下公式为市场上所有的 NFT 合集进行评分:
以下是 MOPN 官方根据最近的快照信息给出的统计表格。
我们可以看到表格内有个名为 STAGES 的列,代表该 NFT 所属的 IP 合集何时能够参与游戏。标记为 Stage1 的 NFT 系列在游戏启动之初就可以参与放置挖矿,而 Stage2 和 Stage3 则需要等游戏进行到一定阶段时。
第二个问题,谁可以放置 NFT?
答案是任何人都可以,放置 NFT 的人可以不是 NFT 的主人,但只有 NFT 的主人能直接提取放置挖矿的奖励,之后分一部分给替他放置 NFT 的人。我们将这种不是该 NFT 的主人,但代其放置 NFT 的人称为「Agent 代理人」。
按照 MOPN 的设计,当 NFT 持有者提走挖矿奖励,或 NFT 被移动、炸掉时,Agent 可以分得部分挖矿收益,具体数值为:放置挖矿收益的
其中 n 指该 NFT 系列已有的 Agent 数量(比如有 n 个人做了 BAYC NFT 放置挖矿的代理人)。显然,作为 Agent,越早参与游戏可获得的奖励越多。
最后是第三个问题,如何计算 NFT 的放置奖励?
这个问题其实要结合 MOPN 自身的经济模型来解答。MT 的总供应量为 10 亿,Blast 每出一个区块(大概 2 秒),MOPN 就会向 NFT 矿工释放一定的 Token 奖励。MT 初始时设定为,Blast 每出一个块就释放 60 枚,每过 50000 个区块(1.2 天),MT 释放量衰减千分之三。具体的释放曲线如下:
当我们确定每个区块的 MT 释放量后,就可以计算每个 NFT 分得的挖矿奖励,因为每个区块中释放的 MT 会按照权重,分配给参与挖矿的不同 NFT。上文提到的 MOPN Point,决定了每个 NFT 的奖励权重
其中,Tile Point 根据 NFT 所在的地块进行分类,分为 +1、+5 和 +15 三档,对应地图上不同稀有度的三类地块。Collection Point 与 NFT 所属的 IP 合集以及质押情况相关,在后文关于 NFT 金库的部分会详述。
最终,每个 NFT 按照其 Point 占所有 NFT 总 Point 的比例,分取每个区块中释放的 MT 奖励。
Land 拍卖和炸弹 Bomb
在前面我们曾提到,当你在 MOPN 地图上放置 NFT 时,必须声明目标地块所在的 LandId。LandID 代表该地块所属的 LAND 编号,当 NFT 放置者提取 MT 挖矿奖励时,5% 的 MT 将流入地块所属的 LAND 的地主账户中(每个地主控制不同的 LAND)。在 MOPN 中,Land 的功能是管理地块,而地块和 NFT 的关系就像花朵和花盆。所以,LAND 也是游戏中的核心资产之一。
(Land 实质是个 NFT,左下角标记的(-48,10)代表这块 Land 的中心点地块在 MOPN 地图中的坐标)
LAND 的所有权以 NFT 的形式来表达,所有 LAND NFT 都通过两种方式发行:用 ETH 铸造或通过 MT Token 参与拍卖铸造。
ETH 铸造 Land 的模型比较简单,玩家可以花费一定 ETH 直接铸造并获得 Land。第一个 Land 的铸造价格为 0.02 ETH,之后每个 Land 被铸造时,价格比前一个上涨千分之一。
而用 MT 拍卖铸造 Land 的过程相对复杂一些,采用荷兰拍模式。每个 Land 的起拍价为 100 万 MT,每轮拍卖一块土地,起拍价每 5 轮自动下调 1%。一轮拍卖完成后,下一轮将自动启动。所有用于购买 / 铸造 Land 的 MT 将被烧毁,这是在整个 MOPN 游戏中,MT 被销毁的第一种途径。
Bomb 机制
放置 NFT 时,若目标地块周围 2 个地块的距离内有异类 NFT,就要用 Bomb 把异类 NFT 炸掉,清空其所在地块。Bomb 是一种将异类 NFT 强制移出地图的方式,需要通过燃烧 MT 的方式来获得,用过的 Bomb 即被销毁,这是 MOPN 中 MT 的第二个销毁场景。
Bomb 的定价遵循公式:
其中 MT Production 为目标地块上已挖出的 MT 产量,titles 代表这枚炸弹要清除的地块数量,而 bomb production 代表过去 7200 个区块内的 Bomb 使用量,目标地块上 NFT 已挖出的 MT 越多,或过去一段时间内人们使用 Bomb 的次数越多,炸弹价格越贵。
NFT 合集金库(NFT Collection Vault)
在前面我们曾提到,MOPN 按照一个评分系统为放置在地图上的 NFT 分配奖励,这个评分系统叫 MOPN Point,MOPN Point 包括 Title Point 和 Collection Point 两部分。Title Point 按照 NFT 所处地块的稀有度来定,而 Collection Point 与该 NFT 合集(如 BAYC)在游戏内专属的金库有关。
Collection Point 度量的是 NFT 金库内的 MT 存量,金库内 MT 数量越多,该类 NFT 放置挖矿收益越高,其初始计算公式是
其中,Vault $MT 是该 NFT 金库的 MT 存量。向金库内添加 MT 的途径,包括挖矿税收和质押两种,第一种是我们前面提到的,任何 NFT 放置挖矿,在提取收益时都会自动向金库内提交 5% 的税收(另外 5% 是土地租金),另外一种就是自愿形式的质押,你把 MOPN 质押到某个 NFT 金库中可以获得 APY。
MOPN 的 NFT 金库还有其他功能,比如它可以为 MOPN 提供 NFT 的市场价格数据。由于整个 MOPN 游戏都是围绕 NFT 来运转的,NFT 的市场价格是一个重要的数据指标,然而作为一款全链游戏,MOPN 不希望依赖于预言机等中心化组件。
为此,MOPN 自己设置了一个类似于 AMM 的 NFT 买卖平台(说白了就是自己搭个池子),玩家可以在这个平台上买入 / 卖出 NFT,各种套利行为会使得该平台上的 NFT 价格与外部市场的价格保持一致,这样系统可以在不依赖于预言机的情况下,设法获知 NFT 在外部市场的报价。
MOPN 的 NFT 买卖平台采用了类似于 Uniswap 的模式,本质是点对池,然而,相比于 ERC-20 的 AMM,NFT 的 AMM 较难实现,一方面因为 NFT 是非同质化的,任何人对特定 NFT 都有自己的心理价位,无法直接对一个 IP 系列直接定价,另一方面 NFT 本身数量有限,流动性远不如 FT,这使得 NFT 的成交较为困难。
针对这个问题,MOPN 将拍卖和 AMM 结合起来,由金库合约直接参与 NFT 的买卖,直接贡献流动性。NFT 金库向玩家收购 NFT 的过程,遵循自动出价制,起始出价为金库内 MT 余额的 20%,第一次成交后,下一次的初始买入价会设置为金库最后要价的 75%,每个区块增加 0.05%,最高限额为金库余额的 20%。
当某 NFT 持有者认为报价符合自己的预期,可以出售自己的 NFT。之后金库会从买入 NFT 切换为售出 NFT 的模式,启动荷兰拍,公开出售其刚刚收购的 NFT。荷兰拍的起始报价为收购价的 125%,每个区块下降 0.05,下限为 1MT。拍卖完成后,占成交价 0.5% 的 MT 将被销毁,这是 MT 被销毁的第三种途径。
完成 NFT 售出后,金库可以再次转入收购状态,向外界提供 NFT 报价,如此循环往复。
相比于常规的 x * y = k 模式,基于拍卖机制的广义 AMM 可以帮助每一个 NFT 被充分定价,最终使得金库以接近于最优报价成交。若未来 MOPN 有足够的影响力,大量 NFT 可能以这种方式进行交易,NFT 的流动性会在一定程度上得到解决。
由于上述拍卖机制使得 NFT 被充分定价,所以我们可以粗略认为,金库中 NFT 的买卖成交价,就是当前 NFT 合集的地板价,这代替了预言机的喂价功能。
回到 MOPN Point 这里,由于金库内的 MT 存量可能不稳定,无论是 NFT 买入和卖出,金库内的 MT 库存都会有很大变动,出于公平和稳定,在某 NFT 的金库卖出 NFT 后,Point 计算公式变为:
其中,vault last ask-accept price 是该 NFT 最后一次被金库售出后,其获得的 MT 量,而 vault $MT 是售出 NFT 前金库内 MT 的存款。
总结
从技术实现角度看,MOPN 引入了 ERC-6551 账户,提高了游戏系统的灵活度和可组合性,同时采用基于拍卖的 NFT 交易平台,提供了一个基于点对池的 NFT 市场,通过内部市场的报价,解决了全链游戏对预言机的依赖问题。作为一个比较易懂的全链游戏经济模型设计案例,MOPN 还是值得我们去深入学习的。
免责声明:文章中的所有内容仅代表作者的观点,与本平台无关。用户不应以本文作为投资决策的参考。
你也可能喜欢
Perena 推出 Numeraire:一个多稳定币流动性池
简单来说 Perena 引入了 Numeraire,通过利用统一的枢纽资产 USD* 来优化市场流动性并提高运营效率。
Synthetix 推出“Synthetix Vaults”产品线,并宣布计划收购杠杆代币协议 TLX
简单来说 Synthetix 推出了新的产品线“Synthetix Vaults”,以补充其去中心化衍生品平台并使该协议的收入来源多样化。
QCP Capital:杠杆过高导致市场超买,回调在所难免
简单来说 QCP Capital 指出,由于大选之后市场严重超买,比特币正在回撤至上周初的水平,因此回调是自然而然的结果。
Anthropic 推出模型上下文协议,用于改善 AI 模型生成的响应
简单来说 Anthropic 已经开源了其模型上下文协议,使 Claude 能够连接到本地计算机上的任何资源并与任何 API 或云服务器进行交互。