该机制是专为 Art Gobblers 项目设计的,但它可用于其他具有可替代代币的 NFT 生态系统。
原文作者:Paradigm 研究合伙人 Dave White、研究助理 Frankie 以及 Transmissions11
编译:DeFi 之道
内容
当 NFT 项目拥有一种可替代(ERC-20)代币时,持有 NFT 和 代币的社区往往会随着时间的推移而分道扬镳。我们创建了一种机制来抑制这种分歧,并在分歧发生时修复它。我们称之为渐进所有权优化,或 GOO。
在我们即将推出的 NFT 项目 Art Gobblers 当中,其 NFT 可生产一种名为 Goo 的以太坊代币。一个 Gobbler NFT 地址持有的 Goo 代币越多,它生成的 Goo 代币就越快。这意味着 Goo 代币的总供应量每天都会加速增加,从数千增加到数百万甚至更多。
在不拥有任何 Gobbler NFT 的情况下囤积 Goo 代币,这是一种非常糟糕的策略,因为其他人都会生成 goo 代币,而你在 Goo 代币总供应量中的份额将迅速减少到零。另一方面,如果你拥有很多 Gobbler NFT,但拥有少量的 Goo 代币,那么与其他玩家相比,你的 Goo 产量将会落后。
假设你维持 Gobbler NFT 的所有权,其总的 Goo 代币生产能力为总产量的 1%,并且你从未移除你的 Goo 代币。那么无论你开始拥有多少 Goo 代币,你最终至少会得到 Goo 代币总供应量的 1% !这确保了 Goo 长期保持在 NFT 持有者的控制之下。
从数学上讲,即时的 Goo 发行量等于
,
其中 mult 是 Gobbler NFT 的乘数,是它生产 Goo 代币的基本速度,我们使用微分方程自动合成随时间推移的 Goo 发行量,如果你有多个 Gobbler NFT,也会自动平衡 Goo 的发行量。
在这个系统中,由于一些非常幸运的数学运算,结果表明,拥有多个乘数和为 X 的 Gobbler NFT,与拥有一个乘数为 X 的单个 Gobbler NFT 相同,这意味着,随着一些玩家获得更多的 Gobbler NFT,游戏将保持公平。
虽然该机制是专为 Art Gobblers 项目设计的,但它可用于任何具有可替代代币的 NFT 生态系统。它使 NFT 和代币持有者保持一致,同时确保 NFT 本身的首要重要性。它也很有趣,尤其是与 VRGDA 等其他机制结合使用时。
在本文中,我们分解了该机制的细节并提供了可用于生产的代码,以便你可以在自己的项目中使用它。
目前 NFT 项目发行可替代代币有两种主要方式:
一种恒定排放的方法是质押,NFT 持有者将他们的 NFT 锁定在合约中,并每天收到一定数量的代币。
另一种近似恒定的排放方法是 Play to Earn,拥有或有权访问给定 NFT 的用户可以玩游戏,然后每天有可能赚取一定数量的代币,具体取决于他们的游戏方式。
在这两种情况下,随着时间的推移,持有 NFT 的人群与持有可替换代币的人群可能会变得非常不同。
在空投的情况下,由于一些用户在不出售其代币的情况下出售他们的 NFT,而另一些用户在不出售其 NFT 的情况下出售了他们的代币,这导致代币与 NFT 的所有权不一致(指社区分裂),并且不存在使其恢复一致的力量。
即使在恒定排放的情况下,因为可替代代币以恒定的速率发行,NFT 和可替代代币所有权实际上不可能随着时间的推移恢复一致:每天,新发行的代币在总供应量中所占的比例越来越小。此外,无论你拥有多少可替代代币,都没有动力将其与相当数量的 NFT 相匹配,反之亦然。一旦 NFT 和代币持有者的群体出现分歧,就没有任何东西可以重新调整他们。
我们希望确保 Goo 纯粹是一种功能代币,而 Art Gobblers NFT 本身仍将是经济的支柱。我们还希望我们的解决方案非常高效,NFT 社区成员易于理解,最重要的是,使用起来会很有趣。
所有属于给定以太坊账户的 Art Gobbler NFT 都会将 Goo 代币排放到对应的「tank」 池子中,该地址的所有者可以随时从 「tank」 池子中添加或移除 Goo 代币。
Art Gobblers NFT 喷出 Goo 代币的速度与地址的 「tank」 池子中已经存在的 Goo 代币的平方根成正比。每个 gobbler 都有自己的 mult 乘数,它描述了喷出 goo 代币的基本速率。
我们使用微分方程自动复合这种瞬时发行,并对其进行延迟评估,以便复合可以在任意长的时间段内发生,而无需花费任何 gas。
Goo 代币会随时间呈二次方膨胀,这比大多数代币质押方案常见的指数膨胀要慢得多。
当 Goo 代币与用户的 Gobbler NFT 成比例持有时,Goo 代币发行可处于最佳状态,因此规则激励用户按比例持有 Goo 代币和 Gobbler NFT。由于 Goo 代币排放的总体速率一直在增加,所以无论 Goo 已经发行了多少,这些激励措施仍然很强大。
由于一些非常幸运的数学运算,拥有多个乘数和为 X 的Gobbler NFT ,和拥有一个乘数为 X 的 Gobbler NFT 等效,即使某些用户积累了大量 Gobbler NFT,也能确保系统保持公平。
mi - Gobbler i 的 Goo 代币排放乘数。
gi (t) - Gobbler i 的 「tank」 池子在时间 t 时的 Goo 代币数量。
initial Goo i - Gobbler i 在最初拥有多少 Goo 代币。
为了方便起见,我们将使用 gi (t)、m 以及 initial Goo,仅指单个 Gobbler,而没有下标 i。
Art Gobblers 以
的速率释放 Goo 代币。
我们选择平方根发行是为了确保 Gobbler NFT 比 Goo 代币更基础,你添加到给定 Gobbler 「tank」 池子的 Goo 代币越多,每个新 Goo 单位的效用就越少。这意味着用户无法通过在单个 Gobbler 的 「tank」 池子中放置大量 Goo 代币来赚取同等比例的 Goo 代币。
例如,在时间 1 时,如果 m 为 2,并且 g (1)为 2,则即时的 Goo 代币发行速度会是每天
个 Goo 代币。
用数学表示,我们有了以下微分方程:
解之得
展开后,我们得到:
注意:为了方便起见,我们假设时间总是从 0 开始,而在生产中,必须跟踪自上次与合约交互以来经过的时间。
想象一下,你有 4 个 Goo 代币以及 2 个 Gobbler NFT,其中一个 NFT 的乘数为 1,另一个的乘数为 3。
你想决定如何在它们之间分配你的 Goo 代币,以最大限度地提高你的 Goo 代币生产速率。
如果你必须将所有的 Goo 代币存入一个 Gobbler NFT 的池子中,显然最好将其放入乘数为 3 的 Gobbler NFT 池子当中,此时 Goo 代币的即时生产率为
然而,在 Gobbler NFT 之间平均分配你的 Goo 代币会表现地更好,这样做的即时生产率为
。
但事实证明我们可以做得更好。对于任何具有乘数为 mi 的 Gobbler NFT 组,事实证明,在它们之间分配 Goo 代币的最佳方法,是将总的 Goo 代币的
分配给每个 NFT。
在这种情况下,我们将分配
个 Goo 代币给第一个 Gobbler NFT,将
个代币给第二个 Gobbler NFT,那么总的 Goo 代币即时生产率为
。
如果用户必须不断地在多个 Gobbler NFT 之间重新平衡他们的 Goo 代币以保持最佳的生产率,这将是一个有趣但不是特别有用的结果。
幸运的是,一旦平衡,Gobbler 就会保持平衡!要了解原因,请注意,根据定义,在平衡时,
为了方便,我们引入一个新常数
,我们得到
并将其代入上述 gi (t) 的定义中,我们得到
进行简化
因为这对所有 i 都是正确的,我们看到,无论 t 的值如何,Goo 代币都会与其乘数成比例地分布在 gobbler NFT 之间,这正是我们保持最佳 Goo 生产所需的条件。
这意味着我们可自动为用户平衡一次 Gobbler NFT 之间的 Goo,并且它们将保持平衡。
即便如此,如果 Goo 生成率复杂或难以理解,整个系统也不会特别令人满意或有趣,用户可能不知道如何与之交互。
幸运的是,情况并非如此。结果表明,当 Goo 在具有乘数 mi 的 Gobbler NFT 之间最佳平衡时,总的 Goo 代币产出速率与单个具有
乘数的 Gobbler NFT 的 Goo 代币产出速率相同。
换句话说,乘数和为 100 的多个 Gobbler NFT,与单个乘数为 100 的 Gobbler NFT,它们的 Goo 代币产出速率是相同的。
回到上面的例子,我们可以手动验证是否是这种情况。当我们用乘数为 1 和乘数为 3 的 2 个 Gobbler NFT,并在它们之间平衡 4 个 Goo 代币时,并且实现速率为 4 的即时 Goo 代币产出速率,这和将 4 个 Goo 代币存放在单个乘数为 1+3 =4 的 gobbler nft 池子中的情况相同,其输出的即时 Goo 代币产出速率为
。我们可以看到,如果我们有四个 Gobbler NFT,并且它们的乘数都为 1,则总的 Goo 代币产出速率为
。
最终结果就是,拥有几个乘数和为 10 的 Gobbler NFT,与拥有一个乘数为 10 的 Gobbler NFT 是相同的。这是非常直观且幸运的,因为用户可以简单地操作,而不需要通过改变钱包之间的 Gobbler NFT 分配来操纵 Goo 代币的生产速度。
由于 Goo 代币的数量是呈二次方的速度膨胀的,所以持有它而不持有 Gobbler NFT 是一个严重的错误决策,因为你不会产生任何新的 Goo 代币,并且你在整体 Goo 代币供应中的比例将迅速减少。
此外,我们可以从上面的自动平衡部分看到,当 Goo 代币按 mult 乘数比例分配时,整个生态系统中的 Goo 产量达到了最佳速率。因此,如果你有很多 Gobbler NFT,但只有很少的 Goo 代币,你的 Goo 代币产量将落后于市场水平,你将被竞争对手击败。因此,用户被激励保持其 Goo 代币和 Gobbler NFT 持有量大致一致。
更正式地说,假设你拥有一个总乘数为 M 的 gobbler NFT 集合,如果你从未移除任何的 Goo 代币,那么根据 g(t)的定义,我们可以看到,最终你的 Goo 代币供应将大约等于
。
假设所有 Gobbler NFT 的乘数总和为 Q。如果 Goo 代币在所有其他 Gobbler NFT 之间完全平衡,则最终他们的 Goo 代币供应量将大约等于
,所以 Goo 代币的总供应量将为
。而你的比例将是 M/Q,也就是你的 Gobbler NFT 总乘数所占的比例。
如果 Goo 代币在其他 Gobbler NFT 之间没有完美平衡,那么你在 Goo 代币总数中获得的比例,实际要大于你的 NFT 总乘数所占得的比例。
当然,只有当总乘数随时间保持恒定时,才会出现这种情况,这可能与系统其余部分的工作方式无关。否则,你可能必须采取措施确保你在总乘数中的份额保持不变。
你可以在 transmissions11/goo-issuance 找到高度优化、生产就绪的 GOO 实施代码,欢迎有改进的拉取请求。
GOO 是为 Art Gobblers 项目设计的,但我们相信它适用于各种 NFT 项目和链上游戏。如果你想通过 NFT 发行一种可替代的代币,同时确保用户持有的 NFT 以及代币大致成比例,那么 GOO 代币模型可能就适合你。
如果你有兴趣将 GOO 集成到你的项目中,我们很乐意听到你的消息。
致谢:samczsun,Riley Holterhus,Aaru,Otto Suwen,0xmisaka,NN Blossoms,DCFPascal,kootsZhin,snoopy,Ben Leimberger,shant,0xQTpie
译者简评:Paradigm 提出的 "GOO" 代币发行机制旨在解决同一个 NFT 项目的社区分裂问题,但前提条件在于,发行的 token 是持续通胀的功能性代币,而对于总量有限的治理代币,这种模式似乎是不适用的。对于一些链游项目而言,功能代币的发行或许可以考虑采用这种模型。此外,采用这种方式发行的 token,也不太可能在中心化交易所进行交易,因为模型不鼓励 token 的投机,交易所也需要保护投资者在不知情的情况下购买这种 token。
责任编辑:Felix