比特币生态的游戏和元宇宙

长久以来，我们谈到链游，都是基于 ETH 这样的智能合约平台。原因也显而易见，要么走资产上链的 GameFi 路线，要么走状态上链的全链上游戏路线。不管哪种路线，使用智能合约都是最简单的实现方式。然而铭文的出现，让非智能合约平台 BTC 生态结合索引器产生了另外一种不同的技术实现方式。本文将对 BTC 生态的游戏，元宇宙和自主世界方面的探索做一个技术总结，来看看铭文和链游是如何做结合的。

全链游戏的另一种实现

对于一个典型的资产上链的 GameFi 游戏来说，不管是发行 NFT 还是 FT 代币，智能合约平台仍然是最好的选择，不折腾。那么去年大火的全链上游戏可以放到 BTC 链吗？这句话开始听起来比较奇怪：全链上游戏的定义就是把游戏逻辑和资产都写入到链上（逻辑写入智能合约虚拟机而资产使用智能合约发币），你既然智能合约功能都没有，那怎么做呢？

刚开始看到 Ordz Game (@OrdzGames) 说自己是基于 BTC 的 fully on-chain game 的时候，我也是感觉好奇的。之前的文章我们提到过，铭文是可以把任何文件都上传到 BTC 的隔离见证空间，大小上限是 4M。结果 domo 把 “一段发币的 JSON 格式代码” 上传上去，早就了 BRC20 几十亿美金的市场。那如果把一段游戏代码上传到链上呢？Ordz 正是这么做的。

对于网页版小游戏来说，玩家访问游戏网页的时候会把代码下载到浏览器本地文件，然后在浏览器直接运行整个游戏，因此 “铭文版全链上游戏” 只需要提供一个能下载游戏代码的网上存储空间即可，BTC 的隔离见证空间正是提供了这样一个 DA 层。其原理如下：

开发：小游戏通常使用 HTML、CSS 和 JavaScript（JS）进行开发。HTML 负责页面的结构，CSS 处理样式和布局，而 JavaScript 则是负责游戏逻辑、动画和用户交互的核心。

托管：开发完成的游戏代码和资源文件（如图片、音频等）会被上传到 BTC 隔离见证空间。这样，用户通过浏览器访问特定的 URL 就可以加载游戏。虽然游戏的逻辑和运行完全在客户端（即用户的浏览器）完成，但游戏的文件还是需要从链上下载到客户端的。

加载：当用户访问游戏的网页时，浏览器会下载 HTML、CSS 和 JavaScript 文件。这些文件包含了游戏的全部或大部分代码。

运行：下载完成后，浏览器会解析 HTML 和 CSS，构建页面的结构和样式。同时，JavaScript 代码会在浏览器的 JavaScript 引擎中执行。

交互：用户与游戏的交互（如点击、拖动等操作）会通过 JavaScript 处理，游戏根据这些交互更新游戏状态和画面。因为这些过程都在用户的设备上完成，所以响应速度快，能提供流畅的游戏体验。

综上所述，Ordz 虽然确实是把游戏代码都上传到了链上，但是严格来说，是不符合 “fully on-chain game” 的定义的，毕竟游戏的所有逻辑都放到链下执行了。但是做为 GameFi 类型的铭文小游戏有它独特的一面，也发行了自己的铭文 BRC20 代币做为 utility token（ORDG）。

做为元宇宙地图的 Bitmap

Bitmap (@bitmapdev) 号称比特币生态第一个元宇宙项目，由推特用户 @blockamoto 于 2023 年 6 月 13 日在推特提出，并在随后被部分媒体关注和宣传。Bitmap 建立在序数理论（Ordinals theory）和位图理论（Bitmap theory）基础之上。序数理论就是把每一个 sat 分配一个序号，而位图理论也很简单，把比特币每十分钟生成的一个区块根据数据结构这些参数看成一副地图数据定义了一些数据格式。两者结合的意思是，每一个区块当成一个地图 NFT，然后把这个 NFT 利用 ordinal 绑定到某一个 sat 上面。

Bitmap 理论本身只规定了两个基本规则：

1，每一个区块定义为 “地区”（District），用区块高度表示。

2，区块里面的每一个交易定义为 “地块”（Parcel），按照顺序从 0 开始计数。

那么所谓的 “铭刻” 就是把地区和地块的序号按照格式上传到隔离见证空间，绑定 sat。举例来说，区块高度 31209 的区块，需要把（31209.bitmap）这段文字绑定到 sat 上即可宣示所有权。31209 区块里面的第 5 个交易，需要把（5.31209.bitmap）这段文字绑定到 sat 即可。但目前仅允许 “district” 的所有者才能铭刻 “parcel” 的所有权。

其他的子规则，包括 input/output 代表的含义，区块交易数量代表的含义等等，可以由不同的项目单独定义，这才有了 2D 版地图，3D 版地图，VR 版地图。。。

知名协议 BRC420 最开始是制作了头像与 bitmap NFT 交互协议（使用了递归铭文技术并且有图币转换方面的探索），形成了 bitmap.game 这个产品，是 bitmap 生态最为出名的开发团队。随后该团队制作了递归铭文头像生成平台（rcsv.io）和 BTC 二层网络 Merlin Chain，并且把公司名字也改成了 Bitmap Tech。所以这里要注意，Bitmap Tech 和 Bitmap 协议是完全两回事。

在创世发行阶段，Bitmap 可 Mint 的总量就是比特币区块高度。 Bitmap 标准发布时候，已经有 70 多万的历史区块，对于历史区块，用户只要支付矿工费既可以自由选择进行铭刻。在创始人发布 2 个月内有 70 多万的历史区块被注册完毕。

Bitmap 总量和比特币当前区块挂钩， 比特币大概十分钟产出一个块。所以在总量理论上是无限的。比特币每次产生一个新区块的时候，就会多出一个可注册的 bitmap（根据规则，只有区块挖出后的再发起的铭刻登记才是有效），遵循先到先得原则，允许任何人铭刻 区块号.bitmap 的纯文本 ordinals 铭文的方式来抢注这个区块的所有权。所以每天会有 144 个新区块被开采并可供登记。 目前主流 NFT 交易所也会实时更新 BITMAP 总量。

从总量来说，bitmap NFT 不具有稀缺性，所以目前的炒作都是围绕着一些特殊地图。比如，

1， 特殊号码，类似于 888.bitmap

2, 根据官方可视化数据生成了特殊图案的地图，类似于 cryptopunk 这种

3，包含重要历史实际的区块，比如创世区块，披萨交易区块等等。

在基础设施方面，更多的探索来源于根据区块数据的前端渲染。如下图的几个：

总结来说，bitmap 其实是一个资产标记协议，通过 Ordinal 协议和 bitmap 协议把无主资产 “比特币区块” 映射成 NFT，以此激活区块的资产属性并产生流通和收藏价值。

比特币生态的 LOOT

如果说 bitmap 是从地块方面切入元宇宙，那 rootverse (@ordinals_root) 和 BRC1024 (brc1024_pro) 就是试着从人物和装备方面切入元宇宙，玩法类似于 LOOT。

以太坊的 LOOT 我们都较为熟悉了，就是一组随机组合的文字版的 NFT，这一组文字描述定义了一种装备的属性，由此奠定了一个元宇宙的基础规则，其他人可以在这些文字 NFT 的基础上进行可组合性的衍生，比如 2D 图片呈现，3D 图片呈现，故事呈现等等。

BRC1024 整体类似，就是规定了一些参数来定义元宇宙的组件（Component），如下图所示，表示 ROOT 这个元宇宙有一个组件叫 “charactor”，它的子组件叫 “warrior”，这个子组件最大数量是 20000 个，elements 是这个子组件的几个属性，有的属性甚至是有多个选项，比如 “skin color” 属性有白色和铜色两种。

ROOT （官方名字 Rootverse）是项目方使用 BRC1024 建立的第一个元宇宙，其中规定了 21 种部落（就是种族和相应的子种族），每个子种族有不同的数量，玩家可以免费铸造，合计 21 万枚人物 NFT。如下图：

总结来说，BRC20 是把 “发行 FT 代币的代码” 铭刻到隔离见证空间实现 FT 代码发行的话，那 BRC1024 就是把 “发行元宇宙组件的代码” 铭刻到隔离见证空间实现元宇宙组件的发行，而 ROOT 就是把 “人物种族” 这个组件进行了铭刻。这就是铭文可组合性的体现。

链上游戏的通用状态机

我们有了元宇宙的地图，人物和装备，那就能做出一个完整的基于 BTC 链的链游吗？如果是只做资产（包括 NFT 资产和 FT 资产）上链的 GameFi 路线，目前的基础设施足够了，但是对于更加 crypto native 的链上游戏（自主世界）来说，还不够。

以太坊生态的 Dojo 首先提出了 “可验证化链上游戏”（Provable Onchain Game）的概念。Dojo 是一个链上游戏开发框架。它是一个由社区构建的、可验证化的游戏引擎及工具链，用于构建链上游戏和自治世界。Dojo 允许在没有大型共识方案的情况下验证游戏状态和计算。用 Cairo、Noir 等语言编写或运行 RISC-Zero 的游戏，可以在类似浏览器的独立 zkVM 上独立运行，可验证的输出确保了真实的执行。换句话说，就是链下使用高效的 VM 进行计算，链上部分仅做数据验证来保证结果的真实有效，从而实现 “去信任化” 和 “去中心化”。

Redux Protocol (@AutonomousRedux) 参考了 Dojo 可验证化链上游戏的概念，借用 Ordinal 理论，实现了在 BTC 生态的链上游戏开发框架。虽然说 BTC 链出块时间长达 10 分钟，且无智能合约功能，那么要实现 BTC 生态的链上游戏，就只能通过链下计算链上验证的模式。

有意思的地方在于，Redux 扩展了 “铭文” 的使用场景。众所周知，之前的铭文基本用于发币，要么是 Ordinal NFT 代币，要么 BRC20 这样的 FT 代币。Redux 把默克尔树和铭文结合起来，提出了状态铭文（stateful inscription）的概念。其实就是把游戏里面的人物和装备属性，以默克尔树的方式进行数据建模并储存，并保证数据的不可篡改性。只要有一个地方发生了改变，根哈希就会变化。

具体做法是把状态铭文分为两部分，一部分是 “不可变状态”，比如武器的健康值，护甲值，攻击值，等等。这部分以铭文的方式记录在 BTC 区块链上。另一部分是 “可变状态”，比如之前提到的健康值，护甲值和攻击值的具体数据，这些数据会随着游戏的进行而改变。这么这些数据由链下的索引器进行计算和处理。而 “铭刻” 本身，其实存储的是一个指针，这个指针指向该铭文的可变状态集。

开发者负责构建世界的基础框架及其状态铭文。这包括定义哪些状态是不可变的（静态的）以及哪些状态是可变的（动态的），同时建立用户与状态铭文互动的逻辑。Redux 协议提供了一个运行环境，允许开发者自定义玩家与状态铭文的互动方式。玩家则通过与状态铭文的互动来体验游戏。

从技术路线上来说，它有点像 Dojo 或者 Paima。Dojo 是采用 ZKP 的形式来制作可验证化的链上游戏，Paima 是采用 NFT 状态压缩的方式来制作可验证化的链上游戏，而 Redux 是采用状态铭文（利用默克尔树）的方式来制作可验证化的链上游戏，另一个区别是 Dojo 把 Starknet 当做 DA 层，Paima 把自己的主权 rollup 当做 DA 层，而 Redux 使用 BTC 生态的 DA 层。

综上所述，我们发现以上几个项目分别是在游戏的不同层面利用 Ordinal 协议做探索：Ordz 是把网页游戏的代码铭刻上链，Bitmap 是把 BTC 区块当做随机数据源映射成地图 NFT，ROOT 是把人物角色和装备以代码的方式铭刻上链，而 Redux 是把状态机的可验证化数据铭刻上链。如果非要和以太坊生态的项目做类比的话，Ordz 类比 TreasureDAO，Bitmap 类比 SandBox 和 DecentraLand， ROOT 类比 LOOT，Redux 类比 Dojo 和 Argus。

参考资料