正如Paradigm的《设计有效的NFT发布指南》中所述,NFT发布对普通用户来说往往是不公平的。Hasu和Anish Agnihotri提到了几个潜在隐患,资深用户从中可以获得优势,并从创作者和其他收藏家那里获取价值。
一个常见的设计错误就是Hasu和Anish Agnihotri所说的“可利用的公平性”。对于NFT买家来说,乐趣之一在于“gacha游戏(扭蛋游戏)”的体验感:买家可能会入手一个普通的NFT,而幸运的话,可能会得到一个具有稀有特征的NFT,其售价可能比普通同类产品高出几倍。公平起见,NFT应该是随机铸造的。然而,资深用户一直在寻找各类方法增加铸造或购买到稀有NFT的几率。
我们已经开发和安装了一些工具,以便在购买NFT时获得优势。这种做法绝非例外;我们观察到一些买家已经使用这类工具几个月了,最近还出现了很多付费服务提供商,如traitsniper.com。今天,我们将开源我们的工具,介绍使用方法,以及如何检测别人是否使用类似的方法在NFT发布中获得优势。
我们推出的作弊工具的工作原理是在普通用户可以获得元数据之前找到元数据,然后在铸币过程中利用元数据获得更多的稀有NFT,或者在元数据上传到OpenSea之前购买尚未公开的NFT。类似的作弊行为也可以由项目内部人员进行。
我们检测到很多采取类似方法的作弊行为,接下来会介绍一些实例。我们希望通过提高对这种策略的意识,促使NFT社区对NFT发布提出有保障的公平性要求。
如何使用工具在NFT发布中作弊
第1步:获取元数据
首先,你需要找到目标藏品的代币元数据。检查代币的URI,看它是否指向一个有元数据的IPFS页面或网站。如果是,我们提供一个名为pulling.py的脚本,输入合同地址,可以迅速获取一个NFT收藏品的所有元数据。
我们的pulling脚本将ERC-721合同地址作为输入项,然后快速检索元数据
如果你能在首次销售完成之前找到元数据,那就很有利了:只需直接进行第二步,确定哪些NFT值得铸造,然后尝试铸造。
我们已经发现各项目用来隐藏元数据的许多不同机制。最常见的做法是隐藏元数据,NFT发行完成后,再在项目网站上更新元数据。在其他情况下,元数据被存储在IPFS上,并通过改变基础代币URI来更新。我们通过查询OpenSea的API或者搜索testnets和Arweave成功找到过被泄露的元数据。在这些地方,开发者偶尔会泄露他们元数据的IPFS哈希值。即使这种方法没有产生元数据,也可以提供其他有价值的参考。
一位资深用户介绍了他们在一个NFT项目启动前的分析过程。(本例中没有元数据泄露)
有时我们无法找到完整的元数据,但能找到泄露的图像。在这种情况下,我们只是用一个 “for”循环来下载所有图片,手动查看这些图片,寻找我们了解的稀有特征。
一个简单的for循环可以用来在铸币和/或披露之前搜集泄露的NFT图像
我们还观察到这样的例子:我们无法找到泄露的元数据,但其他人仍然能在铸币中获得优势。对此有许多可能的解释。一种解释是我们无法找到公开泄露的元数据,但其他人找到了。另一种是内部人员掌握了信息——内部人员可能与项目直接相关,也可能是托管项目元数据的第三方。
第2步:计算稀有度
NFT价格和稀有度之间有很强的关联性。最广泛使用的NFT稀有度网站是rarity.tools,他们使用同样的算法来生成几乎所有藏品的稀有度排名。
最近出售的200个MekaVerse NFT的销售价格与稀有度等级相关。(截至10/20/2021)
rarity.py工具使用步骤1的元数据作为输入,然后输出藏品包含的每个NFT的稀有度评分和等级。
需要注意的一点是,稀有度评分方法的确略有不同;对于某些藏品,rarity.tools采取“特征数量”作为属性,但对于其他藏品则不采用。有些藏品有自定义的稀有度评分标准,就需要单独进行检索。知道了一个藏品系列中每个NFT的稀有度,就可以继续进行第三步。
注意:我们并不喜欢rarity.tools的排名方法,会另有文章讨论。
我们注意到,在NFT夏季的早期,很多我们认为异常幸运的NFT铸造者/购买者并没有使用计算出来的稀有度评分。相反,我们认为他们只是简单地检索元数据,并寻找具有某一种极其罕见特征的NFT,而不是因为组合了多种一般罕见特征而罕见的NFT。随着时间的推移,我们注意到一些买家开始计算稀有度评分。
第3步:造币或购买
现在你有了整个藏品的稀有度数据,是时候购买了。如果藏品仍处于铸币阶段,那么你可以尝试铸造你已知的稀有NFT。要做到这一点,可以手动检查Etherscan,或者更好的方法是,编写一个机器人,获得上一个被铸造的NFT的代币ID。当下一个被铸造的NFT是你想要的,只需要发送你的铸造交易。参考铸币的速度,既可以手动完成,也可能需要使用一个机器人,精准把控交易时间。
由于大多数发行允许批量铸造,你可能需要铸造多个普通的NFT来抢到一个稀有的NFT。某些情况下,你也可能在同一笔交易中,找到多个罕见的NFT,特别是当NFT并非随机发放的时候。
一位异常幸运用户铸造了5个BlazedCats。第5个是罕见的,售价可以轻松抵消其他4个的成本
因为你清楚可以从稀有NFT中获利,所以你甚至可以以低于铸造成本的价格来出售其他NFT。
还有一个例子:有人使用智能合约,加上Flashbots,以保证只铸造稀有NFT。
第4步:预告前的狙击
即使NFT发布的铸币阶段已经结束,或者你没能获得泄露的元数据,仍然可以在NFT发布的下一个阶段获得优势。许多项目在铸币结束后披露元数据。然而,在元数据变得可用和OpenSea完成更新之间有一个延迟。在这期间,你可以迅速运行我们提供的脚本,以获得元数据和稀有度评分,并购买披露之前上市销售的任何稀有NFT。
检测 “异常幸运”的NFT买家
我们的工具也可以用来检测我们称之为 “异常幸运”的买家。要做到这一点,你需要NFT藏品的稀有度数据,以及买家铸造的NFT列表。
我们已经在github上提供了一些项目的稀有度数据,你也可以使用我们的工具来获得其他项目的稀有度数据。
一旦有了稀有度数据,下一步就是为藏品收集造币数据,如find_minting_data.ipynb所示。它将提供给你一个数据库,其中包括每个账户铸造的每个NFT,以及它的稀有度等级。
每个收藏品都是不同的,可能需要调整你使用的统计测试,但我们已经提供了一些基本的工具和数据来帮助你。
一个好的开始是在铸币数据库上运行一个Kolmogorov-Smirnov(K-S)测试——我们在ks_test.ipynb中有一个例子。
我们的K-S测试试图排除的“无效假设”情况是用户随机铸造NFTs。K-S测试检查一个用户铸造的所有NFT的稀有度等级是否可能来自均匀分布。在某些情况下,例如NFT不是随机分布的,或者部分收藏品是赠与的而不是铸造的,概率会变得更加复杂,可能需要生成合成数据集,其中包括一个账户有机会购买的NFT。
上图显示了一个异常幸运用户(红色)和一个普通用户(蓝色)所铸造的DogeX NFT的稀有度等级
我们的K-S测试代码将运行每个在一个藏品系列中铸造多个NFT的账户,并输出一些关于幸运账户的数据。我们的代码也可以被修改,以识别在元数据披露之前购买了铸币的NFT账户。
铸造DogeX NFT的两个最幸运账户的输出示例
蓝点代表DogeX收藏中的每个NFT。黑点代表由一个异常幸运的账户铸造的DogeX NFTs
这些统计测试的输出是有细微差别的。1E-5的p值并不能保证一个账户有诈骗行为——如果是在几十万个账户中寻找,我们会期望偶尔发现有幸运儿。(另一方面,1E-22的p值...)
我们还仔细研究了NFT社区成员声称某个账户诈骗的几个例子,发现被指控的账户只是稍稍有点幸运(1%或0.1%的发生概率,没有额外的非统计或链外证据)。
如果NFT收集本身不是真正的随机,K-S检验也可能给出低p值。反过来说,一个账户没有异常的低概率也不意味着一个账户没有诈骗。事实上,我们有信心,我们使用的大多数账户不会被任何统计测试所识别,而且我们绝对不是唯一聪明到不被发现的人。
更多计策
我们用我们的脚本仔细观察了许多NFT空投。大多数没有显示出异常的迹象,可能是以公平的方式执行的(虽然并不能证明)。然而,在我们的研究过程中,我们观察到其他几种类型的异常。
性状的非随机分布
正如Hasu和Anish Agnihotri所暗示的那样,我们还观察到许多NFT收藏品的稀有度并不是随机分布的。在某些情况下,这意味着老练的买家可以增加他们铸造稀有NFT的几率,即使他们不能保证他们能收到的确切数量,因为铸造工作的进行速度很快。
Great Ape Society Bananas显示出不寻常的稀有等级分布
夸克有非随机的稀有度分布。因此,大多数在发布结束前铸币的用户会显得异常幸运
非标准铸币过程
我们观察到许多NFT的发行,其中稀有NFT的铸币过程是不寻常的,随机性无法验证。例如,一个项目声称的行为无法核实:用户是在链外随机选择以收到他们藏品中最稀有的NFT。这些NFT的转售价值明显高于藏品的其余部分,这些藏品是“先到先得”铸造的。
一些项目对稀有的NFT有一个特殊的铸造过程
一条来自NFT项目负责人的Discord消息,描述了他们如何随机选择账户来空投最有价值的NFT,以及验证空投是否公平
我们使用一个我们称之为“首次翻转”的指标来衡量铸造和转售对某一特定收藏品的盈利程度。在这个特定的收藏品中,大约50%的总利润来自于使用上述Discord截图中描述的随机选择过程分发的NFT。注意:这个指标不能排除清洗交易。
截图显示了按代币ID铸币后转售8 Bit Universe NFTs的利润。大约一半的首次翻转利润来自代币ID 1-100,这些代币在铸币结束后被分发了出去
无法证实的承诺
我们观察到几个声称使用可证明的随机承诺方案来选择NFT元数据的项目,我们无法在代币铸币之前找到此类承诺,也无法验证元数据是在铸币结束后产生。
每当一个发布会没有使用承诺披露的方案时,就不可能排除项目内部人员没有改变他们在二级市场上铸造或购买的NFT的元数据。
我们如何才能使竞争环境更公平
我们希望NFT空间能够大获成功,但我们认为我们所观察到的一些手段正在从大多数用户那里榨取价值,这对生态系统的长期健康是不利的。
1.可证明的公平性
用于证明公平的NFT空投的加密方案已经存在,我们已经看到一些项目在利用它们。我们希望通过传播对NFT元数据中信息不对称的认识,消费者会要求他们所购买的项目提供可证明的公平性。
我们很乐意对NFT发布的随机性进行审计,但最终我们希望消费者能够了解密码学的魅力。
2.公平的元数据揭示
与其依赖OpenSea和rarity.tools等第三方为用户提供NFT元数据,项目应该在NFT元数据被揭示后立即自己提供,从而从我们的pulling.py等脚本中否定部分优势。
3.停止“先到先得”的NFT发布方式
正如Paradigm文章中所描述的,“先到先得”的发布对普通用户不利,本可以给艺术家和项目的收入却给了矿工。虽然在这篇文章中没有多加讨论,但我们同意Paradigm的观点:请停止以这种方式发布NFT!
本文翻译自 Convex Labs,阅读原文:https://medium.com/@convexlabs/a-guide-to-effectively-cheating-nft-launches-and-detecting-cheaters-a76143ef8ad8。
作者:Maximino DiGiacomo-Castillo、Kun Peng、Ricardo Rosales、Nicolas A. Bax