撰文:Nickaqiao、Faust,极客 web3
自 2017 年 ERC-20 资产风靡区块链圈以来,Web3 就进入了资产发行的低门槛时代,各路项目方凭借 ID0、IC0 等方式肆意发行自定义代币或 NFT,且大多存在强控盘或信息不透明问题,RugPull 现象频发,各路镰刀俨然把 IC0、ID0 当做割韭菜的绝佳途径。
时至今日,常规的 ID0 和 IC0 已经充分暴露出了其在公平性上的缺陷,人们一直都希望有较为公平可靠的资产发行协议,解决新项目 TGE 时的诸多问题。虽然一些创意十足的项目单方面提出了自己的「公平的经济模型」,但往往没有进行通用化推广,最后这类经济模型大多沦为「具体案例」而不是「一套抽象出来的协议」。
那么,什么样的模式是更公平可靠的资产分发方式?什么样的方案能作为一套通用协议?本文将要展开介绍的 Cellula 为解决上述问题提供了全新视角,他们实现了一个模拟 POW 的资产分发层,利用虚拟工作量证明(vPOW)将资产分发过程「挖矿化」,以模拟 BTC 实现更公平的资产分配范式。
虽然该项目被许多人视为 Gamefi,但由于其分发的游戏内奖励可以设置为任意类型的 Token,Cellula 理论上可以作为一个有 POW 效应的资产分发平台,为 Web3 资产发行带来了更广阔的前景和想象空间,甚至于称为「一场致敬 BTC 挖矿的社会实验」也不为过。
POW 和 vPOW:结果不可预测的彩票抽奖
其实无论是正宗的 POW 还是 POS,或是今天要讲的 vPOW,本质都是设置一套输出结果不可预测 / 难预测的算法,通过输出结果来进行「彩票抽奖」。BTC 矿工们要在本地构造出满足限制条件的区块,提交给网络中的全节点通过共识,才能拿到出块奖励。至于限制条件,是要让构造出的区块的 Hash 满足特殊要求,比如前缀是 6 个 0。
由于区块 Hash 的生成结果不可预测 / 难预测,要构造出符合条件的区块,只能不断的变更给定算法的输入参数,这一过程需要暴力穷举,对矿工的硬件设备有很高要求。
简而言之,BTC 挖矿通过 SHA-256 哈希算法的不可预测性 / 难预测性,实现了一套全网矿工在线参与的「彩票抽奖」系统,这种设计以电能为代价,确保了参与形式上的 Permissionless。
此外,POW 是一种更公平的资产分配方式,主流的 POW 公链中项目方控盘的难度比 POS 公链大很多,而在很多 POS 公链或 IC0、ID0 方案里,项目方强控盘的案例比比皆是。
比如,Solana 币价在 FTX 和 SBF 操纵下,曾在 2019~2021 年暴涨近 1000 倍,而很多 Solana 验证节点运行者是其早期投资人,它们获得筹码的成本近 0,这严重打破了资产分发上的公平性。虽然 POW 当中项目方也有控盘的空间,但程度往往要比在 POS 中轻得多。
问题在于,POW 的模式往往被应用于底层公链而非 DAPP 的资产发行层,我们能否以一套链上可实现的方案,模拟出 POW 的效果?如果能,就可以实现一套比 IC0、ID0 等强控盘方案更公平可靠的资产分发协议,搭配一些游戏场景,可以做出一些有意思的 Gamefi(当然实际用途不仅限于游戏,还可以为其他项目提供一套公平的资产分发方案)。
所以关键是,如果我们要在链上资产发行层模拟出 POW 的效果,该怎么做呢?在本文介绍的 Gamefi 项目 Cellula 中,通过引入著名的「康威生命游戏」算法,为链上虚拟的数字实体(称为「BitLife」)分配算力。说白了像是让一帮人在自己的培养皿中繁育细胞集群,随着时间推进,谁的培养皿中存活细胞越多,折算后得到的挖矿算力越高,越可能获得挖矿奖励。
简而言之,Cellula 把传统 POW 的哈希计算,换成了另一种结果不可预测 / 难预测的计算方式,替换了「Proof of Work」中的「Work」形式。在 Cellula 的思路下,关键在于如何获得存活细胞数更多的培养皿(BitLife),而推演 BitLife 的状态变化需要耗费计算资源,本质是把 BTC 挖矿执行的哈希算法变为推演康威生命游戏的特定算法,这被称为 vPOW(Virtual POW)。
下面让我们对 vPOW 的机制设计展开更深入的解析,不得不说,这里的很多细节非常有趣,可以说 Cellula 在做的事情之一,是通过链上 NFT 交易链条来模拟 BTC 的矿机产业链模型。
vPOW 的核心:康威生命游戏与 BitLife
在对 Cellula 的机制设计展开解读前,让我们先来看看vPOW 最重要的核心——「康威生命游戏」,它最早可追溯到冯诺依曼于 1950 年提出的「细胞自动机」概念,而后数学家约翰·康威在 1970 年正式提出「康威生命游戏」,用算法模拟自然界生命的演化规律。
假设我们有一个培养皿,将其按照二维坐标划分出一堆小方格,然后我们对培养皿进行「初始设置」,让一些活细胞占据部分方格,此后这些细胞的生死状态将随时间演化,逐渐呈现出形态复杂的细胞集群(大家可以想像霉菌是怎么繁殖的)。这本质是一个二维格子游戏,规则非常简单:
- 每个细胞有两种状态:存活 / 死亡,就像扫雷游戏一样,每个细胞和自己周围八个方格上的细胞会产生互动(如图,黑色为存活,白色为死亡);
- 假设某细胞存活,但周围 8 格内存活细胞小于 2 个(0 或 1),则该细胞进入死亡状态;
- 某细胞存活,且周围有 2 个或 3 个存活细胞时,该细胞仍保持存活;
- 细胞为存活状态,周围有超过 3 个存活细胞时,该细胞进入死亡状态(模拟生命数量过多而争抢资源的场景);
- 当前细胞为死亡状态,但周围有 3 个存活细胞时,该细胞转入存活状态(模拟细胞增殖 )
所以很简单,在二维培养皿中给定细胞状态的初始模式,然后按照上述规则,细胞状态会随时间推移,不断地演化迭代,产生千变万化的结果。你甚至能用康威生命游戏模拟出计算机的效果。
比如说,培养皿中每个细胞的生 / 死,对应着二进制的 0/1,你可以把细胞初始状态视为「输入参数」,每个细胞的生死(0 或 1)代表输入数据,之后细胞状态会按照初始模式开始演变,每一轮状态变化就相当于计算过程中的一步操作,经过一段时间后得到的状态,可以看作「输出」。
只要布置适当的初始模式,康威生命游戏能在经过若干代演变后,输出特定结果。由于初始模式千变万化,可以利用其特性模拟出彩票抽奖的效果。我们可以设置限制条件,每个玩家随机选择一批初始模式,经过 100 代演化后,输出结果满足 xx 特征的培养皿主人有资格获取奖励,这样就和 BTC 挖矿的思路比较接近了:
「系统先限定哪类输出结果符合要求,参与者向给定算法输入随机的初始值,尝试得到符合要求的输出结果」。由于待尝试的初始输入参数非常多(几乎是天量),你必须要付出很大努力才能撞大运中奖,这正是工作量证明的逻辑:矿工必须要付出一定工作量才能获取奖励。
在理解了 Cellula 和康威生命游戏的基本思想后,我们再看他具体的细节设计。Cellula 把前面说的「培养皿」分为 9*9=81 个方格,每个方格上的细胞有生 / 死两种状态 ( 对应二进制的 0 和 1),这样一来,按照排列组合,培养皿中的细胞初始状态有 2^81 种,这个数字等于 1 万亿的平方(基本是个天文数字)。
然后,玩家要做的是对培养皿的初始模式(输入参数)进行选择。BitLife 充当了培养皿的实体(实际是个 NFT),包含 81 个方格,每个方格上放置一个细胞(可能有生 / 死两种状态,空置的方格等价于死细胞)。然后,BitLife 中每 3*3=9 个相邻方格构成一个 BitCell,每个 BitLife 由 2~9 个 BitCell 拼接而成(如果你构造的 Bitlife 不足 9 个 Bitcell,有些地方就被空置,默认都是死细胞)。
按照排列组合,BitCell(3*3 方格)有 2^9 种初始模式,玩家要做的就是随机挑选不同模式的多个 BitCell 组合起来,构造出一个 BitLife。简单来解释,就是为自己的培养皿随便找一个初始模式,然后前面讲过,不同的初始模式总计有 2^81 种,是个天文数字。所以留给参与者的选择空间非常大,这就和 BTC 挖矿里用 SHA-256 的场景有点像。
BitLife 的细胞状态会随着区块高度的增加而变化。Cellula 按照不同区块高度下 BitLife 的状态来分配算力。给定一个区块高度,包含的存活细胞越多的 BitLife 拥有的算力越高,这就相当于创造了一种虚拟矿机。
这里举个具体的例子,Cellula 参与者要在链下穷举 BitLife 的 2^81 种初始模式,预测每种模式演化后的状态,然后看能否符合奖励系统的要求。假设现在的区块高度为 800,而系统提出要求:区块高度为 1000 时,存活细胞数最多的 BitLife 能获得最多的奖励,那么参与者的目标会很明确:
在区块高度为 800 时,我要获取某个模式的 BitLife,该模式的 BitLife 在区块高度为 1000 时,能比其他 BitLife 有更多存活细胞。
这其实就是 Cellula 的核心玩法,你的目标就是自己构造 / 从别人手上买到最有可能获得挖矿奖励的 BitLife,这种模式就相当于允许普通散户 / 高级散户自己研发矿机,然后你可以把自己造的矿机卖给别人,可以购买别人的矿机来挖矿。如果你要自己造矿机,那就要在链下自行推演出不同模式的 BitLife 的状态演化,这会耗费计算资源;如果你要买别人的矿机,其实就是买不同初始模式的 Bitlife,你要自行判断这些 BitLife 未来的状态变化,所以你还是要在链下自行计算。这其实是整个 Cellula 游戏设计中非常有趣的一个点。
在理解了游戏的核心机制后,我们再来看其他细节:其实 BitLife 中的活细胞可以溢出到初始的 9*9 格子外,存活的细胞数可以远大于 9*9 个,没有边界限制。如图所示,如果某个 BitLife 包含的活跃细胞数不断增多,其分配到的挖矿算力也会越来越高,而如果 BitLife 的初始模式选择不当,活细胞数越来越少,算力也会越来越低。
然后,系统会每隔 5 分钟分发一定的挖矿奖励(游戏里称为能量点),根据每个 BitLife 在网络中的算力份额来分配。
在 Cellula 中,玩家合成 BitLife 的过程,就是一个「制造」新矿机的过程。我们前面曾提到,BitLife 的实体是一个 NFT,BitLife 在链上被 mint 出来后,要进行「充电」操作才能启动挖矿,单次充电有效期为 1 天、3 天和 7 天,需要支付一笔小额手续费,且到期后需要继续充电。
这里要说下,为了鼓励用户多去对 BitLife 进行充电,Cellula 设置了一个「充电抽奖」功能,你每次发起充电操作时都可能被选中,获得一些额外奖励(就是说这个奖励和挖矿奖励独立开)。这块的设计我们会在后面 Analysoor 算法的部分简单介绍下。
按照 Cellula 官方的规则,目前包含 3*3 个 Bitcell(也就是包含 81 个小方格)的 BitLife 铸造已经停止,玩家们一共铸造了 150 多万个此类 BitLife,未来新用户可以在二级市场购买 BitLife 并进行充电挖矿。按照官方的解释,限量铸造是为了维持游戏生态的稳定,防止有科学家无限的铸造 BitLife NFT 导致矿机价值缩水。
而且在未来,Cellula 将引入类似于矿机制造商的角色,这个角色基于许可制,要质押代币、公示销售渠道、具有一定社区规模和影响力等,这些制造商将负责铸造和销售包含 4x4 个 BitCell 的 BitLife,也就是包含 16*9=144 个小方格。制造商可以铸造的 BitLife 量,将受到其质押代币量的限制。
在此我们大致把 vPOW 涉及的核心概念通俗解释了一遍。vPOW 的本质是基于给定规则的计算模型,参与者可以通过优化策略来参与竞争,通过游戏化的方式进行资产发行与分配。Cellula 模拟了 BTC 矿机市场的运作形式,替换了工作量证明中的计算任务形式,由于挖矿算力的分配方式可以动态调整,任何模式的 BitLife 都未必是全局最优的,今天细胞存活数最多的 BitLife,明天就可能被其他 BitLife 超越,这会导致复杂的涌现现象和动态的策略。
Analysoor 抽奖算法和 VRGDAs 指数定价曲线
在前面我们主要针对康威生命游戏及 Cellula 的核心机制进行了展开式的解读,下面我们再来考察下游戏中包含的其他设计。上面我们提到 Cellula 有个充电抽奖环节,这里用到了名为 Analysoor 的随机数输出算法,它把区块哈希作为随机数生成器的输入参数,抽出每个区块里参与充电者中的赢家,引入了一种彩票制度。
比如在 Analysoor 的设计中,当前 BNB Chain 的区块哈希为 6mjv....的一长串字符串,里面包含 4 个数字:6、2、1、6。按照这几个数字在字符串中的排序,第一个数字是 6,最后一个数字是 6,为偶数,将从前往后计数。提取出来的数字是从 0 开始计数的,于是数字 6 对应的交易排序是 7,就从当前区块里把第 7 个充电玩家视为中奖者。当然具体的设计可以更灵活,这里只是举个例子。上述随机性的抽奖算法可以有效激励玩家多充电,调动游戏内生态的活跃度。
此外,在 Cellula 的整个交易模型中,有一个问题:某种模式的 BitLife 一旦被某个大佬 Mint 出来,其采用的 BitCell 组合方案会被公开,其他人也可以「跟风」,按照相同的组合方案去 mint BitLife,最后很容易引发一堆人跟风的现象,严重影响游戏结果的随机性。为此,Cellula 引入了可变速率渐进荷兰拍卖(VRGDAs),这是由 Paradigm 开发的定价算法,会动态调整价格——当铸造量超预期时抬价,铸造量不及预期时降价。
假设初始预期是每天铸造 10 个 A 类 NFT,起始价格为 1 个 CKB。本来到了第 5 天,预期人们共计铸造 50 个 A 类 NFT,但因为很多人跟风,铸造量达到 70 个,这相当于原计划到第 7 天实现的目标。为了限速,要通过指数定价曲线快速提高铸造价格,单价涨到 4 个 CKB 来抑制铸造行为。
如果到第 15 天,只铸造了 120 个(原计划此时铸造共 150 个),没有达到预期销量,这时会下调价格,刺激铸造量。
在上述场景中,当某类 BitLife 在短时间内被大量铸造时,该类 NFT 的铸造价格会指数级增长,这种剧烈的价格上涨可以有效的防住科学家。
总结:从玩家博弈的视角看待 Cellula
在讲完了 Cellula 的全部核心设计后,我们不妨从玩家的博弈视角来看待这一脑洞大开的游戏机制。首先,在 vPOW 中有很多参与方,每个参与方的策略都不同,以一级发行市场为例,一个「科学家」可以写代码,组合不同的 BitCell 去找到算力更高的 BitLife,获取更高的挖矿收益,同时会存在一些 MEV 玩家,他们监听链上的铸造事件,当发现某个 NB 的科学家铸造了某类型的 BitLife 时,他们也会跟风大量铸造。
但由于 VRGDAs 指数型定价算法的存在,单一类型的 BitLife 铸造价格可以指数级增长,这样可以有效的防住科学家(反女巫),当然也会对 BitLife/ 矿机进行定价,如果某类矿机的算力高,它的铸造 / 生产价格也会很高,后面流通在二级市场的价格会参考生产价,进而传导到整个供应链当中。
类比 BTC 矿机的发行过程,科学家发现某类型 BitLife 的算力高,就好像矿机公司研发出新的芯片,MEV 玩家跟风铸造,就好像一级经销商完成矿机的定价,而后的二级市场交易就类似于散户从经销商手中购买设备。
不同的是相比现实世界的矿机研发,科学家发现新的 BitLife 的速度会快很多,而且任何人都可以参与到 BitLife 的状态推演中,很大程度上相当于降低了矿机的研发权力,「人人都有机会成为科学家」,这对于大多数人而言是更为友好的,也是现实中矿机生产链条中不可能出现的。
而对于项目方本身而言,采用 POW 式的资产分发方案本身就削弱了他的权力,所以,无论是科学家还是项目方,亦或是普通玩家,都无法单方面控制市场。在矿机铸造环节以及发行环节,就产生了这三方的博弈,没有一方能够完全垄断市场,这可以形成一种动态的平衡。
总体而言,相比于 BTC 矿机产业链,Cellula 的方案是一种更有趣的社会实验。