Loot 分叉的集体漏洞:稀缺性有规律可循

通过阅读 Loot 智能合约,可以轻易提前计算出整个 Bag 的供应量,包括稀有度。

原文标题:《Loot 分叉的集体漏洞——稀缺性有规律可循 | 链茶速递》

撰文:iamthetorn

翻译:思嘉

如果没有修改智能合约中使用随机性的方式,不要将 Loot 的代码用于新项目。

Loot 的智能合约有一个设计限制(或者说是一个安全漏洞),影响着初始代币分配的公平性。而那些使用 Loot 代码的新项目也存在这个漏洞。

br

本文不是要贬低 Loot 或任何相关公司,而是意在:

  1. 通过减少信息不对称,营造 NFT 的公平竞争环境;
  2. 减少程序错误或设计模式的继续扩散,以防将用户置于风险中。

Loot 是一个由 8000 个代币组成的 NFT 集合,称为 Bags。97% 的 NFT 可由公众铸造,除了 Gas 费之外没有其他费用。

智能合约包含随机化和渲染层、逻辑层,允许它生成对应于任何代币 ID 的 SVG。

每个 Bag 有 8 项属性,每一项都在智能合约上随机生成一个分值。分值越高,物品的名称可变性越强,物品也就更加稀有。

那么问题出在哪里呢?

Bag 的内容是根据其代币 ID 确定的——这意味着在最初的代币分配之前或分配期间的任何节点,只要通过阅读智能合约,任何人都可以轻而易举地提前计算出整个 Bag 的供应量(包括稀有度量)。

由于 claim() 函数将代币 ID 作为一个参数,所以很容易从收藏品中挑选出最稀有的物品,并赶在其他人之前立即将其铸造完成。

如果合同代码在最初发行时是公开的,就会使得 Loot 和类似的项目很容易被游戏化。

事实上,Loot 和其大多数模仿者都把使用 Etherscan 作为他们的造币 UI,这要求源代码在 Etherscan 上经过验证。

公司已经确认,以下项目的初始发行版对上述的造币操作是开放的。Loot、Bloot、More Loot、n、CHAR 0……

这是个非详尽的列表,在写这篇文章时,我还没有发现任何其他对此开放的项目。

最令人担忧的是,这种游戏性会导致普通用户和内行或具有技术知识的用户之间产生的结果存在显著差距。

漏洞 1

More Loot 是 Loot 的创造者 dhof 发布的 Loot 后续产品,截至本文写作时仅发布几个小时,从 More Loot 的链上数据中就可以明显地发现这一漏洞产生的影响。

br

上图显示了 More Loot Bags 可供铸币与实际铸币之间的分布差异。它包括目前该系列中超过 130 万个 Bag 的「greatness 」分数。

如果铸币是随机的,我们期望这些分布是一致的。

恰恰相反,我们可以清楚地看到,虽然绝大多数的购买是「盲目的」,但有一小部分的交易是利用合同,只对最稀有的 Bag 铸币。

自 GitHub 上公布了稀有度排名后,这种有针对性的铸币活动的频率有所增加。

然而,即使在公开的 Loot Discord 中分享了这些数据后的几个小时,有针对性的铸币活动仍然只占铸币活动的一小部分,这表明大多数用户都被蒙在鼓里。

有些人可能会用 More Loot 来试试水,不会太认真对待,但仍应当考虑其实际影响。

比如用户为 More Loot 铸币支付了大约 300 万美元 Gas 费。这些铸币中的绝大部分是盲目的。

随着供应上限远远超过 100 万个代币,成千上万的「特殊」代币涌入市场,普通持有人的转售前景非常暗淡。

漏洞 2:CHAR 0

CHAR 0 是最近另一个基于 Loot 的项目,从 UTC 9 月 3 日 13:47 到 UTC 9 月 4 日 11:56,在分发 9700 个代币的过程中,预计花费 70 万美元的 Gas 费。

作为这个项目的早期矿工,产出必要的数据来识别和获得该系列中许多最稀有的代币,对我来说非常容易。

为了演示,我只对一个小的收藏品进行铸币,但没有什么能阻止我迅速且隐蔽地获得前 1% 绝大所数的供应。

很明显,像我这样有动机获取者可以从 CHAR 0 的用户群中提取巨大的价值,并对项目的结果产生相当大的影响。

可能的解决方案

我会把这一部分划定在比较高层次的讨论上,并留有一些后续解决空间。以下是解决上述问题的几种不同方法。

盲投

Hashmasks 普及了盲投模式,在这种模式中创作者承诺为整个系列提供一个哈希值,在销售结束时通过链上随机性对系列顺序进行洗牌。

这可以创造出公平、随机的分配,即使是创作者也不能作弊。Hashmasks 智能合约被 BAYC 和其他一些项目成功采用。

可改变盲投策略与 Loot 一起使用,同时保留所有 Loot SVG 由智能合约生成的属性。

链上 RNG

可在运行时使用链上随机性使每个铸币的结果随机产生。

对这种方法必须格外小心,因为链上随机性的来源可能会被他人以意想不到的方式利用。

最好的方法是利用 VRF,如 Chainlink 的 VRF,但这对某些应用来说可能过于昂贵。

未验证的合同

一个简单的修复方法是在最初发布时保持智能合约代码的私密性。在以下情况下,这种方法合理:

  1. 创建者的声誉受到威胁;
  2. 合同不接受付款。

虽然这可以说是一种改进,但我强烈建议不要采用这种方法。

与盲投不同,这种方法没有保护措施防止 NFT 创建者作弊。无论是通过分析铸币输出还是通过字节码反编译,合约可能会受到逆向工程的影响。

即使合同创建者是值得信任的,然而也存在不好的先例,包括合同不接受付款,要求用户与未经验证的合同互动。

抗 Sybil 投资

最后,我有一个建议想要呼吁:使用 Mirror 的数据来尝试抗 Sybil 的公平分配。

这是一个具有前瞻性的方法,我相信在未来会变得越来越有趣。

最后 …

这些方法中的每一种都有取舍,有些可能是最初的 Loot 团队所考虑的。

事实是,当前版本的 Loot 智能合约扩散得越多,对用户来说情况就越糟糕。

在问题得到解决之前,这个智能合约不应该重新进行使用,至少在没有明确沟通的情况下,铸币是游戏化的,而且分配目的不是为了公平或随机。

结尾的呼吁

所有关于社区和公平分配的讨论都在于,NFT 用户应该得到更好的待遇。

他们应该有一个公平的竞争环境,他们应该得到精心设计的、不会坑害他们的代币发行。

毋庸置疑,Loot 已经引发了一场革命,是 NFT 持续发展的一个关键项目。

我想强调的是,即使是在试水,NFT 开发者也要对他们的用户负责,这包括那些从其他项目中复制粘贴代码的开发者。

不要再吹嘘那个利用你的 Loot 进行抄袭的家伙通过看 YouTube 在一天之内学会了智能合约。

让我们为用户提供更安全的 NFT 空间,新型的和高价值的智能合约应该接受审查,或者至少由经验丰富的智能合约开发者进行代码审查。

众所周知的问题应该公开进行讨论,让我们改进优秀做法,并广泛分享,确保艺术家创作安全和富有意义的 NFTs 时有用武之地。

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2021年9月8日 下午5:25
下一篇 2021年9月8日 下午5:25

相关推荐

Loot 分叉的集体漏洞:稀缺性有规律可循

星期三 2021-09-08 17:25:13

原文标题:《Loot 分叉的集体漏洞——稀缺性有规律可循 | 链茶速递》

撰文:iamthetorn

翻译:思嘉

如果没有修改智能合约中使用随机性的方式,不要将 Loot 的代码用于新项目。

Loot 的智能合约有一个设计限制(或者说是一个安全漏洞),影响着初始代币分配的公平性。而那些使用 Loot 代码的新项目也存在这个漏洞。

br

本文不是要贬低 Loot 或任何相关公司,而是意在:

  1. 通过减少信息不对称,营造 NFT 的公平竞争环境;
  2. 减少程序错误或设计模式的继续扩散,以防将用户置于风险中。

Loot 是一个由 8000 个代币组成的 NFT 集合,称为 Bags。97% 的 NFT 可由公众铸造,除了 Gas 费之外没有其他费用。

智能合约包含随机化和渲染层、逻辑层,允许它生成对应于任何代币 ID 的 SVG。

每个 Bag 有 8 项属性,每一项都在智能合约上随机生成一个分值。分值越高,物品的名称可变性越强,物品也就更加稀有。

那么问题出在哪里呢?

Bag 的内容是根据其代币 ID 确定的——这意味着在最初的代币分配之前或分配期间的任何节点,只要通过阅读智能合约,任何人都可以轻而易举地提前计算出整个 Bag 的供应量(包括稀有度量)。

由于 claim() 函数将代币 ID 作为一个参数,所以很容易从收藏品中挑选出最稀有的物品,并赶在其他人之前立即将其铸造完成。

如果合同代码在最初发行时是公开的,就会使得 Loot 和类似的项目很容易被游戏化。

事实上,Loot 和其大多数模仿者都把使用 Etherscan 作为他们的造币 UI,这要求源代码在 Etherscan 上经过验证。

公司已经确认,以下项目的初始发行版对上述的造币操作是开放的。Loot、Bloot、More Loot、n、CHAR 0……

这是个非详尽的列表,在写这篇文章时,我还没有发现任何其他对此开放的项目。

最令人担忧的是,这种游戏性会导致普通用户和内行或具有技术知识的用户之间产生的结果存在显著差距。

漏洞 1

More Loot 是 Loot 的创造者 dhof 发布的 Loot 后续产品,截至本文写作时仅发布几个小时,从 More Loot 的链上数据中就可以明显地发现这一漏洞产生的影响。

br

上图显示了 More Loot Bags 可供铸币与实际铸币之间的分布差异。它包括目前该系列中超过 130 万个 Bag 的「greatness 」分数。

如果铸币是随机的,我们期望这些分布是一致的。

恰恰相反,我们可以清楚地看到,虽然绝大多数的购买是「盲目的」,但有一小部分的交易是利用合同,只对最稀有的 Bag 铸币。

自 GitHub 上公布了稀有度排名后,这种有针对性的铸币活动的频率有所增加。

然而,即使在公开的 Loot Discord 中分享了这些数据后的几个小时,有针对性的铸币活动仍然只占铸币活动的一小部分,这表明大多数用户都被蒙在鼓里。

有些人可能会用 More Loot 来试试水,不会太认真对待,但仍应当考虑其实际影响。

比如用户为 More Loot 铸币支付了大约 300 万美元 Gas 费。这些铸币中的绝大部分是盲目的。

随着供应上限远远超过 100 万个代币,成千上万的「特殊」代币涌入市场,普通持有人的转售前景非常暗淡。

漏洞 2:CHAR 0

CHAR 0 是最近另一个基于 Loot 的项目,从 UTC 9 月 3 日 13:47 到 UTC 9 月 4 日 11:56,在分发 9700 个代币的过程中,预计花费 70 万美元的 Gas 费。

作为这个项目的早期矿工,产出必要的数据来识别和获得该系列中许多最稀有的代币,对我来说非常容易。

为了演示,我只对一个小的收藏品进行铸币,但没有什么能阻止我迅速且隐蔽地获得前 1% 绝大所数的供应。

很明显,像我这样有动机获取者可以从 CHAR 0 的用户群中提取巨大的价值,并对项目的结果产生相当大的影响。

可能的解决方案

我会把这一部分划定在比较高层次的讨论上,并留有一些后续解决空间。以下是解决上述问题的几种不同方法。

盲投

Hashmasks 普及了盲投模式,在这种模式中创作者承诺为整个系列提供一个哈希值,在销售结束时通过链上随机性对系列顺序进行洗牌。

这可以创造出公平、随机的分配,即使是创作者也不能作弊。Hashmasks 智能合约被 BAYC 和其他一些项目成功采用。

可改变盲投策略与 Loot 一起使用,同时保留所有 Loot SVG 由智能合约生成的属性。

链上 RNG

可在运行时使用链上随机性使每个铸币的结果随机产生。

对这种方法必须格外小心,因为链上随机性的来源可能会被他人以意想不到的方式利用。

最好的方法是利用 VRF,如 Chainlink 的 VRF,但这对某些应用来说可能过于昂贵。

未验证的合同

一个简单的修复方法是在最初发布时保持智能合约代码的私密性。在以下情况下,这种方法合理:

  1. 创建者的声誉受到威胁;
  2. 合同不接受付款。

虽然这可以说是一种改进,但我强烈建议不要采用这种方法。

与盲投不同,这种方法没有保护措施防止 NFT 创建者作弊。无论是通过分析铸币输出还是通过字节码反编译,合约可能会受到逆向工程的影响。

即使合同创建者是值得信任的,然而也存在不好的先例,包括合同不接受付款,要求用户与未经验证的合同互动。

抗 Sybil 投资

最后,我有一个建议想要呼吁:使用 Mirror 的数据来尝试抗 Sybil 的公平分配。

这是一个具有前瞻性的方法,我相信在未来会变得越来越有趣。

最后 …

这些方法中的每一种都有取舍,有些可能是最初的 Loot 团队所考虑的。

事实是,当前版本的 Loot 智能合约扩散得越多,对用户来说情况就越糟糕。

在问题得到解决之前,这个智能合约不应该重新进行使用,至少在没有明确沟通的情况下,铸币是游戏化的,而且分配目的不是为了公平或随机。

结尾的呼吁

所有关于社区和公平分配的讨论都在于,NFT 用户应该得到更好的待遇。

他们应该有一个公平的竞争环境,他们应该得到精心设计的、不会坑害他们的代币发行。

毋庸置疑,Loot 已经引发了一场革命,是 NFT 持续发展的一个关键项目。

我想强调的是,即使是在试水,NFT 开发者也要对他们的用户负责,这包括那些从其他项目中复制粘贴代码的开发者。

不要再吹嘘那个利用你的 Loot 进行抄袭的家伙通过看 YouTube 在一天之内学会了智能合约。

让我们为用户提供更安全的 NFT 空间,新型的和高价值的智能合约应该接受审查,或者至少由经验丰富的智能合约开发者进行代码审查。

众所周知的问题应该公开进行讨论,让我们改进优秀做法,并广泛分享,确保艺术家创作安全和富有意义的 NFTs 时有用武之地。