撰文: Hasu 和 Anish Agnihotri,前者为著名加密货币研究者、Uncommon Core 播客主持人 ,后者为区块链投资机构 Paradigm 副研究员 编译:Perry Wang
区块链彻底颠覆了开源软件的募资方式,但并非一切新模式都能从一开始就运转良好。事实上,2016-2018 年的首次代币发行(ICO)多数沦为非常糟糕的案例,项目创始人可以在未交付任何产品之前就能兑现筹集获得的财富。加密社区从那以后吸取了很多教训,当前的项目在代币发行、发币激励使用和去中心化治理之前,都会先拿出一个可运行的产品。
事实证明,非同质化代币(NFT)是另一个明显很契合加密产品市场的产品,但它们正在经历自己的成长阵痛。每个 NFT 的生命周期都始于 NFT 的启动(有时也称为铸造 / mint 或空投 / drop)。具体到 NFT 启动,首先是创建新的系列 NFT,将其出售并分发给买家,然后买家决定持有它或在二级市场上进行交易。
与任何首次发售的商品一样,NFT 的启动面临着定价挑战:如何为以前从未定价过的商品定价。但与多数其他商品销售不同的是,NFT 在高度对抗性环境中发生的难度更大,这些环境(公有链)的大量特质已经将没有经验的用户拒之门外。 因此,开发者必须设计对开发工作有效且健全的机制。
本文从真实世界的启动示例(都曾伤害了自己的用户)入手分析,以确定一个好的 NFT 启动应该满足什么指标。我们接下来将启动的构想拆解为单独的步骤,探索每个步骤的设计空间。最后,我们提供了一个自认为设计良好的启动机制,供社区使用和日趋完善。
损害用户的实例随着时间推移,我们开始注意到,NFT 启动中的某些设计模式会始终给用户带来糟糕的结果。
作弊当 NFT 新系列启动时,用户可以与其智能合约进行交互,以创建具有随机属性集的 NFT。这些属性往往具有不同的稀缺性,使某些组合比其他组合更稀有和更有价值。 例如,10,000 个 CryptoPunks 中只有 9 个具有超稀有的「外星人」属性,其中最便宜的一个现在的市场挂牌价为 35,000 ETH。
不同的人出于各种原因参与新 NFT 的铸造,很多人享受的是买盲盒和抽中隐藏稀有款的兴奋。从这个意义上说,NFT 铸造只是模拟世界(例如,交易卡游戏的补充包)和数字世界(例如,视频游戏中的装备箱)中流行的扭蛋(盲盒)机制的延续。
参加扭蛋游戏的人往往会做出一个重要的假设:他们从随机分布的物品中抽取,并且有实际(尽管很小)机率获得非常罕见品种。不幸的是,过去的 NFT 铸币项目经常无法满足这一假设并创造真正的随机性。在实践中,具备高度技术性和积极性高的团体能够利用作弊机制、狙击藏品最稀有的品类,将它们从诚实的参与者手中夺走。
我们将分享两个 NFT 铸币项目被通过这种模式盘剥的案例。两次漏洞盘剥事件都依赖于相同的两步过程:
- 盘剥者提取集合的元数据,使其单个稀有度得分表中展示出所有特征的相对频率。使用这一得分表,他们可以迅速找出集合中价值最高的 NFT。
- 然后,盘剥者打破铸造合约的随机性,只铸造他们想要的价值最高的稀有 NFT。
最近,一个名为 Loot 的项目以飓风之势席卷了 NFT 世界。该项目看似简单,但包含 8,000 个战利品袋,由胸甲、足甲、手甲、头盔、颈部、戒指、腰部和不同稀有度的武器装备组成。
每个项目槽的所有属性都直接存储在合约中,铸币者收到了一个伪随机 Bag,Bag ID 被用作哈希值。虽然只要以太坊存在,这些装备就永久存在,但链上存储的元数据也将 Loot 的伪随机性暴露给了作弊者。他们通过在本地模拟随机化函数,快速抓取了所有 8,000 个 Bag 的元数据,获取了整个系列的图片(和衍生品的稀有度)。有了这些信息,他们只需要利用合同最后剩下的弱点:能够准确地铸造他们想要的 ID,并只狙击最稀有的装备 Bag。
不过,尽管这种漏洞攻击很简单,但有理由相信,没有人能真正盘剥原始的 Loot 所铸成的 NFT:
来源 : https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/loot
我们一直观察装备袋的稀有性,直到铸币结束的最后一刻,我们发现,稀有物品在铸币的整个时间范围内分布良好,这表明,没有一场严重的盘剥案例。
Loot 没有被盘剥,有两种可能的解释:
- 这是一份全新的合约,因此人们还没有准备好或没有时间发现漏洞。
- 铸造 Loot 的可提取价值(EV)尚不清楚,因为该藏品的价值几天后才在二级市场上爆炸式上涨。这一 nNFT 系列花了 2.5 小时才全部售完,进一步支持了这一假设。
然而,随着 Loot 价格不断上涨, More Loot 和 Extension Loot 等一系列衍生项目开始出现,其中大部分只是原始 Loot 合约的小型分叉。新的 NFT 系列继承了 Loot 的薄弱环节,但具有更高的市场价值,并吸引了更高的的关注度。这些所铸 NFT 的公平性(或缺乏公平性)产生了很大的影响。
More Loot依据铸造时间对 More Loot 中稀有物品的分布与原始 Loot 之间进行比较,可以发现,More Loot 中存在作弊的迹象变得非常明显。 仅仅几个区块之后,所有稀有的 NFT 都已被铸造出来,之后的铸造者只能吃到残羹剩饭,他们基本上不知道老练的用户已经对这次 NFT 启动动了手脚。
来源: https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/mLoot
下图:红线表示 Anish 在 Twitter 上公开 他的稀有度分数的时间点,争夺可用稀有包的竞赛随之揭开序幕。
来源 : https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/mLoot
此外,由于 More Loot 的供应量不断膨胀,因此可以预期作弊者会对未来登场的装备 dai 进行预先评分,并竞相铸造高分装备袋。
Extension Loot与 More Loot 类似, Extension Loot 有一个单一地址可以铸造最稀有十个装备袋中的五个(所有铸造的 NFT 红色高亮显示)。独特的是,这些铸币隐藏在近处视线中,因为作弊者会随着时间分发它们和可用的装备袋,然后再连续瞄准稀有装备袋。
来源 : https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/xLoot
Meebit NFT 和链下原数据作弊Meebits 曾是备受期待的 NFT 铸币项目,由 CryptoPunks 的创建者 Larva Labs 提供的 20,000 个独特 3D 角色组成。
Larva Labs 知道精明的用户可以使用元数据集来计算稀有性并狙击稀有 NFT。 为了解决这个问题,他们设计了自己的网站,让买家可以看到每个 Meebit NFT 的完整元数据,但这些数据只能在它被铸造出来之后。
虽然该网站明确隐藏了未铸造的 Meebit,但有人检查了源代码,发现 Larva Labs 从 IPFS 中提取了元数据。 他们使用这些信息抓取 IPFS 以提取未铸造的 Meebit NFT 的元数据,从中找出最想要的 NFT 个体。
不过,Larvalabs 仍然没有让开发者轻松得逞:与 Loot 不同,用户无法创建特定的 Meebit ID。相反,利用链上随机性生成哈希(理论上仍可被矿工作弊)使这一特定用户更难铸造稀有的 Meebit。
然而,作弊者「魔高一丈」。他们写了一份 购买 Meebit NFT 的合约,查看他们的 ID,然后「刷初始」。 具体来说,Meebit 合约是一个带有 mint() 函数的 ERC721 标准合约,它返回一个随机的 Meebit ID。 开发者的合约会调用 mint,根据他们的稀有度列表检查返回的 Meebit ID,如果它没有超过某个稀有度分数,则还原交易(示例代码)。使用这个技巧,他们只需支付大约 0.03 ETH 来检查每个 ID,而不是花费 2.5 ETH 直接购买每个 Meebit。
虽然攻击者在这一过程中消耗了许多失败的交易,并因此产生了 gas 费用,但他们却获得了约 400 ETH 的利润。 今天,同一个作弊者可以通过 Flashbots 捆绑发送他们的交易,并且只有在获得他们想要的 ID 之一时才向矿工付款——使得交易还原完全免费。
攻击者铸造并出售了 Meebit #16647,后者具有超级稀有的「访客」特征
Gas 拍卖9 月时,以太坊每 Gas 的基本费用曾在七个 epoch 超过了 1,250 gwei。令人震惊的是,所有这七起事件都是因为备受期待的 NFT 发布而导致以太坊网络瘫痪。
从左到右:G’EVOLS, The Sevens, Sipher, Galaxy Eggs, Omnimorphs ArtBlocks Democracity, Galactic Apes, King Frogs
这些 NFT 启动大多采用固定价格、先到先得 (FCFS) 机制。 由于价格低廉且需求过多,获取此类 NFT 的竞争从合约销售变为内存池中的 Gas 拍卖竞争。
其中一个例子是 The Sevens NFT 空投事件,这是一个备受期待的 7,000 张反乌托邦角色的头像 NFT 集合。 每个 NFT 的初始价格为 0.07 ETH,热切的参与者急于访问合约。在短短 6 分钟内,Gas 价格达到 12,246 gwei 的峰值,参与者中位数为每个 NFT 支付了约 1.49 ETH,而最高的 5% 个人仅为从合约中铸造 NFT 就用 为每个 NFT 支付了超过 2.44 ETH 的 Gas 费用。
在 Sevens NFT 铸造期间,区块基础费用快速飞涨
Gas 拍卖的问题不仅在于使得以太坊的使用更具挑战性,而且通过以这种方式「滥用」公共内存池,它们为所有以太坊用户创造了负面的外部性。还强迫用户为同一个 NFT 支付不同的金额,因投标不足而导致数以千计的交易失败,对用户造成伤害。
高技能用户的优势正如我们之前充分见识到,以太坊是一片黑暗森林(备注:链闻翻译版),高技能的对抗性角色总是在四处寻找暴利机会。 NFT 铸币项目,尤其是买家希望在铸币后在二级市场获得溢价的稀有铸币项目,为技术娴熟的各方提供了跑赢普通参与者的有利可图机会。
这些参与者通过机器人和自动化策略直接与 NFT 铸币合约交互,通常绕过前端,有时甚至绕过内存池。
TIMEPieces NFT 空投就是一个很好的现实例子。操纵先进机器人的黑客在 NFT 铸造过程之前检查了 nft.time.com 前端源代码。通过这种方式,他们能够在主网上找到已部署的铸币合约,并提前数小时构建机器人。因此这些机器人在 NFT 铸造期间具有显著的抢跑优势,这批 NFT 在不到三分钟的时间内完全售罄。当普通参与者连上他们的钱包并提交交易时,已经颗粒无收。
此外,部分参与方使用 Flashbots 来绕过以太坊公共内存池,提交直接到矿工的交易。虽然 TIMEPieces 合约限制参与者每个地址最多铸造 10 个 NFT,但机器人操纵者 0x35…ce5 提前计划,将资金分配到五个钱包,在单个 Flashbots 包中狙击了 50 个 NFT。即使向矿工支付了 20 ETH 的小费(使他们的平均铸币成本达到每个 NFT/0.5 ETH),当这批 NFT 开始进入二级市场时,这一机器人运营商仍能获利近 120 ETH。
这一捆绑包包括来自五个不同地址的铸币交易,绕过了每个地址只能铸造 10 个 NFT 的限制
此外,由于该参与者使用了 Flashbots (可以以零成本复原失败的交易),因此他们不会受到我们在前文演示的失败交易的影响。其他近 10,962 名参与者则大不不同,他们在 100 个区块中进行了 12,743 次还原,因为他们的尝试未成功,他们累计损失了 252.62 ETH (近 800,000 美元)的交易费用。
追求公平而导致 Gas 费用高企及效率低下一个高效的 NFT 铸造机制,意味着对所有参与者来说都很容易使用——理想情况下,只需几个步骤和简单的实现。实施 先到先得分发模式替代方案的铸币项目,其中一个常见陷阱是它们引入了复杂性,增加了用户必须进行的链上交易数量。
一个例子是在 Miso 上的 Jay Pegs Auto Mart $DONA 的拍卖。虽然这一铸币活动开创了批量拍卖 NFT 分发,有效地展示了公平的元数据生成在实践中的样子,但这样做是以高 Gas 费用和牺牲交易效率为代价的。
要参与该 NFT 铸造过程,用户必须在八天内至少进行四次链上交易:
- 最开始,用户在不知道他们会收到多少 DONA 代币的情况下,将 ETH 提交给 Miso 批量拍卖(取决于最终清算价格)
- 拍卖结束后,用户必须领取他们的 $DONA 代币
- 此时,所有用户获得的代币要么太少,无法铸造 NFT,要么刚好够,要么太多。根据对参与的 1,363 名铸币者的调查结果,我们发现 273 人得到太少,0 人刚好够用,1,090 人太多(铸造一个代币剩的多余部分)。
- 代币太少的用户必须进行交易才能从 Sushiswap 获得必要的盈余。
- 拥有过多代币的用户可以选择批准 $DONA 代币进行交易,然后通过 Sushiswap 进行交易,以出售他们的盈余代币。
- 当用户有足够的 DONA 来铸造一个 NFT 时,他们可以批准 NFT 合约来花费他们的 DONA,然后将其 DONA 代币销毁来铸造 NFT。
- 最后,元数据将批量分配给 NFT,无法单方面透露一个人的 NFT 具体内容。
虽然这种机制力求公平,但它使用户参与变得非常困难,且 gas 成本高、效率低下。
排他性铸币Obenbenbenne 项目追求公平的方式是由 NFT 收藏家和爱好者评估收藏价值,这是借助其社区的实力。通常这牵扯到衡量持币者之间代币的集中度。理想的收藏境况往往集中度较低,有利于个人参与者,而不是被巨鲸掌控。
不过,在最近的铸币项目中,出现了引入批量铸币的新趋势,参与者可以在一次交易中同时铸造一个以上的代币。通过这种机制,巨鲸铸造者完全可以以更少的 Gas 开销来铸造许多 NFT。
实践中的一个例子是 Stoner Cats 空投,这是一个可收藏的 NFT 铸币项目,用于支持好莱坞女影星 Mila Kunis 和她的朋友制作动画短片,允许一次铸造多达 20 个 NFT。 鉴于此功能的存在,其中 89% 的 NFT 是通过批量铸造功能铸造的,近 31% 的 Stoner Cats 全部是由单次铸造 20 个 NFT 的有钱人批量生产而出。
此外,所有以固定价格出售的 NFT 都隐含地将出资能力低于清算价格的人群挡在门槛之外。考虑到铸造成本高昂,这降低了分配的公平性,让那些财力更为雄厚的人群受益。
受信任的运营者无论是实施中心化摇号机制以防止 Gas 战争,还是通过 Chainlink 以提高公平性,一个常见的权衡是对第三方引入信任假设。NFT 铸币项目必须依赖的链下基础设施越多,用户就需要对中心化的链下实体有越多信任。
完美启动的小目标通过观察这些启动活动并分析人们在实践中遇到的问题,我们现在可以得出我们所认为的 NFT 启动的六个理想属性。我们不奢求这是一个尽善尽美的清单,但这是一个起点。
无法作弊的公平性:NFT 启动必须具有真正的随机性,以确保作弊用户不能以牺牲欠成熟用户的利益为代价来狙击最稀有的物品。
不设竞争条件: 每当 NFT (或实际上是任何商品)以低于其公允市场价格的价格出售时,它就会变成以太坊联合创始人 Vitalik Buterin 所说的「其他手段的拍卖」。在实践中,买家竞相让自己的交易尽快被挖到区块中,或附上大笔贿赂来激励矿工。任何以其他手段拍卖的人都对区块链有深入了解,并可以使用机器人等动力工具、Flashbots 或 Eden 等私人中继,甚至直接提交给矿工。
不受时区制约: 通常「先来先得」的模式在特定区块高度发布,然后在短时间内售罄。无论选择什么区块高度,它总是会对当前正处于睡眠时间或忙于工作的其他时区用户不利。因此,发布时间跨度不应太短,使人们可以在不改变日常生活的情况下参与其中。
节省 Gas 费用: 在链上交易(尤其是在以太坊上)的成本非常昂贵,因此一个好的 NFT 启动,应该尽量减少用户必须进行的交易数量。
包容性和抗 sybil 攻击: 通常,确保 NFT 创作者的最佳利益是确保发布对不同的持币者群体开放,即使它最初导致市场清算速度略低。这是因为,一个充满活力的社区最终会推动收藏品在二级市场上的价值。
无需信任:当然,综上所述,启动机制应该能够保持底层区块链的属性。这意味着它必须提供上述好处,而不会遭遇监管,或需要对运营商进行过多的信任假设。
「不公开即安全」不应是启动机制糟糕设计的借口大多数 NFT 启动理论上存在上述一个或几个问题,但在实践中,同时出现这些问题的需求不足。 这是一个「不公开即安全」的示例。
例如,如果一个新 NFT 系列的市场感知价值较低,则可能不存在导致内存池中竞标战的竞争条件,不需要购买优先区块空间,掠夺性用户也没有对其作弊的动机。同样,如果一个新 NFT 系列有太多需求,那么该系列可能会很快售罄,以至于没有时间为其编写定制软件或对其公平性进行作弊。
虽然安全需求太少是个问题,但我们认为,人们应该始终将其 NFT 启动设计为在所有市场条件下都保持稳健,尤其不要过于依赖快速售罄的产品系列,作为保护它们免受作弊的一种手段。
NFT 启动细节拆解虽然我们现在知道,我们需要一个出色的发布,但仍然不知道如何实现。可以通过拆解幕后实际发生的事情,来慢慢揭示这条路径(或者,正如我们将看到的,会有很多路径)。
每次 NFT 启动都包含四个步骤:
- 竞标 : 销售激活,用户向运营商(可以是智能合约)提交出价。
- 清算 : 运营商将收集到的投标竞标与剩余供应进行匹配,确定清算价格,并选择中标者。
- 分发 : 竞标赢家可以领取他们新铸造的 NFT (或从运营商处接收)。
- 原数据披露 : 运营商披露 NFT 属性数据。
以 Loot 为例。Loot 的先来先得销售在 13,108,877 区块高度上线。该收藏品的创作者 dom 在智能合约中将销售价格设置为零,但用户仍然必须通过 gas 竞标拍卖。每个区块,矿工都会对剩余供应清算的新出价,决定谁赢谁输。用户竞标成功时,会在同一笔交易中收到了该 NFT。
大多数用户在收到 NFT 后才了解 NFT 的具体属性。不过,在实践中,一个高技能用户可以在铸造之前从智能合约中读取 NFT 的属性,使得他们可以狙击收藏中最稀有的物品。这表明,无论其他步骤是顺序发生还是连续发生,必须在物品被购买并最终清算后,才能显示元数据。
接下来,我们将探索 NFT 开发者在四个步骤中每个步骤中所拥有的选项。我们讨论每个选项对理想属性的影响,从而筛选掉坏的选择,优选出好的设计选择。
步骤 1: 竞标在这一阶段,运营商从其用户中收集竞标(例如,求购请求)。
连续 vs. 顺序清算首先,运营商必须决定他们是否希望在相同或两个非重叠阶段内连续进行竞标和清算。
任何先来先得、固定价格销售(迄今为止大多数 NFT 启动是这些形式)都是持续清算的一个例子。每个区块,矿工都会查看竞标,并根据剩余供应量进行清算。
这种机制存在几个问题:如果运营商高估了 NFT 的清算价格,则 NFT 价格太贵,可能卖不完。如果运营商低估了 NFT 的清算价格,则这些 NFT 价格太便宜,用户会通过速度(谁最直接访问区块空间)或 Gas 价格(谁可以为其交易向矿工支付最多费用)展开竞争。正如前文所讨论的,这会导致因交易失败导致大量经济损失,并极大地有利于高技能参与者。如果必须的话,第一种选择可以通过将所有用户交易路由到 Flashbots RPC,并让拍卖在失败交易没有成本的环境中进行来予以缓解。
当采用第二种选择时,投标和清算发生在两个不重叠的阶段。在实践中,运营商首先收集所有投标,然后将它们与可用供应进行匹配,以公平的价格清算。这种方法包括批量拍卖或摇号等机制。这种方法的一个例子是 Jay Pegs Auto Mart,它给了用户一周的时间在市场清算之前提交他们的出价。
顺序方法有多个好处,与我们所阐述的目标一致:
- 不设竞争条件:用户有足够时间提交他们的出价,结果取决于用户愿意支付多少,而不是其速度或技能。
- 不受时区约束:这一方法尊重在其他时区工作或生活的人。
此外,由于没有 Gas 竞拍,因此对其他网络用户不存在负外部性。
不过,这种方法存在缺点,例如需要更多的链上交易(取决于拍卖设计)或降低了参与者的乐趣,因为他们现在不得不等待更长的时间。我们建议不要让投标期太长,以减轻后一种担忧,也许最好不超过 48 小时。
链上竞标 vs. 链下竞标在决定了连续清算还是顺序清算之后,下一个选择是用户是在链上还是链下提交他们的竞标。
我们将看到,当前的 NFT 启动通常会在链上收集投标,因为它最简单,可以高效地让矿工为中标者清算,并让宣告其余投标失败。如果我们假设网络本身是未经审查的,也意味着有强有力的保障,不会从销售中遗漏任何有效的出价。
不过,在链下收集竞标同样是可能的。在这个过程中,用户使用自己的私钥签署一条消息,其中包含他们的链上地址、他们想要购买的代币或门票的数量、自己的最高出价等信息。他们将此消息发送给运营商而不在链上执行,使用他们的签名来证明其有效性。
不过,运营商可以使用这些出价来为链下市场清算,或将中标交易捆绑并将其提交给合约,以在链上执行。 无论采用哪种方法,都需要买家对运营商有一定程度的信任,才能确保正确的投标得到执行。
最后一种方法结合链下收集竞标与链上筛选中标者,将稳健、Gas 效率高且灵活的方式实现相结合。用户唯一需要相信的是,他们在链上提交投标时,运营商不会遗漏任何投标——这是一个相对较弱的假设。
谁被允许参与竞标?要做出的第三个决定是允许谁出价,以及允许多少人参与。正如在包容性和抗 sybil 攻击的目标中所讨论的,项目方可能希望确保不同的用户群体购买他们的物品。 就此而言,他们对向具有特定特征的用户提供的 NFT 数量进行限制,或者专门为现有 NFT 社区的持币者保留一部分 NFT。
当竞标发生在链下时,这样的 KYC 规则很容易实现——只需要求用户在向服务器提交签名之前证明某些信息。链上 KYC 则更为复杂,但 Gitcoin 的 隐私保护证明 等项目正在取得进展。
即使一个项目不想要任何形式的 KYC,他们仍然可以采取措施,以保证大用户和小用户可以用同样的资金购买相同数量的代币。当合约允许用户在同一笔交易中购买或领取许多 NFT 时,这一原则通常会遭到破坏,因为巨鲸可以通过购买更多代币上分摊同一笔 gas 费用,因此与小用户相比,他们为每个代币支付的费用更少。为了缓解这种情况,限制每个地址或每个交易购买的代币数量通常是一个好主意。
竞标成本此外,运营商必须决定用户何时必须为 NFT 代币付款——连同投标一起,还是在市场清算之后?
在后一种情况下,用户只需在投标阶段保留代币等待市场清算,然后他们就可以在一定的时间窗口内完成购买。使用这种方法结合链下竞标的一个项目是 Parallel。 虽然它在一片更为安静的市场中运作良好,但当需求非常高时,这种模式可能会变成一种竞争条件,用户希望保留尽可能多的代币,因为这样做是没有成本的。
为了减轻竞争条件问题,投标本身应该与成本挂钩。这里最好的解决方案是让用户只有在锁定来自同一地址的智能合约中的资金后才提交出价。然后如果投标不成功,运营商可以决定是退还资金(类似于交易所的限价订单)还是保持投标(类似于未兑付的抽奖券)。
竞标颗粒度最后,必须决定他们希望用户用出价表达多少颗粒度。当出现失败的投标(因为需求超过供应)时,必须进一步决定:怎样才能成为赢家,怎样会是输家。 以下是三个可行的选择:
- 「傻瓜式」批量拍卖」: 人们在无需进一步指示的情况下承诺了一定数量的 ETH。在清算阶段,NFT 数量除以提交的 ETH 总量,每个人都会收到 ERC-20 形式的碎片化代币,之后可以兑换为 ERC-721 NFT。Jay Pegs Auto Mart 使用了这种方法,它的好处是没有失败的出价。不过,它的缺点是需要三笔额外的链上交易——两笔用于出售或购买代币以达到有用的数量(例如,一个「完整的」ERC-20 代币),一笔交易用于赎回 NFT。最重要的是,这种方法不允许买家表达为想要的一定数量代币的出价——而几乎每个市场都期望有这个功能。
- 「智能」批量拍卖:多年前, SpankChain 在其 ICO 中使用了一种类似方法,但甚至可以说更好。与 Jay Peg 不同的是,SpankChain 收集了对指定代币数量每个代币价格的出价。在竞标阶段结束后,他们计算出一个链下的执行价格,并将其与中标价一起提交给智能合约,中标的人们可以提取 SPANK,如果未中标,则可以提取 ETH。这种方法的缺点是要匹配所有出价,其计算复杂度非常巨大,以至于只能在链下完成,这需要对运营商有一定的信任。
- 「摇号」:最后,人们可以进行摇号或乐透模式,用户通过购买门票或预订进行竞标。然后从所有门票池中随机选择获胜者。通过这种方式,用户或者会收到一个完整的代币,或者一无所获,从而节省了像 Jay Peg 的 $DONA 三笔额外交易所需的 Gas 费用。这意味着财力较为薄弱的用户也可以入场。但是,它在销售中引入了随机性,有些用户可能更喜欢,而另一些则不喜欢。
在这一阶段,运营商(或以运营商名义操作的某人) 对竞标和可供应量进行匹配,决定谁会买到 NFT,谁买不到 NFT。
链上清算 vs 链下清算最后一个主要节点是谁可以从所有出价池中选择获胜者。在先来先得模式中,这是由矿工完成的,我们已经解释过,它在几个方面容易出现腐败。
在 Jay Peg 的清算机制中,计算复杂度很低,低到足以用完全去信任的方式在链上进行。
在 SpankChain 的模型中,获胜者是完全在链下选出的。虽然投标人无法以高于他们想要的价格成交(智能合约确保了这一点),但他们仍然必须相信运营商不会将他们推到他们的最高成交价,类似于对去中心化交易所的三明治攻击的工作原理。
「摇号」方法最容易清算,因为您只需要一个随机数(例如,来自 Chainlink VRF)。不过也要求随机性也引入了另一个信任假设:产生这种随机性的人可能会偏爱自己的出价而不是其他人。相反,当获胜的出价只是最高的出价时,这是不可能出现的。
步骤 3: 分发市场清算后,运营商必须铸造代币,将它们交给用户,他们如果是采用这种模式,需要将所有失败出价的资金返还。这一步通常都是牵扯到 Gas 效率和阻止竞争条件。
同时 vs. 间隔结算如果运营商想防止自己的用户同时认领 NFT,导致 gas 费用飙升,他们可以重复使用与清算过程中相同的随机性,让人们分批认领。这解决了集体行动导致 Gas 费用飙升的问题,因为用户最好不要同时认领所有 NFT。尽管如此,好奇心无处不在,希望了解它们元数据,以及谁会成为第一个在二级市场上转手卖出 NFT 的人,无论如何总可能会造成竞争条件。这意味着,间隔结算也会增加用户的等待时间。
认领 vs. 收到 NFT 代币在分发中唯一要提到的另一件事是:用户是否必须自己认领代币,还是运营商可以随着时间推移简单地将其发送给他们。后者是间隔结算的一种变体,但有额外的好处,即用户不需要做任何事情。前面提到的 Parallel 启动就使用了这种方法,效果很好,只是要求用户在最初为 NFT 付款时添加「运费」。
步骤 4: 披露原数据最后,NFT 代币一旦分发完事,就可以显示其元数据。在 NFT 启动的四个阶段中,这一步必须放在最后。它也不能与其他步骤共享最后一步(例如,通过在同一交易中捆绑支付、分发和原数据显示,就像 Meebit 所做的那样),因为不良分子可以通过回复交易来「刷初始」,破坏公平性进行作弊。付款和元数据展示之间必须至少有一个区块的差距,以使交易回滚成为不可能,尽管您也可以选择加大这一差距,以防止重组攻击。
何时披露元数据我们现在已经确定,铸造 NFT 和披露其元数据不能在同一笔交易中发生,这引发了何时披露的问题。这不仅对保障公平很重要,对于用户体验和 gas 效率也很重要。一般来说,有以下三种选择:
全集披露:在全集披露中,运营商会等到该集合的所有 NFT 都已铸造完成,然后再披露元数据。这种方法具有很高的 gas 效率,只需要一个随机数,然后就可以使用该随机数来打乱工单 ID 的元数据,而无需用户进一步采取行动。
但是,它有明显的缺点。也就是说,用户必须等到所有 NFT 都被铸造出来才能查看其代币的元数据。如果设置了何时公开元数据的上限(例如,24 小时),一些用户可能仍然无法及时铸造,从而导致 NFT 收藏品无法售罄。
NFT 逐一披露 : 为了改善全集披露的 UX,运营商还可以允许用户针对 NFT 逐一展示随机性。这更具吸引力,因为用户可以在购买后不久「打开」自己的 NFT。 它还允许「未开封」的 NFT 在二级市场进行交易(这在 MTG 等交易卡牌游戏中很流行)。
不过,这种方法带来了要求用户进行额外链上交易的负担,例如调用 Chainlink VRF 并将随机数应用于自己的 NFT。 即使对于不特别急于披露元数据,或对交易未开封 NFT 不感兴趣的用户,这也是不可避免的费用。
批量披露: 我们提出了批量披露的概念,作为一个潜在的中间地带。在这种方法中,用户可以无限期地铸造,但如果他们愿意,也可以在下一个区块中披露其 NFT 的元数据。收到请求的每个新随机数都会自动披露所有铸造和待分配 NFT 的元数据,以几乎相同的恒定成本披露它们。
因此,具有高时间偏好的用户可以选择支付额外的链上交易以披露元数据,这使他们之前的所有用户都会受益。如果没有用户选择披露,运营商也可以按照某个时间表进行,例如每一个小时。
随机性来源在决定何时披露元数据之后,剩下的问题是从哪里获得随机性。我们建议的两个选项是使用 Chainlink VRF 或 commit-reveal scheme 机制。
使用前者,您可以按需访问可验证的链上随机源。使用任何披露机制,您都可以调用 Chainlink 来请求随机性,一旦满足,就使用随机生成的数字作为元数据计算的输入值。这将确保它对每个 NFT 都是随机的。
对于后者机制,运营商可以在销售之前创建一个随机数(用于完全披露)或多个随机数(用于每个 NFT 或批量披露)并预先提交其哈希值。一旦铸造了 NFT,运营商就可以透露这些数字,让任何人都可以通过哈希验证其真实性。尽管如此,这种方法需要对运营商有一定的信任,信任他们不会利用对随机数的提前洞悉来创造最好的 NFT。为了尽量减少对信任的需求,我们建议仍然按铸造顺序进行一些独立的随机化。
此外,对于链下元数据,运营商可以选择提交完整元数据的哈希(所有 NFT 的 id 相关属性),而不是提交随机数。这确保元数据是预先确定的,并且在铸造过程中或之后不会被篡改。尽管如此,铸造顺序中的独立随机化对于防止运营商利用知情权作弊,也是很有必要的。
我们的实操参考手册我们提供了一份 实操参考手册 ,在这份手册中,我们考虑了所有属性之间的良好平衡,并且易于理解和调整。
竞价 : 在我们的实操参考手册中,用户可以通过购买抽奖券进行竞价。抽奖时间由运营商决定(我们建议 24-48 小时)。每张门票的价格包括 gas 费用,以及运营商指定的每个 NFT 的价格。后者充当「保证金」,并在市场清算后退还所有竞标失败者的门票。 抗 Sybil 攻击是通过三种方式产生:每笔交易的 gas、锁定资金的资本成本,以及每个地址的最大票数。 清算 : 竞拍期结束后,必须从所有门票池中抽取与可用 NFT 数量相等的中奖者。首先,任何人都可以调用 collectEntropy(), 从 Chainlink VRF 中获取一个随机数。这种随机性用于「shuffleEntries()」,它采用了 Fisher-Yates 摇号机制。任何人都可以调用此函数,以保证活跃度,并使 gas 成本可社会化(例如,由巨鲸负担)。 分发 : 在所有中奖者都被抽中之后,用户可以无限期地从他们的中奖中领取 NFT,他们输掉的会收到退款。两者都发生在同一个交易中。运营商现在可以开始提取中奖的收益。 元数据披露 : 用户可以在认领 NFT 后一区块披露其 NFT 元数据。任何人都可以请求一个新的随机数,它会自动披露所有已铸造和待分配 NFT 的元数据。时间偏好高的用户可以立即付费,以披露元数据,使所有用户受益。 总结 在本文中,我们给出了真实世界的示例,以展示设计不佳的 NFT 启动如何导致用户获得了次优结果。但是,当一个项目清楚地定义他们的目标,并花时间去解构发布实际上有哪些步骤时,很多设计成为可能——而且几乎所有设计都比当前我们习以为常的固定价格、先到先得、网络拥挤的 NFT 销售要好得多。 如果您想从本文中能有任何收获,请遵循以下三个规则:
- 不可作弊的公平性是具有随机元数据的 NFT 启动的最关键属性。使用强大的随机性,在 NFT 被购买和结算之前永远不要透露它的元数据。
- 竞争条件会伤害用户,包括参与铸币的用户和未参与的用户。使用顺序投标和清算(例如,摇号抽奖或批量拍卖)来解决这个问题。
- 从第一分钟开始就考虑成本效益。一直不断问自己:当前发生在链上的任何步骤是否也可能在链下发生,以便为您的用户省钱。假设用户可以对运营商建立一定程度的信任,链下步骤可以包括竞标和市场清算。在元数据披露阶段考虑进行批量披露。
来源链接:www.paradigm.xyz
欢迎加入【加密大航海社区】:
官网:「链接」
推特:https://twitter.com/crypto_voyage
Telegram电报:https://t.me/CryptoVoyage1984
,